gernotbelger@9506: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9506: * Software engineering by gernotbelger@9506: * Björnsen Beratende Ingenieure GmbH gernotbelger@9506: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9506: * gernotbelger@9506: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9506: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9506: * documentation coming with Dive4Elements River for details. gernotbelger@9506: */ gernotbelger@9506: package org.dive4elements.river.artifacts.uinfo.salix; gernotbelger@9506: gernotbelger@9506: import java.util.ArrayList; gernotbelger@9506: import java.util.List; gernotbelger@9506: gernotbelger@9506: import org.apache.log4j.Logger; gernotbelger@9506: import org.dive4elements.artifactdatabase.state.DefaultOutput; gernotbelger@9506: import org.dive4elements.artifactdatabase.state.Facet; gernotbelger@9506: import org.dive4elements.artifactdatabase.state.FacetActivity; gernotbelger@9506: import org.dive4elements.artifacts.Artifact; gernotbelger@9506: import org.dive4elements.artifacts.ArtifactFactory; gernotbelger@9506: import org.dive4elements.artifacts.CallMeta; gernotbelger@9506: import org.dive4elements.artifacts.common.utils.XMLUtils; gernotbelger@9506: import org.dive4elements.river.artifacts.AbstractStaticStateArtifact; gernotbelger@9506: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9506: import org.dive4elements.river.artifacts.model.FacetTypes; gernotbelger@9506: import org.dive4elements.river.artifacts.states.StaticState; gernotbelger@9506: import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; gernotbelger@9506: import org.dive4elements.river.artifacts.uinfo.vegetationzones.VegetationZonesCrossSectionProcessor; gernotbelger@9506: import org.w3c.dom.Document; gernotbelger@9506: gernotbelger@9506: /** gernotbelger@9506: * Display of vegetation zones loaded from database gernotbelger@9506: * gernotbelger@9506: * @author Gernot Belger gernotbelger@9506: * gernotbelger@9506: */ gernotbelger@9506: public class PredefinedVegetationZonesArtifact extends AbstractStaticStateArtifact implements FacetTypes { gernotbelger@9506: gernotbelger@9506: private static final long serialVersionUID = 1L; gernotbelger@9506: gernotbelger@9506: /** Artifact name. */ gernotbelger@9506: private static final String NAME = "predefined_vegetation_zones"; gernotbelger@9506: gernotbelger@9506: private static final String STATIC_STATE_NAME = "state.predefined_vegetation_zones.static"; gernotbelger@9506: gernotbelger@9506: static { gernotbelger@9506: // TODO: Move to configuration. gernotbelger@9506: FacetActivity.Registry.getInstance().register(NAME, FacetActivity.INACTIVE); gernotbelger@9506: } gernotbelger@9506: gernotbelger@9506: /** The log for this class. */ gernotbelger@9506: private static Logger log = Logger.getLogger(PredefinedVegetationZonesArtifact.class); gernotbelger@9506: gernotbelger@9506: @Override gernotbelger@9506: public String getName() { gernotbelger@9506: return NAME; gernotbelger@9506: } gernotbelger@9506: gernotbelger@9506: @Override gernotbelger@9506: protected void initStaticState() { gernotbelger@9506: gernotbelger@9506: final StaticState state = new StaticState(STATIC_STATE_NAME); gernotbelger@9506: final DefaultOutput output = new DefaultOutput("general", "general", "image/png", "chart"); gernotbelger@9506: gernotbelger@9506: final List facets = getFacets(STATIC_STATE_NAME); gernotbelger@9506: output.addFacets(facets); gernotbelger@9506: state.addOutput(output); gernotbelger@9506: gernotbelger@9506: setStaticState(state); gernotbelger@9506: } gernotbelger@9506: gernotbelger@9506: /** gernotbelger@9506: * Gets called from factory, to set things up. gernotbelger@9506: */ gernotbelger@9506: @Override gernotbelger@9506: public void setup(final String identifier, final ArtifactFactory factory, final Object context, final CallMeta callMeta, final Document data, gernotbelger@9506: final List loadFacets) { gernotbelger@9506: gernotbelger@9506: if (log.isDebugEnabled()) gernotbelger@9506: log.debug(XMLUtils.toString(data)); gernotbelger@9506: gernotbelger@9506: final String vegZoneData = getDatacageIDValue(data); gernotbelger@9506: gernotbelger@9506: createFacets(callMeta, vegZoneData); gernotbelger@9506: gernotbelger@9506: super.setup(identifier, factory, context, callMeta, data, loadFacets); gernotbelger@9506: } gernotbelger@9506: gernotbelger@9506: private void createFacets(final CallMeta callMeta, final String vegZoneData) { gernotbelger@9506: if (vegZoneData == null) gernotbelger@9506: return; gernotbelger@9506: gernotbelger@9506: addStringData(UINFOArtifact.FIELD_VEGZONES, vegZoneData); gernotbelger@9506: gernotbelger@9506: final List facets = new ArrayList<>(1); gernotbelger@9514: facets.add(VegetationZonesCrossSectionProcessor.createDefaultVegetationZonesCrossSectionFacet(callMeta)); gernotbelger@9506: addFacets(STATIC_STATE_NAME, facets); gernotbelger@9506: } gernotbelger@9506: gernotbelger@9506: @Override gernotbelger@9506: protected void initialize(final Artifact artifact, final Object context, final CallMeta meta) { gernotbelger@9506: // do not clone facets, etc. from master artifact gernotbelger@9506: gernotbelger@9506: log.debug("initialize"); gernotbelger@9506: importData((D4EArtifact) artifact, "river"); gernotbelger@9506: importData((D4EArtifact) artifact, "ld_from"); gernotbelger@9506: importData((D4EArtifact) artifact, "ld_to"); gernotbelger@9506: gernotbelger@9506: log.debug("ld_from " + getDataAsString("ld_from")); gernotbelger@9506: log.debug("ld_to " + getDataAsString("ld_to")); gernotbelger@9506: } gernotbelger@9506: }