Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZone.java @ 9118:431f1c269be5
Veg-Zone Table improved, State change data recovery;
author | gernotbelger |
---|---|
date | Mon, 04 Jun 2018 19:38:59 +0200 |
parents | artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZoneAccessHelper.java@a561b882436d |
children | b570b6fcc052 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZone.java Mon Jun 04 19:38:59 2018 +0200 @@ -0,0 +1,112 @@ +/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde + * Software engineering by + * Björnsen Beratende Ingenieure GmbH + * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ +package org.dive4elements.river.artifacts.uinfo.vegetationzones; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Domenico Nardi Tironi + * + */ +public class VegetationZone implements Comparable<VegetationZone> { + + // IMMER ABGLEICHEN MIT VEGETATIONZONE IM CLIENT SuperVegZonesTablePanel.TABLE_CELL_SEPARATOR + private static final String TABLE_CELL_SEPARATOR = "TABLE_CELL_SEPARATOR"; + private static final String TABLE_ROW_SEPARATOR = "TABLE_ROW_SEPARATOR"; + private final String zoneName; + private final int min_day_overflow; + private final int max_day_overflow; + + public static List<VegetationZone> parse(final String zonesRaw) { + final List<VegetationZone> resultList = new ArrayList<>(); + + final List<String[]> results = new ArrayList<>(); + if (zonesRaw.contains(TABLE_ROW_SEPARATOR)) { + final String[] rows = zonesRaw.split(TABLE_ROW_SEPARATOR); + for (final String row : rows) { + if (row.contains(TABLE_CELL_SEPARATOR)) { + final String[] result = row.split(TABLE_CELL_SEPARATOR); + results.add(result); + } + } + } + for (final String[] zone : results) { + + final VegetationZone helper = new VegetationZone(zone[0], Integer.valueOf(zone[1]), Integer.valueOf(zone[2])); + resultList.add(helper); + } + + return resultList; + } + + public static VegetationZone createFromTableEntry(final String zone, final String min_day_overflow, final String max_day_overflow) { + return new VegetationZone(zone, Integer.valueOf(min_day_overflow), Integer.valueOf(max_day_overflow)); // Error-Handling? + } + + private VegetationZone(final String zone, final Integer min_day_overflow, final Integer max_day_overflow) { + this.zoneName = zone; + this.min_day_overflow = min_day_overflow; + this.max_day_overflow = max_day_overflow; + } + + public int getMax_day_overflow() { + return this.max_day_overflow; + } + + public String getZoneName() { + return this.zoneName; + } + + public int getMin_day_overflow() { + return this.min_day_overflow; + } + + public static final List<VegetationZone> getStandardList() { + + final List<VegetationZone> list = new ArrayList<>(); + list.add(new VegetationZone("Zonaler Wald", 0, 5)); + list.add(new VegetationZone("Hartholzaue, trocken", 5, 40)); + list.add(new VegetationZone("Hartholzaue, feucht", 40, 80)); + list.add(new VegetationZone("Silberweidenwald", 80, 140)); + list.add(new VegetationZone("Weidengebüsch", 140, 200)); + list.add(new VegetationZone("Uferröhricht", 200, 260)); + list.add(new VegetationZone("Uferpioniere", 260, 320)); + list.add(new VegetationZone("Vegetationslos", 320, 365)); + list.add(new VegetationZone("Wasserfläche", 365, 365)); + + return list; + } + + public static final String parseListToDataString(final List<VegetationZone> list) { + + java.util.Collections.sort(list); + final StringBuilder builder = new StringBuilder(); + for (final VegetationZone zone : list) { + builder.append(zone.getZoneName()); + builder.append(TABLE_CELL_SEPARATOR); + builder.append(zone.getMin_day_overflow()); + builder.append(TABLE_CELL_SEPARATOR); + builder.append(zone.getMax_day_overflow()); + builder.append(TABLE_ROW_SEPARATOR); + } + return builder.toString(); + + } + + @Override + public int compareTo(final VegetationZone o) { + final int basicCompare = Integer.valueOf(this.getMin_day_overflow()).compareTo(o.getMin_day_overflow()); + if (basicCompare == 0) + return Integer.compare(this.getMax_day_overflow(), o.getMax_day_overflow()); // wenn min==min && max==max, alphabetisch sortieren? + return basicCompare; + } + +}