Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Segment.java @ 650:6695e03e9b82
Added parser for segments
flys-artifacts/trunk@2043 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 01 Jun 2011 17:01:44 +0000 |
parents | |
children | 913b52064449 |
comparison
equal
deleted
inserted
replaced
649:44175d4720f8 | 650:6695e03e9b82 |
---|---|
1 package de.intevation.flys.artifacts.model; | |
2 | |
3 import java.util.List; | |
4 import java.util.ArrayList; | |
5 | |
6 import java.io.Serializable; | |
7 | |
8 import org.apache.log4j.Logger; | |
9 | |
10 import gnu.trove.TDoubleArrayList; | |
11 | |
12 public class Segment | |
13 implements Serializable | |
14 { | |
15 private static Logger logger = Logger.getLogger(Segment.class); | |
16 | |
17 protected double from; | |
18 protected double to; | |
19 protected double [] values; | |
20 | |
21 public Segment() { | |
22 } | |
23 | |
24 public Segment(double from, double to, double [] values) { | |
25 this.from = from; | |
26 this.to = to; | |
27 this.values = values; | |
28 } | |
29 | |
30 public boolean isUp() { | |
31 return from < to; | |
32 } | |
33 | |
34 public String toString() { | |
35 StringBuilder sb = new StringBuilder("Segment: ["); | |
36 sb.append("from: ").append(from).append("; to: ") | |
37 .append(to).append("; values: ("); | |
38 for (int i = 0; i < values.length; ++i) { | |
39 if (i > 0) sb.append(", "); | |
40 sb.append(values[i]); | |
41 } | |
42 sb.append(")]"); | |
43 return sb.toString(); | |
44 } | |
45 | |
46 public static List<Segment> parseSegments(String input) { | |
47 | |
48 ArrayList<Segment> segments = new ArrayList<Segment>(); | |
49 | |
50 TDoubleArrayList vs = new TDoubleArrayList(); | |
51 | |
52 for (String segmentStr: input.split(":")) { | |
53 String [] parts = segmentStr.split(";"); | |
54 if (parts.length < 3) { | |
55 logger.warn("invalid segment: '" + segmentStr + "'"); | |
56 continue; | |
57 } | |
58 try { | |
59 double from = Double.parseDouble(parts[0].trim()); | |
60 double to = Double.parseDouble(parts[1].trim()); | |
61 | |
62 vs.clear(); | |
63 | |
64 for (String valueStr: parts[2].split(",")) { | |
65 vs.add(Double.parseDouble(valueStr.trim())); | |
66 } | |
67 | |
68 double [] values = vs.toNativeArray(); | |
69 segments.add(new Segment(from, to, values)); | |
70 } | |
71 catch (NumberFormatException nfe) { | |
72 logger.warn("invalid segment: '" + segmentStr + "'"); | |
73 } | |
74 } | |
75 | |
76 return segments; | |
77 } | |
78 } | |
79 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |