rrenkert@6250: package org.dive4elements.river.artifacts.model.minfo; rrenkert@6250: rrenkert@6250: import gnu.trove.TDoubleArrayList; rrenkert@6250: rrenkert@6250: import org.apache.log4j.Logger; rrenkert@6250: import org.dive4elements.artifactdatabase.state.Facet; rrenkert@6250: import org.dive4elements.artifacts.Artifact; rrenkert@6250: import org.dive4elements.artifacts.CallContext; rrenkert@6250: import org.dive4elements.river.artifacts.D4EArtifact; rrenkert@6250: import org.dive4elements.river.artifacts.access.BedQualityAccess; rrenkert@6250: import org.dive4elements.river.artifacts.model.DataFacet; rrenkert@6250: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; rrenkert@6250: rrenkert@6250: public class BedDiameterDataFacet rrenkert@6250: extends DataFacet rrenkert@6250: { rrenkert@6250: private static final Logger logger = Logger.getLogger(BedDiameterDataFacet.class); rrenkert@6250: rrenkert@6250: public BedDiameterDataFacet() { rrenkert@6250: } rrenkert@6250: rrenkert@6250: public BedDiameterDataFacet( rrenkert@6250: int ndx, rrenkert@6250: String name, rrenkert@6250: String description, rrenkert@6250: ComputeType type, rrenkert@6250: String stateId, rrenkert@6250: String hash rrenkert@6250: ) { rrenkert@6250: super(ndx, name, description, type, hash, stateId); rrenkert@7894: this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); rrenkert@7894: this.metaData.put("Y", "chart.bedquality.yaxis.label.diameter"); rrenkert@6250: } rrenkert@6250: rrenkert@6250: public Object getData(Artifact artifact, CallContext context) { rrenkert@6250: D4EArtifact d4e = (D4EArtifact) artifact; rrenkert@6250: BedQualityAccess access = new BedQualityAccess(d4e, context); rrenkert@6250: int ndx = getIndex() & 7; rrenkert@6250: int top = (getIndex() >> 3) & 1; rrenkert@6250: int diam = (getIndex() >> 4); rrenkert@6250: String diameter = ""; rrenkert@6250: switch (diam) { rrenkert@6250: case 1: diameter = "d10"; break; rrenkert@6250: case 2: diameter = "d16"; break; rrenkert@6250: case 3: diameter = "d20"; break; rrenkert@6250: case 4: diameter = "d25"; break; rrenkert@6250: case 5: diameter = "d30"; break; rrenkert@6250: case 6: diameter = "d40"; break; rrenkert@6250: case 7: diameter = "d50"; break; rrenkert@6250: case 8: diameter = "d60"; break; rrenkert@6250: case 9: diameter = "d70"; break; rrenkert@6250: case 10: diameter = "d75"; break; rrenkert@6250: case 11: diameter = "d80"; break; rrenkert@6250: case 12: diameter = "d84"; break; rrenkert@6250: case 13: diameter = "d90"; break; rrenkert@6250: case 14: diameter = "dmin"; break; rrenkert@6250: case 15: diameter = "dmax"; break; rrenkert@6250: case 16: diameter = "dm"; break; rrenkert@6250: default: return null; rrenkert@6250: } rrenkert@6250: rrenkert@6250: QualityMeasurements measurements = rrenkert@6250: QualityMeasurementFactory.getBedMeasurements( felix@7261: access.getRiverName(), rrenkert@6250: access.getFrom(), rrenkert@6250: access.getTo(), rrenkert@6250: access.getDateRanges().get(ndx).getFrom(), rrenkert@6250: access.getDateRanges().get(ndx).getTo()); rrenkert@6250: TDoubleArrayList kms = new TDoubleArrayList(); rrenkert@6250: TDoubleArrayList data = new TDoubleArrayList(); rrenkert@6250: for (QualityMeasurement m : measurements.getMeasurements()) { rrenkert@6250: if (top == 1 && m.getDepth1() == 0d && m.getDepth2() <= 0.3) { rrenkert@6250: kms.add(m.getKm()); rrenkert@6259: data.add(m.getDiameter(diameter) * 1000); rrenkert@6250: } rrenkert@6250: else if (top == 0 && m.getDepth1() > 0d && m.getDepth2() <= 0.5){ rrenkert@6250: kms.add(m.getKm()); rrenkert@6259: data.add(m.getDiameter(diameter) * 1000); rrenkert@6250: } rrenkert@6250: } rrenkert@6250: BedDiameterData bdd = new BedDiameterData(diameter, kms, data); rrenkert@6250: return bdd; rrenkert@6250: } rrenkert@6250: rrenkert@6250: /** Copy deeply. */ rrenkert@6250: @Override rrenkert@6250: public Facet deepCopy() { rrenkert@6250: BedDiameterDataFacet copy = new BedDiameterDataFacet(); rrenkert@6250: copy.set(this); rrenkert@6250: copy.type = type; rrenkert@6250: copy.hash = hash; rrenkert@6250: copy.stateId = stateId; rrenkert@6250: return copy; rrenkert@6250: } rrenkert@6250: }