Skip to content

Commit a5ddc5f

Browse files
committed
2 parents 2b52ad0 + 62f20a0 commit a5ddc5f

File tree

5 files changed

+173
-18
lines changed

5 files changed

+173
-18
lines changed

java/src/edu/ucdavis/watershed/CMD.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,23 @@ public class CMD {
1515
public static void main(String[] args) throws Exception {
1616
ObjectMapper mapper = new ObjectMapper();
1717
CommandLineInput input = mapper.readValue(new File(args[0]), CommandLineInput.class);
18-
19-
//try {
20-
HecDss dssFile = Dss.open(input.getPath());
21-
22-
for( Config config: input.getData() ) {
23-
CsvData data = Csv.parseCsv(config.getCsvFilePath(), config.getType());
24-
Dss.write(config, data, dssFile, input.getPath());
18+
19+
HecDss dssFile = Dss.open(input.getPath());
20+
21+
if( input.isExport() ) {
22+
String root = "";
23+
if( input.getExportRoot() != null ) {
24+
root = input.getExportRoot();
2525
}
2626

27-
//} catch (Exception e) {
28-
// printError(e.getMessage());
29-
// return;
30-
//}
27+
Dss.exportJson(dssFile, root, input.getRegex());
28+
return;
29+
}
30+
31+
for( Config config: input.getData() ) {
32+
CsvData data = Csv.parseCsv(config.getCsvFilePath(), config.getType());
33+
Dss.write(config, data, dssFile, input.getPath());
34+
}
3135

3236
printSuccess();
3337
}

java/src/edu/ucdavis/watershed/CommandLineInput.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44

55
public class CommandLineInput {
66

7+
public boolean export = false; // are we exporting;
8+
public String exportRoot = "";
79
public String path = ""; // dss file path
810
public LinkedList<Config> data = null;
11+
public String regex = "";
912

1013
public CommandLineInput() {}
1114

@@ -24,4 +27,30 @@ public LinkedList<Config> getData() {
2427
public void setData(LinkedList<Config> data) {
2528
this.data = data;
2629
}
30+
31+
public boolean isExport() {
32+
return export;
33+
}
34+
35+
public void setExport(boolean export) {
36+
this.export = export;
37+
}
38+
39+
public String getExportRoot() {
40+
return exportRoot;
41+
}
42+
43+
public void setExportRoot(String exportRoot) {
44+
this.exportRoot = exportRoot;
45+
}
46+
47+
public String getRegex() {
48+
return regex;
49+
}
50+
51+
public void setRegex(String regex) {
52+
this.regex = regex;
53+
}
54+
55+
2756
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package edu.ucdavis.watershed;
2+
3+
import java.util.LinkedList;
4+
5+
import hec.io.PairedDataContainer;
6+
import hec.io.TimeSeriesContainer;
7+
8+
public class CwsContainer {
9+
10+
public TimeSeriesContainer timeSeriesContainer = null;
11+
public PairedDataContainer pairedDataContainer = null;
12+
public LinkedList<String> dates = new LinkedList<String>();
13+
14+
}

java/src/edu/ucdavis/watershed/Dss.java

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
package edu.ucdavis.watershed;
22

33
import java.util.Date;
4+
import java.util.HashMap;
5+
import java.util.LinkedList;
6+
import java.util.Vector;
7+
8+
import com.fasterxml.jackson.databind.ObjectMapper;
49

510
import hec.data.meta.Catalog;
611
import hec.dssgui.CombinedDataManager;
12+
import hec.heclib.dss.CondensedReference;
713
import hec.heclib.dss.HecDSSUtilities;
814
import hec.heclib.dss.HecDss;
15+
import hec.io.DataContainer;
916
import hec.io.PairedDataContainer;
1017
import hec.io.TimeSeriesContainer;
1118

19+
import java.io.File;
1220
import java.time.LocalDateTime;
1321
import java.time.Month;
1422
import java.time.temporal.ChronoUnit;
@@ -115,7 +123,93 @@ public static void writeTimeSeriesData(Config config, CsvData csv, HecDss dssFil
115123
dssFile.put(ts);
116124
}
117125

118-
@SuppressWarnings("deprecation")
126+
public static void exportJson(HecDss dssFile, String directory, String regex) throws Exception {
127+
int count = 0;
128+
129+
HashMap<String, HashMap<String,Integer>> map = new HashMap<String, HashMap<String,Integer>>();
130+
Vector<CondensedReference> v = dssFile.getCondensedCatalog();
131+
ObjectMapper mapper = new ObjectMapper();
132+
133+
cleanDirectory(new File(directory));
134+
new File(directory).mkdir();
135+
136+
for( CondensedReference path: v) {
137+
138+
CwsContainer ts = new CwsContainer();
139+
DataContainer dc;
140+
String name;
141+
String parameter;
142+
143+
try {
144+
String hecpath = path.getNominalPathname();
145+
146+
if( !regex.contentEquals("") && regex != null ) {
147+
if( !hecpath.matches(regex) ) continue;
148+
}
149+
150+
dc = dssFile.get(hecpath, true);
151+
152+
try {
153+
154+
155+
ts.timeSeriesContainer = (TimeSeriesContainer) dc;
156+
name = ts.timeSeriesContainer.getLocationName();
157+
parameter = ts.timeSeriesContainer.getParameterName();
158+
159+
if( ts.timeSeriesContainer.times == null ) {
160+
System.out.println("Ignoring: "+path.getNominalPathname());
161+
continue;
162+
}
163+
164+
for( int i = 0; i < ts.timeSeriesContainer.times.length; i++ ) {
165+
ts.dates.add(Dss.calcDate(ts.timeSeriesContainer.times[i]));
166+
}
167+
} catch(Exception e) {
168+
try {
169+
ts.pairedDataContainer = (PairedDataContainer) dc;
170+
parameter = "pairedData";
171+
name = ts.pairedDataContainer.location;
172+
} catch(Exception e2) {
173+
continue;
174+
}
175+
}
176+
} catch(Exception e2) {
177+
continue;
178+
}
179+
180+
mapper.writeValue(new File(directory+File.separatorChar+count+".json"), ts);
181+
182+
if( !map.containsKey(name) ) {
183+
map.put(name, new HashMap<String, Integer>());
184+
}
185+
map
186+
.get(name)
187+
.put(parameter, count);
188+
189+
count += 1;
190+
}
191+
192+
mapper.writeValue(new File(directory+File.separatorChar+"index.json"), map);
193+
}
194+
195+
public static boolean cleanDirectory(File dir) {
196+
if (dir.isDirectory()) {
197+
String[] children = dir.list();
198+
for (int i=0; i<children.length; i++) {
199+
boolean success = cleanDirectory(new File(dir, children[i]));
200+
if (!success) {
201+
return false;
202+
}
203+
}
204+
}
205+
return dir.delete();
206+
}
207+
208+
public static String calcDate(int time) {
209+
LocalDateTime ldt = EPOCH.plusMinutes((long) time);
210+
return ldt.toString();
211+
}
212+
119213
public static int calcTime(String date, boolean start) {
120214
String[] parts = date.split("-");
121215

java/src/edu/ucdavis/watershed/Test.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,38 @@ public static void main(String[] args) throws Exception {
1515
int t= 0;
1616
HecDss dssFile = Dss.open("E:\\S09I05\\S09I05TS.dss");
1717

18+
Dss.exportJson(dssFile, "E:\\S09I05", "");
19+
1820
// JM
1921
//HecDss dssFile = Dss.open("E:\\wy2002_jTS.dss");
2022

21-
/*Vector<String> v = dssFile.getPathnameList();
23+
/* Vector<String> v = dssFile.getPathnameList();
24+
//Vector<String> v = dssFile.getCatalogedPathnames();
2225
for( String path: v) {
2326
System.out.println(path);
24-
// TimeSeriesContainer ts = (TimeSeriesContainer) dssFile.get(path);
25-
t++;
27+
28+
CwsTimeSeriesContainer ts = new CwsTimeSeriesContainer();
29+
ts.timeSeriesContainer = (TimeSeriesContainer) dssFile.get(path);
30+
31+
for( int i = 0; i < ts.timeSeriesContainer.times.length; i++ ) {
32+
ts.dates.add(Dss.calcDate(ts.timeSeriesContainer.times[i]));
33+
}
34+
35+
String jsonInString = mapper.writeValueAsString(ts);
36+
System.out.println(jsonInString);
37+
mapper.writeValue(new File("E:\\S09I05\\test.json"), ts);
38+
break;
39+
2640
//t = 1;
2741
}
28-
System.out.print(t); */
42+
System.out.print(t);*/
2943
//TimeSeriesContainer ts = (TimeSeriesContainer) dssFile.get("/HEXT2014/C131_SINK G12/FLOW_LOSS(KAF)/01JAN1920/1MON/CALSIM - D889/",true);
3044
//TimeSeriesContainer ts = (TimeSeriesContainer) dssFile.get("/S09I04/GW-01/STOR/01JAN1920 - 01JAN2000/1MON//",true);
3145

3246
// JM
3347
//TimeSeriesContainer ts = (TimeSeriesContainer) dssFile.get("/INIT/SR_BLB/STOR/01JAN1920 - 01JAN2000/1MON//",true);
34-
TimeSeriesContainer ts = (TimeSeriesContainer) dssFile.get("//C29/FLOW_LOC(KAF)/01JAN1920 - 01JAN2000/1MON/DEFAULT/",true);
35-
System.out.print(dssFile.getStartTime());
48+
//TimeSeriesContainer ts = (TimeSeriesContainer) dssFile.get("//C29/FLOW_LOC(KAF)/01JAN1920 - 01JAN2000/1MON/DEFAULT/",true);
49+
//System.out.print(dssFile.getStartTime());
3650
/*for( int i = 0; i < ts.times.length; i++ ) {
3751
System.out.println(ts.times[i]);
3852
}*/

0 commit comments

Comments
 (0)