Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Parameters.java @ 2695:ae0742f92cd5
Added model to store fitting results into cache.
flys-artifacts/trunk@4403 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 14 May 2012 16:57:58 +0000 |
parents | |
children | a441be7f1589 |
comparison
equal
deleted
inserted
replaced
2694:28c3f6588011 | 2695:ae0742f92cd5 |
---|---|
1 package de.intevation.flys.artifacts.model; | |
2 | |
3 import gnu.trove.TDoubleArrayList; | |
4 | |
5 import java.util.Map; | |
6 | |
7 import java.io.Serializable; | |
8 | |
9 public class Parameters | |
10 implements Serializable | |
11 { | |
12 public static class Parameter | |
13 implements Serializable | |
14 { | |
15 public String name; | |
16 public double value; | |
17 | |
18 public Parameter() { | |
19 } | |
20 | |
21 public Parameter(String name, double value) { | |
22 this.name = name; | |
23 this.value = value; | |
24 } | |
25 public String getName() { | |
26 return name; | |
27 } | |
28 | |
29 public void setName(String name) { | |
30 this.name = name; | |
31 } | |
32 | |
33 public double getValue() { | |
34 return value; | |
35 } | |
36 | |
37 public void setValue(double value) { | |
38 this.value = value; | |
39 } | |
40 } // Parameter | |
41 | |
42 protected String [] columnNames; | |
43 protected TDoubleArrayList [] columns; | |
44 | |
45 public Parameters() { | |
46 } | |
47 | |
48 public Parameters(String [] columnNames) { | |
49 if (columnNames == null || columnNames.length < 1) { | |
50 throw new IllegalArgumentException("columnNames too short."); | |
51 } | |
52 this.columnNames = columnNames; | |
53 columns = new TDoubleArrayList[columnNames.length]; | |
54 for (int i = 0; i < columns.length; ++i) { | |
55 columns[i] = new TDoubleArrayList(); | |
56 } | |
57 } | |
58 | |
59 public int columnIndex(String name) { | |
60 for (int i = 0; i < columnNames.length; ++i) { | |
61 if (name.equals(name)) { | |
62 return i; | |
63 } | |
64 } | |
65 return -1; | |
66 } | |
67 | |
68 public void add(Parameter [] parameters) { | |
69 | |
70 int N = columns[0].size(); | |
71 | |
72 for (int i = 0; i < columns.length; ++i) { | |
73 columns[i].add(Double.NaN); | |
74 } | |
75 | |
76 for (Parameter parameter: parameters) { | |
77 int index = columnIndex(parameter.getName()); | |
78 if (index >= 0) { | |
79 columns[index].setQuick(N, parameter.getValue()); | |
80 } | |
81 } | |
82 } | |
83 | |
84 public void add(Map<String, Double> parameters) { | |
85 | |
86 int N = columns[0].size(); | |
87 | |
88 for (int i = 0; i < columns.length; ++i) { | |
89 columns[i].add(Double.NaN); | |
90 } | |
91 | |
92 for (Map.Entry<String, Double> entry: parameters.entrySet()) { | |
93 int index = columnIndex(entry.getKey()); | |
94 Double v = entry.getValue(); | |
95 if (index >= 0 && v != null) { | |
96 columns[index].setQuick(N, v); | |
97 } | |
98 } | |
99 } | |
100 | |
101 public Parameter [] get(int i) { | |
102 Parameter [] parameters = new Parameter[columns.length]; | |
103 for (int j = 0; i < parameters.length; ++j) { | |
104 parameters[j] = new Parameter(columnNames[j], Double.NaN); | |
105 } | |
106 return get(i, parameters); | |
107 } | |
108 | |
109 public Parameter [] get(int i, Parameter [] parameters) { | |
110 for (Parameter parameter: parameters) { | |
111 int index = columnIndex(parameter.getName()); | |
112 if (index >= 0) { | |
113 parameter.setValue(columns[index].getQuick(i)); | |
114 } | |
115 } | |
116 return parameters; | |
117 } | |
118 | |
119 public double get(int i, int index) { | |
120 return columns[index].getQuick(i); | |
121 } | |
122 | |
123 public double get(int i, String columnName) { | |
124 int index = columnIndex(columnName); | |
125 return index >= 0 | |
126 ? columns[index].getQuick(i) | |
127 : Double.NaN; | |
128 } | |
129 | |
130 public int size() { | |
131 return columns[0].size(); | |
132 } | |
133 | |
134 public int getNumberColumns() { | |
135 return columnNames.length; | |
136 } | |
137 | |
138 public String [] getColumnNames() { | |
139 return columnNames; | |
140 } | |
141 | |
142 public void removeNaNs() { | |
143 W.removeNaNs(columns); | |
144 } | |
145 } | |
146 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |