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 :

http://dive4elements.wald.intevation.org