# HG changeset patch # User Raimund Renkert # Date 1332256081 0 # Node ID 3f1cc396d25338520d70a59635284fb184328406 # Parent fb7975828ffa51cda9b2c16ba54076783c5b7a65 Issue 506. Use a complete date for istorical dischage curves instead of a year. flys-artifacts/trunk@4177 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r fb7975828ffa -r 3f1cc396d253 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Tue Mar 20 13:51:39 2012 +0000 +++ b/flys-artifacts/ChangeLog Tue Mar 20 15:08:01 2012 +0000 @@ -1,3 +1,16 @@ +2012-03-20 Raimund Renkert + + Issue 506. + + * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java: + Create the date from long values instead of the year. + + * src/main/java/de/intevation/flys/utils/FLYSUtils.java: + Added method to transform a String into an array of long values. + + * doc/conf/artifacts/winfo.xml: + changed data type from intrange to longrange. + 2012-03-20 Ingo Weinzierl flys/issue544 (Historische ATs: Eingabeunterstützung W/Q) diff -r fb7975828ffa -r 3f1cc396d253 flys-artifacts/doc/conf/artifacts/winfo.xml --- a/flys-artifacts/doc/conf/artifacts/winfo.xml Tue Mar 20 13:51:39 2012 +0000 +++ b/flys-artifacts/doc/conf/artifacts/winfo.xml Tue Mar 20 15:08:01 2012 +0000 @@ -492,7 +492,7 @@ - + diff -r fb7975828ffa -r 3f1cc396d253 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Tue Mar 20 13:51:39 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Tue Mar 20 15:08:01 2012 +0000 @@ -759,11 +759,13 @@ String rawValues = getDataAsString("historical_values"); int mode = getDataAsInteger("historical_mode"); - int[] timerange = FLYSUtils.intArrayFromString(rawTimerange); + long[] timerange = FLYSUtils.longArrayFromString(rawTimerange); double[] values = FLYSUtils.doubleArrayFromString(rawValues); - Calendar start = new GregorianCalendar(timerange[0], 0, 1); - Calendar end = new GregorianCalendar(timerange[1], 0, 1); + Calendar start = new GregorianCalendar(); + start.setTimeInMillis(timerange[0]); + Calendar end = new GregorianCalendar(); + end.setTimeInMillis(timerange[1]); Calculation6 calc = new Calculation6( mode, diff -r fb7975828ffa -r 3f1cc396d253 flys-artifacts/src/main/java/de/intevation/flys/utils/FLYSUtils.java --- a/flys-artifacts/src/main/java/de/intevation/flys/utils/FLYSUtils.java Tue Mar 20 13:51:39 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/FLYSUtils.java Tue Mar 20 15:08:01 2012 +0000 @@ -18,6 +18,7 @@ import gnu.trove.TDoubleArrayList; import gnu.trove.TIntArrayList; +import gnu.trove.TLongArrayList; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; @@ -812,6 +813,37 @@ /** + * This method transform a string into a long array. Therefore, the string + * raw must consist of int values separated by a ';'. + * + * @param raw The raw long array as string separated by a ';'. + * + * @return an array of int values. + */ + public static long[] longArrayFromString(String raw) { + String[] splitted = raw != null ? raw.split(";") : null; + + if (splitted == null || splitted.length == 0) { + logger.warn("No long values found in '" + raw + "'"); + return new long[0]; + } + + TLongArrayList longs = new TLongArrayList(splitted.length); + + for (String value: splitted) { + try { + longs.add(Long.valueOf(value)); + } + catch (NumberFormatException nfe) { + logger.warn("Parsing long failed: " + nfe); + } + } + + return longs.toNativeArray(); + } + + + /** * This method transform a string into an double array. Therefore, the * string raw must consist of double values separated by a * ';'.