teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5863: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5863: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.model.map; rrenkert@5307: rrenkert@5307: import org.geotools.feature.simple.SimpleFeatureBuilder; rrenkert@5307: import org.opengis.feature.simple.SimpleFeature; rrenkert@5307: import org.opengis.feature.simple.SimpleFeatureType; rrenkert@5307: rrenkert@5307: import com.vividsolutions.jts.geom.Geometry; rrenkert@5307: teichmann@5831: import org.dive4elements.river.artifacts.model.NamedObjectImpl; teichmann@5831: import org.dive4elements.river.utils.GeometryUtils; rrenkert@5307: rrenkert@5307: rrenkert@5307: public class HWS rrenkert@5307: extends NamedObjectImpl rrenkert@5307: { rrenkert@5307: rrenkert@5307: public enum TYPE {LINE, POINT}; rrenkert@5307: rrenkert@5307: private Geometry geom; rrenkert@5307: private String id; rrenkert@5307: private int kind; rrenkert@5307: private int official; rrenkert@5307: private String fedState; rrenkert@5307: private String description; rrenkert@5307: private TYPE type; rrenkert@5307: rrenkert@5307: public HWS() { rrenkert@5307: this.geom = null; rrenkert@5307: // TODO Auto-generated constructor stub rrenkert@5307: } rrenkert@5307: rrenkert@5307: public HWS(String name) { rrenkert@5307: super(name); rrenkert@5307: this.geom = null; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public HWS( rrenkert@5307: String name, rrenkert@5307: Geometry geom, rrenkert@5307: String id, rrenkert@5307: int kind, rrenkert@5307: int official, rrenkert@5307: String fedState, rrenkert@5307: String description, rrenkert@5307: TYPE type rrenkert@5307: ) { rrenkert@5307: super(name); rrenkert@5307: this.geom = geom; rrenkert@5307: this.id = id; rrenkert@5307: this.kind = kind; rrenkert@5307: this.official = official; rrenkert@5307: this.fedState = fedState; rrenkert@5307: this.description = description; rrenkert@5307: this.type = type; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public Geometry getGeom() { rrenkert@5307: return geom; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public void setGeom(Geometry geom) { rrenkert@5307: this.geom = geom; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public String getId() { rrenkert@5307: return id; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public void setId(String id) { rrenkert@5307: this.id = id; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public int getKind() { rrenkert@5307: return kind; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public void setKind(int kind) { rrenkert@5307: this.kind = kind; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public boolean isOfficial() { rrenkert@5307: return official == 1; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public void setOfficial(boolean o) { rrenkert@5307: this.official = o ? 1 : 0; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public String getFedState() { rrenkert@5307: return fedState; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public void setFedState(String fedState) { rrenkert@5307: this.fedState = fedState; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public String getDescription() { rrenkert@5307: return description; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public void setDescription(String description) { rrenkert@5307: this.description = description; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public TYPE getType() { rrenkert@5307: return type; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public void setType(TYPE type) { rrenkert@5307: this.type = type; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public SimpleFeatureType getFeatureType() { rrenkert@5307: int srid = this.geom.getSRID(); rrenkert@5307: String srs = "EPSG:" + srid; rrenkert@5307: rrenkert@5307: Object[][] attrs = new Object[5][]; rrenkert@5307: attrs[0] = new Object[] { "name", String.class }; rrenkert@5307: attrs[1] = new Object[] { "description", String.class }; rrenkert@5307: attrs[2] = new Object[] { "TYP", String.class }; rrenkert@5307: attrs[3] = new Object[] { "fed_state", String.class }; rrenkert@5307: attrs[4] = new Object[] { "official", Integer.class }; rrenkert@5307: SimpleFeatureType ft = rrenkert@5307: GeometryUtils.buildFeatureType( rrenkert@5307: "hws", srs, this.geom.getClass(), attrs); rrenkert@5307: return ft; rrenkert@5307: } rrenkert@5307: rrenkert@5307: public SimpleFeature getFeature() { rrenkert@5307: SimpleFeatureType ft = getFeatureType(); rrenkert@5307: rrenkert@5307: SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(ft); rrenkert@5307: featureBuilder.add(this.geom); rrenkert@5307: featureBuilder.add(this.name); rrenkert@5307: featureBuilder.add(this.description); rrenkert@5307: if (this.kind == 1) { rrenkert@5307: featureBuilder.add("Rohr 1"); rrenkert@5307: } rrenkert@5307: else if (this.kind == 2) { rrenkert@5307: featureBuilder.add("Damm"); rrenkert@5307: } rrenkert@5307: else if (this.kind == 3) { rrenkert@5307: featureBuilder.add("Graben"); rrenkert@5307: } rrenkert@5307: else { rrenkert@5307: featureBuilder.add(""); rrenkert@5307: } rrenkert@5307: featureBuilder.add(this.fedState); rrenkert@5307: featureBuilder.add(this.official); rrenkert@5307: rrenkert@5307: return featureBuilder.buildFeature(null); rrenkert@5307: } rrenkert@5307: }