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 :

http://dive4elements.wald.intevation.org