rrenkert@6388: package org.dive4elements.river.artifacts.model.minfo; rrenkert@6388: rrenkert@6388: import org.apache.log4j.Logger; rrenkert@6388: import org.dive4elements.artifactdatabase.state.Facet; rrenkert@6388: import org.dive4elements.artifacts.Artifact; rrenkert@6388: import org.dive4elements.artifacts.CallContext; rrenkert@6388: import org.dive4elements.river.artifacts.D4EArtifact; rrenkert@6388: import org.dive4elements.river.artifacts.access.SedimentLoadAccess; rrenkert@6388: import org.dive4elements.river.artifacts.model.DataFacet; rrenkert@6388: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; rrenkert@6388: rrenkert@6388: rrenkert@6388: public class SedimentLoadUnknownFacet rrenkert@6388: extends DataFacet rrenkert@6388: { rrenkert@6388: /** Very own logger. */ felix@6664: private static Logger logger = Logger.getLogger(SedimentLoadUnknownFacet.class); rrenkert@6388: rrenkert@6388: public SedimentLoadUnknownFacet() { rrenkert@6388: } rrenkert@6388: rrenkert@6388: public SedimentLoadUnknownFacet(int idx, String name, String description, rrenkert@6388: ComputeType type, String stateId, String hash) { rrenkert@6388: super(idx, name, description, type, hash, stateId); rrenkert@6388: } rrenkert@6388: rrenkert@6388: @Override rrenkert@6388: public Object getData(Artifact artifact, CallContext context) { rrenkert@6388: logger.debug("Get data for sediment load at index: " + index); rrenkert@6388: rrenkert@6388: D4EArtifact flys = (D4EArtifact) artifact; rrenkert@6388: rrenkert@6388: SedimentLoadAccess access = new SedimentLoadAccess(flys); rrenkert@6388: String river = access.getRiver(); rrenkert@6388: SedimentLoad[] unknown = rrenkert@6388: SedimentLoadFactory.getSedimentLoadUnknown(river); rrenkert@6388: rrenkert@6388: SedimentLoad load = SedimentLoadFactory.getLoadUnknown( rrenkert@6388: river, unknown[index].getDescription()); rrenkert@6388: if (access.getUnit().equals("t/a") && load.getUnit().equals("m3/a")) { rrenkert@6388: for (Double km: load.getKms()) { rrenkert@6388: SedimentLoadFraction fraction = load.getFraction(km); rrenkert@6388: fraction.setUnknown(fraction.getUnknown() / 1.8); rrenkert@6388: load.addKm(km, fraction); rrenkert@6388: } rrenkert@6388: } rrenkert@6388: else if (access.getUnit().equals("m3/a") && load.getUnit().equals("t/a")) { rrenkert@6388: for (Double km: load.getKms()) { rrenkert@6388: SedimentLoadFraction fraction = load.getFraction(km); rrenkert@6388: fraction.setUnknown(fraction.getUnknown() * 1.8); rrenkert@6388: load.addKm(km, fraction); rrenkert@6388: } rrenkert@6388: } rrenkert@6388: return load; rrenkert@6388: } rrenkert@6388: rrenkert@6388: /** Copy deeply. */ rrenkert@6388: @Override rrenkert@6388: public Facet deepCopy() { rrenkert@6388: SedimentLoadUnknownFacet copy = new SedimentLoadUnknownFacet(); rrenkert@6388: copy.set(this); rrenkert@6388: copy.hash = hash; rrenkert@6388: copy.stateId = stateId; rrenkert@6388: return copy; rrenkert@6388: } rrenkert@6388: }