# HG changeset patch # User Björn Ricks # Date 1352992802 -3600 # Node ID b838d16c629ea3c6a263c1c1c671ab0896329d42 # Parent 1619f80eb62ebce85fc31e9aad4537c2bf510b4a Refactor BedHeightArtifacts to provide bed height single values of a range The range of bed height single values is necessary to generate a chart for sounding widths. diff -r 1619f80eb62e -r b838d16c629e flys-artifacts/src/main/java/de/intevation/flys/artifacts/BedHeightsArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/BedHeightsArtifact.java Thu Nov 15 16:18:02 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/BedHeightsArtifact.java Thu Nov 15 16:20:02 2012 +0100 @@ -6,25 +6,29 @@ import org.apache.log4j.Logger; import org.w3c.dom.Document; +import de.intevation.artifactdatabase.state.DefaultOutput; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.FacetActivity; -import de.intevation.artifactdatabase.state.State; import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallMeta; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.flys.artifacts.model.minfo.BedHeight; import de.intevation.flys.artifacts.model.minfo.BedHeightFacet; import de.intevation.flys.artifacts.model.minfo.BedHeightFactory; import de.intevation.flys.artifacts.states.StaticState; +import de.intevation.flys.model.BedHeightSingle; +import de.intevation.flys.model.BedHeightSingleValue; public class BedHeightsArtifact -extends StaticFLYSArtifact +extends AbstractStaticStateArtifact { /** The logger for this class. */ private static Logger logger = Logger.getLogger(BedHeightsArtifact.class); private static final String NAME = "bedheights"; + private static final String STATIC_FACET_NAME = "bedheight"; static { // TODO: Move to configuration. @@ -40,10 +44,6 @@ public static final String DATA_HEIGHT_TYPE = "height_marks"; - /** One and only state to be in. */ - protected transient State state = null; - - /** * Trivial Constructor. */ @@ -69,53 +69,44 @@ { logger.debug("BedHeightsArtifact.setup"); - state = new StaticState(STATIC_STATE_NAME); - if (logger.isDebugEnabled()) { logger.debug(XMLUtils.toString(data)); } - List fs = new ArrayList(); String code = getDatacageIDValue(data); if (code != null) { String [] parts = code.split("-"); if (parts.length >= 4) { - if (parts[0].equals("bedheight")) { - addStringData("type", parts[1]); + String name = parts[0]; + String type = parts[1]; + String btype = type; + int hId = Integer.parseInt(parts[2]); + if (name.equals("bedheight")) { + addStringData("type", type); addStringData("height_id", parts[2]); addStringData("time", parts[3]); } - int hId = Integer.parseInt(parts[2]); - String bedHName = BedHeightFactory.getHeightName(parts[1], hId); + if (type.equals("singlevalues")) { + btype = "single"; + } - Facet bedHFacet = new BedHeightFacet( - "bedheight", - bedHName); + String bedHName = BedHeightFactory.getHeightName(btype, hId); - fs.add(bedHFacet); - addFacets(state.getID(), fs); + Facet facet = new BedHeightFacet( + STATIC_FACET_NAME, bedHName, type); + + ArrayList facets = new ArrayList(1); + facets.add(facet); + + addFacets(STATIC_STATE_NAME, facets); } } - - //spawnState(); super.setup(identifier, factory, context, callMeta, data); } /** - * Get a list containing the one and only State. - * @param context ignored. - * @return list with one and only state. - */ - @Override - protected List getStates(Object context) { - ArrayList states = new ArrayList(); - states.add(state); - return states; - } - - /** */ public BedHeight getHeight() { return BedHeightFactory.getHeight( @@ -123,5 +114,45 @@ Integer.parseInt(getDataAsString("height_id")), Integer.parseInt(getDataAsString("time"))); } + + public List getSingleValues() { + logger.debug("getSingleValues"); + BedHeightSingle single = BedHeightSingle.getBedHeightSingleById( + getDataAsInteger("height_id")); + return BedHeightSingleValue.getBedHeightSingleValues(single, + getDataAsDouble("ld_from"), + getDataAsDouble("ld_to")); + } + + @Override + protected void initStaticState() { + + logger.debug("initStaticState " + getName() + " " + identifier()); + + StaticState state = new StaticState(STATIC_STATE_NAME); + DefaultOutput output = new DefaultOutput( + "general", + "general", + "image/png", + "chart"); + + List facets = getFacets(STATIC_STATE_NAME); + output.addFacets(facets); + state.addOutput(output); + + setStaticState(state); + } + + @Override + protected void initialize(Artifact artifact, Object context, CallMeta meta) { + // do not clone facets, etc. from master artifact + + logger.debug("initialize"); + importData((FLYSArtifact)artifact, "ld_from"); + importData((FLYSArtifact)artifact, "ld_to"); + + logger.debug("ld_from " + getDataAsString("ld_from")); + logger.debug("ld_to " + getDataAsString("ld_to")); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :