Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixReferenceEventsFacet.java @ 9348:a3f318347707
Show wq outliers within same thems with different symbol: not ready yet
author | gernotbelger |
---|---|
date | Tue, 31 Jul 2018 11:25:38 +0200 |
parents | e4606eae8ea5 |
children | ddcd52d239cd |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixReferenceEventsFacet.java Mon Jul 30 16:43:44 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixReferenceEventsFacet.java Tue Jul 31 11:25:38 2018 +0200 @@ -9,7 +9,6 @@ package org.dive4elements.river.artifacts.model.fixings; import org.apache.log4j.Logger; - import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.D4EArtifact; @@ -18,15 +17,12 @@ import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; import org.dive4elements.river.utils.KMIndex; - /** * Facet to show W values for Q values at km for a date. * * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> */ -public class FixReferenceEventsFacet -extends FixingsFacet -implements FacetTypes { +public class FixReferenceEventsFacet extends FixingsFacet implements FacetTypes { /** House log. */ private static Logger log = Logger.getLogger(FixReferenceEventsFacet.class); @@ -35,30 +31,22 @@ public FixReferenceEventsFacet() { } - - /** - * @param name - */ - public FixReferenceEventsFacet(int index, String name, String description) { - super(index, - name, - description, - ComputeType.ADVANCE, - null, - null); + public FixReferenceEventsFacet(final int index, final String name, final String description) { + super(index, name, description, ComputeType.ADVANCE, null, null); } - /** * Returns the data this facet requires. * - * @param artifact the owner artifact. - * @param context the CallContext (ignored). + * @param artifact + * the owner artifact. + * @param context + * the CallContext (ignored). * * @return the data. */ @Override - public Object getData(Artifact artifact, CallContext context) { + public Object getData(final Artifact artifact, final CallContext context) { log.debug("FixReferenceEventsFacet.getData"); if (!(artifact instanceof D4EArtifact)) { @@ -66,43 +54,56 @@ return null; } - D4EArtifact flys = (D4EArtifact)artifact; + final D4EArtifact flys = (D4EArtifact) artifact; - CalculationResult res = - (CalculationResult) flys.compute(context, - ComputeType.ADVANCE, - false); + final CalculationResult res = (CalculationResult) flys.compute(context, ComputeType.ADVANCE, false); - FixResult result = (FixResult) res.getData(); - double currentKm = getCurrentKm(context); + final FixResult result = (FixResult) res.getData(); + final double currentKm = getCurrentKm(context); if (log.isDebugEnabled()) { log.debug("current km in FRE: " + currentKm); } - KMIndex<QWD []> kmQWs = result.getReferenced(); - KMIndex.Entry<QWD []> kmQWsEntry = kmQWs.binarySearch(currentKm); - if (kmQWsEntry != null) { - int ndx = index & 255; - for (QWD qwd: kmQWsEntry.getValue()) { - if (qwd.getIndex() == ndx) { - return qwd; - } - } - } + /* first search in referenced */ + final KMIndex<QWD[]> referenced = result.getReferenced(); + final QWD foundReferenced = find(referenced, currentKm); + if (foundReferenced != null) + return foundReferenced; + + // FIXME +// /* also search in outliers, should be mutually exclusive, because outliers got removed from referenced */ +// final KMIndex<QWD[]> outliers = result.getOutliers(); +// final QWD foundOutlier = find(outliers, currentKm); +// if (foundOutlier != null) +// return foundOutlier; + return null; } + private QWD find(final KMIndex<QWD[]> kmQWs, final double currentKm) { + + final KMIndex.Entry<QWD[]> kmQWsEntry = kmQWs.binarySearch(currentKm); + if (kmQWsEntry != null) { + final int ndx = this.index & 255; + for (final QWD qwd : kmQWsEntry.getValue()) { + if (qwd.getIndex() == ndx) + return qwd; + } + } + + return null; + } /** * Create a deep copy of this Facet. + * * @return a deep copy. */ @Override public FixReferenceEventsFacet deepCopy() { - FixReferenceEventsFacet copy = new FixReferenceEventsFacet(); + final FixReferenceEventsFacet copy = new FixReferenceEventsFacet(); copy.set(this); return copy; } -} -// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : +} \ No newline at end of file