ingo@2702: package de.intevation.flys.artifacts.states; ingo@2702: ingo@2702: import java.util.ArrayList; ingo@2702: import java.util.List; ingo@2702: ingo@2702: import org.apache.log4j.Logger; ingo@2702: ingo@2702: import de.intevation.artifactdatabase.state.Facet; ingo@2702: ingo@2702: import de.intevation.artifacts.CallContext; ingo@2702: ingo@2702: import de.intevation.flys.artifacts.FLYSArtifact; ingo@3230: import de.intevation.flys.artifacts.access.FlowVelocityAccess; ingo@2702: import de.intevation.flys.artifacts.model.CalculationResult; ingo@2702: import de.intevation.flys.artifacts.model.DataFacet; ingo@2702: import de.intevation.flys.artifacts.model.FacetTypes; ingo@2702: import de.intevation.flys.artifacts.model.FlowVelocityCalculation; ingo@2702: import de.intevation.flys.artifacts.model.FlowVelocityData; ingo@2706: import de.intevation.flys.artifacts.model.FlowVelocityFacet; ingo@2706: import de.intevation.flys.artifacts.resources.Resources; ingo@2702: ingo@2702: ingo@2702: public class FlowVelocityState extends DefaultState implements FacetTypes { ingo@2702: ingo@2702: private static Logger logger = Logger.getLogger(FlowVelocityState.class); ingo@2702: ingo@2702: ingo@2706: public static final String I18N_MAINCHANNEL_FACET = ingo@2706: "facet.flow_velocity.mainchannel"; ingo@2706: ingo@2706: public static final String I18N_TOTALCHANNEL_FACET = ingo@2706: "facet.flow_velocity.totalchannel"; ingo@2706: ingo@2706: public static final String I18N_TAU_FACET = ingo@2706: "facet.flow_velocity.tauchannel"; ingo@2706: ingo@2706: ingo@2702: @Override ingo@2702: public Object computeAdvance( ingo@2702: FLYSArtifact artifact, ingo@2702: String hash, ingo@2702: CallContext context, ingo@2702: List facets, ingo@2702: Object old ingo@2702: ) { ingo@2702: logger.debug("FlowVelocityState.computeAdvance"); ingo@2702: ingo@2702: List newFacets = new ArrayList(); ingo@3230: ingo@3230: FlowVelocityAccess access = new FlowVelocityAccess(artifact); ingo@2702: ingo@2702: CalculationResult res = old instanceof CalculationResult ingo@2702: ? (CalculationResult) old ingo@3230: : new FlowVelocityCalculation().calculate(access); ingo@2702: ingo@2702: if (facets == null || res == null) { ingo@2702: return res; ingo@2702: } ingo@2702: ingo@2702: FlowVelocityData[] data = (FlowVelocityData[]) res.getData(); ingo@2702: ingo@2702: logger.debug("Calculated " + data.length + " FlowVelocityData objects"); ingo@2702: ingo@2706: String id = getID(); ingo@2706: int idx = 0; ingo@2702: ingo@2702: for (FlowVelocityData d: data) { ingo@2702: logger.error("TODO: Implement Facet creation for chart!"); ingo@2702: ingo@2706: newFacets.add(new FlowVelocityFacet( ingo@2706: idx, ingo@2706: FLOW_VELOCITY_MAINCHANNEL, ingo@2706: buildMainChannelName(artifact, context, d), ingo@2706: ComputeType.ADVANCE, ingo@2706: id, ingo@2706: hash ingo@2706: )); ingo@2706: ingo@2706: newFacets.add(new FlowVelocityFacet( ingo@2706: idx, ingo@2706: FLOW_VELOCITY_TOTALCHANNEL, ingo@2706: buildTotalChannelName(artifact, context, d), ingo@2706: ComputeType.ADVANCE, ingo@2706: id, ingo@2706: hash ingo@2706: )); ingo@2706: ingo@2706: newFacets.add(new FlowVelocityFacet( ingo@2706: idx, ingo@2706: FLOW_VELOCITY_TAU, ingo@2706: buildTauName(artifact, context, d), ingo@2706: ComputeType.ADVANCE, ingo@2706: id, ingo@2706: hash ingo@2706: )); ingo@2706: ingo@2706: idx++; ingo@2702: } ingo@2702: ingo@2702: Facet csv = new DataFacet( ingo@2702: CSV, "CSV data", ComputeType.ADVANCE, hash, id); ingo@2702: ingo@2702: // TODO ADD PDF FACET ingo@2702: ingo@2702: newFacets.add(csv); ingo@2702: ingo@2702: logger.debug("Created " + newFacets.size() + " new Facets."); ingo@2702: ingo@2702: facets.addAll(newFacets); ingo@2702: ingo@2702: return res; ingo@2702: } ingo@2706: ingo@2706: ingo@2706: protected String buildFacetName( ingo@2706: FLYSArtifact flys, ingo@2706: CallContext cc, ingo@2706: FlowVelocityData data, ingo@2706: String resourceId ingo@2706: ) { ingo@2706: Object[] args = new Object[] { ingo@2706: data.getZone() ingo@2706: }; ingo@2706: ingo@2706: return Resources.getMsg( ingo@2706: cc.getMeta(), ingo@2706: resourceId, ingo@2706: resourceId, ingo@2706: args); ingo@2706: } ingo@2706: ingo@2706: ingo@2706: protected String buildMainChannelName( ingo@2706: FLYSArtifact flys, ingo@2706: CallContext cc, ingo@2706: FlowVelocityData data ingo@2706: ) { ingo@2706: return buildFacetName(flys, cc, data, I18N_MAINCHANNEL_FACET); ingo@2706: } ingo@2706: ingo@2706: ingo@2706: protected String buildTotalChannelName( ingo@2706: FLYSArtifact flys, ingo@2706: CallContext cc, ingo@2706: FlowVelocityData data ingo@2706: ) { ingo@2706: return buildFacetName(flys, cc, data, I18N_TOTALCHANNEL_FACET); ingo@2706: } ingo@2706: ingo@2706: ingo@2706: protected String buildTauName( ingo@2706: FLYSArtifact flys, ingo@2706: CallContext cc, ingo@2706: FlowVelocityData data ingo@2706: ) { ingo@2706: return buildFacetName(flys, cc, data, I18N_TAU_FACET); ingo@2706: } ingo@2702: } ingo@2702: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :