raimund@3614: package de.intevation.flys.artifacts; raimund@3614: raimund@3614: import java.util.ArrayList; raimund@3614: import java.util.List; raimund@3614: raimund@3614: import org.apache.log4j.Logger; raimund@3614: import org.w3c.dom.Document; raimund@3614: bjoern@4535: import de.intevation.artifactdatabase.state.DefaultOutput; raimund@3614: import de.intevation.artifactdatabase.state.Facet; raimund@3614: import de.intevation.artifactdatabase.state.FacetActivity; raimund@3614: import de.intevation.artifacts.ArtifactFactory; bjoern@4535: import de.intevation.artifacts.Artifact; raimund@3614: import de.intevation.artifacts.CallMeta; raimund@3614: import de.intevation.artifacts.common.utils.XMLUtils; raimund@3614: import de.intevation.flys.artifacts.model.minfo.BedHeight; raimund@3614: import de.intevation.flys.artifacts.model.minfo.BedHeightFacet; raimund@3614: import de.intevation.flys.artifacts.model.minfo.BedHeightFactory; raimund@3614: import de.intevation.flys.artifacts.states.StaticState; bjoern@4535: import de.intevation.flys.model.BedHeightSingle; bjoern@4535: import de.intevation.flys.model.BedHeightSingleValue; raimund@3614: raimund@3614: public class BedHeightsArtifact bjoern@4535: extends AbstractStaticStateArtifact raimund@3614: { raimund@3614: /** The logger for this class. */ raimund@3614: private static Logger logger = raimund@3614: Logger.getLogger(BedHeightsArtifact.class); raimund@3614: raimund@3614: private static final String NAME = "bedheights"; bjoern@4535: private static final String STATIC_FACET_NAME = "bedheight"; raimund@3614: raimund@3614: static { raimund@3614: // TODO: Move to configuration. raimund@3614: FacetActivity.Registry.getInstance() raimund@3614: .register(NAME, FacetActivity.INACTIVE); raimund@3614: } raimund@3614: raimund@3614: public static final String STATIC_STATE_NAME = raimund@3614: "state.additional_bedheights.static"; raimund@3614: raimund@3614: /** Data Item name to know whether we are Heighmarks and reveive raimund@3614: * some data slightly different. */ raimund@3614: public static final String DATA_HEIGHT_TYPE = raimund@3614: "height_marks"; raimund@3614: raimund@3614: /** raimund@3614: * Trivial Constructor. raimund@3614: */ raimund@3614: public BedHeightsArtifact() { raimund@3614: logger.debug("BedHeightsArtifact.BedHeightsArtifact"); raimund@3614: } raimund@3614: raimund@3614: @Override raimund@3614: public String getName() { raimund@3614: return NAME; raimund@3614: } raimund@3614: raimund@3614: /** raimund@3614: * Gets called from factory, to set things up. raimund@3614: */ raimund@3614: @Override raimund@3614: public void setup( raimund@3614: String identifier, raimund@3614: ArtifactFactory factory, raimund@3614: Object context, raimund@3614: CallMeta callMeta, raimund@3614: Document data) raimund@3614: { raimund@3614: logger.debug("BedHeightsArtifact.setup"); raimund@3614: raimund@3614: if (logger.isDebugEnabled()) { raimund@3614: logger.debug(XMLUtils.toString(data)); raimund@3614: } raimund@3614: raimund@3614: String code = getDatacageIDValue(data); raimund@3614: raimund@3614: if (code != null) { raimund@3614: String [] parts = code.split("-"); raimund@3614: raimund@3614: if (parts.length >= 4) { bjoern@4535: String name = parts[0]; bjoern@4535: String type = parts[1]; bjoern@4535: String btype = type; bjoern@4535: int hId = Integer.parseInt(parts[2]); bjoern@4535: if (name.equals("bedheight")) { bjoern@4535: addStringData("type", type); raimund@3614: addStringData("height_id", parts[2]); raimund@3614: addStringData("time", parts[3]); raimund@3614: } bjoern@4535: if (type.equals("singlevalues")) { bjoern@4535: btype = "single"; bjoern@4535: } raimund@3614: bjoern@4535: String bedHName = BedHeightFactory.getHeightName(btype, hId); raimund@3614: bjoern@4535: Facet facet = new BedHeightFacet( bjoern@4535: STATIC_FACET_NAME, bedHName, type); bjoern@4535: bjoern@4535: ArrayList facets = new ArrayList(1); bjoern@4535: facets.add(facet); bjoern@4535: bjoern@4535: addFacets(STATIC_STATE_NAME, facets); raimund@3614: } raimund@3614: } raimund@3614: super.setup(identifier, factory, context, callMeta, data); raimund@3614: } raimund@3614: raimund@3614: /** raimund@3614: */ raimund@3614: public BedHeight getHeight() { raimund@3614: return BedHeightFactory.getHeight( raimund@3614: getDataAsString("type"), raimund@3614: Integer.parseInt(getDataAsString("height_id")), raimund@3614: Integer.parseInt(getDataAsString("time"))); raimund@3614: } bjoern@4535: bjoern@4535: public List getSingleValues() { bjoern@4535: logger.debug("getSingleValues"); bjoern@4535: BedHeightSingle single = BedHeightSingle.getBedHeightSingleById( bjoern@4535: getDataAsInteger("height_id")); bjoern@4535: return BedHeightSingleValue.getBedHeightSingleValues(single, bjoern@4535: getDataAsDouble("ld_from"), bjoern@4535: getDataAsDouble("ld_to")); bjoern@4535: } bjoern@4535: bjoern@4535: @Override bjoern@4535: protected void initStaticState() { bjoern@4535: bjoern@4535: logger.debug("initStaticState " + getName() + " " + identifier()); bjoern@4535: bjoern@4535: StaticState state = new StaticState(STATIC_STATE_NAME); bjoern@4535: DefaultOutput output = new DefaultOutput( bjoern@4535: "general", bjoern@4535: "general", bjoern@4535: "image/png", bjoern@4535: "chart"); bjoern@4535: bjoern@4535: List facets = getFacets(STATIC_STATE_NAME); bjoern@4535: output.addFacets(facets); bjoern@4535: state.addOutput(output); bjoern@4535: bjoern@4535: setStaticState(state); bjoern@4535: } bjoern@4535: bjoern@4535: @Override bjoern@4535: protected void initialize(Artifact artifact, Object context, CallMeta meta) { bjoern@4535: // do not clone facets, etc. from master artifact bjoern@4535: bjoern@4535: logger.debug("initialize"); bjoern@4535: importData((FLYSArtifact)artifact, "ld_from"); bjoern@4535: importData((FLYSArtifact)artifact, "ld_to"); bjoern@4535: bjoern@4535: logger.debug("ld_from " + getDataAsString("ld_from")); bjoern@4535: logger.debug("ld_to " + getDataAsString("ld_to")); bjoern@4535: } raimund@3614: } felix@4459: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :