1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.diyefi.openlogviewer.genericlog;
24
25 import java.beans.PropertyChangeEvent;
26 import java.beans.PropertyChangeListener;
27 import java.beans.PropertyChangeSupport;
28 import java.util.HashMap;
29 import org.diyefi.openlogviewer.OpenLogViewerApp;
30
31
32
33
34
35
36
37 @SuppressWarnings("serial")
38 public class GenericLog extends HashMap<String, GenericDataElement> {
39
40
41 private final String lineKey = "OLV Line Count";
42 private String firstKey;
43 private int lineCount = 0;
44 private GenericDataElement lineCountElement;
45
46 final public static int LOG_NOT_LOADED = -1;
47 final public static int LOG_LOADING = 0;
48 final public static int LOG_LOADED = 1;
49
50 private String metaData;
51 protected final PropertyChangeSupport PCS;
52 private int logStatus;
53
54 private final PropertyChangeListener autoLoad = new PropertyChangeListener() {
55 public void propertyChange(final PropertyChangeEvent propertyChangeEvent) {
56 if ((Integer) propertyChangeEvent.getNewValue() == 0) {
57 GenericLog genLog = (GenericLog) propertyChangeEvent.getSource();
58 genLog.setLogStatus(GenericLog.LOG_LOADING);
59 OpenLogViewerApp.getInstance().setLog(genLog);
60 } else if ((Integer) propertyChangeEvent.getNewValue() == 1) {
61 GenericLog genLog = (GenericLog) propertyChangeEvent.getSource();
62 genLog.setLogStatus(GenericLog.LOG_LOADED);
63 OpenLogViewerApp.getInstance().setLog(genLog);
64 OpenLogViewerApp.getInstance().getOptionFrame().updateFromLog(genLog);
65 }
66 }
67 };
68
69 public GenericLog() {
70 super();
71 logStatus = LOG_NOT_LOADED;
72 PCS = new PropertyChangeSupport(this);
73 addPropertyChangeListener("LogLoaded", autoLoad);
74 metaData = "";
75
76 }
77
78
79
80
81
82
83 public GenericLog(String[] headers) {
84 super();
85
86 logStatus = LOG_NOT_LOADED;
87 PCS = new PropertyChangeSupport(this);
88 addPropertyChangeListener("LogLoaded", autoLoad);
89
90 metaData = "";
91
92
93 String[] internalHeaders = new String[headers.length + 1];
94 for(int i=0;i<headers.length;i++){
95 internalHeaders[i] = headers[i];
96 }
97 internalHeaders[headers.length] = lineKey;
98 this.setHeaders(internalHeaders);
99 lineCountElement = this.get(lineKey);
100 firstKey = headers[0];
101 }
102
103
104
105
106
107
108
109 public boolean addValue(String key, double value) {
110 GenericDataElement logElement = this.get(key);
111 if(key.equals(firstKey)){
112 lineCountElement.add((double)lineCount);
113 lineCount++;
114 }
115 return logElement.add(value);
116 }
117
118
119
120
121
122 public void setLogStatus(int newLogStatus) {
123 int oldLogStatus = this.logStatus;
124 this.logStatus = newLogStatus;
125 PCS.firePropertyChange("LogLoaded", oldLogStatus, newLogStatus);
126 }
127
128
129
130
131
132 public int getLogStatus() {
133 return this.logStatus;
134 }
135
136
137
138
139 public void setHeaders(String[] headers) {
140 for (int x = 0; x < headers.length; x++) {
141 GenericDataElement GDE = new GenericDataElement();
142 GDE.setName(headers[x]);
143 this.put(headers[x], GDE);
144 }
145 }
146
147
148
149
150
151
152 public void setMetaData(String md) {
153 metaData = md;
154 }
155
156
157
158
159
160 public String getMetadata() {
161 return metaData;
162 }
163
164
165
166
167
168
169
170
171
172
173
174
175
176 public void addPropertyChangeListener(final String name, final PropertyChangeListener listener) {
177 PCS.addPropertyChangeListener(name, listener);
178 }
179
180
181
182
183
184
185 public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
186 PCS.removePropertyChangeListener(propertyName, listener);
187 }
188 }