ingo@937: package de.intevation.flys.artifacts; ingo@937: ingo@937: import java.util.List; ingo@937: ingo@937: import org.apache.log4j.Logger; ingo@937: ingo@937: import org.w3c.dom.Document; ingo@937: import org.w3c.dom.Element; ingo@937: ingo@937: import de.intevation.artifacts.ArtifactNamespaceContext; ingo@937: import de.intevation.artifacts.CallContext; ingo@937: ingo@937: import de.intevation.artifactdatabase.ProtocolUtils; ingo@937: import de.intevation.artifactdatabase.state.Facet; ingo@937: import de.intevation.artifactdatabase.state.Output; ingo@937: import de.intevation.artifactdatabase.state.State; ingo@937: ingo@937: import de.intevation.artifacts.common.utils.XMLUtils; ingo@937: import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; ingo@937: ingo@937: ingo@937: public abstract class StaticFLYSArtifact extends FLYSArtifact { ingo@937: ingo@937: private static final Logger logger = ingo@937: Logger.getLogger(StaticFLYSArtifact.class); ingo@937: ingo@937: ingo@937: @Override ingo@937: public Document describe(Document data, CallContext cc) { ingo@937: logger.debug("Describe artifact: " + identifier()); ingo@937: ingo@937: Document desc = XMLUtils.newDocument(); ingo@937: ingo@937: ElementCreator creator = new ElementCreator( ingo@937: desc, ingo@937: ArtifactNamespaceContext.NAMESPACE_URI, ingo@937: ArtifactNamespaceContext.NAMESPACE_PREFIX); ingo@937: ingo@937: Element root = ProtocolUtils.createRootNode(creator); ingo@937: desc.appendChild(root); ingo@937: ingo@937: ProtocolUtils.appendDescribeHeader(creator, root, identifier(), hash()); ingo@943: root.appendChild(createOutputModes(cc, desc, creator)); ingo@937: ingo@937: return desc; ingo@937: } ingo@937: ingo@937: ingo@943: protected Element createOutputModes( ingo@943: CallContext cc, ingo@943: Document doc, ingo@943: ElementCreator creator) ingo@943: { ingo@937: Element outs = ProtocolUtils.createArtNode( ingo@937: creator, "outputmodes", null, null); ingo@937: ingo@937: State state = getCurrentState(cc); ingo@937: List list = state.getOutputs(); ingo@937: ingo@937: if (list != null && list.size() > 0) { ingo@937: List fs = facets.get(state.getID()); ingo@937: if (fs != null && fs.size() > 0) { ingo@937: List generated = generateOutputs(list, fs); ingo@937: ingo@937: logger.debug("Found " + fs.size() + " current facets."); ingo@937: if (!generated.isEmpty()) { ingo@937: ProtocolUtils.appendOutputModes( ingo@943: doc, outs, generated); ingo@937: } ingo@937: } ingo@937: else { ingo@937: logger.debug("No facets found for the current state."); ingo@937: } ingo@937: } ingo@937: ingo@937: return outs; ingo@937: } ingo@937: } ingo@937: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :