Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/BedHeightsArtifact.java @ 4128:11c589d68f13
Fix for NPE in FLYSWorkspace.bringUp() #933
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Sun, 14 Oct 2012 10:15:50 +0200 |
parents | a66df8e8d3df |
children | d83e021ff638 |
line wrap: on
line source
package de.intevation.flys.artifacts; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.w3c.dom.Document; 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.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; public class BedHeightsArtifact extends StaticFLYSArtifact { /** The logger for this class. */ private static Logger logger = Logger.getLogger(BedHeightsArtifact.class); private static final String NAME = "bedheights"; static { // TODO: Move to configuration. FacetActivity.Registry.getInstance() .register(NAME, FacetActivity.INACTIVE); } public static final String STATIC_STATE_NAME = "state.additional_bedheights.static"; /** Data Item name to know whether we are Heighmarks and reveive * some data slightly different. */ public static final String DATA_HEIGHT_TYPE = "height_marks"; /** One and only state to be in. */ protected transient State state = null; /** * Trivial Constructor. */ public BedHeightsArtifact() { logger.debug("BedHeightsArtifact.BedHeightsArtifact"); } @Override public String getName() { return NAME; } /** * Gets called from factory, to set things up. */ @Override public void setup( String identifier, ArtifactFactory factory, Object context, CallMeta callMeta, Document data) { logger.debug("BedHeightsArtifact.setup"); state = new StaticState(STATIC_STATE_NAME); if (logger.isDebugEnabled()) { logger.debug(XMLUtils.toString(data)); } List<Facet> fs = new ArrayList<Facet>(); String code = getDatacageIDValue(data); if (code != null) { String [] parts = code.split("-"); if (parts.length >= 4) { if (parts[0].equals("bedheight")) { addStringData("type", parts[1]); addStringData("height_id", parts[2]); addStringData("time", parts[3]); } int hId = Integer.parseInt(parts[2]); String bedHName = BedHeightFactory.getHeightName(parts[1], hId); Facet bedHFacet = new BedHeightFacet( "bedheight", bedHName); fs.add(bedHFacet); facets.put(state.getID(), fs); } } //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<State> getStates(Object context) { ArrayList<State> states = new ArrayList<State>(); states.add(getState()); return states; } /** * Get the "current" state (there is but one). * @param cc ignored. * @return the "current" (only possible) state. */ @Override public State getCurrentState(Object cc) { return getState(); } /** * Get the only possible state. * @return the state. */ protected State getState() { return getState(null, null); } /** * Get the state. * @param context ignored. * @param stateID ignored. * @return the state. */ @Override protected State getState(Object context, String stateID) { return (state != null) ? state : new StaticState(STATIC_STATE_NAME); } /** * Get WKms from factory. * @param idx param is not needed (TODO?) * @return WKms according to parameterization (can be null); */ public BedHeight getHeight() { return BedHeightFactory.getHeight( getDataAsString("type"), Integer.parseInt(getDataAsString("height_id")), Integer.parseInt(getDataAsString("time"))); } }