comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WMSFloodplainArtifact.java @ 5496:23d8f2700b38

Add support for multiple floodplains and add them to the datacage accordingly
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 28 Mar 2013 12:39:14 +0100
parents a2735a4bf75e
children
comparison
equal deleted inserted replaced
5495:1488227b97b7 5496:23d8f2700b38
82 public FloodplainState(WMSDBArtifact artifact) { 82 public FloodplainState(WMSDBArtifact artifact) {
83 super(artifact); 83 super(artifact);
84 riverId = 0; 84 riverId = 0;
85 } 85 }
86 86
87 public int getRiverId() {
88 if (riverId == 0) {
89 String ids = artifact.getDataAsString("ids");
90
91 try {
92 riverId = Integer.parseInt(ids);
93 }
94 catch (NumberFormatException nfe) {
95 logger.error("Cannot parse river id from '" + ids + "'");
96 }
97 }
98
99 return riverId;
100 }
101
102 protected River getRiver() { 87 protected River getRiver() {
103 return RiverFactory.getRiver(getRiverId()); 88 return RiverFactory.getRiver(getRiverId());
104 } 89 }
105 90
106 @Override 91 @Override
119 return FLYSUtils.getRiverSrid(river.getName()); 104 return FLYSUtils.getRiverSrid(river.getName());
120 } 105 }
121 106
122 @Override 107 @Override
123 protected Envelope getExtent(boolean reproject) { 108 protected Envelope getExtent(boolean reproject) {
124 River river = getRiver(); 109 River river = getRiver();
125 Floodplain plain = Floodplain.getFloodplain(river.getName()); 110 List<Floodplain> fps;
126 111
127 Envelope e = plain.getGeom().getEnvelopeInternal(); 112 String kind = getIdPart(2);
128 113
129 return e != null && reproject 114 if (kind != null && ! kind.equals("1")) {
130 ? GeometryUtils.transform(e, getSrid()) 115 fps = Floodplain.getFloodplains(river.getName(),
131 : e; 116 getName(), Integer.parseInt(kind));
117 } else {
118 fps = Floodplain.getFloodplains(river.getName(), 1);
119 }
120
121 Envelope max = null;
122
123 for (Floodplain fp: fps) {
124 Envelope env = fp.getGeom().getEnvelopeInternal();
125
126 if (max == null) {
127 max = env;
128 continue;
129 }
130
131 max.expandToInclude(env);
132 }
133
134 return max != null && reproject
135 ? GeometryUtils.transform(max, getSrid())
136 : max;
132 } 137 }
133 138
134 @Override 139 @Override
135 protected String getFilter() { 140 protected String getFilter() {
136 return "river_id=" + String.valueOf(getRiverId()); 141 String kind = getIdPart(2);
142 if (kind != null && ! kind.equals("1")) {
143 return "river_id=" + String.valueOf(getRiverId()) +
144 " AND kind_id=" + kind +
145 " AND name='" + getName() + "'";
146 }
147 return "river_id=" + String.valueOf(getRiverId()) +
148 " AND kind_id=1";
137 } 149 }
138 150
139 @Override 151 @Override
140 protected String getDataString() { 152 protected String getDataString() {
141 String srid = getSrid(); 153 String srid = getSrid();

http://dive4elements.wald.intevation.org