felix@2723: package de.intevation.flys.artifacts.states; felix@2723: felix@2723: import java.util.List; felix@2723: felix@2723: import org.apache.log4j.Logger; felix@2723: felix@2723: import de.intevation.artifacts.CallMeta; felix@2734: import de.intevation.artifacts.CallContext; felix@2723: felix@2723: import de.intevation.artifactdatabase.state.Facet; felix@2723: felix@2734: import de.intevation.flys.artifacts.ChartArtifact; felix@2734: import de.intevation.flys.artifacts.GaugeDischargeArtifact; felix@2723: import de.intevation.flys.artifacts.FLYSArtifact; felix@2723: felix@2723: import de.intevation.flys.artifacts.model.GaugeDischargeFacet; felix@2723: import de.intevation.flys.artifacts.model.FacetTypes; felix@2734: import de.intevation.flys.artifacts.model.WQKms; felix@2734: import de.intevation.flys.artifacts.model.ReportFacet; felix@2734: import de.intevation.flys.artifacts.model.EmptyFacet; felix@2734: import de.intevation.flys.artifacts.model.CalculationResult; felix@2723: felix@2723: import de.intevation.flys.artifacts.resources.Resources; felix@2734: import de.intevation.flys.utils.FLYSUtils; felix@2723: felix@2723: felix@2723: /** felix@2723: * The only state for an GaugeDischargeState (River and km known). felix@2723: */ felix@2723: public class GaugeDischargeState felix@2723: extends DefaultState felix@2723: implements FacetTypes felix@2723: { felix@2723: /** Developer-centric description of facet. */ felix@2723: public static final String I18N_DESCRIPTION = "facet.discharge.curve"; felix@2723: felix@2723: /** The logger that is used in this state. */ felix@2723: private static final Logger logger = Logger.getLogger(GaugeDischargeState.class); felix@2723: felix@2723: felix@2723: /** felix@2723: * Add an GaugeDischargeFacet to list of Facets. felix@2723: * felix@2723: * @param artifact Ignored. felix@2723: * @param hash Ignored. felix@2723: * @param context Ignored. felix@2723: * @param meta CallMeta to be used for internationalization. felix@2723: * @param facets List to add AnnotationFacet to. felix@2723: * felix@2723: * @return null. felix@2723: */ felix@2723: @Override felix@2723: public Object computeInit( felix@2723: FLYSArtifact artifact, felix@2723: String hash, felix@2723: Object context, felix@2723: CallMeta meta, felix@2723: List facets felix@2723: ) { felix@2723: logger.debug("GaugeDischargeState.computeInit()"); felix@2723: felix@2723: // TODO caching, / CalculationResultusage felix@2723: felix@2723: GaugeDischargeFacet facet = new GaugeDischargeFacet( felix@2723: 0, felix@2723: DISCHARGE_CURVE, felix@2723: DISCHARGE_CURVE); felix@2723: //Resources.getMsg(meta, I18N_DESCRIPTION, I18N_DESCRIPTION)); felix@2723: facets.add(facet); felix@2723: felix@2723: return null; felix@2723: } felix@2723: //WINFOArtifact#getDischargeCurveData felix@2723: felix@2734: felix@2734: @Override felix@2734: public Object computeAdvance( felix@2734: FLYSArtifact artifact, felix@2734: String hash, felix@2734: CallContext context, felix@2734: List facets, felix@2734: Object old felix@2734: ) { felix@2734: // TODO why are the facets null here? felix@2734: //if (facets == null) facets = new List(); felix@2734: if (artifact instanceof GaugeDischargeArtifact) { felix@2734: logger.debug("GaugeDischargeState.computeAdvance()"); felix@2734: GaugeDischargeArtifact dischargeArtifact = (GaugeDischargeArtifact) artifact; felix@2734: felix@2734: CalculationResult res; felix@2734: felix@2734: /*if (old instanceof CalculationResult) { felix@2734: res = (CalculationResult) old; felix@2734: } felix@2734: else {*/ felix@2734: res = dischargeArtifact.getDischargeCurveData(); felix@2734: //} felix@2734: felix@2734: WQKms[] wqkms = (WQKms[]) res.getData(); felix@2734: felix@2734: if (wqkms != null && facets != null) { felix@2734: logger.debug("GaugeDischargeState.computeAdvance(): create facets"); felix@2734: // Create an i18ed name for a (w or q) duration curve facet. felix@2734: Object[] args = new Object[] { felix@2734: FLYSUtils.getRiver(dischargeArtifact).getName(), felix@2734: FLYSUtils.getLocations(dischargeArtifact)[0] felix@2734: }; felix@2734: felix@2734: String nameW = Resources.getMsg( felix@2734: context.getMeta(), felix@2734: "chart.duration.curve.curve.w", felix@2734: "", felix@2734: args); felix@2734: felix@2734: String nameQ = Resources.getMsg( felix@2734: context.getMeta(), felix@2734: "chart.duration.curve.curve.q", felix@2734: "", felix@2734: args); felix@2734: felix@2734: /*Facet w = new DurationCurveFacet(DURATION_W, nameW); felix@2734: Facet q = new DurationCurveFacet(DURATION_Q, nameQ); felix@2734: felix@2734: facets.add(w);*/ felix@2734: GaugeDischargeFacet facet = new GaugeDischargeFacet( felix@2734: 0, felix@2734: "A"+DISCHARGE_CURVE, felix@2734: "A"+DISCHARGE_CURVE); felix@2734: //Resources.getMsg(meta, I18N_DESCRIPTION, I18N_DESCRIPTION)); felix@2734: facets.add(facet); felix@2734: felix@2734: //facets.add(new DataFacet(CSV, "CSV data")); felix@2734: //facets.add(new DataFacet(PDF, "PDF data")); felix@2734: felix@2734: if (res.getReport().hasProblems()) { felix@2734: facets.add(new ReportFacet()); felix@2734: } felix@2734: } felix@2734: else { felix@2734: if (wqkms == null) felix@2734: logger.debug("GaugeDischargeState.computeAdvance(): wqkms 0"); felix@2734: else felix@2734: logger.debug("GaugeDischargeState.computeAdvance(): facets 0"); felix@2734: } felix@2734: felix@2734: return res; felix@2734: } felix@2734: else if (artifact instanceof ChartArtifact) { felix@2734: ChartArtifact chart = (ChartArtifact)artifact; felix@2734: facets.add(new EmptyFacet()); felix@2734: return null; felix@2734: } felix@2734: return null; felix@2734: } felix@2734: felix@2723: } felix@2723: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :