felix@2172: package de.intevation.flys.artifacts;
felix@2172: 
felix@2172: import java.util.ArrayList;
felix@2172: import java.util.List;
felix@2172: 
felix@2172: import org.apache.log4j.Logger;
felix@2172: 
felix@2172: import org.w3c.dom.Document;
felix@2172: 
felix@2172: import de.intevation.artifactdatabase.state.Facet;
felix@2172: 
felix@2172: import de.intevation.artifacts.Artifact;
felix@2172: import de.intevation.artifacts.ArtifactFactory;
felix@2172: import de.intevation.artifacts.CallMeta;
felix@2172: 
felix@2172: import de.intevation.flys.artifacts.model.FacetTypes;
felix@2172: 
felix@2172: import de.intevation.flys.artifacts.states.DefaultState;
felix@2172: 
felix@2172: 
felix@2172: 
felix@2172: /**
felix@2172:  * Artifact to store user-added points.
felix@2172:  */
felix@2172: public class ManualPointsArtifact
felix@2172: extends      StaticFLYSArtifact
felix@2172: implements   FacetTypes
felix@2172: {
felix@2172:     /** The logger for this class. */
felix@2172:     private static Logger logger = Logger.getLogger(ManualPointsArtifact.class);
felix@2172: 
felix@2172:     /** The name of the artifact. */
felix@2172:     public static final String ARTIFACT_NAME = "manualpoints";
felix@2172: 
felix@2172: 
felix@2172:     /**
felix@2172:      * Trivial Constructor.
felix@2172:      */
felix@2172:     public ManualPointsArtifact() {
felix@2206:         logger.debug("ManualPointsArtifact.ManualPointsArtifact()");
felix@2172:     }
felix@2172: 
felix@2172: 
felix@2172:     /**
felix@2172:      * Gets called from factory, to set things up.
felix@2172:      */
felix@2172:     @Override
felix@2172:     public void setup(
felix@2172:         String          identifier,
felix@2172:         ArtifactFactory factory,
felix@2172:         Object          context,
felix@2172:         CallMeta        callMeta,
felix@2172:         Document        data)
felix@2172:     {
felix@2172:         logger.debug("ManualPointsArtifact.setup");
felix@2172:         super.setup(identifier, factory, context, callMeta, data);
felix@2172:         initialize(null, context, callMeta);
felix@2172:     }
felix@2172: 
felix@2172: 
felix@2172:     /** Return the name of this artifact. */
felix@2172:     public String getName() {
felix@2172:         return ARTIFACT_NAME;
felix@2172:     }
felix@2172: 
felix@2172: 
felix@2172:     /** Access state data storing the jsonstring with points. */
felix@2206:     public String getPointsData(String facetName) {
felix@2206:         return getDataAsString(facetName + ".data");
felix@2172:     }
felix@2172: 
felix@2172: 
felix@2172:     /** Setup state and facet. */
felix@2172:     @Override
felix@2172:     protected void initialize(Artifact artifact, Object context, CallMeta meta) {
felix@2172:         logger.debug("ManualPointsArtifact.initialize");
felix@2172:         List<Facet> fs = new ArrayList<Facet>();
felix@2172: 
felix@2172:         DefaultState state = (DefaultState) getCurrentState(context);
felix@2172:         state.computeInit(this, hash(), context, meta, fs);
felix@2172:         if (!fs.isEmpty()) { 
felix@2172:             logger.debug("Facets to add in ManualPointsArtifact.initialize ."); 
felix@2172:             facets.put(getCurrentStateId(), fs); 
felix@2172:         } 
felix@2172:         else { 
felix@2172:             logger.debug("No facets to add in ManualPointsArtifact.initialize ("
felix@2172:                 + state.getID() + ").");
felix@2172:         }
felix@2172:     }
felix@2172: 
felix@2172: 
felix@2172:     /**
felix@2172:      * Determines Facets initial disposition regarding activity (think of
felix@2172:      * selection in Client ThemeList GUI). This will be checked one time
felix@2172:      * when the facet enters a collections describe document.
felix@2172:      *
felix@2172:      * @param facetName name of the facet.
felix@2172:      * @param index     index of the facet.
felix@2172:      * @return 0 if not active
felix@2172:      */
felix@2172:     @Override
felix@2172:     public int getInitialFacetActivity(
felix@2172:         String outputName,
felix@2172:         String facetName,
felix@2172:         int index)
felix@2172:     {
felix@2172:         return 1;
felix@2172:     }
felix@2172: }
felix@2172: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :