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: raimund@3614: import de.intevation.artifactdatabase.state.Facet; raimund@3614: import de.intevation.artifactdatabase.state.FacetActivity; raimund@3614: import de.intevation.artifactdatabase.state.State; raimund@3614: import de.intevation.artifacts.ArtifactFactory; 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; raimund@3614: raimund@3614: public class BedHeightsArtifact raimund@3614: extends StaticFLYSArtifact 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"; 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: /** One and only state to be in. */ raimund@3614: protected transient State state = null; raimund@3614: 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: state = new StaticState(STATIC_STATE_NAME); raimund@3614: raimund@3614: if (logger.isDebugEnabled()) { raimund@3614: logger.debug(XMLUtils.toString(data)); raimund@3614: } raimund@3614: raimund@3614: List fs = new ArrayList(); 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) { raimund@3614: if (parts[0].equals("bedheight")) { raimund@3614: addStringData("type", parts[1]); raimund@3614: addStringData("height_id", parts[2]); raimund@3614: addStringData("time", parts[3]); raimund@3614: } raimund@3614: int hId = Integer.parseInt(parts[2]); raimund@3614: String bedHName = BedHeightFactory.getHeightName(parts[1], hId); raimund@3614: raimund@3614: Facet bedHFacet = new BedHeightFacet( raimund@3614: "bedheight", raimund@3614: bedHName); raimund@3614: raimund@3614: fs.add(bedHFacet); bjoern@4501: addFacets(state.getID(), fs); raimund@3614: } raimund@3614: } raimund@3614: raimund@3614: //spawnState(); raimund@3614: super.setup(identifier, factory, context, callMeta, data); raimund@3614: } raimund@3614: raimund@3614: /** raimund@3614: * Get a list containing the one and only State. raimund@3614: * @param context ignored. raimund@3614: * @return list with one and only state. raimund@3614: */ raimund@3614: @Override raimund@3614: protected List getStates(Object context) { raimund@3614: ArrayList states = new ArrayList(); bjoern@4502: states.add(state); raimund@3614: return states; 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: } raimund@3614: } felix@4459: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :