# HG changeset patch # User Tom Gottfried # Date 1433516207 -7200 # Node ID e9d912c97fa850d388c2273c179497cd53b20e08 # Parent e701ef544ffa2586cf4384f4594d27c8ec29ce61 We expect that every river has only one RiverAxis of kind 1 This allowed to reduce code duplication and some cleanups. diff -r e701ef544ffa -r e9d912c97fa8 artifacts/src/main/java/org/dive4elements/river/artifacts/RiverAxisArtifact.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/RiverAxisArtifact.java Fri Jun 05 16:53:07 2015 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/RiverAxisArtifact.java Fri Jun 05 16:56:47 2015 +0200 @@ -113,10 +113,7 @@ String kind = getIdPart(2); - if (kind != null && kind.equals("1")) { - axes = RiverAxis.getRiverAxis(river.getName(), - Integer.parseInt(kind)); - } else if (kind != null) { + if (kind != null && !kind.equals(RiverAxis.KIND_CURRENT)) { axes = RiverAxis.getRiverAxis(river.getName(), getName(), Integer.parseInt(kind)); } else { @@ -125,11 +122,8 @@ return GeometryUtils.transform( GeometryUtils.getRiverBoundary(river.getName()), getSrid()); - } else { - return GeometryUtils.transform( - GeometryUtils.getRiverBoundary(river.getName()), - "31467"); } + return GeometryUtils.getRiverBoundary(river.getName()); } Envelope max = null; @@ -153,14 +147,16 @@ @Override protected String getFilter() { String kind = getIdPart(2); - if (kind != null && kind.equals("1")) { + if (kind != null && kind.equals(RiverAxis.KIND_CURRENT)) { return "river_id=" + String.valueOf(getRiverId()) + " AND kind_id=" + kind; - } else if (kind != null) { + } + if (kind != null) { return "river_id=" + String.valueOf(getRiverId()) + " AND kind_id=" + kind + " AND name='" + getName() + "'"; - } else if (getIdPart(1) != null) { + } + if (getIdPart(1) != null) { return "river_id=" + String.valueOf(getRiverId()) + " AND name='" + getName() + "'"; } @@ -173,9 +169,7 @@ if (RiverUtils.isUsingOracle()) { return "geom FROM river_axes USING SRID " + getSrid(); } - else { - return "geom FROM river_axes USING UNIQUE id"; - } + return "geom FROM river_axes USING UNIQUE id"; } @Override diff -r e701ef544ffa -r e9d912c97fa8 artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodMapState.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodMapState.java Fri Jun 05 16:53:07 2015 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodMapState.java Fri Jun 05 16:56:47 2015 +0200 @@ -787,15 +787,15 @@ String srid = String.valueOf(access.getDGM().getSrid()); String srs = "EPSG:" + srid; - List axes = null; + RiverAxis axis = null; try { - axes = RiverAxis.getRiverAxis(river); + axis = RiverAxis.getRiverAxis(river); } catch (HibernateException iae) { log.warn("No valid river axis found for " + river); return; } - if (axes == null || axes.isEmpty()) { + if (axis == null) { log.warn("Could not find river axis for: '" + river + "'"); return; } @@ -806,14 +806,8 @@ SimpleFeatureBuilder builder = new SimpleFeatureBuilder(ft); FeatureCollection collection = FeatureCollections.newCollection(); - for (int i = 0, n = axes.size(); i < n; i++) { - RiverAxis axis = axes.get(i); - - builder.add(axis.getGeom()); - collection.add(builder.buildFeature(String.valueOf(i))); - - builder.reset(); - } + builder.add(axis.getGeom()); + collection.add(builder.buildFeature("0")); File axisShape = new File(dir, WSPLGEN_AXIS); diff -r e701ef544ffa -r e9d912c97fa8 artifacts/src/main/java/org/dive4elements/river/utils/GeometryUtils.java --- a/artifacts/src/main/java/org/dive4elements/river/utils/GeometryUtils.java Fri Jun 05 16:53:07 2015 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/utils/GeometryUtils.java Fri Jun 05 16:56:47 2015 +0200 @@ -60,24 +60,9 @@ public static Envelope getRiverBoundary(String rivername) { try { - List axes = RiverAxis.getRiverAxis(rivername); - if (axes != null && axes.size() > 0) { - Envelope max = null; - - for (RiverAxis axis: axes) { - // TODO Take the correct EPSG into account. Maybe, we need to - // reproject the geometry. - Envelope env = axis.getGeom().getEnvelopeInternal(); - - if (max == null) { - max = env; - } - else { - max.expandToInclude(env); - } - } - - return max; + RiverAxis axis = RiverAxis.getRiverAxis(rivername); + if (axis != null) { + return axis.getGeom().getEnvelopeInternal(); } } catch(HibernateException iae) { diff -r e701ef544ffa -r e9d912c97fa8 artifacts/src/main/java/org/dive4elements/river/utils/MapfileGenerator.java --- a/artifacts/src/main/java/org/dive4elements/river/utils/MapfileGenerator.java Fri Jun 05 16:53:07 2015 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/utils/MapfileGenerator.java Fri Jun 05 16:56:47 2015 +0200 @@ -282,10 +282,9 @@ /** * Creates a layer snippet which might be included in the mapfile. * - * @param layerinfo A LayerInfo object that contains all necessary + * @param layerInfo A LayerInfo object that contains all necessary * information to build a Mapserver LAYER section. - * @param dir The base dir for the LAYER snippet. - * @param filename The name of the file that is written. + * @param layerFile The file that is written. * @param tpl The Velocity template which is used to create the LAYER * section. */ diff -r e701ef544ffa -r e9d912c97fa8 artifacts/src/main/java/org/dive4elements/river/utils/RiverMapfileGenerator.java --- a/artifacts/src/main/java/org/dive4elements/river/utils/RiverMapfileGenerator.java Fri Jun 05 16:53:07 2015 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/utils/RiverMapfileGenerator.java Fri Jun 05 16:56:47 2015 +0200 @@ -69,10 +69,7 @@ List riverFiles = new ArrayList(); for (River river : rivers) { - // We expect that every river has only one RiverAxis. - // This is not correct but currently the case here, see - // RiverAxis.java. - List riverAxis = null; + RiverAxis riverAxis = null; try { riverAxis = RiverAxis.getRiverAxis(river.getName()); } @@ -85,12 +82,12 @@ log.warn("River " + river.getName() + " has no river axis!"); continue; } - if (riverAxis.get(0).getGeom() == null) { + if (riverAxis.getGeom() == null) { log.warn("River " + river.getName() + " has no riveraxis geometry!"); continue; } - MultiLineString geom = riverAxis.get(0).getGeom(); + MultiLineString geom = riverAxis.getGeom(); Envelope extent = geom.getEnvelopeInternal(); createRiverAxisLayer( diff -r e701ef544ffa -r e9d912c97fa8 backend/src/main/java/org/dive4elements/river/model/RiverAxis.java --- a/backend/src/main/java/org/dive4elements/river/model/RiverAxis.java Fri Jun 05 16:53:07 2015 +0200 +++ b/backend/src/main/java/org/dive4elements/river/model/RiverAxis.java Fri Jun 05 16:56:47 2015 +0200 @@ -29,6 +29,8 @@ import org.hibernate.annotations.Type; +import org.apache.log4j.Logger; + /** * A river has one axis that is used for calculation. * Additional axes of a river can be used to be painted int maps etc. @@ -39,6 +41,8 @@ public class RiverAxis implements Serializable { + private static Logger log = Logger.getLogger(RiverAxis.class); + private Integer id; private AxisKind kind; private River river; @@ -119,11 +123,6 @@ } - public static List getRiverAxis(String river) - throws IllegalArgumentException { - return getRiverAxis(river, KIND_CURRENT); - } - public static List getRiverAxis(String river, String name, int kind) throws HibernateException { Session session = SessionHolder.HOLDER.get(); @@ -139,16 +138,23 @@ return list.isEmpty() ? null : list; } - public static List getRiverAxis(String river, int kind) + public static RiverAxis getRiverAxis(String river) throws HibernateException { Session session = SessionHolder.HOLDER.get(); Query query = session.createQuery( "from RiverAxis where river.name =:river AND kind.id =:kind"); query.setParameter("river", river); - query.setParameter("kind", kind); + query.setParameter("kind", KIND_CURRENT); List list = query.list(); - return list.isEmpty() ? null : list; + + /* We expect that every river has only one RiverAxis of kind 1 + thow this is not currently enforced in database schema. */ + if (list.size() > 1) { + log.error("River " + river + " has more than one current axis."); + } + + return list.isEmpty() ? null : list.get(0); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :