teichmann@5831: package org.dive4elements.river.artifacts.model.fixings; raimund@3610: raimund@3610: import org.apache.log4j.Logger; raimund@3610: teichmann@5831: import org.dive4elements.artifacts.Artifact; teichmann@5831: import org.dive4elements.artifacts.CallContext; teichmann@5831: import org.dive4elements.river.artifacts.FLYSArtifact; teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; teichmann@5831: import org.dive4elements.river.artifacts.model.DataFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; teichmann@5831: import org.dive4elements.river.utils.KMIndex; raimund@3610: raimund@3610: public class FixLongitudinalAvSectorFacet raimund@3610: extends DataFacet raimund@3610: implements FacetTypes { raimund@3610: raimund@3610: /** House logger. */ raimund@3610: private static Logger logger = raimund@3610: Logger.getLogger(FixLongitudinalAvSectorFacet.class); raimund@3610: raimund@3610: /** Trivial Constructor. */ raimund@3610: public FixLongitudinalAvSectorFacet() { raimund@3610: } raimund@3610: raimund@3610: raimund@3610: public FixLongitudinalAvSectorFacet( raimund@3610: int ndx, raimund@3610: String name, raimund@3610: String description) raimund@3610: { raimund@3610: super( raimund@3610: ndx, raimund@3610: name, raimund@3610: description, raimund@3610: ComputeType.ADVANCE, raimund@3610: null, raimund@3610: null); raimund@3610: } raimund@3610: raimund@3610: raimund@3610: /** raimund@3610: * Returns the data this facet requires. raimund@3610: * raimund@3610: * @param artifact the owner artifact. raimund@3610: * @param context the CallContext. raimund@3610: * raimund@3610: * @return the data as KMIndex. raimund@3610: */ raimund@3610: @Override raimund@3610: public Object getData(Artifact artifact, CallContext context) { raimund@3610: logger.debug("FixLongitudinalAvSectorFacet.getData"); raimund@3610: raimund@3610: if (artifact instanceof FLYSArtifact) { raimund@3610: FLYSArtifact flys = (FLYSArtifact)artifact; raimund@3610: raimund@3610: CalculationResult res = raimund@3610: (CalculationResult) flys.compute(context, raimund@3610: ComputeType.ADVANCE, raimund@3610: false); raimund@3610: raimund@3610: FixAnalysisResult result = (FixAnalysisResult) res.getData(); raimund@3610: raimund@3610: KMIndex kmPeriods = result.getAnalysisPeriods(); raimund@3610: if (kmPeriods == null) { raimund@3610: logger.warn("No analysis periods found."); raimund@3610: return null; raimund@3610: } raimund@3610: int periodNdx = index >> 2; raimund@3610: KMIndex resPeriods = raimund@3610: new KMIndex(); raimund@3610: for (KMIndex.Entry entry: kmPeriods) { raimund@3610: AnalysisPeriod ap = entry.getValue()[periodNdx]; raimund@3610: resPeriods.add(entry.getKm(), ap); raimund@3610: } raimund@3610: raimund@3610: return resPeriods; raimund@3610: } raimund@3610: else { raimund@3610: logger.warn("Artifact is no instance of FLYSArtifact."); raimund@3610: return null; raimund@3610: } raimund@3610: } raimund@3610: raimund@3610: raimund@3610: /** raimund@3610: * Create a deep copy of this Facet. raimund@3610: * @return a deep copy. raimund@3610: */ raimund@3610: @Override raimund@3610: public FixLongitudinalAvSectorFacet deepCopy() { raimund@3610: FixLongitudinalAvSectorFacet copy = new FixLongitudinalAvSectorFacet(); raimund@3610: copy.set(this); raimund@3610: return copy; raimund@3610: } raimund@3610: } raimund@3610: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :