gernotbelger@9415: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9415: * Software engineering by Intevation GmbH gernotbelger@9415: * gernotbelger@9415: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9415: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9415: * documentation coming with Dive4Elements River for details. gernotbelger@9415: */ gernotbelger@9415: gernotbelger@9415: package org.dive4elements.river.artifacts.model.fixings; gernotbelger@9415: gernotbelger@9415: import org.apache.commons.lang.math.DoubleRange; gernotbelger@9415: import org.dive4elements.artifactdatabase.state.Facet; gernotbelger@9415: import org.dive4elements.artifacts.ArtifactNamespaceContext; gernotbelger@9415: import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator; gernotbelger@9415: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; gernotbelger@9415: import org.w3c.dom.Document; gernotbelger@9415: import org.w3c.dom.Element; gernotbelger@9415: import org.w3c.dom.Node; gernotbelger@9415: gernotbelger@9415: /** gernotbelger@9415: * Facet to access the current Km from the context safely gernotbelger@9415: * gernotbelger@9415: * @author Björn Ricks gernotbelger@9415: */ gernotbelger@9415: abstract class FixingsEventFacet extends FixingsFacet { gernotbelger@9415: gernotbelger@9415: private static final long serialVersionUID = 1L; gernotbelger@9415: gernotbelger@9415: private DoubleRange stationRange; gernotbelger@9415: gernotbelger@9415: public FixingsEventFacet() { gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: public FixingsEventFacet(final int facetIndex, final String name, final String description, final ComputeType type, final String hash, final String stateId, gernotbelger@9415: final DoubleRange stationRange) { gernotbelger@9415: super(facetIndex, name, description, type, hash, stateId); gernotbelger@9415: g@9648: if (stationRange == null) { g@9648: System.out.println("break"); g@9648: } g@9648: gernotbelger@9415: this.stationRange = stationRange; gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: @Override gernotbelger@9415: public Node toXML(final Document doc) { gernotbelger@9415: gernotbelger@9415: final ElementCreator ec = new ElementCreator(doc, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); gernotbelger@9415: gernotbelger@9415: final Element e = (Element) super.toXML(doc); gernotbelger@9415: ec.addAttr(e, "startKm", Double.toString(this.stationRange.getMinimumDouble()), true); gernotbelger@9415: ec.addAttr(e, "endKm", Double.toString(this.stationRange.getMaximumDouble()), true); gernotbelger@9415: return e; gernotbelger@9415: } gernotbelger@9415: gernotbelger@9415: @Override gernotbelger@9415: public void set(final Facet other) { gernotbelger@9415: super.set(other); gernotbelger@9415: gernotbelger@9415: final FixingsEventFacet o = (FixingsEventFacet) other; gernotbelger@9415: // DoubleRange is immutable, so we can copy the reference here g@9648: this.stationRange = o.stationRange; gernotbelger@9415: } gernotbelger@9415: }