ingo@346: package de.intevation.flys.artifacts.model; ingo@346: ingo@945: import org.w3c.dom.Document; ingo@945: import org.w3c.dom.Element; ingo@945: import org.w3c.dom.Node; ingo@945: ingo@346: import de.intevation.artifactdatabase.state.DefaultFacet; sascha@1061: import de.intevation.artifactdatabase.state.Facet; weinzierl@4255: import de.intevation.artifacts.ArtifactNamespaceContext; weinzierl@4255: import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; ingo@346: felix@1624: felix@1624: /** felix@1624: * Facet with user-supplied theme-control-information (pos in list, felix@1624: * active/disabled etc) attached. felix@1624: */ weinzierl@4255: public class ManagedFacet extends DefaultFacet implements Comparable { ingo@346: felix@1624: /** The uuid of the owner artifact. */ ingo@346: protected String uuid; ingo@346: felix@1624: /** A property that determines the position of this facet. */ ingo@346: protected int position; ingo@346: felix@1624: /** A property that determines if this facet is active or not. */ ingo@346: protected int active; ingo@346: ingo@1715: /** A property that determines if this facet is visible or not. */ ingo@1715: protected int visible; ingo@1715: sascha@1061: public ManagedFacet() { sascha@1061: } ingo@346: weinzierl@4255: public ManagedFacet(String name, int index, String desc, String uuid, weinzierl@4255: int pos, int active, int visible) { ingo@694: super(index, name, desc); ingo@346: weinzierl@4255: this.uuid = uuid; ingo@346: this.position = pos; weinzierl@4255: this.active = active; weinzierl@4255: this.visible = visible; ingo@346: } ingo@346: felix@1721: /** felix@1721: * Sets position (will be merged to position in ThemeList). felix@1721: */ ingo@346: public void setPosition(int pos) { ingo@346: this.position = pos; ingo@346: } ingo@346: ingo@346: public int getPosition() { ingo@346: return position; ingo@346: } ingo@346: ingo@346: public void setActive(int active) { ingo@346: this.active = active; ingo@346: } ingo@346: ingo@346: public int getActive() { ingo@346: return active; ingo@346: } ingo@346: ingo@1715: public void setVisible(int visible) { ingo@1715: this.visible = visible; ingo@1715: } ingo@1715: ingo@1715: public int getVisible() { ingo@1715: return visible; ingo@1715: } ingo@1715: felix@1721: /** felix@1721: * Get uuid of related artifact. weinzierl@4255: * felix@1721: * @return uuid of related artifact. felix@1721: */ ingo@346: public String getArtifact() { ingo@346: return uuid; ingo@346: } ingo@945: ingo@945: public Node toXML(Document doc) { weinzierl@4255: ElementCreator ec = new ElementCreator(doc, ingo@945: ArtifactNamespaceContext.NAMESPACE_URI, ingo@945: ArtifactNamespaceContext.NAMESPACE_PREFIX); ingo@945: ingo@945: Element facet = ec.create("theme"); ingo@945: ec.addAttr(facet, "artifact", getArtifact(), true); ingo@945: ec.addAttr(facet, "facet", getName(), true); ingo@945: ec.addAttr(facet, "pos", String.valueOf(getPosition()), true); ingo@945: ec.addAttr(facet, "active", String.valueOf(getActive()), true); ingo@945: ec.addAttr(facet, "index", String.valueOf(getIndex()), true); ingo@945: ec.addAttr(facet, "description", getDescription(), true); ingo@1715: ec.addAttr(facet, "visible", String.valueOf(getVisible()), true); ingo@945: ingo@945: return facet; ingo@945: } sascha@1061: sascha@1061: public void set(ManagedFacet other) { weinzierl@4255: uuid = other.uuid; sascha@1061: position = other.position; weinzierl@4255: active = other.active; sascha@1061: } sascha@1061: sascha@3076: @Override sascha@1061: public Facet deepCopy() { sascha@1061: ManagedFacet copy = new ManagedFacet(); weinzierl@4255: copy.set((DefaultFacet) this); weinzierl@4255: copy.set((ManagedFacet) this); sascha@1061: return copy; sascha@1061: } weinzierl@4255: weinzierl@4255: @Override weinzierl@4255: public int compareTo(Object o) { weinzierl@4255: if (!(o instanceof ManagedFacet)) { weinzierl@4255: return -1; weinzierl@4255: } weinzierl@4255: weinzierl@4255: ManagedFacet other = (ManagedFacet) o; weinzierl@4255: weinzierl@4255: if (position < other.position) { weinzierl@4255: return -1; weinzierl@4255: } weinzierl@4255: else if (position > other.position) { weinzierl@4255: return 1; weinzierl@4255: } weinzierl@4255: else { weinzierl@4255: return 0; weinzierl@4255: } weinzierl@4255: } ingo@346: } ingo@346: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :