felix@2131: package de.intevation.flys.artifacts.states;
felix@2131: 
felix@2131: import java.util.List;
felix@2131: 
felix@2131: import org.apache.log4j.Logger;
felix@2131: 
felix@2131: import de.intevation.artifacts.CallContext;
felix@2131: import de.intevation.artifacts.CallMeta;
felix@2131: 
felix@2131: import de.intevation.artifactdatabase.state.Facet;
felix@2131: 
felix@2131: import de.intevation.flys.artifacts.FLYSArtifact;
felix@2131: import de.intevation.flys.artifacts.HYKArtifact;
felix@2131: 
felix@2131: import de.intevation.flys.artifacts.model.FacetTypes;
felix@2131: import de.intevation.flys.artifacts.model.HYKFacet;
felix@2131: import de.intevation.flys.artifacts.model.HYKFactory;
felix@2131: 
felix@2131: /**
felix@2131:  * Only state of a HYKArtifact.
felix@2131:  */
felix@2131: public class StaticHYKState
felix@2131: extends      DefaultState
felix@2131: implements   FacetTypes
felix@2131: {
felix@2131:     /** The logger that is used in this state. */
felix@2139:     transient private static final Logger logger = Logger.getLogger(StaticHYKState.class);
felix@2131: 
felix@2131: 
felix@2131:     /**
felix@2131:      * From this state can not be continued.
felix@2131:      */
felix@2131:     @Override
felix@2131:     protected String getUIProvider() {
felix@2131:         return "noinput";
felix@2131:     }
felix@2131: 
felix@2131: 
felix@2131:     /**
felix@2131:      * Compute, create Facets, do the same stuff as all the other states do.
felix@2131:      */
felix@2131:     protected Object compute(
felix@2131:         HYKArtifact   hyk,
felix@2131:         CallMeta      metaLocale,
felix@2131:         String        hash,
felix@2131:         List<Facet>   facets,
felix@2131:         Object        old
felix@2131:     ) {
felix@2131:         logger.debug("StaticHYKState.compute");
felix@2131:         String id = getID();
felix@2131: 
felix@2151:         // Prepare comparison against cached result.
felix@2151:         List<HYKFactory.Zone> resZones = old instanceof List
felix@2151:             ? (List<HYKFactory.Zone>)old
felix@2151:             : null;
felix@2131: 
felix@2151:         // TODO Compare against cached object.
felix@2131: 
felix@2151:         // Get Zones from HYKFactory
felix@2131:         List<HYKFactory.Zone> zones = (List<HYKFactory.Zone>)
felix@2139:             HYKFactory.getHYKs(hyk.getHykId(), hyk.getKm());
felix@2131: 
felix@2131:         if (facets == null) {
felix@2131:             logger.debug("StaticHYKState.compute no facets");
felix@2131:             return zones;
felix@2131:         }
felix@2131: 
felix@2151:         // Spawn Facets.
felix@2139:         Facet facet = new HYKFacet(0, HYKFactory.getHykName(hyk.getHykId()));
felix@2131:         facets.add(facet);
felix@2131: 
felix@2131:         return zones;
felix@2131:     }
felix@2131: 
felix@2131: 
felix@2131:     /**
felix@2131:      * Get data, create the facets.
felix@2131:      *
felix@2131:      * @param context Ignored.
felix@2131:      */
felix@2131:     @Override
felix@2131:     public Object computeFeed(
felix@2131:         FLYSArtifact artifact,
felix@2131:         String       hash,
felix@2131:         CallContext  context,
felix@2131:         List<Facet>  facets,
felix@2131:         Object       old
felix@2131:     ) {
felix@2131:         return compute((HYKArtifact) artifact, context.getMeta(),
felix@2131:             hash, facets, old);
felix@2131:     }
felix@2131: 
felix@2131: 
felix@2131:     /**
felix@2131:      * Create the facets.
felix@2131:      * @param context Ignored.
felix@2131:      */
felix@2131:     @Override
felix@2131:     public Object computeInit(
felix@2131:         FLYSArtifact artifact,
felix@2131:         String       hash,
felix@2131:         Object       context,
felix@2131:         CallMeta     meta,
felix@2131:         List<Facet>  facets
felix@2131:     ) {
felix@2131:         return compute((HYKArtifact) artifact, meta, hash, facets,
felix@2131:             null);
felix@2131:     }
felix@2131: }
felix@2131: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :