felix@2131: package de.intevation.flys.artifacts;
felix@2131: 
felix@2131: import java.util.ArrayList;
felix@2131: import java.util.List;
felix@2131: 
felix@2131: import org.apache.log4j.Logger;
felix@2131: 
felix@2131: import org.w3c.dom.Document;
felix@2131: 
felix@2131: import de.intevation.artifacts.Artifact;
felix@2131: import de.intevation.artifacts.ArtifactFactory;
felix@2131: import de.intevation.artifacts.CallMeta;
felix@2131: 
felix@2131: 
felix@2131: import de.intevation.flys.artifacts.states.DefaultState;
felix@2131: 
felix@2131: import de.intevation.artifactdatabase.state.Facet;
sascha@3556: import de.intevation.artifactdatabase.state.FacetActivity;
felix@2131: 
felix@2131: 
felix@2131: /**
felix@2147:  * Artifact to get hydr zones (HYKs).
felix@2131:  */
felix@2131: public class HYKArtifact extends StaticFLYSArtifact {
felix@2131: 
felix@2131:     /** Name of Artifact. */
felix@2131:     public static final String HYK_ARTIFACT_NAME = "hyk";
felix@2131: 
felix@2139:     /** Name of data item keeping the hyk id to load formations from. */
felix@2139:     public static final String HYK_ID = "hyk_artifact.data.id";
felix@2139: 
felix@2131:     /** Name of data item keeping the km of cs master. */
felix@2131:     public static final String HYK_KM = "hyk_artifact.data.km";
felix@2131: 
felix@2131:     /** Own logger. */
felix@2131:     private static final Logger logger =
felix@2131:         Logger.getLogger(HYKArtifact.class);
felix@2131: 
sascha@3556:     static {
sascha@3556:         // TODO: Move to configuration.
sascha@3556:         FacetActivity.Registry.getInstance()
sascha@3556:             .register(HYK_ARTIFACT_NAME, FacetActivity.INACTIVE);
sascha@3556:     }
felix@2131: 
felix@2131:     /** Return given name. */
felix@2131:     @Override
felix@2131:     public String getName() {
felix@2131:         return HYK_ARTIFACT_NAME;
felix@2131:     }
felix@2131: 
felix@2131: 
felix@2131:     /** Store ids, do super.setup. */
felix@2131:     @Override
felix@2131:     public void setup(
felix@2131:         String          identifier,
felix@2131:         ArtifactFactory factory,
felix@2131:         Object          context,
felix@2131:         CallMeta        callMeta,
felix@2131:         Document        data)
felix@2131:     {
felix@2131:         logger.info("HYKArtifact.setup");
felix@2131: 
felix@2741:         String ids = getDatacageIDValue(data);
felix@2131: 
felix@2139:         logger.info("HYKArtifact.setup: id is " + ids);
felix@2139: 
felix@2139:         addStringData(HYK_ID, ids);
felix@2139: 
felix@2139:         super.setup(identifier, factory, context, callMeta, data);
felix@2131:     }
felix@2131: 
felix@2131: 
felix@2131:     /** Set km as Data. */
felix@2131:     public void setKm(double km) {
felix@2131:         addStringData(HYK_KM, Double.toString(km));
felix@2131:     }
felix@2131: 
felix@2131: 
ingo@2701:     /** Get km from state data. */
ingo@2701:     public double getKm() {
ingo@2701:         Double km = getDataAsDouble(HYK_KM);
ingo@2701:         if (km == null) {
ingo@2701:             // XXX returning 0 is to be compatible to older versions that had an
ingo@2701:             // own method getDataAsDouble that returned 0 if parsing the
ingo@2701:             // parameter failed.
felix@2131:             return 0;
felix@2131:         }
ingo@2701:         else {
ingo@2701:             return km;
ingo@2701:         }
felix@2131:     }
felix@2131: 
felix@2147: 
felix@2139:     /** Get hyk-id from state data. */
felix@2139:     public int getHykId() {
felix@2139:         return getDataAsInteger(HYK_ID);
felix@2139:     }
felix@2139: 
felix@2147: 
felix@2131:     /** Do not copy data from daddyfact. */
felix@2131:     @Override
felix@2131:     protected void initialize(
felix@2131:         Artifact artifact,
felix@2131:         Object   context,
felix@2131:         CallMeta callMeta)
felix@2131:     {
felix@2131:         logger.debug("HYKArtifact.initialize");
felix@3894:         importData((FLYSArtifact)artifact, "river");
felix@2131: 
felix@2131:         List<Facet> fs = new ArrayList<Facet>();
felix@2131: 
felix@2131:         DefaultState state = (DefaultState) getCurrentState(context);
felix@2131:         state.computeInit(this, hash(), context, callMeta, fs);
sascha@3076:         if (!fs.isEmpty()) {
sascha@3076:             logger.debug("Facets to add in HYKArtifact.initialize .");
bjoern@4497:             addFacets(getCurrentStateId(), fs);
sascha@3076:         }
sascha@3076:         else {
felix@2131:             logger.debug("No facets to add in HYKArtifact.initialize ("
felix@2131:                 + state.getID() + ").");
felix@2131:         }
felix@2131:     }
felix@2131: }
felix@2131: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :