diff --git a/cave/build/cave/memorySettings.xml b/cave/build/cave/memorySettings.xml
index 918392b814..346a351831 100644
--- a/cave/build/cave/memorySettings.xml
+++ b/cave/build/cave/memorySettings.xml
@@ -175,11 +175,11 @@
- 256M
+ 384M
- 64M
+ 96M
diff --git a/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml b/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml
index 2b25c6b781..6fec96a168 100644
--- a/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml
+++ b/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml
@@ -6,5 +6,5 @@
-
-
\ No newline at end of file
+
+
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java
index 8e829a6cfc..7b9f897daa 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java
@@ -84,8 +84,6 @@ import com.raytheon.viz.mpe.util.DailyQcUtils;
public class DrawDQCStations {
private static DrawDQCStations instance = null;
-
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
private static final List pColorSetGroup = MPEColors
.build_mpe_colors();
@@ -101,13 +99,13 @@ public class DrawDQCStations {
int points_flag;
- boolean qpf_on = MPEDisplayManager.getCurrent().isQpf();
+ boolean qpf_on = false;
boolean flf_on = false;
boolean maxmin_on = false;
- int isom = dqc.isom;
+ int isom = DailyQcUtils.isom;
int pcpn_time_step = 0;
@@ -119,7 +117,7 @@ public class DrawDQCStations {
public static int grids_flag = 0;
- int dflag[] = dqc.dflag;
+ int dflag[] = DailyQcUtils.dflag;
int pcpn_time = 0;
@@ -298,25 +296,25 @@ public class DrawDQCStations {
time_pos = 0;
display_flag = 0;
hed = 0;
- plot_view = dqc.plot_view;
- contour_flag = dqc.contour_flag;
- points_flag = dqc.points_flag;
+ plot_view = DailyQcUtils.plot_view;
+ contour_flag = DailyQcUtils.contour_flag;
+ points_flag = DailyQcUtils.points_flag;
qpf_on = MPEDisplayManager.getCurrent().isQpf();
flf_on = MPEDisplayManager.getCurrent().isZflag();
maxmin_on = MPEDisplayManager.getCurrent().isMaxmin();
tbuf = new StringBuilder();
- isom = dqc.isom;
+ isom = DailyQcUtils.isom;
pcpn_time_step = MPEDisplayManager.pcpn_time_step;
- map_flag = dqc.map_flag;
- pcp_flag = dqc.pcp_flag;
- pcpn_day = dqc.pcpn_day;
- grids_flag = dqc.grids_flag;
- dflag = dqc.dflag;
- pcpn_time = dqc.pcpn_time;
-// pdata = DailyQcUtils.pdata;
- old_isom = dqc.old_isom;
-// tdata = DailyQcUtils.tdata;
-// zdata = DailyQcUtils.zdata;
+ map_flag = DailyQcUtils.map_flag;
+ pcp_flag = DailyQcUtils.pcp_flag;
+ pcpn_day = DailyQcUtils.pcpn_day;
+ grids_flag = DailyQcUtils.grids_flag;
+ dflag = DailyQcUtils.dflag;
+ pcpn_time = DailyQcUtils.pcpn_time;
+// pdata = DailyQcUtils.pdata;
+ old_isom = DailyQcUtils.old_isom;
+// tdata = DailyQcUtils.tdata;
+// zdata = DailyQcUtils.zdata;
/*
* get the token dqc_preprocessor_basetime, the default value is 12Z
@@ -431,14 +429,17 @@ public class DrawDQCStations {
if (contour_flag == 1) {
Set mode = mpd.getDisplayMode();
- if (md.getResourceList().containsRsc(pgp)) {
- md.getResourceList().removeRsc(pgp);
+ if (display.getDescriptor().getResourceList()
+ .containsRsc(pgp)) {
+ display.getDescriptor().getResourceList()
+ .removeRsc(pgp);
pgp.dispose();
}
if (mode.contains(DisplayMode.Contour)) {
// we are ok
} else {
mpd.toggleDisplayMode(DisplayMode.Contour);
+ mode = mpd.getDisplayMode();
if (mode.contains(DisplayMode.Image)) {
mpd.toggleDisplayMode(DisplayMode.Image);
}
@@ -717,7 +718,7 @@ public class DrawDQCStations {
Calendar ltime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
StringBuilder mbuf = new StringBuilder();
- int dqcEndingObsTime = dqc.getEnding6HourObsTime();
+ int dqcEndingObsTime = DailyQcUtils.getEnding6HourObsTime();
tbuf = new StringBuilder();
if (qpf_on == true) {
@@ -731,10 +732,10 @@ public class DrawDQCStations {
/* Precipitation period is always 12z-12z. */
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
- ltime.setTime(dqc.pdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.pdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
}
tbuf.append("Precipitation ");
@@ -784,18 +785,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
- if (dqc.pdata[pcpn_day].level == 1) {
+ if (DailyQcUtils.pdata[pcpn_day].level == 1) {
tbuf.append(" - Level 1");
- } else if (dqc.pdata[pcpn_day].level == 2) {
+ } else if (DailyQcUtils.pdata[pcpn_day].level == 2) {
tbuf.append(" - Level 2");
}
- if (dqc.pdata[pcpn_day].used[ptime_pos] == 4) {
+ if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
- } else if ((dqc.pdata[pcpn_day].used[ptime_pos] == 3)
- || (dqc.pdata[pcpn_day].used[ptime_pos] == 2)) {
+ } else if ((DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 3)
+ || (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
- } else if (dqc.pdata[pcpn_day].used[ptime_pos] == 1) {
+ } else if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@@ -810,19 +811,19 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
/* Times: 18, 00, 06, 12 */
if (pcpn_time < 1) {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
}
} else {
/* Times 12, 18, 00, 06 */
if (pcpn_time < 2) {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
}
}
@@ -882,20 +883,20 @@ public class DrawDQCStations {
}
- if (dqc.zdata[pcpn_day].level[ptime_pos] == 1) {
+ if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
- } else if (dqc.zdata[pcpn_day].level[ptime_pos] == 2) {
+ } else if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
- if (dqc.zdata[pcpn_day].used[ptime_pos] == 6) {
+ if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 6) {
tbuf.append(" Calculated");
- } else if (dqc.zdata[pcpn_day].used[ptime_pos] == 4) {
+ } else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
- } else if ((dqc.zdata[pcpn_day].used[ptime_pos] == 3)
- || (dqc.zdata[pcpn_day].used[ptime_pos] == 2)) {
+ } else if ((DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 3)
+ || (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
- } else if (dqc.zdata[pcpn_day].used[ptime_pos] == 1) {
+ } else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@@ -915,18 +916,18 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
if ((pcpn_time < 1) && (pcpn_time_step == 0)) {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
}
} else {
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
}
}
@@ -994,18 +995,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
- if (dqc.tdata[pcpn_day].level[ptime_pos] == 1) {
+ if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
- } else if (dqc.tdata[pcpn_day].level[ptime_pos] == 2) {
+ } else if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
- if (dqc.tdata[pcpn_day].used[ptime_pos] == 4) {
+ if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
- } else if ((dqc.tdata[pcpn_day].used[ptime_pos] == 3)
- || (dqc.tdata[pcpn_day].used[ptime_pos] == 2)) {
+ } else if ((DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 3)
+ || (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
- } else if (dqc.tdata[pcpn_day].used[ptime_pos] == 1) {
+ } else if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java
index e32d951ae6..98b0bc8d00 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java
@@ -36,7 +36,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* ------------ ---------- ----------- --------------------------
* Jun 17, 2009 snaples Initial creation
* May 06, 2011 #8994 jpiatt Added set precipitation value as zero
- *
+ * Sep 04, 2014 283 cgobs Fixed possible selection of filtered-out gages
*
*
* @author snaples
@@ -45,15 +45,13 @@ import com.vividsolutions.jts.geom.Coordinate;
public class GroupEditPrecipStns {
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
-
public void group_edit_precip_stations(ReferencedCoordinate rcoord) {
int time_pos;
int i, m, k;
float lat, lon;
double testdist, maxdist;
int isave;
- int max_stations = dqc.precip_stations.size();
+ int max_stations = DailyQcUtils.precip_stations.size();
Coordinate coord = new Coordinate();
try {
@@ -64,7 +62,7 @@ public class GroupEditPrecipStns {
}
if (MPEDisplayManager.pcpn_time_step == 0) {
- time_pos = dqc.pcpn_time;
+ time_pos = DailyQcUtils.pcpn_time;
} else {
time_pos = 4;
@@ -78,47 +76,61 @@ public class GroupEditPrecipStns {
* mouse click point.
*/
for (i = 0; i < max_stations; i++) {
- if (dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data < 0) {
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data < 0) {
continue;
}
- if (dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data < QcPrecipOptionsDialog
+ //precip filter
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data < QcPrecipOptionsDialog
.getPointFilterValue()) {
continue;
}
+ //reverse precip filter
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data > QcPrecipOptionsDialog
+ .getPointFilterReverseValue()) {
+ continue;
+ }
+
+ //elevation filter
+ if (DailyQcUtils.precip_stations.get(i).elev < DailyQcUtils.elevation_filter_value)
+ {
+ continue;
+ }
+
+
/* Retrieve the latitude and longitude of this station. */
- lat = dqc.precip_stations.get(i).lat;
- lon = dqc.precip_stations.get(i).lon;
+ lat = DailyQcUtils.precip_stations.get(i).lat;
+ lon = DailyQcUtils.precip_stations.get(i).lon;
- if (dqc.precip_stations.get(i).tip == 0
- && dqc.gage_char[0] == -1) {
+ if (DailyQcUtils.precip_stations.get(i).tip == 0
+ && DailyQcUtils.gage_char[0] == -1) {
continue;
}
- if (dqc.precip_stations.get(i).tip == 1
- && dqc.gage_char[1] == -1) {
+ if (DailyQcUtils.precip_stations.get(i).tip == 1
+ && DailyQcUtils.gage_char[1] == -1) {
continue;
}
- for (m = 0; m < dqc.tsmax; m++) {
+ for (m = 0; m < DailyQcUtils.tsmax; m++) {
- if ((dqc.precip_stations.get(i).parm.substring(3, 5)
- .equalsIgnoreCase(dqc.ts[m].abr))
- && dqc.dflag[m + 1] == 1) {
+ if ((DailyQcUtils.precip_stations.get(i).parm.substring(3, 5)
+ .equalsIgnoreCase(DailyQcUtils.ts[m].abr))
+ && DailyQcUtils.dflag[m + 1] == 1) {
break;
}
}
- if (m == dqc.tsmax) {
+ if (m == DailyQcUtils.tsmax) {
continue;
}
for (m = 0; m < 9; m++) {
- if (m == dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].qual
- && dqc.qflag[m] == 1) {
+ if (m == DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].qual
+ && DailyQcUtils.qflag[m] == 1) {
break;
}
@@ -143,19 +155,19 @@ public class GroupEditPrecipStns {
return;
}
- if (dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual != GroupEditStationsDialog.group_qual) {
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual != GroupEditStationsDialog.group_qual) {
QcPrecipOptionsDialog.renderGridsBtn.setEnabled(true);
}
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual = (short) GroupEditStationsDialog.group_qual;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual = (short) GroupEditStationsDialog.group_qual;
if (GroupEditStationsDialog.group_qual == 1
&& time_pos == 4
- && dqc.pdata[dqc.pcpn_day].stn[isave].sflag[time_pos] == 1) {
+ && DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].sflag[time_pos] == 1) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].data = dqc.pdata[dqc.pcpn_day].stn[isave].rrain[time_pos].data;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].data = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].rrain[time_pos].data;
- dqc.pdata[dqc.pcpn_day].stn[isave].sflag[time_pos] = -1;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].sflag[time_pos] = -1;
}
@@ -164,7 +176,7 @@ public class GroupEditPrecipStns {
|| GroupEditStationsDialog.group_qual == 0 || GroupEditStationsDialog.group_qual == 8)) {
for (k = 0; k < 4; k++) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].qual = (short) GroupEditStationsDialog.group_qual;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].qual = (short) GroupEditStationsDialog.group_qual;
}
}
@@ -176,12 +188,12 @@ public class GroupEditPrecipStns {
* and QC codes to "Manual"
*/
if (GroupEditStationsDialog.group_qual == 2) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].data = 0.0f;
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual = 2;
- if ((dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].data - 0.0) < 0.0001) {
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].data = 0.0f;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual = 2;
+ if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].data - 0.0) < 0.0001) {
for (k = 0; k < 4; k++) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].data = 0.0f;
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].qual = 2;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].data = 0.0f;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].qual = 2;
}
}
}
@@ -190,23 +202,23 @@ public class GroupEditPrecipStns {
if (time_pos != 4
&& GroupEditStationsDialog.group_qual == 1
- && dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual != 5
- && dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual != 4) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual = (short) GroupEditStationsDialog.group_qual;
+ && DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual != 5
+ && DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual != 4) {
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual = (short) GroupEditStationsDialog.group_qual;
}
for (k = 0; k < 5; k++) {
if (k < 4) {
- time_pos = dqc.pcpn_day * 4 + k;
+ time_pos = DailyQcUtils.pcpn_day * 4 + k;
} else {
- time_pos = 40 + dqc.pcpn_day;
+ time_pos = 40 + DailyQcUtils.pcpn_day;
}
- dqc.pcp_in_use[time_pos] = -1;
+ DailyQcUtils.pcp_in_use[time_pos] = -1;
- if (dqc.pdata[dqc.pcpn_day].used[k] != 0) {
- dqc.pdata[dqc.pcpn_day].used[k] = 2;
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[k] != 0) {
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[k] = 2;
}
}
return;
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java
index e7cd5bc289..17bc4fb92c 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java
@@ -1032,7 +1032,7 @@ public class SaveLevel2Data {
/* build map file */
System.out.println("Building MAP .");
- found: for (m = 0; mean_areal_precip_global[m].hb5 != ""; m++) {
+ found: for (m = 0; mean_areal_precip_global[m] != null; m++) {
for (k = 0; k < 4; k++) {
num = j * 4 + 3 - k;
@@ -1047,9 +1047,11 @@ public class SaveLevel2Data {
}
- if (mean_areal_precip_global[m].hb5 == "") {
+ if (mean_areal_precip_global[m] != null) {
+ if (mean_areal_precip_global[m].hb5 == "") {
System.out.println("MAP.hb5 is empty, continuing. ");
continue;
+ }
}
gm.setTime(dqc.pdata[j].data_time);
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java
index e011b4dc25..485d42cc88 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java
@@ -33,6 +33,7 @@ import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
@@ -63,6 +64,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* Jan 29, 2014 16561 snaples Updated processDrawPrecipValue to remove polygon wireframe after setting value.
* Feb 2, 2014 16201 snaples Added saved data flag support
* Apr 28, 2014 16707 snaples Added code to save and set location of dialog box when moved.
+ * Jan 12, 2015 16993 snaples Restored code for Substitute Field Combo box.
*
*
*
@@ -78,6 +80,9 @@ public class DrawPolygonDlg extends CaveSWTDialog {
private static final String MAKE_PERSISTENT = "Make Persistent";
+ private DisplayFieldData[] displayFieldDataArray;
+ private String[] displayTypeNameArray;
+
/**
* Bold Font.
*/
@@ -88,6 +93,11 @@ public class DrawPolygonDlg extends CaveSWTDialog {
*/
private Font font = null;
+ /**
+ * The field type selection Combo control.
+ */
+ private Combo fieldTypeCombo = null;
+
/**
* The precip value spinner control.
*/
@@ -227,7 +237,7 @@ public class DrawPolygonDlg extends CaveSWTDialog {
GridData gd = new GridData(345, SWT.DEFAULT);
subGroup.setLayoutData(gd);
- getSubChecks(subGroup);
+ createFieldCombo(subGroup);
// Create Substitute button
final Button subBtn = new Button(subGroup, SWT.PUSH);
@@ -349,398 +359,80 @@ public class DrawPolygonDlg extends CaveSWTDialog {
* @param groupComp
* The group composite
*/
- private void getSubChecks(Group groupComp) {
+ private void createFieldCombo(Group groupComp) {
// Spacer
- Label spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
+
+ // Create a container to hold the label and the combo box.
+ GridData gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
+ Composite prodListComp = new Composite(shell, SWT.NONE);
+ GridLayout prodListCompLayout = new GridLayout(2, false);
+ prodListComp.setLayout(prodListCompLayout);
+ prodListComp.setLayoutData(gd);
- Button radarMosaicChk = new Button(groupComp, SWT.RADIO);
- GridData gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- radarMosaicChk.setLayoutData(gd);
- radarMosaicChk.setText("Radar Mosaic");
- radarMosaicChk.setFont(font);
- radarMosaicChk.setLayoutData(gd);
- // Default to radar mosaic on dialog creation
- radarMosaicChk.setSelection(true);
- subType = DisplayFieldData.rMosaic;
- radarMosaicChk.addSelectionListener(new SelectionAdapter() {
+ gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ Label fieldTypeLabel = new Label(prodListComp, SWT.CENTER);
+ fieldTypeLabel.setText(SUBSTITUTE_VALUE_TEXT);
+ fieldTypeLabel.setLayoutData(gd);
+
+ gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
+ fieldTypeCombo = new Combo(groupComp, SWT.LEFT | SWT.DROP_DOWN
+ | SWT.READ_ONLY);
+
+ if (displayFieldDataArray == null)
+ {
+ displayFieldDataArray = MPEDisplayManager.mpe_qpe_fields;
+ }
+
+ // Label spaceLabel = new Label(groupComp, SWT.NONE);
+ // spaceLabel.setText("***** ");
+
+ int selectedFieldIndex = 0;
+
+ //find the index of the selected field
+ for (selectedFieldIndex = 0; selectedFieldIndex < displayFieldDataArray.length; selectedFieldIndex++)
+ {
+ if (displayFieldDataArray[selectedFieldIndex] == subType)
+ {
+ break;
+ }
+ }
+
+ //create and initialize the display field type name array
+ displayTypeNameArray = new String[displayFieldDataArray.length];
+
+ for (int i = 0; i < displayFieldDataArray.length; i++) {
+
+ String fieldName = displayFieldDataArray[i].toString();
+ // System.out.println("DrawPolygon.createFieldCombo(): FieldName = :" + fieldName + ":");
+ displayTypeNameArray[i] = fieldName;
+ }
+
+ //select the field
+ fieldTypeCombo.setTextLimit(35);
+ fieldTypeCombo.setLayoutData(gd);
+ fieldTypeCombo.setItems(displayTypeNameArray);
+ fieldTypeCombo.select(selectedFieldIndex);
+
+ fieldTypeCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rMosaic;
- }
+ String selectedFieldString = fieldTypeCombo.getText();
+ // System.out.println("DrawPolygon.createFieldCombo(): selectedFieldString = " +
+ // selectedFieldString);
+
+ subType = DisplayFieldData.fromDisplayNameString(selectedFieldString);
+
+ // if (subType != null)
+// {
+ // System.out.println("DrawPolygon.createFieldCombo(): subType = " +
+ // subType.toString());
+ // }
+ }
});
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button avgRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- avgRadarMosaicChk.setLayoutData(gd);
- avgRadarMosaicChk.setText("Average Radar Mosaic");
- avgRadarMosaicChk.setFont(font);
- avgRadarMosaicChk.setLayoutData(gd);
- avgRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.avgrMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button maxRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- maxRadarMosaicChk.setLayoutData(gd);
- maxRadarMosaicChk.setText("Max Radar Mosaic");
- maxRadarMosaicChk.setFont(font);
- maxRadarMosaicChk.setLayoutData(gd);
- maxRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.maxrMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button fieldBiasRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- fieldBiasRadarMosaicChk.setLayoutData(gd);
- fieldBiasRadarMosaicChk.setText("Field Bias Radar Mosaic");
- fieldBiasRadarMosaicChk.setFont(font);
- fieldBiasRadarMosaicChk.setLayoutData(gd);
- fieldBiasRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.bMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBiasRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBiasRadarMosaicChk.setLayoutData(gd);
- localBiasRadarMosaicChk.setText("Local Bias Radar Mosaic");
- localBiasRadarMosaicChk.setFont(font);
- localBiasRadarMosaicChk.setLayoutData(gd);
- localBiasRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.lMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button gageOnlyChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- gageOnlyChk.setLayoutData(gd);
- gageOnlyChk.setText("Gage Only Analysis");
- gageOnlyChk.setFont(font);
- gageOnlyChk.setLayoutData(gd);
- gageOnlyChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.gageOnly;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button multiSensorMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- multiSensorMosaicChk.setLayoutData(gd);
- multiSensorMosaicChk.setText("Multisensor Mosaic");
- multiSensorMosaicChk.setFont(font);
- multiSensorMosaicChk.setLayoutData(gd);
- multiSensorMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.mMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBiasMultiSensorMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBiasMultiSensorMosaicChk.setLayoutData(gd);
- localBiasMultiSensorMosaicChk.setText("Local Bias Multisensor Mosaic");
- localBiasMultiSensorMosaicChk.setFont(font);
- localBiasMultiSensorMosaicChk.setLayoutData(gd);
- localBiasMultiSensorMosaicChk
- .addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.mlMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satPrecipChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satPrecipChk.setLayoutData(gd);
- satPrecipChk.setText("Satellite Precip");
- satPrecipChk.setFont(font);
- satPrecipChk.setLayoutData(gd);
- satPrecipChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.satPre;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBiasSatPrecipChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBiasSatPrecipChk.setLayoutData(gd);
- localBiasSatPrecipChk.setText("Local Bias Satellite Precip");
- localBiasSatPrecipChk.setFont(font);
- localBiasSatPrecipChk.setLayoutData(gd);
- localBiasSatPrecipChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.lsatPre;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satRadarMosaicChk.setLayoutData(gd);
- satRadarMosaicChk.setText("Satellite Radar Mosaic");
- satRadarMosaicChk.setFont(font);
- satRadarMosaicChk.setLayoutData(gd);
- satRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.srMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satGageMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satGageMosaicChk.setLayoutData(gd);
- satGageMosaicChk.setText("Satellite Gage Mosaic");
- satGageMosaicChk.setFont(font);
- satGageMosaicChk.setLayoutData(gd);
- satGageMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.sgMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satRadarGageMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satRadarGageMosaicChk.setLayoutData(gd);
- satRadarGageMosaicChk.setText("Satellite Radar Gage Mosaic");
- satRadarGageMosaicChk.setFont(font);
- satRadarGageMosaicChk.setLayoutData(gd);
- satRadarGageMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.srgMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button triangulatedLocalBiasMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- triangulatedLocalBiasMosaicChk.setLayoutData(gd);
- triangulatedLocalBiasMosaicChk
- .setText("Triangulated Local Bias Mosaic");
- triangulatedLocalBiasMosaicChk.setFont(font);
- triangulatedLocalBiasMosaicChk.setLayoutData(gd);
- triangulatedLocalBiasMosaicChk
- .addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.p3lMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button bestEstQPEChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- bestEstQPEChk.setLayoutData(gd);
- bestEstQPEChk.setText("Best Estimate QPE");
- bestEstQPEChk.setFont(font);
- bestEstQPEChk.setLayoutData(gd);
- bestEstQPEChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.Xmrg;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rfcFieldBiasMosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rfcFieldBiasMosaic.setLayoutData(gd);
- rfcFieldBiasMosaic.setText("RFC Field Bias Mosaic");
- rfcFieldBiasMosaic.setFont(font);
- rfcFieldBiasMosaic.setLayoutData(gd);
- rfcFieldBiasMosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rfcbMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rfcMultiSensorMosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rfcMultiSensorMosaic.setLayoutData(gd);
- rfcMultiSensorMosaic.setText("RFC Multisensor Mosaic");
- rfcMultiSensorMosaic.setFont(font);
- rfcMultiSensorMosaic.setLayoutData(gd);
- rfcMultiSensorMosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rfcmMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rawQ2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rawQ2Mosaic.setLayoutData(gd);
- rawQ2Mosaic.setText("Raw Q2 Mosaic");
- rawQ2Mosaic.setFont(font);
- rawQ2Mosaic.setLayoutData(gd);
- rawQ2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.qmosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBQ2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBQ2Mosaic.setLayoutData(gd);
- localBQ2Mosaic.setText("Local Bias Q2 Mosaic");
- localBQ2Mosaic.setFont(font);
- localBQ2Mosaic.setLayoutData(gd);
- localBQ2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.lqmosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button mQ2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- mQ2Mosaic.setLayoutData(gd);
- mQ2Mosaic.setText("Multisensor Q2 Mosaic");
- mQ2Mosaic.setFont(font);
- mQ2Mosaic.setLayoutData(gd);
- mQ2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.mlqmosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button local1Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- local1Mosaic.setLayoutData(gd);
- local1Mosaic.setText("Local Field #1");
- local1Mosaic.setFont(font);
- local1Mosaic.setLayoutData(gd);
- local1Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.localField1;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button local2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- local2Mosaic.setLayoutData(gd);
- local2Mosaic.setText("Local Field #2");
- local2Mosaic.setFont(font);
- local2Mosaic.setLayoutData(gd);
- local2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.localField2;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button local3Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- local3Mosaic.setLayoutData(gd);
- local3Mosaic.setText("Local Field #3");
- local3Mosaic.setFont(font);
- local3Mosaic.setLayoutData(gd);
- local3Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.localField3;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rfcQpeMosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rfcQpeMosaic.setLayoutData(gd);
- rfcQpeMosaic.setText("RFC QPE Mosaic");
- rfcQpeMosaic.setFont(font);
- rfcQpeMosaic.setLayoutData(gd);
- rfcQpeMosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rfcMosaic;
- }
- });
}
+
+
/**
* Process the selection.
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java
index 9cb80cc03d..5226197a40 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java
@@ -58,8 +58,6 @@ public class PostAnalysisManager
private XmrgFile.XmrgHeader xmrgHeader = null;
private boolean misbin[][] = getMisBin();
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
-
private static final double MISSING_VALUE = -9999.0;
private static final double MM_PER_INCH = 25.4;
@@ -88,14 +86,14 @@ public class PostAnalysisManager
}
- public Date getSelectedDate()
+ public static Date getSelectedDate()
{
- Date date = dqc.pdata[dqc.pcpn_day].data_time;
+ Date date = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time;
return date;
}
- public String getSelectedDateString()
+ public static String getSelectedDateString()
{
String header = "postAnalysisManager.getSelectedDateString(): ";
@@ -116,7 +114,7 @@ public class PostAnalysisManager
}
- public String get24HourGageOnlyFilePath()
+ public static String get24HourGageOnlyFilePath()
{
String filePath = null;
final String mpe_grid_precip_dir_tok = "mpe_grid_precip_dir";
@@ -124,9 +122,9 @@ public class PostAnalysisManager
String mpe_grid_precip_dir = ad.getToken(mpe_grid_precip_dir_tok);
- String currentQcArea = dqc.currentQcArea;
+ String currentQcArea = DailyQcUtils.currentQcArea;
- String dateString = getSelectedDateString();
+ String dateString = PostAnalysisManager.getSelectedDateString();
// String dateString = "20140112";
@@ -232,7 +230,7 @@ public class PostAnalysisManager
String[] fileNameArray = fileDirectory.list();
- int precipDay = dqc.pcpn_day;
+ int precipDay = DailyQcUtils.pcpn_day;
List filteredFileNameList = filterFileNames(precipDay, fileNameArray);
@@ -270,9 +268,9 @@ public class PostAnalysisManager
return endTime;
}
- public double[][] get24HourTotalPrecip(int height, int width, double scaleFactor)
+ public static double[][] get24HourTotalPrecip(int height, int width, double scaleFactor)
{
- Date endDate = getSelectedDate();
+ Date endDate = PostAnalysisManager.getSelectedDate();
// System.out.println("PostAnalysisManager.getEndTime() = " + endDate);
double missingValue = -999.0;
@@ -352,8 +350,8 @@ public class PostAnalysisManager
double distanceSquared;
double nearestDistanceSquared = 9999999.0;
- int XOR = dqc.getHrap_grid().hrap_minx;
- int YOR = dqc.getHrap_grid().hrap_miny;
+ int XOR = DailyQcUtils.getHrap_grid().hrap_minx;
+ int YOR = DailyQcUtils.getHrap_grid().hrap_miny;
// Find the distance to the nearest precip station from this HRAP
// bin at [i][j]
@@ -389,7 +387,7 @@ public class PostAnalysisManager
{
String header = "PostAnalysisManager.create3DGridArray(): ";
- Hrap_Grid hrap_grid = dqc.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxI = hrap_grid.maxi;
int maxJ = hrap_grid.maxj;
@@ -408,7 +406,7 @@ public class PostAnalysisManager
{
//String header = "PostAnalysisManager.create2DGridArray(): ";
- Hrap_Grid hrap_grid = dqc.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxCols = hrap_grid.maxi;
int maxRows = hrap_grid.maxj;
@@ -992,7 +990,7 @@ public class PostAnalysisManager
}
*/
- Hrap_Grid grid = dqc.getHrap_grid();
+ Hrap_Grid grid = DailyQcUtils.getHrap_grid();
int maxJ = grid.maxj;
int maxI = grid.maxi;
@@ -1249,8 +1247,8 @@ public class PostAnalysisManager
{
String header = "PostAnalysisManager.mergeData(): ";
- int MAXX = dqc.getHrap_grid().maxi;
- int MAXY = dqc.getHrap_grid().maxj;
+ int MAXX = DailyQcUtils.getHrap_grid().maxi;
+ int MAXY = DailyQcUtils.getHrap_grid().maxj;
double logRHat;
int i, j;
@@ -1258,10 +1256,10 @@ public class PostAnalysisManager
double weightingFactor;
int precipStationCount;
-// List precipStationList = dqc.precip_stations;
+ List precipStationList = DailyQcUtils.precip_stations;
- precipStationCount = dqc.precip_stations.size();
+ precipStationCount = precipStationList.size();
logRHat = Math.log((double) rhat);
@@ -1316,7 +1314,7 @@ public class PostAnalysisManager
//System.out.println(header + "merge section");
weightingFactor = computeObservedWeight (i, j, logRHat,
- dqc.precip_stations, precipStationCount, estimatedScale);
+ precipStationList, precipStationCount, estimatedScale);
double mergedValueInInches = weightingFactor * gageOnlyGridValueInInches +
(1.0 - weightingFactor) * qpeInches;
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java
index ed6d482140..dea16fd548 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java
@@ -63,7 +63,6 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
private static final int SECONDS_PER_HOUR = 3600;
private static final int SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR;
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
/** Bundle file location */
//private static final String BUNDLE_LOC = "bundles/MPE/postAnalysisBundle.xml";
@@ -80,11 +79,10 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
setResourceType1(PAResourceType.XMRG);
setResourceType2(PAResourceType.ASCII_XMRG);
- PostAnalysisManager paMgr = new PostAnalysisManager();
// 24 accumulated 1-hour precip grids
- Hrap_Grid grid = dqc.getHrap_grid();
+ Hrap_Grid grid = DailyQcUtils.getHrap_grid();
int wfoMinX = grid.hrap_minx;
int wfoMinY = grid.hrap_miny;
int width = grid.maxi;
@@ -97,7 +95,7 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
float scaleFactor = 25.4f * 100.0f;
- double[][] totalPrecipGrid = paMgr.get24HourTotalPrecip(height, width, scaleFactor);
+ double[][] totalPrecipGrid = PostAnalysisManager.get24HourTotalPrecip(height, width, scaleFactor);
//floatArray units are hundredths of MM
@@ -106,7 +104,7 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
setDataArray1(floatArray);
//24 hour gage only
- String dataFilePath2 = paMgr.get24HourGageOnlyFilePath();
+ String dataFilePath2 = PostAnalysisManager.get24HourGageOnlyFilePath();
setDataFileName2(dataFilePath2);
return;
@@ -116,12 +114,12 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
private float[] convertToFloatArray(double[][] totalPrecipGrid, float unitConversionFactor)
{
String header = "SummedHourlyMpeDlg.convertToFloatArray(qpeAccum24hr): ";
- Hrap_Grid hrap_grid = dqc.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxCols = hrap_grid.maxi;
int maxRows = hrap_grid.maxj;
- int precipDay = dqc.pcpn_day;
+ int precipDay = DailyQcUtils.pcpn_day;
- System.out.println(header + "DailyQcUtils.pcpn_day = " + dqc.pcpn_day);
+ System.out.println(header + "DailyQcUtils.pcpn_day = " + DailyQcUtils.pcpn_day);
System.out.println(header + "precipDay = " + precipDay);
float[] valueArray = new float[maxRows*maxCols];
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java
index ce8e6d2158..63c093fea5 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java
@@ -73,6 +73,8 @@ import com.raytheon.viz.mpe.ui.actions.DrawDQCStations;
import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions;
import com.raytheon.viz.mpe.util.CreateMap;
import com.raytheon.viz.mpe.util.DailyQcUtils;
+import com.raytheon.viz.mpe.util.DailyQcUtils.Hrap_Grid;
+import com.raytheon.viz.mpe.util.DailyQcUtils.Pcp;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
@@ -97,10 +99,6 @@ public class PlotGriddedPrecipResource extends
IMpeResource {
MPEDisplayManager displayMgr = null;
-
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
-
- private DrawDQCStations ddq = DrawDQCStations.getInstance();
private GriddedImageDisplay2 gridDisplay;
@@ -124,11 +122,11 @@ public class PlotGriddedPrecipResource extends
int display_flag;
-// Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
-// Pcp pcp = DailyQcUtils.pcp;
+ Pcp pcp = DailyQcUtils.pcp;
-// Pcp spf = DailyQcUtils.spf;
+ Pcp spf = DailyQcUtils.spf;
private ColorMapParameters parameters = new ColorMapParameters();
@@ -143,7 +141,7 @@ public class PlotGriddedPrecipResource extends
this.colorSet = colorSet;
}
- ColorMap precip_colormap = ddq.colorMap;
+ ColorMap precip_colormap = DrawDQCStations.colorMap;
RGB color = null;
@@ -154,8 +152,8 @@ public class PlotGriddedPrecipResource extends
public void plot_gridded_precip(String prefix, int num, int mnum) {
int pcpn_time_step = MPEDisplayManager.pcpn_time_step;
int rsmode = OtherPrecipOptions.rsmode;
- boolean wfo_all = dqc.wfo_all;
- int[] wfo_in_use = dqc.wfo_in_use;
+ boolean wfo_all = DailyQcUtils.wfo_all;
+ int[] wfo_in_use = DailyQcUtils.wfo_in_use;
CreateMap cm = new CreateMap();
float value = 0;
@@ -225,37 +223,37 @@ public class PlotGriddedPrecipResource extends
if (num == 0) {
i1 = 0;
}
- if (dqc.pcp_in_use[num + mnum] != -1
- && dqc.pcp_in_use[num + mnum - i1] != -1) {
- cm.read_file(file, num + mnum, dqc.spf);
- cm.read_file(file, num + mnum - i1, dqc.pcp);
+ if (DailyQcUtils.pcp_in_use[num + mnum] != -1
+ && DailyQcUtils.pcp_in_use[num + mnum - i1] != -1) {
+ cm.read_file(file, num + mnum, spf);
+ cm.read_file(file, num + mnum - i1, pcp);
- for (i = 0; i < (dqc.getHrap_grid().maxi - dqc.getHrap_grid().hrap_minx) - 1; i++) {
- for (j = 0; j < dqc.getHrap_grid().maxj - dqc.getHrap_grid().hrap_miny - 1; j++) {
- dqc.spf.value[i][j] = (dqc.spf.value[i][j] + dqc.pcp.value[i][j]) / 2;
+ for (i = 0; i < (hrap_grid.maxi - hrap_grid.hrap_minx) - 1; i++) {
+ for (j = 0; j < hrap_grid.maxj - hrap_grid.hrap_miny - 1; j++) {
+ spf.value[i][j] = (spf.value[i][j] + pcp.value[i][j]) / 2;
}
}
- } else if (dqc.pcp_in_use[num + mnum] == 1) {
- cm.read_file(file, num + mnum, dqc.spf);
- } else if (dqc.pcp_in_use[num + mnum - i1] == 1) {
- cm.read_file(file, num + mnum - i1, dqc.spf);
+ } else if (DailyQcUtils.pcp_in_use[num + mnum] == 1) {
+ cm.read_file(file, num + mnum, spf);
+ } else if (DailyQcUtils.pcp_in_use[num + mnum - i1] == 1) {
+ cm.read_file(file, num + mnum - i1, spf);
}
}
- if (dqc.pcp_in_use[num] == -1) {
+ if (DailyQcUtils.pcp_in_use[num] == -1) {
return;
}
- cm.read_file(file, num, dqc.pcp);
+ cm.read_file(file, num, pcp);
- buf = FloatBuffer.allocate(dqc.getHrap_grid().maxi * dqc.getHrap_grid().maxj);
+ buf = FloatBuffer.allocate(hrap_grid.maxi * hrap_grid.maxj);
/* Get value in the HRAP grid bins. */
// for (i = 0; i < (hrap_grid.maxi); i++) {
// for (j = 0; j < hrap_grid.maxj; j++) {
- for (j = dqc.getHrap_grid().maxj - 1; j >= 0; j--) {
- for (i = 0; i < dqc.getHrap_grid().maxi; i++) {
- if (dqc.getHrap_grid().owner[i][j] == -1) {
+ for (j = hrap_grid.maxj - 1; j >= 0; j--) {
+ for (i = 0; i < hrap_grid.maxi; i++) {
+ if (hrap_grid.owner[i][j] == -1) {
continue;
}
@@ -266,14 +264,14 @@ public class PlotGriddedPrecipResource extends
break;
}
- if (dqc.getHrap_grid().owner[i][j] == wfo_in_use[m]) {
+ if (hrap_grid.owner[i][j] == wfo_in_use[m]) {
break;
}
}
}
Float fg = 0f;
- value = dqc.pcp.value[i][j];
+ value = pcp.value[i][j];
// fg = (float) (value / 100.0);
if (fg.isNaN() || value < 0) {
fg = -9999f;
@@ -302,8 +300,8 @@ public class PlotGriddedPrecipResource extends
}
buf.rewind();
- Rectangle extent = new Rectangle(dqc.getHrap_grid().hrap_minx,
- dqc.getHrap_grid().hrap_miny, dqc.getHrap_grid().maxi, dqc.getHrap_grid().maxj);
+ Rectangle extent = new Rectangle(hrap_grid.hrap_minx,
+ hrap_grid.hrap_miny, hrap_grid.maxi, hrap_grid.maxj);
if (extent.x == 0 && extent.y == 0) {
Rectangle coord = null;
@@ -388,7 +386,7 @@ public class PlotGriddedPrecipResource extends
int x = p.x - extent.x;
int y = p.y - extent.y;
- short s = (short) dqc.pcp.value[x][y];
+ short s = (short) pcp.value[x][y];
double d = parameters.getDataToDisplayConverter().convert(s);
@@ -464,20 +462,21 @@ public class PlotGriddedPrecipResource extends
@Override
protected void initInternal(IGraphicsTarget target) throws VizException {
this.target = target;
- time_pos = ddq.time_pos;
- plot_gridded_precip(ddq.prefix, time_pos, 100);
+ time_pos = DrawDQCStations.time_pos;
+ plot_gridded_precip(DrawDQCStations.prefix, time_pos, 100);
}
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps) throws VizException {
- if (buf == null || dqc.grids_flag != 1
+ if (buf == null || (DailyQcUtils.grids_flag != 1 && DailyQcUtils.contour_flag != 1)
|| displayMgr.isQpf() != true) {
return;
}
Set mode = displayMgr.getDisplayMode();
+ System.out.println("Mode is: "+mode.toString());
if (mode.contains(DisplayMode.Image)) {
if (gridDisplay == null) {
@@ -514,11 +513,11 @@ public class PlotGriddedPrecipResource extends
*/
@Override
public String getName() {
- if (ddq.qcmode == "") {
+ if (DrawDQCStations.qcmode == "") {
return "No Data Available";
}
- return ddq.qcmode;
+ return DrawDQCStations.qcmode;
}
@Override
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java
index 0462cb1aaf..b96e78864a 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java
@@ -151,7 +151,7 @@ public class PointPrecipPlotResource extends
private DailyQcUtils dqc = DailyQcUtils.getInstance();
- private DrawDQCStations ddq = DrawDQCStations.getInstance();
+// private DrawDQCStations ddq = DrawDQCStations.getInstance();
static int prevPcpnDay;
@@ -212,7 +212,7 @@ public class PointPrecipPlotResource extends
kv.append(":");
kv.append(pm);
dataMap.put(kv.toString(), gageData);
- pdataMap.put(kv.toString(), dqc.pdata[dqc.pcpn_day].stn[i]);
+ pdataMap.put(kv.toString(), DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i]);
/* Create a small envelope around the point */
Coordinate p1 = new Coordinate(xy.x + .02, xy.y + .02);
@@ -223,11 +223,11 @@ public class PointPrecipPlotResource extends
data.add("STATION: "
+ gageData.hb5
+ " VALUE: "
- + dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data);
+ + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data);
strTree.insert(env, data);
i++;
}
- prevPcpnDay = dqc.pcpn_day;
+ prevPcpnDay = DailyQcUtils.pcpn_day;
}
// target.setNeedsRefresh(true);
}
@@ -292,8 +292,8 @@ public class PointPrecipPlotResource extends
throws VizException {
if (MPEDisplayManager.getCurrent().isQpf() == true
- && (dqc.points_flag == 1)) {
- int type = dqc.plot_view;
+ && (DailyQcUtils.points_flag == 1)) {
+ int type = DailyQcUtils.plot_view;
int i = 0;
int m = 0;
int dcmode = OtherPrecipOptions.dcmode;
@@ -311,7 +311,7 @@ public class PointPrecipPlotResource extends
String val = "";
if (MPEDisplayManager.pcpn_time_step == 0) {
- time_pos = dqc.pcpn_time;
+ time_pos = DailyQcUtils.pcpn_time;
} else {
time_pos = 4;
}
@@ -323,7 +323,7 @@ public class PointPrecipPlotResource extends
double[] centerpixels = descriptor.worldToPixel(new double[] { c.x,
c.y });
color = RGBColors.getRGBColor(color_map_n[15]);
- if (dqc.points_flag == 1
+ if (DailyQcUtils.points_flag == 1
&& QcPrecipOptionsDialog.isOpen == true
&& MPEDisplayManager.getCurrent().isQpf() == true) {
} else {
@@ -360,7 +360,7 @@ public class PointPrecipPlotResource extends
for (m = 0; m < tsmax; m++) {
if (station.parm.substring(3, 5).equalsIgnoreCase(dqc.ts[m].abr)
- && dqc.dflag[m + 1] == 1) {
+ && DailyQcUtils.dflag[m + 1] == 1) {
break;
}
}
@@ -388,8 +388,8 @@ public class PointPrecipPlotResource extends
/* locate station in data stream */
if ((type == 4 || type == 5)
- && (dqc.pdata[dqc.pcpn_day].used[time_pos] == 0)
- && (dqc.pdata[dqc.pcpn_day].level == 0)) {
+ && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
+ && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
if ((type == 4 || type == 5)
@@ -429,8 +429,8 @@ public class PointPrecipPlotResource extends
tbuf = station.name;
} else if (type == 4) {
- if ((dqc.pdata[dqc.pcpn_day].used[time_pos] == 0)
- && (dqc.pdata[dqc.pcpn_day].level == 0)) {
+ if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
+ && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
@@ -454,8 +454,8 @@ public class PointPrecipPlotResource extends
tbuf = mbuf;
} else if (type == 5) {
- if ((dqc.pdata[dqc.pcpn_day].used[time_pos] == 0)
- && (dqc.pdata[dqc.pcpn_day].level == 0)) {
+ if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
+ && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
@@ -716,7 +716,7 @@ public class PointPrecipPlotResource extends
// Fonts are shared and cached, no need to init or dispose
font = fontFactory.getMPEFont(MPEDisplayManager.getFontId());
- if (dqc.points_flag == 1 && displayMgr.isQpf() == true) {
+ if (DailyQcUtils.points_flag == 1 && displayMgr.isQpf() == true) {
Iterator iter = dataMap.keySet().iterator();
while (iter.hasNext()) {
@@ -972,11 +972,11 @@ public class PointPrecipPlotResource extends
*/
@Override
public String getName() {
- if (ddq.qcmode == "") {
+ if (DrawDQCStations.qcmode == "") {
return "No Data Available";
}
- return ddq.qcmode;
+ return DrawDQCStations.qcmode;
}
/**
diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java
index 732e86dda5..6bede00384 100644
--- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java
+++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java
@@ -85,7 +85,7 @@ public class DailyQcUtils {
private String lastQcArea = "";
- public String currentQcArea;
+ public static String currentQcArea;
private Date currDate;
@@ -101,7 +101,7 @@ public class DailyQcUtils {
public int init_maxmin = -1;
- public int pcp_in_use[] = new int[500];
+ public static int pcp_in_use[] = new int[500];
boolean newarea = false;
@@ -171,13 +171,13 @@ public class DailyQcUtils {
public int method = 2;
- public boolean wfo_all = false;
+ public static boolean wfo_all = false;
public boolean render_all = true;
public int wfo_orig;
- public int[] wfo_in_use = new int[20];
+ public static int[] wfo_in_use = new int[20];
public String[] tag = new String[20];
@@ -261,39 +261,39 @@ public class DailyQcUtils {
public String mpe_show_missing_gage;
- public int isom = -1;
+ public static int isom = -1;
- public int old_isom = -1;
+ public static int old_isom = -1;
- public ArrayList precip_stations = new ArrayList();
+ public static ArrayList precip_stations = new ArrayList();
- public ArrayList temperature_stations = new ArrayList();
+ public static ArrayList temperature_stations = new ArrayList();
- public ArrayList freezing_stations = new ArrayList();
+ public static ArrayList freezing_stations = new ArrayList();
- public Pdata pdata[];
+ public static Pdata pdata[];
- public Tdata tdata[];
+ public static Tdata tdata[];
- public Zdata zdata[];
+ public static Zdata zdata[];
- private Hrap_Grid hrap_grid = new Hrap_Grid();
+ private static Hrap_Grid hrap_grid = new Hrap_Grid();
// public static Hrap_Grid hrap_tgrid = new Hrap_Grid();
public static String type = "QME ";
- public Ts[] ts;
+ public static Ts[] ts;
- public int tsmax = 0;
+ public static int tsmax = 0;
public Maps mean_areal_precip_global[];
- public Pcp pcp = new Pcp();
+ public static Pcp pcp = new Pcp();
- public Pcp spf = new Pcp();
+ public static Pcp spf = new Pcp();
- public Pcp tpf = new Pcp();
+ public static Pcp tpf = new Pcp();
public Bad_Daily_Values bad_values[];
@@ -443,15 +443,15 @@ public class DailyQcUtils {
public static int hrgt12z = -1;
- public int[] dflag = new int[10];
+ public static int[] dflag = new int[10];
- public int[] qflag = new int[10];
+ public static int[] qflag = new int[10];
public float pxtemp = 1.0f;
public int dmvalue = (int) (1.0 * 100 * 3.28 / .55);
- public int elevation_filter_value = 0;
+ public static int elevation_filter_value = 0;
public int temperature_filter_value = -50;
@@ -474,27 +474,27 @@ public class DailyQcUtils {
/* Function which associates the Gage QC edit levels with a value. */
public int funct[] = { 8, 0, 6, 2, 3, 4, 5, 1, 7, 9 };
- public int gage_char[] = new int[2];
+ public static int gage_char[] = new int[2];
- public int plot_view = 0;
+ public static int plot_view = 0;
public boolean frzlvl_flag = true;
public int find_station_flag = -1;
- public int pcpn_time = 0;
+ public static int pcpn_time = 0;
- public int pcp_flag = -1;
+ public static int pcp_flag = -1;
- public int pcpn_day = 0;
+ public static int pcpn_day = 0;
- public int contour_flag = -1;
+ public static int contour_flag = -1;
- public int points_flag = 1;
+ public static int points_flag = 1;
- public int grids_flag = -1;
+ public static int grids_flag = -1;
- public int map_flag = -1;
+ public static int map_flag = -1;
static int curHrMinSec = -1;
@@ -903,7 +903,7 @@ public class DailyQcUtils {
return retval;
}
- public int getEnding6HourObsTime() {
+ public static int getEnding6HourObsTime() {
String s = appsDefaults.getToken(dqc_ending_6hour_obstime_tok);
int value = ((!(null == s)) ? Integer.parseInt(s) : -1);
@@ -917,6 +917,9 @@ public class DailyQcUtils {
String currntQcArea, int days, boolean autoqc) {
currentQcArea = currntQcArea;
currDate = currentDate;
+ if (prevDate == null){
+ prevDate = currDate;
+ }
selDate = prevDate;
auto_dailyqc_flag = autoqc;
qcDays = MPEDataManager.getInstance().getDQCDays();
@@ -2127,7 +2130,7 @@ public class DailyQcUtils {
/**
* @return the hrap_grid
*/
- public Hrap_Grid getHrap_grid() {
+ public static Hrap_Grid getHrap_grid() {
return hrap_grid;
}
diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java
index 9be81678db..e204132de6 100644
--- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java
+++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java
@@ -90,8 +90,9 @@ public class MeanMonthlyPrecip {
displayUnit = NonSI.INCH;
dataUnit = SI.MILLIMETER;
cmc.setDisplayUnit(displayUnit);
+ cmc.setColorMapUnit(SI.MILLIMETER);
cmc.setDataUnit(dataUnit);
- UnitConverter dataToImage = cmc.getDataToImageConverter();
+ UnitConverter dataToImage = cmc.getColorMapToDisplayConverter();//cmc.getDataToImageConverter();
/*
* Loop over the months. Determine for which months PRISM data are
diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/doConfig.py b/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/doConfig.py
index 34a46ad251..8031d7800f 100644
--- a/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/doConfig.py
+++ b/edexOsgi/com.raytheon.edex.plugin.gfe/utility/edex_static/base/config/gfe/doConfig.py
@@ -1,26 +1,26 @@
##
# This software was developed and / or modified by Raytheon Company,
-# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
-#
-# U.S. EXPORT CONTROLLED TECHNICAL DATA
+# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
+#
+# U.S. EXPORT CONTROLLED TECHNICAL DATA
# This software product contains export-restricted data whose
# export/transfer/disclosure is restricted by U.S. law. Dissemination
# to non-U.S. persons whether in the United States or abroad requires
# an export license or other authorization.
#
-# Contractor Name: Raytheon Company
-# Contractor Address: 6825 Pine Street, Suite 340
-# Mail Stop B8
-# Omaha, NE 68106
-# 402.291.0100
-#
+# Contractor Name: Raytheon Company
+# Contractor Address: 6825 Pine Street, Suite 340
+# Mail Stop B8
+# Omaha, NE 68106
+# 402.291.0100
+#
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
# further licensing information.
##
# doConfig - validate and convert serverConfig into simple Java objects
#
-# this file was originally config.py
-# it was renamed to avoid a conflict with jep's built-in config module
+# this file was originally config.py
+# it was renamed to avoid a conflict with jep's built-in config module
#
# ----------------------------------------------------------------------------
#
@@ -35,37 +35,37 @@
# 11/18/2014 #4953 randerso Added check for empty unit string
#
########################################################################
-import types
-
-from java.util import ArrayList,LinkedHashMap
-from java.lang import Integer,Float
-from com.vividsolutions.jts.geom import Coordinate
-from java.awt import Point
-
-Databases = {}
-Projections = {}
-DiscreteDef = LinkedHashMap() #from parseKeys()
-
-# Check a python sequence to see that
-# it matches the format.
-# data: is a sequence of objects
-# fmt : is a parallel sequence of type objects
-# message : optional message to print on exception
-#
-# Returns data.
-# If len(data) != len(fmt)
-# or the type of each element in data does not
-# match the coresponding type in fmt, then
-# a TypeError is raised.
-# Example: a, b = check(([1, 3], "foo"), (list, str))
-def check(data, fmt, message, allData = None):
- if len(data) != len(fmt):
- m = message + ": Wrong number of items found, " + \
- "Expected " + `len(fmt)` + ", got " + `len(data)` + \
- " Input: " + `data`
- if allData is not None:
- m = m + ' All: ' + `allData`
- raise AssertionError, m
+import types
+
+from java.util import ArrayList,LinkedHashMap
+from java.lang import Integer,Float
+from com.vividsolutions.jts.geom import Coordinate
+from java.awt import Point
+
+Databases = {}
+Projections = {}
+DiscreteDef = LinkedHashMap() #from parseKeys()
+
+# Check a python sequence to see that
+# it matches the format.
+# data: is a sequence of objects
+# fmt : is a parallel sequence of type objects
+# message : optional message to print on exception
+#
+# Returns data.
+# If len(data) != len(fmt)
+# or the type of each element in data does not
+# match the coresponding type in fmt, then
+# a TypeError is raised.
+# Example: a, b = check(([1, 3], "foo"), (list, str))
+def check(data, fmt, message, allData = None):
+ if len(data) != len(fmt):
+ m = message + ": Wrong number of items found, " + \
+ "Expected " + `len(fmt)` + ", got " + `len(data)` + \
+ " Input: " + `data`
+ if allData is not None:
+ m = m + ' All: ' + `allData`
+ raise AssertionError, m
for i in xrange(len(data)):
obj = data[i]
if hasattr(obj, "jclassname"):
@@ -73,328 +73,328 @@ def check(data, fmt, message, allData = None):
else:
t = type(obj)
- if t != fmt[i]:
- m = message + ": Wrong data type found, " + \
- "Expected " + `fmt[i]` + ", got " + `t` + \
- " for position #" + `i+1` + " Input: " + `data`
- if allData is not None:
- m = m + ' All: ' + `allData`
- raise AssertionError, m
- return data
-
-# dictionary check, keys are strings, values/subvalues as specified
-def dictCheck(dictionary, value, subvalue, configName):
- map = LinkedHashMap()
- if type(dictionary) == dict:
- for k in dictionary.keys():
- if type(k) != str:
- raise TypeError, configName + " key [" + `k` + "] not a str"
- l = dictionary[k]
- if type(l) != value:
- raise TypeError, configName + " value [" + `l` + "] not a " \
- + `value`
- if value == list or value == tuple:
- n = ArrayList()
- for m in l:
- if type(m) != subvalue:
- raise TypeError, configName + " value [" + `l` \
- + "] isn't a " + `subvalue` + ": " + `m`
- elif subvalue == int:
- n.add(Integer(m))
- elif subvalue == float:
- n.add(Float(m))
- else:
- n.add(m)
- map.put(k, n)
- else:
- if value == int:
- map.put(k,Integer(l))
- elif value == float:
- map.put(k,Float(l))
- else:
- map.put(k, l)
- else:
- raise TypeError, configName + " not a dict:" + `dictionary`
- return map
-
-def getWx(wxtypes, wxvisibilities):
- from com.raytheon.uf.common.dataplugin.gfe.weather import WeatherCoverage, WeatherIntensity, WeatherAttribute
- from com.raytheon.edex.plugin.gfe.config import SimpleWeatherTypeConfig
- types = ArrayList()
- for t in wxtypes:
- symbol, description, cov, inten, attr = \
- check(t, (str, str, list, list, list), "Error in WeatherType")
- coverages = ArrayList()
- intensities = ArrayList()
- attributes = ArrayList()
- for c in cov:
- csym, cdes = check(c, (str, str), "Error in Weather Coverage", t)
- coverages.add(WeatherCoverage(csym, cdes))
- for i in inten:
- isym, ides = check(i, (str, str), "Error in Weather Intensity", t)
- intensities.add(WeatherIntensity(isym, ides))
- for a in attr:
- asym, ades = check(a, (str, str), "Error in Weather Attributes", t)
- attributes.add(WeatherAttribute(asym, ades))
-
- types.add(SimpleWeatherTypeConfig(symbol, description, coverages,
- intensities, attributes))
- vis = ArrayList()
- for v in wxvisibilities:
- vis.add(v)
- return (vis, types)
-
-#note that DiscreteDef is a dictionary that contains the following
-#coded strings: ['OVERLAPS', 'AuxLength', sym1, des1, sym2, des2, ....]
-#We do this to pass to C++ as a InitDict, which
-#is a Dict.
-def parseKeys(name, overlaps, auxLength, keys):
- if not DiscreteDef.containsKey(name):
- ts = ArrayList()
- if overlaps:
- ts.add("OVERLAPS")
- else:
- ts.add("MUTEXC")
- ts.add(`auxLength`)
- for symdes in keys:
- sym, des = check(symdes, (str, str),
- "Error in DiscreteKey Definition", keys)
- ts.add(sym)
- ts.add(des)
- if overlaps and len(keys) > 0 and keys[0][0] != "":
- s = "1st discrete key must be for OVERLAP-defined " +\
- "weather element. [" + name + "]" + `keys`
- raise Exception, s
- DiscreteDef.put(name, ts);
-
-def createParm(parminfo, domain, tc):
- from com.raytheon.edex.plugin.gfe.config import SimpleGridParmConfig
-
- m = "Format Error in Weather Element Definition"
- if len(parminfo) < 2:
- raise TypeError, m + ': ' + `parminfo`
-
- dim, origin, extent, timezone, projection,officeType = domain
-
- if parminfo[1] == 'Scalar' or parminfo[1] == 'Vector':
- parmInfoFmt = (str, str, str, str, float, float, int, int)
- name, type, units, description, max, min, precision, \
- rateParm = check(parminfo, parmInfoFmt, m)
-
- elif parminfo[1] == 'Weather':
- name, type, units, description = \
- check(parminfo, (str, str, str, str), m)
- max = 0
- min = 0
- precision = 0
- rateParm = False
-
- elif parminfo[1] == 'Discrete':
- if len(parminfo) == 6:
- parmInfoFmt = (str, str, str, str, int, list)
- name, type, units, description, overlaps, keys = \
- check(parminfo, parmInfoFmt, m)
- auxSize = 0
- else:
- parmInfoFmt = (str, str, str, str, int, list, int)
- name, type, units, description, overlaps, keys, auxSize = \
- check(parminfo, parmInfoFmt, m)
- max = 0.0
- min = 0.0
- precision = 0
- rateParm = False
- parseKeys(name, overlaps, auxSize, keys)
-
- else:
- raise Exception, "Illegal WE type specified for " + `parminfo[0]`
-
- #don't add parms with your own office type in the name.
- if name.find(officeType) != -1:
+ if t != fmt[i]:
+ m = message + ": Wrong data type found, " + \
+ "Expected " + `fmt[i]` + ", got " + `t` + \
+ " for position #" + `i+1` + " Input: " + `data`
+ if allData is not None:
+ m = m + ' All: ' + `allData`
+ raise AssertionError, m
+ return data
+
+# dictionary check, keys are strings, values/subvalues as specified
+def dictCheck(dictionary, value, subvalue, configName):
+ map = LinkedHashMap()
+ if type(dictionary) == dict:
+ for k in dictionary.keys():
+ if type(k) != str:
+ raise TypeError, configName + " key [" + `k` + "] not a str"
+ l = dictionary[k]
+ if type(l) != value:
+ raise TypeError, configName + " value [" + `l` + "] not a " \
+ + `value`
+ if value == list or value == tuple:
+ n = ArrayList()
+ for m in l:
+ if type(m) != subvalue:
+ raise TypeError, configName + " value [" + `l` \
+ + "] isn't a " + `subvalue` + ": " + `m`
+ elif subvalue == int:
+ n.add(Integer(m))
+ elif subvalue == float:
+ n.add(Float(m))
+ else:
+ n.add(m)
+ map.put(k, n)
+ else:
+ if value == int:
+ map.put(k,Integer(l))
+ elif value == float:
+ map.put(k,Float(l))
+ else:
+ map.put(k, l)
+ else:
+ raise TypeError, configName + " not a dict:" + `dictionary`
+ return map
+
+def getWx(wxtypes, wxvisibilities):
+ from com.raytheon.uf.common.dataplugin.gfe.weather import WeatherCoverage, WeatherIntensity, WeatherAttribute
+ from com.raytheon.edex.plugin.gfe.config import SimpleWeatherTypeConfig
+ types = ArrayList()
+ for t in wxtypes:
+ symbol, description, cov, inten, attr = \
+ check(t, (str, str, list, list, list), "Error in WeatherType")
+ coverages = ArrayList()
+ intensities = ArrayList()
+ attributes = ArrayList()
+ for c in cov:
+ csym, cdes = check(c, (str, str), "Error in Weather Coverage", t)
+ coverages.add(WeatherCoverage(csym, cdes))
+ for i in inten:
+ isym, ides = check(i, (str, str), "Error in Weather Intensity", t)
+ intensities.add(WeatherIntensity(isym, ides))
+ for a in attr:
+ asym, ades = check(a, (str, str), "Error in Weather Attributes", t)
+ attributes.add(WeatherAttribute(asym, ades))
+
+ types.add(SimpleWeatherTypeConfig(symbol, description, coverages,
+ intensities, attributes))
+ vis = ArrayList()
+ for v in wxvisibilities:
+ vis.add(v)
+ return (vis, types)
+
+#note that DiscreteDef is a dictionary that contains the following
+#coded strings: ['OVERLAPS', 'AuxLength', sym1, des1, sym2, des2, ....]
+#We do this to pass to C++ as a InitDict, which
+#is a Dict.
+def parseKeys(name, overlaps, auxLength, keys):
+ if not DiscreteDef.containsKey(name):
+ ts = ArrayList()
+ if overlaps:
+ ts.add("OVERLAPS")
+ else:
+ ts.add("MUTEXC")
+ ts.add(`auxLength`)
+ for symdes in keys:
+ sym, des = check(symdes, (str, str),
+ "Error in DiscreteKey Definition", keys)
+ ts.add(sym)
+ ts.add(des)
+ if overlaps and len(keys) > 0 and keys[0][0] != "":
+ s = "1st discrete key must be for OVERLAP-defined " +\
+ "weather element. [" + name + "]" + `keys`
+ raise Exception, s
+ DiscreteDef.put(name, ts);
+
+def createParm(parminfo, domain, tc):
+ from com.raytheon.edex.plugin.gfe.config import SimpleGridParmConfig
+
+ m = "Format Error in Weather Element Definition"
+ if len(parminfo) < 2:
+ raise TypeError, m + ': ' + `parminfo`
+
+ dim, origin, extent, timezone, projection,officeType = domain
+
+ if parminfo[1] == 'Scalar' or parminfo[1] == 'Vector':
+ parmInfoFmt = (str, str, str, str, float, float, int, int)
+ name, type, units, description, max, min, precision, \
+ rateParm = check(parminfo, parmInfoFmt, m)
+
+ elif parminfo[1] == 'Weather':
+ name, type, units, description = \
+ check(parminfo, (str, str, str, str), m)
+ max = 0
+ min = 0
+ precision = 0
+ rateParm = False
+
+ elif parminfo[1] == 'Discrete':
+ if len(parminfo) == 6:
+ parmInfoFmt = (str, str, str, str, int, list)
+ name, type, units, description, overlaps, keys = \
+ check(parminfo, parmInfoFmt, m)
+ auxSize = 0
+ else:
+ parmInfoFmt = (str, str, str, str, int, list, int)
+ name, type, units, description, overlaps, keys, auxSize = \
+ check(parminfo, parmInfoFmt, m)
+ max = 0.0
+ min = 0.0
+ precision = 0
+ rateParm = False
+ parseKeys(name, overlaps, auxSize, keys)
+
+ else:
+ raise Exception, "Illegal WE type specified for " + `parminfo[0]`
+
+ #don't add parms with your own office type in the name.
+ if name.find(officeType) != -1:
return None #skip this one
if len(units) == 0:
- raise Exception, 'Unit string must not be empty. For unitless quantities enter "1"'
-
- updateProjections(projection)
- start, repeat, duration = tc
- timeIndependentParm = (repeat == 0 and duration == 0)
-
-# return WeatherElement(name, type, units, description, max, min,
-# precision, timeIndependentParm, dim, origin,
-# extent, start, repeat, duration, rateParm)
- return SimpleGridParmConfig(name, type, units, description, 1.0*max, 1.0*min,
- precision, timeIndependentParm, Point(dim[0], dim[1]), Coordinate(origin[0], origin[1]),
- Coordinate(extent[0], extent[1]), start, repeat, duration, rateParm)
-
-def getDB(site, projID, dbinfo):
- from com.raytheon.edex.plugin.gfe.config import SimpleModelConfig
-
- dbinfoFmt = (str, str, str, int, int, int, int)
- name, format, type, single, official, numVer, purgeAge = \
- check(dbinfo, dbinfoFmt, "Error in Database Attribute Definition")
-
- if not Databases.has_key(name+type):
- Databases[name+type] = SimpleModelConfig(site, format, type, name, projID,
- single, official, numVer, purgeAge)
-
- return Databases[name+type]
-
-def parseDBItm(site, domain, item):
-# import serverConfig
-# domain = serverConfig.SITES[site]
-
- dbinfo, parminfo = check(item, (tuple, list),
- "Database Definition or Parm Group Format Error")
- projID = domain[4][0]
-
- db = getDB(site, projID, dbinfo)
- grids = db.grids
- for ptc in parminfo:
- parms, tc = check(ptc, (list, tuple),
- "Parm Group/Time Constraint Tuple Error")
- check(tc, (int, int, int), "Time Constraint Format Error", ptc)
- for parm in parms:
- grids.add(createParm(parm, domain, tc))
- db.grids = grids
-
-def updateProjections(projection):
- from com.raytheon.uf.common.dataplugin.gfe.config import ProjectionData
- # extract projection data
+ raise Exception, 'Unit string must not be empty. For unitless quantities enter "1"'
+
+ updateProjections(projection)
+ start, repeat, duration = tc
+ timeIndependentParm = (repeat == 0 and duration == 0)
+
+# return WeatherElement(name, type, units, description, max, min,
+# precision, timeIndependentParm, dim, origin,
+# extent, start, repeat, duration, rateParm)
+ return SimpleGridParmConfig(name, type, units, description, 1.0*max, 1.0*min,
+ precision, timeIndependentParm, Point(dim[0], dim[1]), Coordinate(origin[0], origin[1]),
+ Coordinate(extent[0], extent[1]), start, repeat, duration, rateParm)
+
+def getDB(site, projID, dbinfo):
+ from com.raytheon.edex.plugin.gfe.config import SimpleModelConfig
+
+ dbinfoFmt = (str, str, str, int, int, int, int)
+ name, format, type, single, official, numVer, purgeAge = \
+ check(dbinfo, dbinfoFmt, "Error in Database Attribute Definition")
+
+ if not Databases.has_key(name+type):
+ Databases[name+type] = SimpleModelConfig(site, format, type, name, projID,
+ single, official, numVer, purgeAge)
+
+ return Databases[name+type]
+
+def parseDBItm(site, domain, item):
+# import serverConfig
+# domain = serverConfig.SITES[site]
+
+ dbinfo, parminfo = check(item, (tuple, list),
+ "Database Definition or Parm Group Format Error")
+ projID = domain[4][0]
+
+ db = getDB(site, projID, dbinfo)
+ grids = db.grids
+ for ptc in parminfo:
+ parms, tc = check(ptc, (list, tuple),
+ "Parm Group/Time Constraint Tuple Error")
+ check(tc, (int, int, int), "Time Constraint Format Error", ptc)
+ for parm in parms:
+ grids.add(createParm(parm, domain, tc))
+ db.grids = grids
+
+def updateProjections(projection):
+ from com.raytheon.uf.common.dataplugin.gfe.config import ProjectionData
+ # extract projection data
projFmt = (str,
"com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData$ProjectionType",
- tuple, tuple, tuple, float, float, tuple, tuple, float, float, float)
- projID, ptype, pllll, pllur, pllo, pspo, pspt, pgpll, pgpur, pli, \
- plc, plo = check(projection, projFmt, "Format error in Projection")
- check(pllll, (float, float),
- "Format error lower left long/lat in Projection", projection)
- check(pllur, (float, float),
- "Format error upper right long/lat in Projection", projection)
- check(pllo, (float, float),
- "Format error long/lat origin in Projection", projection)
- check(pgpll, (int, int),
- "Format error lower left grid point in Projection", projection)
- check(pgpur, (int, int),
- "Format error upper right grid point in Projection", projection)
-
- if not Projections.has_key(projID):
- Projections[projID] = ProjectionData(projID, ptype,
- Coordinate(pllll[0],pllll[1]),
- Coordinate(pllur[0],pllur[1]),
- Coordinate(pllo[0],pllo[1]),
- pspo, pspt,
- Point(pgpll[0], pgpll[1]),
- Point(pgpur[0], pgpur[1]),
- pli, plc, plo)
-
-def parseGridLocation(domain):
- from com.raytheon.edex.plugin.gfe.config import SimpleGridLocation
-
- #if office type is present:
- if len(domain) == 6:
- domainFmt = (list,tuple,tuple,str,tuple,str)
- gridSize, origin, extent, tz, proj, officeType = check(domain, domainFmt, "Format error in SITES line")
- #if office type is not present:
- else:
- domainFmt = (list, tuple, tuple, str, tuple)
- gridSize, origin, extent, tz, proj = check(domain, domainFmt,
- "Format error in SITES line")
- check(gridSize, (int, int), "GridSize format error from SITES", domain)
- check(origin, (float, float), "Origin format error from SITES", domain)
- check(extent, (float, float), "Extent format error from SITES", domain)
-
+ tuple, tuple, tuple, float, float, tuple, tuple, float, float, float)
+ projID, ptype, pllll, pllur, pllo, pspo, pspt, pgpll, pgpur, pli, \
+ plc, plo = check(projection, projFmt, "Format error in Projection")
+ check(pllll, (float, float),
+ "Format error lower left long/lat in Projection", projection)
+ check(pllur, (float, float),
+ "Format error upper right long/lat in Projection", projection)
+ check(pllo, (float, float),
+ "Format error long/lat origin in Projection", projection)
+ check(pgpll, (int, int),
+ "Format error lower left grid point in Projection", projection)
+ check(pgpur, (int, int),
+ "Format error upper right grid point in Projection", projection)
+
+ if not Projections.has_key(projID):
+ Projections[projID] = ProjectionData(projID, ptype,
+ Coordinate(pllll[0],pllll[1]),
+ Coordinate(pllur[0],pllur[1]),
+ Coordinate(pllo[0],pllo[1]),
+ pspo, pspt,
+ Point(pgpll[0], pgpll[1]),
+ Point(pgpur[0], pgpur[1]),
+ pli, plc, plo)
+
+def parseGridLocation(domain):
+ from com.raytheon.edex.plugin.gfe.config import SimpleGridLocation
+
+ #if office type is present:
+ if len(domain) == 6:
+ domainFmt = (list,tuple,tuple,str,tuple,str)
+ gridSize, origin, extent, tz, proj, officeType = check(domain, domainFmt, "Format error in SITES line")
+ #if office type is not present:
+ else:
+ domainFmt = (list, tuple, tuple, str, tuple)
+ gridSize, origin, extent, tz, proj = check(domain, domainFmt,
+ "Format error in SITES line")
+ check(gridSize, (int, int), "GridSize format error from SITES", domain)
+ check(origin, (float, float), "Origin format error from SITES", domain)
+ check(extent, (float, float), "Extent format error from SITES", domain)
+
projFmt = (str,
"com.raytheon.uf.common.dataplugin.gfe.config.ProjectionData$ProjectionType",
- tuple, tuple, tuple, float, float, tuple, tuple, float, float, float)
- projID, projType, llll, llur, llo, sp1, sp2, gpll, gpur, li, lc, lo = \
- check(proj, projFmt, "Format error in Projection")
- check(llll, (float, float),
- "Format error lower left long/lat in Projection", proj)
- check(llur, (float, float),
- "Format error upper right long/lat in Projection", proj)
- check(llo, (float, float),
- "Format error long/lat origin in Projection", proj)
- check(gpll, (int, int),
- "Format error lower left grid point in Projection", proj)
- check(gpur, (int, int),
- "Format error upper right grid point in Projection", proj)
-
- gloc = SimpleGridLocation(Point(gridSize[0], gridSize[1]),
- Coordinate(origin[0], origin[1]),
- Coordinate(extent[0], extent[1]),
- projID, projType,
- Coordinate(llll[0], llll[1]),
- Coordinate(llur[0], llur[1]),
- Coordinate(llo[0], llo[1]),
- sp1, sp2,
- Point(gpll[0], gpll[1]),
- Point(gpur[0], gpur[1]),
- li, lc, lo)
- return gloc
-
-def parse(site, databases, wxtypes, wxvisibilities, allSites, inProjections):
- from com.raytheon.edex.plugin.gfe.config import SimpleGridLocation
- domain = parseGridLocation(allSites[site])
- for itm in databases:
- parseDBItm(site, allSites[site], itm)
-
- if type(wxtypes) != list:
- raise TypeError, "Format Error in WeatherTypes, not a list: " \
- + `wxtypes`
- if type(wxvisibilities) != list:
- raise TypeError, "Format Error in visibilities, not a list: " \
- + `wxvisibilities`
- vis, types = getWx(wxtypes, wxvisibilities)
-
- models = ArrayList()
- for key in Databases.keys():
- models.add(Databases[key])
-
- projections = ArrayList()
- if type(inProjections) != list:
- raise TypeError, "Format Error in Projections, not a list: " \
- + `inProjections`
- for p in inProjections:
- updateProjections(p)
- for key in Projections.keys():
- projections.add(Projections[key])
-
- allSiteIDs = ArrayList()
- allOfficeTypes = ArrayList()
- for key in allSites.keys():
- allSiteIDs.add(key)
- try:
- ot = allSites[key][5]
- if type(ot) != str:
- raise TypeError, "Format Error in office type, not a str:",allSites[key]
- except:
- ot = "wfo" #assumes wfo if not present
- allOfficeTypes.add(ot)
-
- siteId = ArrayList()
- siteId.add(site)
-
- timeZone = ArrayList()
- timeZone.add(allSites[site][3])
-
- return models, projections, vis, types, DiscreteDef, allSiteIDs, domain, siteId, timeZone, allOfficeTypes
-
-def d2dParse(d2dmodels):
- dict = LinkedHashMap()
- for entry in d2dmodels:
- if type(entry) is types.TupleType:
- d2dModelName, gfeModelName = check(entry, (str, str),
- "Format error in D2DMODELS entry", d2dmodels)
-
- dict.put(d2dModelName, gfeModelName)
-
- elif type(entry) is types.StringType:
- d2dModelName = entry
- dict.put(d2dModelName, d2dModelName)
-
- else:
- raise SyntaxError, "Invalid syntax for D2DMODELS" + `d2dmodels`
-
- return dict
+ tuple, tuple, tuple, float, float, tuple, tuple, float, float, float)
+ projID, projType, llll, llur, llo, sp1, sp2, gpll, gpur, li, lc, lo = \
+ check(proj, projFmt, "Format error in Projection")
+ check(llll, (float, float),
+ "Format error lower left long/lat in Projection", proj)
+ check(llur, (float, float),
+ "Format error upper right long/lat in Projection", proj)
+ check(llo, (float, float),
+ "Format error long/lat origin in Projection", proj)
+ check(gpll, (int, int),
+ "Format error lower left grid point in Projection", proj)
+ check(gpur, (int, int),
+ "Format error upper right grid point in Projection", proj)
+
+ gloc = SimpleGridLocation(Point(gridSize[0], gridSize[1]),
+ Coordinate(origin[0], origin[1]),
+ Coordinate(extent[0], extent[1]),
+ projID, projType,
+ Coordinate(llll[0], llll[1]),
+ Coordinate(llur[0], llur[1]),
+ Coordinate(llo[0], llo[1]),
+ sp1, sp2,
+ Point(gpll[0], gpll[1]),
+ Point(gpur[0], gpur[1]),
+ li, lc, lo)
+ return gloc
+
+def parse(site, databases, wxtypes, wxvisibilities, allSites, inProjections):
+ from com.raytheon.edex.plugin.gfe.config import SimpleGridLocation
+ domain = parseGridLocation(allSites[site])
+ for itm in databases:
+ parseDBItm(site, allSites[site], itm)
+
+ if type(wxtypes) != list:
+ raise TypeError, "Format Error in WeatherTypes, not a list: " \
+ + `wxtypes`
+ if type(wxvisibilities) != list:
+ raise TypeError, "Format Error in visibilities, not a list: " \
+ + `wxvisibilities`
+ vis, types = getWx(wxtypes, wxvisibilities)
+
+ models = ArrayList()
+ for key in Databases.keys():
+ models.add(Databases[key])
+
+ projections = ArrayList()
+ if type(inProjections) != list:
+ raise TypeError, "Format Error in Projections, not a list: " \
+ + `inProjections`
+ for p in inProjections:
+ updateProjections(p)
+ for key in Projections.keys():
+ projections.add(Projections[key])
+
+ allSiteIDs = ArrayList()
+ allOfficeTypes = ArrayList()
+ for key in allSites.keys():
+ allSiteIDs.add(key)
+ try:
+ ot = allSites[key][5]
+ if type(ot) != str:
+ raise TypeError, "Format Error in office type, not a str:",allSites[key]
+ except:
+ ot = "wfo" #assumes wfo if not present
+ allOfficeTypes.add(ot)
+
+ siteId = ArrayList()
+ siteId.add(site)
+
+ timeZone = ArrayList()
+ timeZone.add(allSites[site][3])
+
+ return models, projections, vis, types, DiscreteDef, allSiteIDs, domain, siteId, timeZone, allOfficeTypes
+
+def d2dParse(d2dmodels):
+ dict = LinkedHashMap()
+ for entry in d2dmodels:
+ if type(entry) is types.TupleType:
+ d2dModelName, gfeModelName = check(entry, (str, str),
+ "Format error in D2DMODELS entry", d2dmodels)
+
+ dict.put(d2dModelName, gfeModelName)
+
+ elif type(entry) is types.StringType:
+ d2dModelName = entry
+ dict.put(d2dModelName, d2dModelName)
+
+ else:
+ raise SyntaxError, "Invalid syntax for D2DMODELS" + `d2dmodels`
+
+ return dict
def netcdfParse(netcdfDirs):
dict = LinkedHashMap()
@@ -417,139 +417,107 @@ def netcdfParse(netcdfDirs):
raise SyntaxError, "Invalid syntax for NETCDFDIRS" + `netcdfDirs`
return dict
-
-def parseSat(satdata):
- rval = LinkedHashMap()
- for e in satdata:
- if type(e) is types.TupleType:
- direct, name = check(e, (str, str),
- "Format error in SATDATA entry", satdata)
- rval.put(direct, name)
- else:
- raise SyntaxError, "Invalid syntax for SATDATA" + `satdata`
- return rval
-
-def otherParse(serverhost, mhsid, port,
- initmodules, accumElem,
- initskips, d2ddbver, logfilepurge, prddir, home,
- extraWEPrec, vtecRequestTime, autoConfigureNotifyTextProd,
- iscRoutingTableAddress, requestedISCsites, requestISC, sendiscOnSave,
- sendiscOnPublish, requestedISCparms, transmitScript):
- if type(serverhost) != str:
- raise TypeError, "GFESUITE_HOST not an str: " + `serverhost`
- if type(mhsid) != str:
- raise TypeError, "GFESUITE_MHSID not an str: " + `mhsid`
+
+def parseSat(satdata):
+ rval = LinkedHashMap()
+ for e in satdata:
+ if type(e) is types.TupleType:
+ direct, name = check(e, (str, str),
+ "Format error in SATDATA entry", satdata)
+ rval.put(direct, name)
+ else:
+ raise SyntaxError, "Invalid syntax for SATDATA" + `satdata`
+ return rval
+
+def otherParse(serverhost, mhsid, port,
+ initmodules, accumElem,
+ initskips, d2ddbver, logfilepurge, prddir, home,
+ extraWEPrec, vtecRequestTime, autoConfigureNotifyTextProd,
+ iscRoutingTableAddress, requestedISCsites, requestISC, sendiscOnSave,
+ sendiscOnPublish, requestedISCparms, transmitScript):
+ if type(serverhost) != str:
+ raise TypeError, "GFESUITE_HOST not an str: " + `serverhost`
+ if type(mhsid) != str:
+ raise TypeError, "GFESUITE_MHSID not an str: " + `mhsid`
if type(vtecRequestTime) != int:
raise TypeError, "VTECPartners: VTEC_REMOTE_TABLE_FETCH_TIME " + \
- "not an int: " + `vtecRequestTime`
- if type(port) != int:
- raise TypeError, "GFESUITE_PORT not an int: " + `port`
- javainitmodules = dictCheck(initmodules, list, str, "INITMODULES")
- accumElem = dictCheck(accumElem, list, str, "D2DAccumulativeElements")
- initskips = dictCheck(initskips, list, int, "INITSKIPS")
- d2ddbver = dictCheck(d2ddbver, int, None, "D2DDBVERSIONS")
- if type(logfilepurge) != int:
- raise TypeError, "LOG_FILE_PURGE_AFTER not an int: " + `logfilepurge`
- if type(autoConfigureNotifyTextProd) != int:
- raise TypeError, "AUTO_CONFIGURE_NOTIFYTEXTPROD not an int: " + \
- `logfilepurge`
- if type(prddir) != str:
- raise TypeError, "GFESUITE_PRDDIR not an str: " + `prddir`
- if type(home) != str:
- raise TypeError, "GFESUITE_HOME not an str: " + `home`
- if type(extraWEPrec) != list:
- raise TypeError, "ExtraWEPrec not an list: " + `extraWEPrec`
- else:
- extraWEPrecision = LinkedHashMap()
- for e in extraWEPrec:
- if type(e) == str:
- extraWEPrecision.put(e, Integer(1))
- elif type(e) == tuple and len(e) == 2 and type(e[0]) == str and \
- type(e[1]) == int:
- extraWEPrecision.put(e[0], Integer(e[1]))
- else:
- raise TypeError, \
- "Entry in ExtraWEPrec not str or (str, int): " + `e`
-
- iscRoutingTableAddress = dictCheck(iscRoutingTableAddress,str,str,"ISC_ROUTING_TABLE_ADDRESS")
- #if type(iscRoutingTableAddress) not in [str, types.NoneType]:
- # raise TypeError, "ISC_ROUTING_TABLE_ADDRESS not None or a str: " + \
- # `iscRoutingTableAddress`
- #elif iscRoutingTableAddress is None:
- # iscRoutingTableAddress = ""
-
- reqISCsites = ArrayList()
- if type(requestedISCsites) not in [list, types.NoneType]:
- raise TypeError, "REQUESTED_ISC_SITES not None or a list: " + \
- `requestedISCsites`
- elif type(requestedISCsites) is list:
- for r in requestedISCsites:
- if type(r) != str:
- raise TypeError, "REQUESTED_ISC_SITES not list of strings: " + \
- `requestedISCsites`
- else:
- reqISCsites.add(r);
-
- reqISCparms = ArrayList()
- if type(requestedISCparms) not in [list, types.NoneType]:
- raise TypeError, "REQUESTED_ISC_PARMS not None or a list: " + \
- `requestedISCparms`
- elif type(requestedISCparms) is list:
- for r in requestedISCparms:
- if type(r) != str:
- raise TypeError, "REQUESTED_ISC_PARMS not list of strings: " + \
- `requestedISCparms`
- else:
- reqISCparms.add(r)
-
- if type(requestISC) != int:
- raise TypeError, "REQUEST_ISC not an int: " + `requestISC`
- if type(sendiscOnSave) != int:
- raise TypeError, "SEND_ISC_ON_SAVE not an int: " + `sendiscOnSave`
- if type(sendiscOnPublish) != int:
- raise TypeError, "SEND_ISC_ON_PUBLISH not an int: " + `sendiscOnPublish`
-
- if type(transmitScript) not in [str, types.NoneType]:
- raise TypeError, "TRANSMIT_SCRIPT not None or str: " + `transmitScript`
- elif transmitScript is None:
- transmitScript = ""
-
- # build model to init mapping
- modelToInit = {}
- for module in initmodules:
- for model in initmodules[module]:
- if modelToInit.has_key(model):
- modelToInit[model].append(module)
+ "not an int: " + `vtecRequestTime`
+ if type(port) != int:
+ raise TypeError, "GFESUITE_PORT not an int: " + `port`
+ initmodules = dictCheck(initmodules, list, str, "INITMODULES")
+ accumElem = dictCheck(accumElem, list, str, "D2DAccumulativeElements")
+ initskips = dictCheck(initskips, list, int, "INITSKIPS")
+ d2ddbver = dictCheck(d2ddbver, int, None, "D2DDBVERSIONS")
+ if type(logfilepurge) != int:
+ raise TypeError, "LOG_FILE_PURGE_AFTER not an int: " + `logfilepurge`
+ if type(autoConfigureNotifyTextProd) != int:
+ raise TypeError, "AUTO_CONFIGURE_NOTIFYTEXTPROD not an int: " + \
+ `logfilepurge`
+ if type(prddir) != str:
+ raise TypeError, "GFESUITE_PRDDIR not an str: " + `prddir`
+ if type(home) != str:
+ raise TypeError, "GFESUITE_HOME not an str: " + `home`
+ if type(extraWEPrec) != list:
+ raise TypeError, "ExtraWEPrec not an list: " + `extraWEPrec`
+ else:
+ extraWEPrecision = LinkedHashMap()
+ for e in extraWEPrec:
+ if type(e) == str:
+ extraWEPrecision.put(e, Integer(1))
+ elif type(e) == tuple and len(e) == 2 and type(e[0]) == str and \
+ type(e[1]) == int:
+ extraWEPrecision.put(e[0], Integer(e[1]))
else:
- modelToInit[model] = [module]
-
- # check for duplicate init modules
- for model in modelToInit:
- modules = modelToInit[model]
- if len(modules) > 1:
- message = "Multiple smartInit modules " + str(modules) + \
- " are enabled for D2D model: " + model + ". " + str(modules[1:]) + \
- " will be disabled. Please edit your localConfig.py file and disable all but one."
+ raise TypeError, \
+ "Entry in ExtraWEPrec not str or (str, int): " + `e`
- # log error message to edex log
- import LogStream
- LogStream.logProblem(message);
-
- # log error to alertViz
- from com.raytheon.uf.edex.core import EDEXUtil
- from com.raytheon.uf.common.status import UFStatus_Priority as Priority
- EDEXUtil.sendMessageAlertViz(Priority.ERROR,
- "com.raytheon.edex.plugin.gfe", "GFE", "GFE", message,
- message, None)
+ iscRoutingTableAddress = dictCheck(iscRoutingTableAddress,str,str,"ISC_ROUTING_TABLE_ADDRESS")
+ #if type(iscRoutingTableAddress) not in [str, types.NoneType]:
+ # raise TypeError, "ISC_ROUTING_TABLE_ADDRESS not None or a str: " + \
+ # `iscRoutingTableAddress`
+ #elif iscRoutingTableAddress is None:
+ # iscRoutingTableAddress = ""
- # remove duplicate
- for module in modules[1:]:
- javainitmodules.remove(module)
-
- return serverhost, mhsid, \
- port, javainitmodules, accumElem, \
- initskips, d2ddbver, logfilepurge, prddir, home,\
- extraWEPrecision, vtecRequestTime, \
- autoConfigureNotifyTextProd, \
- iscRoutingTableAddress, reqISCsites, requestISC, sendiscOnSave, \
- sendiscOnPublish, reqISCparms, transmitScript
+ reqISCsites = ArrayList()
+ if type(requestedISCsites) not in [list, types.NoneType]:
+ raise TypeError, "REQUESTED_ISC_SITES not None or a list: " + \
+ `requestedISCsites`
+ elif type(requestedISCsites) is list:
+ for r in requestedISCsites:
+ if type(r) != str:
+ raise TypeError, "REQUESTED_ISC_SITES not list of strings: " + \
+ `requestedISCsites`
+ else:
+ reqISCsites.add(r);
+
+ reqISCparms = ArrayList()
+ if type(requestedISCparms) not in [list, types.NoneType]:
+ raise TypeError, "REQUESTED_ISC_PARMS not None or a list: " + \
+ `requestedISCparms`
+ elif type(requestedISCparms) is list:
+ for r in requestedISCparms:
+ if type(r) != str:
+ raise TypeError, "REQUESTED_ISC_PARMS not list of strings: " + \
+ `requestedISCparms`
+ else:
+ reqISCparms.add(r)
+
+ if type(requestISC) != int:
+ raise TypeError, "REQUEST_ISC not an int: " + `requestISC`
+ if type(sendiscOnSave) != int:
+ raise TypeError, "SEND_ISC_ON_SAVE not an int: " + `sendiscOnSave`
+ if type(sendiscOnPublish) != int:
+ raise TypeError, "SEND_ISC_ON_PUBLISH not an int: " + `sendiscOnPublish`
+
+ if type(transmitScript) not in [str, types.NoneType]:
+ raise TypeError, "TRANSMIT_SCRIPT not None or str: " + `transmitScript`
+ elif transmitScript is None:
+ transmitScript = ""
+
+ return serverhost, mhsid, \
+ port, initmodules, accumElem, \
+ initskips, d2ddbver, logfilepurge, prddir, home,\
+ extraWEPrecision, vtecRequestTime, \
+ autoConfigureNotifyTextProd, \
+ iscRoutingTableAddress, reqISCsites, requestISC, sendiscOnSave, \
+ sendiscOnPublish, reqISCparms, transmitScript
diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_MARINE.xml b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_MARINE.xml
index 3b3531dda1..135a7f26a1 100755
--- a/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_MARINE.xml
+++ b/edexOsgi/com.raytheon.uf.common.dataplugin.warning/utility/common_static/base/warngen/geospatialConfig_MARINE.xml
@@ -13,6 +13,11 @@
THIS CHANGE WAS DONE SO THAT CONFIGURATIONS COULD BE MADE IN ONE LOCATION
AND NOT ACROSS 20-30 TEMPLATES. A COUNTY-BASED and ZONE-BASED COUNTERPART
EXISTS TO THIS FILE.
+
+SOFTWARE HISTORY
+Date Ticket# Engineer Description
+01/20/15 RM #14929 Qinglu Lin Changed false to true for tags in ,
+ .
-->
@@ -96,10 +101,7 @@
AREA
-
- false
+ true
1
10.0
5
@@ -131,7 +133,7 @@
1
AREA
TRACK
- false
+ true
10
10
@@ -154,7 +156,7 @@
1
AREA
TRACK
- false
+ true
20
10
diff --git a/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults b/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults
index 6b806b60c1..a0cfcd9dd6 100644
--- a/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults
+++ b/edexOsgi/com.raytheon.uf.common.ohd/utility/common_static/base/hydro/Apps_defaults
@@ -182,6 +182,42 @@ MpeRUCFreezingLevel : ON
MpeLightningSrv : ON
#====================================================================================
+#===================== run_report_alarm Configuration ===============================
+# These settings modify behavior of the EDEX RunReportAlarmSrv service, which
+# replaced the original run_report_alarm script ported from A1 hydro.
+#
+## Mandatory Arguments:
+## alarm_product_id : The product id that will be used to write the alarm
+## report product into the textdb.
+##
+## Optional Arguments:
+## alarm_file_suffix : A Java date/time format string that will be used as
+## the alarm report's file extension when the product is
+## written to disk. Product file path is
+## ${whfs_product_dir}/PRODUCT_ID.FILE_SUFFIX.
+##
+## alarm_report_mode : Report mode. Valid values are one of the following:
+## ALL, FRESH, RECENT, UNREPORTED, NEAREST, NEAR_NOW,
+## LATEST_MAXFCST, or NEW_OR_INCREASED.
+##
+## alarm_filter : Additional filtering options for the product.
+## Valid values can one or many of the following:
+## 'O', 'F', 'T', 'M', 'R', 'L', 'U', 'D'.
+##
+## alarm_pe_filter : Physical element filter.
+##
+## alarm_minutes : For certain report modes, creates a window going back
+## or forward the specified number of minutes.
+## Valid values are 1 - 999999.
+##
+## alarm_verbose : Whether or not to create a "verbose mode" report.
+## Valid values are TRUE or FALSE.
+##
+
+alarm_product_id : CCCACRXXX
+alarm_file_suffix : MMdd.HHmm
+alarm_report_mode : NEAREST
+
# ==============================================================================
# Executable directory tokens.
@@ -207,7 +243,7 @@ server_name : ONLINE # Informix database server name
db_name : hd_ob92lwx # IHFS database name
damcat_db_name : dc_ob5xxx # Dam Catalog database name
hdb_db_name : ob81_histdata # Historical database.
-pghost : localhost # The machine PostGres is running on
+pghost : dx1f # The machine PostGres is running on
pguser : awips # The user allowed to access PostGres
pgport : 5432 # The PostGres Server port
adb_name : adb_ob7xxx # RFC archive database name
@@ -1896,7 +1932,11 @@ mpe_post_output : $(mpe_fieldgen_product_dir)/post_analysis
# add ,RDMOSAIC,BDMOSAIC,LDMOSAIC,MDMOSAIC,MLDMOSAIC,AVGRDMOSAIC,MAXRDMOSAIC,SRDMOSAIC,SRDGMOSAIC to existing mpe_generate_list token
# ================== end of SSHP Directory Structure tokens ========================
-
+# nrldb tokens
+nrldb_log : $(whfs_log_dir)/nrldb
+nrldb_data : $(whfs_local_data_dir)/nrldb
+nrldb_config : $(whfs_config_dir)/nrldb
+nrldb_tmp : /awips/hydroapps/whfs/local/data/output
# The syntax needed in the file is:
#
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/NsharpSoundingElementStateProperty.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/NsharpSoundingElementStateProperty.java
index fccb434c63..e014e6e015 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/NsharpSoundingElementStateProperty.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/NsharpSoundingElementStateProperty.java
@@ -19,6 +19,9 @@ import java.util.List;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
*
@@ -37,9 +40,10 @@ public class NsharpSoundingElementStateProperty {
private int compColorIndex;
private List sndLyLst;
private List sndLyLstBk;
+ private boolean goodData = true; //#5929
public NsharpSoundingElementStateProperty(String elementDescription,
String stnDescription,
- String timeDescription, NsharpStationInfo stnInfo, List sndLyLst) {
+ String timeDescription, NsharpStationInfo stnInfo, List sndLyLst, boolean goodData) {
super();
this.elementDescription = elementDescription;
//this.elementState = elementState;
@@ -49,6 +53,7 @@ public class NsharpSoundingElementStateProperty {
this.sndType = stnInfo.getSndType();
this.compColorIndex = NsharpConstants.LINE_COMP1;;
this.sndLyLst = sndLyLst;
+ this.goodData = goodData; //#5929
sndLyLstBk= new ArrayList(sndLyLst.size());
for(NcSoundingLayer ly : sndLyLst){
try {
@@ -134,5 +139,13 @@ public class NsharpSoundingElementStateProperty {
}
}
}
+
+ public boolean isGoodData() {
+ return goodData;
+ }
+
+ public void setGoodData(boolean goodData) {
+ this.goodData = goodData;
+ }
}
\ No newline at end of file
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpAbstractPaneDescriptor.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpAbstractPaneDescriptor.java
index 2bbad12a99..d33f29f61f 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpAbstractPaneDescriptor.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpAbstractPaneDescriptor.java
@@ -13,7 +13,10 @@
* 05/02/2012 229 Chin Chen Initial coding for multiple display panes implementation
* 03/11/2013 972 Greg Hull rm paneNumber
* 03/11/2013 2491 bsteffen extend IDescriptor derictly for better serialization detection.
-
+ * 01/13/2015 DR#17008,
+ * task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
+ * moved "setFrameCoordinator()" from NsharpSkewTPaneDescriptor to here,
+ * so it can be used by other descriptor
*
*
*
@@ -24,6 +27,7 @@ package gov.noaa.nws.ncep.ui.nsharp.display;
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpAbstractPaneResource;
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpResourceHandler;
+import gov.noaa.nws.ncep.viz.ui.display.NCLoopProperties;
import java.util.List;
@@ -34,15 +38,14 @@ import org.geotools.referencing.crs.DefaultEngineeringCRS;
import com.raytheon.uf.viz.core.PixelExtent;
import com.raytheon.uf.viz.core.datastructure.LoopProperties;
+import com.raytheon.uf.viz.core.drawables.FrameCoordinator;
import com.raytheon.uf.viz.core.drawables.IDescriptor;
+import com.raytheon.uf.viz.core.drawables.IFrameCoordinator;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.viz.core.graphing.GraphDescriptor;
@XmlAccessorType(XmlAccessType.NONE)
public class NsharpAbstractPaneDescriptor extends GraphDescriptor implements
IDescriptor {
-// @XmlElement
-// protected int paneNumber;
-
protected NsharpResourceHandler rscHandler=null;
@@ -53,14 +56,6 @@ public class NsharpAbstractPaneDescriptor extends GraphDescriptor implements
public void setRscHandler(NsharpResourceHandler rscHandler) {
this.rscHandler = rscHandler;
}
-
-// public int getPaneNumber() {
-// return paneNumber;
-// }
-//
-// public void setPaneNumber(int paneNumber) {
-// this.paneNumber = paneNumber;
-// }
public NsharpAbstractPaneDescriptor() {
super();
@@ -106,4 +101,64 @@ public class NsharpAbstractPaneDescriptor extends GraphDescriptor implements
e.printStackTrace();
}
}
+ //DR17008
+ protected void setFrameCoordinator() {
+ frameCoordinator = new FrameCoordinator(this) {
+ @Override
+ /*
+ * Chin Note: this function handles keyboard up/down/left/right arrow keys for station and time line stepping.
+ */
+ public void changeFrame(
+ IFrameCoordinator.FrameChangeOperation operation,
+ IFrameCoordinator.FrameChangeMode mode) {
+ if(rscHandler == null)
+ return;
+ //System.out.println("NsharpSkewTPaneDescriptor changeFrame(operation) called op="+operation+" mode"+mode);
+ if(mode == IFrameCoordinator.FrameChangeMode.SPACE_ONLY){
+ //up/down arrow keys for stepping stations
+ //editor.getRscHandler().setSteppingStnIdList(operation);
+ rscHandler.setSteppingStnIdList(operation);
+ } else if(mode == IFrameCoordinator.FrameChangeMode.TIME_ONLY || mode == IFrameCoordinator.FrameChangeMode.TIME_AND_SPACE){
+ //left/right arrow keys for stepping time lines
+ //editor.getRscHandler().setSteppingTimeLine(operation, mode);
+ rscHandler.setSteppingTimeLine(operation, mode);
+ }
+ }
+ /*
+ * (non-Javadoc)
+ * @see com.raytheon.uf.viz.core.drawables.FrameCoordinator#changeFrame(com.raytheon.uf.viz.core.datastructure.LoopProperties)
+ * This function handling nsharp looping.
+ * Chin: 12.8.1: let skewtPaneDescriptor handle looping. All other pane descriptor will do nothing. Otherwise, we will looping X times faster when we
+ * have X number of panes configured and each pane move frame once.
+ *
+ */
+ @Override
+ public void changeFrame(LoopProperties loopProperties) {
+ if(rscHandler == null)
+ return;
+
+ long waitTime = Long.MAX_VALUE;
+ //System.out.println("NsharpSkewTPaneDescriptor changeFrame(loop) called, loopDirection= "+loopDirection + " fwd="+loopProperties.getFwdFrameTime()+
+ // " back="+loopProperties.getRevFrameTime() + " 1st dt="+loopProperties.getFirstFrameDwell()+ " lasDt="+loopProperties.getLastFrameDwell());
+ if(loopProperties.getMode() == LoopProperties.LoopMode.Forward || loopProperties.getMode() == LoopProperties.LoopMode.Cycle)
+ waitTime = loopProperties.getFwdFrameTime();
+ else
+ waitTime = loopProperties.getRevFrameTime();
+ int frameSize= rscHandler.getTimeElementListSize();
+ int curFrameIndex = rscHandler.getCurrentTimeElementListIndex();
+ if(curFrameIndex == 0)
+ waitTime = loopProperties.getFirstFrameDwell();
+ else if(curFrameIndex == frameSize-1)
+ waitTime = loopProperties.getLastFrameDwell();
+
+ loopProperties.drawAfterWait(waitTime);
+ //System.out.println("wait time="+waitTime);
+ if (loopProperties.isShouldDraw()) {
+ rscHandler.setLoopingDataTimeLine(loopProperties);
+ //System.out.println("loopinp step");
+ }
+ }
+
+ };
+ }
}
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpEditor.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpEditor.java
index f8a020eab7..35db1031d9 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpEditor.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpEditor.java
@@ -18,6 +18,8 @@ package gov.noaa.nws.ncep.ui.nsharp.display;
* 06/14/2011 11-5 Chin Chen migration
* 03/11/2013 972 Greg Hull rm paneNum and editorNum; rm AbstractNcEditor
* 03/25/2013 972 Greg Hull rm unused Add/RemoveListeners.
+ * 01/13/2015 DR#17008,
+ * task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
*
*
*
@@ -178,7 +180,7 @@ public class NsharpEditor extends AbstractEditor implements
private int futureHeightHint;
private int futureWidthHint;
-
+
private String paneConfigurationName;
private IRenderableDisplay[] displayArray;
@@ -1382,13 +1384,17 @@ public class NsharpEditor extends AbstractEditor implements
DISPLAY_SPC_GRAPHS = -1;
} else if (paneConfigurationName // d2dlite start
.equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)) {
- if (rscHandler != null
- && rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
- DISPLAY_HODO = 0;
+ //5930
+ NsharpPaletteWindow win = NsharpPaletteWindow.getInstance();
+ if (win != null &&
+ win.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
+ //#5930if (rscHandler != null
+ // && rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
+ DISPLAY_HODO = 0 ;
DISPLAY_TIMESTN = DISPLAY_HODO + 1;
DISPLAY_SKEWT = -1;
} else {
- DISPLAY_SKEWT = 0;
+ DISPLAY_SKEWT = 0;
DISPLAY_TIMESTN = DISPLAY_SKEWT + 1;
DISPLAY_HODO = -1;
}
@@ -1459,8 +1465,12 @@ public class NsharpEditor extends AbstractEditor implements
// d2dlite start
} else if (paneConfigurationName
.equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)) {
- if (rscHandler != null
- && rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
+ //5930
+ NsharpPaletteWindow win = NsharpPaletteWindow.getInstance();
+ if (win != null &&
+ win.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
+ //#5930 if (rscHandler != null
+ //&& rscHandler.getCurrentGraphMode() == NsharpConstants.GRAPH_HODO) {
displayArray[DISPLAY_HODO] = new NsharpHodoPaneDisplay(
new PixelExtent(NsharpConstants.HODO_DISPLAY_REC),
DISPLAY_HODO);
@@ -1610,9 +1620,11 @@ public class NsharpEditor extends AbstractEditor implements
nsharpComp = new Composite[DISPLAY_TOTAL];
displayPane = new VizDisplayPane[DISPLAY_TOTAL];
- EditorInput edInput = new EditorInput(new NCLoopProperties(),
+ //EditorInput edInput = new EditorInput(new NsharpLoopProperties(),
+ // displayArray);
+ //CHIN task#5930 use same loop properties
+ EditorInput edInput = new EditorInput(this.editorInput.getLoopProperties(),
displayArray);
-
this.setInput(edInput);
this.displaysToLoad = displayArray;
for (IRenderableDisplay display : displayArray) {
@@ -2130,4 +2142,10 @@ public class NsharpEditor extends AbstractEditor implements
// +
// pane.toString()+" newRenderableDisplay="+newRenderableDisplay.toString());
}
+
+ public String getPaneConfigurationName() {
+ return paneConfigurationName;
+ }
+
+
}
\ No newline at end of file
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpHodoPaneDescriptor.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpHodoPaneDescriptor.java
index b52bf3cb3d..d6ac487932 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpHodoPaneDescriptor.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpHodoPaneDescriptor.java
@@ -11,6 +11,8 @@
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 05/02/2012 229 Chin Chen Initial coding for multiple display panes implementation
+ * 01/13/2015 DR#17008,
+ * task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
*
*
*
@@ -19,7 +21,9 @@
*/
package gov.noaa.nws.ncep.ui.nsharp.display;
+import gov.noaa.nws.ncep.ui.nsharp.NsharpConstants;
import gov.noaa.nws.ncep.ui.nsharp.display.rsc.NsharpHodoPaneResource;
+import gov.noaa.nws.ncep.viz.common.ui.NmapCommon;
import java.util.List;
@@ -28,19 +32,36 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import com.raytheon.uf.viz.core.PixelExtent;
+import com.raytheon.uf.viz.core.drawables.IFrameCoordinator;
+import com.raytheon.uf.viz.d2d.core.time.D2DTimeMatcher;
+import com.raytheon.viz.ui.perspectives.VizPerspectiveListener;
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "nsharpHodoPaneDescriptor")
public class NsharpHodoPaneDescriptor extends NsharpAbstractPaneDescriptor {
public NsharpHodoPaneDescriptor(PixelExtent pe) {
super(pe);
- //System.out.println("NsharpHodoPaneDescriptor created " + this.toString());
+ if((NsharpEditor.getActiveNsharpEditor() != null) && (NsharpEditor.getActiveNsharpEditor().getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
+ {
+ setTimeMatcher(new D2DTimeMatcher());
+ setFrameCoordinator();
+ }
}
public NsharpHodoPaneDescriptor(PixelExtent pe, int paneNumber) {
super(pe, paneNumber);
+ if((NsharpEditor.getActiveNsharpEditor() != null) && (NsharpEditor.getActiveNsharpEditor().getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
+ {
+ setTimeMatcher(new D2DTimeMatcher());
+ setFrameCoordinator();
+ }
}
public NsharpHodoPaneDescriptor() {
super();
+ if((NsharpEditor.getActiveNsharpEditor() != null) && (NsharpEditor.getActiveNsharpEditor().getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
+ {
+ setTimeMatcher(new D2DTimeMatcher());
+ setFrameCoordinator();
+ }
}
public NsharpHodoPaneResource getHodoResource() {
List list = resourceList
@@ -50,5 +71,35 @@ public class NsharpHodoPaneDescriptor extends NsharpAbstractPaneDescriptor {
}
return null;
}
+ @SuppressWarnings("deprecation")
+ @Override
+ /*
+ * Chin Note: this function handles time line stepping from NC Perspective tool bar left/right/first/last arrow Buttons.
+ */
+ public void changeFrame(FrameChangeOperation operation, FrameChangeMode mode) {
+ synchronized (this) {
+ //Chin Note: there are multiple (6) panes.
+ //We only need to step one timeline. Therefore, we handle stepping by skewt pane.
+ //However, for D2D LITE display configuration, when switched to HODO pane, skewT pane is no longer
+ //in charge. therefore, we have to handle this special case here by HODO pane.
+
+ if((rscHandler == null) ||(!rscHandler.getPaneConfigurationName().equals(NsharpConstants.PANE_LITE_D2D_CFG_STR)))
+ return;
+
+ if( VizPerspectiveListener.getCurrentPerspectiveManager()!= null){
+ //System.out.println("changeFrame: current perspective ="+VizPerspectiveListener.getCurrentPerspectiveManager().getPerspectiveId());
+ if(!VizPerspectiveListener.getCurrentPerspectiveManager().getPerspectiveId().equals(NmapCommon.NatlCntrsPerspectiveID)){
+ if(mode != FrameChangeMode.TIME_ONLY)
+ return;
+ }
+ }
+
+ // we will have to do conversion here
+ IFrameCoordinator.FrameChangeOperation dop = IFrameCoordinator.FrameChangeOperation.valueOf(operation.name());
+ IFrameCoordinator.FrameChangeMode dmode = IFrameCoordinator.FrameChangeMode.valueOf(mode.name());
+ rscHandler.setSteppingTimeLine(dop, dmode);
+
+ }
+ }
}
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpSkewTPaneDescriptor.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpSkewTPaneDescriptor.java
index 8bf47918b0..8bf1a70bca 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpSkewTPaneDescriptor.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/NsharpSkewTPaneDescriptor.java
@@ -11,6 +11,10 @@
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 05/02/2012 229 Chin Chen Initial coding for multiple display panes implementation
+ * 01/13/2015 DR#17008,
+ * task#5930 Chin Chen NSHARP Hodograph Does Not Loop in D2D Lite Configuration
+ * moved "setFrameCoordinator()" to NsharpAbstractPaneDescriptor,
+ * so it can be used by other descriptor
*
*
*
@@ -29,8 +33,6 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import com.raytheon.uf.viz.core.PixelExtent;
-import com.raytheon.uf.viz.core.datastructure.LoopProperties;
-import com.raytheon.uf.viz.core.drawables.FrameCoordinator;
import com.raytheon.uf.viz.core.drawables.IFrameCoordinator;
import com.raytheon.uf.viz.d2d.core.time.D2DTimeMatcher;
import com.raytheon.viz.ui.perspectives.VizPerspectiveListener;
@@ -54,69 +56,7 @@ public class NsharpSkewTPaneDescriptor extends NsharpAbstractPaneDescriptor {
setTimeMatcher(new D2DTimeMatcher());
setFrameCoordinator();
}
-
- private void setFrameCoordinator() {
- frameCoordinator = new FrameCoordinator(this) {
- @Override
- /*
- * Chin Note: this function handles keyboard up/down/left/right arrow keys for station and time line stepping.
- */
- public void changeFrame(
- IFrameCoordinator.FrameChangeOperation operation,
- IFrameCoordinator.FrameChangeMode mode) {
- //NsharpEditor editor = NsharpEditor.getActiveNsharpEditor() ;
- //if(editor== null || editor.getRscHandler()==null)
- // return;
- if(rscHandler == null)
- return;
- //System.out.println("NsharpSkewTPaneDescriptor changeFrame(operation) called op="+operation+" mode"+mode);
- if(mode == IFrameCoordinator.FrameChangeMode.SPACE_ONLY){
- //up/down arrow keys for stepping stations
- //editor.getRscHandler().setSteppingStnIdList(operation);
- rscHandler.setSteppingStnIdList(operation);
- } else if(mode == IFrameCoordinator.FrameChangeMode.TIME_ONLY || mode == IFrameCoordinator.FrameChangeMode.TIME_AND_SPACE){
- //left/right arrow keys for stepping time lines
- //editor.getRscHandler().setSteppingTimeLine(operation, mode);
- rscHandler.setSteppingTimeLine(operation, mode);
- }
- }
- /*
- * (non-Javadoc)
- * @see com.raytheon.uf.viz.core.drawables.FrameCoordinator#changeFrame(com.raytheon.uf.viz.core.datastructure.LoopProperties)
- * This function handling nsharp looping.
- * Chin: 12.8.1: let skewtPaneDescriptor handle looping. All other pane descriptor will do nothing. Otherwise, we will looping X times faster when we
- * have X number of panes configured and each pane move frame once.
- *
- */
- @Override
- public void changeFrame(LoopProperties loopProperties) {
- if(rscHandler == null)
- return;
- long waitTime = Long.MAX_VALUE;
- //System.out.println("NsharpSkewTPaneDescriptor changeFrame(loop) called, loopDirection= "+loopDirection + " fwd="+loopProperties.getFwdFrameTime()+
- // " back="+loopProperties.getRevFrameTime() + " 1st dt="+loopProperties.getFirstFrameDwell()+ " lasDt="+loopProperties.getLastFrameDwell());
- if(loopProperties.getMode() == LoopProperties.LoopMode.Forward || loopProperties.getMode() == LoopProperties.LoopMode.Cycle)
- waitTime = loopProperties.getFwdFrameTime();
- else
- waitTime = loopProperties.getRevFrameTime();
- int frameSize= rscHandler.getTimeElementListSize();
- int curFrameIndex = rscHandler.getCurrentTimeElementListIndex();
- if(curFrameIndex == 0)
- waitTime = loopProperties.getFirstFrameDwell();
- else if(curFrameIndex == frameSize-1)
- waitTime = loopProperties.getLastFrameDwell();
-
- loopProperties.drawAfterWait(waitTime);
-
- if (loopProperties.isShouldDraw()) {
- rscHandler.setLoopingDataTimeLine(loopProperties);
-
- }
- }
-
- };
- }
- public NsharpSkewTPaneResource getSkewtResource() {
+ public NsharpSkewTPaneResource getSkewtResource() {
List list = resourceList
.getResourcesByTypeAsType(NsharpSkewTPaneResource.class);
if (list != null && !list.isEmpty()) {
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpDataPaneResource.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpDataPaneResource.java
index 1ea1597a9e..50f81bcafe 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpDataPaneResource.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpDataPaneResource.java
@@ -13,6 +13,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* 04/23/2012 229 Chin Chen Initial coding
* 04/23/2014 Chin Chen Add d2d lite page
* 08/11/2014 Chin Chen fix typo
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
*
@@ -60,7 +63,8 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// number of this page. index 0
// point to a dummy.
- private static final String NO_DATA = "NO VALID DATA AVAILABLE";
+ private static final String NO_DATA = "NO VALID DATA AVAILABLE FOR THIS PAGE";
+ private static final String INSUFFICIENT_DATA = "INSUFFICIENT DATA FOR PARAMETERS COMPUTATION";
// private double charHeight = NsharpConstants.CHAR_HEIGHT_;
private double curY;
@@ -160,7 +164,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
handleResize();
}
- if ((soundingLys != null) && (soundingLys.size() >= 4)) {
+ if ((soundingLys != null) && (rscHandler.isGoodData())) {//#5929
this.defaultFont.setSmoothing(false);
this.defaultFont.setScaleFont(false);
// write to panels
@@ -187,6 +191,9 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
}
}
}
+ else { //#5929
+ drawInsuffDataMessage(target, panelRectArray[0]);
+ }
}
@Override
@@ -239,6 +246,28 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
super.resetData(soundingLys, prevsoundingLys);
currentParcel = NsharpNativeConstants.PARCELTYPE_MOST_UNSTABLE;
}
+
+ @SuppressWarnings("deprecation") //#5929
+ private void drawInsuffDataMessage(IGraphicsTarget target, Rectangle rect)
+ throws VizException {
+ IFont myfont;
+ if (paneConfigurationName.equals(NsharpConstants.PANE_LITE_D2D_CFG_STR))
+ myfont = font9;
+ else
+ myfont = font20;
+
+ defineCharHeight(myfont);
+ myfont.setSmoothing(false);
+ myfont.setScaleFont(false);
+ sumP1Visible = true;
+ extent = new PixelExtent(rect);
+ target.setupClippingPlane(extent);
+ target.drawString(myfont, INSUFFICIENT_DATA, rect.x,
+ rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
+ HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
+ return;
+
+ }
private void drawPanel(IGraphicsTarget target, int pageOrderNumber,
int dsiplayPanelNumber) throws VizException {
@@ -344,7 +373,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// if we can not Interpolates a temp with 700 mb pressure, then we dont
// have enough raw data
if ((nsharpNative.nsharpLib.qc(nsharpNative.nsharpLib.itemp(700.0F)) == 0)) {
- target.drawString(myfont, " " + NO_DATA, rect.x,
+ target.drawString(myfont, NO_DATA, rect.x,
rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
return;
@@ -1053,7 +1082,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// if we can not Interpolates a temp with 700 mb pressure, then we dont
// have enough raw data
if (nsharpNative.nsharpLib.qc(nsharpNative.nsharpLib.itemp(700.0F)) == 0) {
- target.drawString(myfont, " " + NO_DATA, rect.x,
+ target.drawString(myfont,NO_DATA, rect.x,
rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
return;
@@ -3749,7 +3778,7 @@ public class NsharpDataPaneResource extends NsharpAbstractPaneResource {
// if we can not Interpolates a temp with 700 mb pressure, then we dont
// have enough raw data
if ((nsharpNative.nsharpLib.qc(nsharpNative.nsharpLib.itemp(700.0F)) == 0)) {
- target.drawString(myfont, " " + NO_DATA, rect.x,
+ target.drawString(myfont, NO_DATA, rect.x,
rect.y, 0.0, TextStyle.NORMAL, NsharpConstants.color_cyan,
HorizontalAlignment.LEFT, VerticalAlignment.TOP, null);
return;
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpHodoPaneResource.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpHodoPaneResource.java
index 3a32bf087d..460b89a7c6 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpHodoPaneResource.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpHodoPaneResource.java
@@ -10,6 +10,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
*
@@ -127,7 +130,7 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
hodoWindRscShapeList.add(shNcolor);
}
-
+ float surfaceLevel = soundingLays.get(0).getGeoHeight(); //#5929
for (NcSoundingLayer layer : soundingLays){
if(layer.getPressure() < 100 || layer.getWindSpeed() <0)
continue;
@@ -138,15 +141,15 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
double [][] lines = {{world.mapX(c0.x), world.mapY(c0.y)},{world
.mapX(c1.x), world.mapY(c1.y)}};
if(incolor == null){
- if(layer.getGeoHeight() = 4))
+ if((soundingLys != null) && (soundingLys.size()> 2) )
{
this.font10.setSmoothing(false);
this.font10.setScaleFont(false);
@@ -602,13 +606,11 @@ public class NsharpHodoPaneResource extends NsharpAbstractPaneResource{
}
target.clearClippingPlane();
if(cursorInHodo){
-
+
drawHodoDynamicData(target, currentZoomLevel);
}
-
-
}
-
+
}
@Override
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpInsetPaneResource.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpInsetPaneResource.java
index 94d4c5a028..5b48dacb7e 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpInsetPaneResource.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpInsetPaneResource.java
@@ -10,6 +10,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
*
@@ -181,7 +184,7 @@ public class NsharpInsetPaneResource extends NsharpAbstractPaneResource{
//Chin, since we only display 4 insets and their backgrounds have same size, only draws 4 backgrounds.
//psblWatchTypeBackground.paint(target, paintProps);
//thetaEPresureBackground.paint(target, paintProps);
- if((soundingLys != null) && (soundingLys.size()>= 4))
+ if((soundingLys != null) && rscHandler.isGoodData()) //#5929)
{
this.font10.setSmoothing(false);
this.font10.setScaleFont(false);
@@ -294,7 +297,7 @@ public class NsharpInsetPaneResource extends NsharpAbstractPaneResource{
return;
//System.out.println("createRscWireFrameShapes called");
disposeInsetWireFrameShapes();
- if(soundingLys != null){
+ if(soundingLys != null && rscHandler.isGoodData()){ //#5929
WGraphics WGc= thetaEPresureBackground.getWorld();
createRscThetaEPressureShape(WGc);
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpResourceHandler.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpResourceHandler.java
index a8cf1e5a6f..b100409d46 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpResourceHandler.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpResourceHandler.java
@@ -15,6 +15,9 @@
* 02/03/2014 1106 Chin Chen Need to be able to use clicking on the Src,Time, or StnId to select display
* 08/12/2014 Chin Chen fixed issue that "load archive file with wrong time line displayed"
* 12/04/2014 DR16888 Chin Chen fixed issue that "Comp(Src) button not functioning properly in NSHARP display"
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
* @author Chin Chen
@@ -161,6 +164,8 @@ public class NsharpResourceHandler {
private int[] pageDisplayOrderNumberArray = new int[NsharpConstants.PAGE_MAX_NUMBER + 1];
+ //#5929
+ private boolean goodData=false;
// index is the real page defined in NsharpConstants to be shown, value is
// the order number of this page.
// index 0 point to a dummy.
@@ -188,7 +193,7 @@ public class NsharpResourceHandler {
private int currentSoundingLayerIndex = 0;
private int hodoEditingSoundingLayerIndex = 0;
-
+
private boolean plotInteractiveTemp = false;
private Coordinate interactiveTempPointCoordinate;
@@ -981,6 +986,7 @@ public class NsharpResourceHandler {
if (skewtPaneRsc != null)
skewtPaneRsc
.setCurrentSkewTEditMode(NsharpConstants.SKEWT_EDIT_MODE_EDITPOINT);
+ elem.setGoodData(checkDataIntegrity(soundingLys));//#5929
resetData();
}
@@ -993,7 +999,12 @@ public class NsharpResourceHandler {
// update active sounding layer and picked stn info
// re-populate snd data to nsharp native code lib for later calculating
- nsharpNative.populateSndgData(soundingLys);
+ //#5929 dont populate sounding data if data is bad
+
+ if(getCurSoundingElementStateProperty()!=null)
+ goodData= getCurSoundingElementStateProperty().isGoodData();
+ if(goodData)
+ nsharpNative.populateSndgData(soundingLys);
if (skewtPaneRsc != null)
skewtPaneRsc.resetData(soundingLys, previousSoundingLys);
@@ -1013,7 +1024,7 @@ public class NsharpResourceHandler {
// if soundingLys is null, then we stop here, after reset data.
if (soundingLys == null)
return;
- if (soundingLys.size() > 0) {
+ if (soundingLys.size() > 0 && (goodData)) {
// set initial hodohouseC
// ----- set hodo circle at Bunkers Right, Chin according to TTR6065
@@ -1044,11 +1055,7 @@ public class NsharpResourceHandler {
* that really meant to reset parcel type.
*/
}
- // Chin: TBD remove handle resize here to fix sizing issue when swapped
- // nsharp from side pane back to main pane
- // but, may cause other problem?
- // if(skewtPaneRsc!=null)
- // skewtPaneRsc.handleResize();
+
if (skewtPaneRsc != null)
skewtPaneRsc.createRscWireFrameShapes();
if (hodoPaneRsc != null)
@@ -1057,7 +1064,7 @@ public class NsharpResourceHandler {
insetPaneRsc.createInsetWireFrameShapes();
if (witoPaneRsc != null)
witoPaneRsc.createAllWireFrameShapes();
- if (spcGraphsPaneRsc != null) {
+ if (spcGraphsPaneRsc != null && (goodData) ){//#5929
// Chin: SPC graphs performance concern, as it need to call get
// info functions from bigSharo.so and cause long delay.
// Therefore, do it once only when reset data.
@@ -1177,7 +1184,7 @@ public class NsharpResourceHandler {
private void addElementToTableAndLists(String stnId_timeLine_sndType,
String stnId, String tmLine, String sndType,
- NsharpStationInfo stnInfo, List sndLyLst) {
+ NsharpStationInfo stnInfo, List sndLyLst, boolean goodData) {
// System.out.println("stn to be added "+ stnId + " timeline "+tmLine);
NsharpSoundingElementStateProperty newSndPropElem = null;
int tmIndex = getIndexFromElementList(tmLine, timeElementList);
@@ -1197,7 +1204,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData); //#5929
stnTimeSndTable.get(stnIndex).get(tmIndex)
.set(sndTpyeIndex, newSndPropElem);
}
@@ -1214,7 +1221,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@@ -1231,7 +1238,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@@ -1253,7 +1260,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@@ -1274,7 +1281,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@@ -1296,7 +1303,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@@ -1321,7 +1328,7 @@ public class NsharpResourceHandler {
// NsharpSoundingElementStateProperty object
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData);
stnTimeSndTable.get(currentStnElementListIndex)
.get(currentTimeElementListIndex)
.set(currentSndElementListIndex, newSndPropElem);
@@ -1357,7 +1364,7 @@ public class NsharpResourceHandler {
// one new loaded sounding data
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId,
- tmLine, stnInfo, sndLyLst);
+ tmLine, stnInfo, sndLyLst,goodData);
sndlistForTm.add(newSndPropElem);
} else {
@@ -1405,7 +1412,7 @@ public class NsharpResourceHandler {
newSndPropElem = new NsharpSoundingElementStateProperty(
stnId_timeLine_sndType, stnId, tmLine, stnInfo,
- sndLyLst);
+ sndLyLst,goodData);
newList.add(newSndPropElem);
newListList.add(newList);
stnTimeSndTable.add(newListList);
@@ -1862,6 +1869,21 @@ public class NsharpResourceHandler {
*
* }
*/
+ //task#5929
+ private boolean checkDataIntegrity(List sndLayers){
+ boolean gooddata = false;
+ int numberOfTemp=0;
+ int numberOfGoodDewPt=0;
+ for(NcSoundingLayer layer: sndLayers){
+ if(layer.getTemperature() > -999)
+ numberOfTemp++;
+ if(layer.getDewpoint() > -999)
+ numberOfGoodDewPt++;
+ }
+ if(numberOfGoodDewPt >= 2 && numberOfTemp>=2)
+ gooddata=true;
+ return gooddata;
+ }
// This api peforms real load data function
private void addRsc(boolean displayNewData,
@@ -1875,8 +1897,8 @@ public class NsharpResourceHandler {
// // newkey=
// String newkey =key.replace("NCUAIR", "gpduair"); // String newkey =
// String newkey= key.replace("NAMS", "SSS");
- //String newkey = key.replace("130925/00(Wed)V000", "130925/00(Thu)V000");
-// soundMap.put(newkey, sndLy);
+// String newkey = key.replace("130925/17(Wed)V017", "131001/00(Thu)V000");
+ // soundMap.put(newkey, sndLy);
// }
// // stnInfo.setSndType(stnInfo.getSndType().replace("NCUAIR", //
// // "gpduair")); // stnInfo.setSndType(stnInfo.getSndType().replace(
@@ -1931,9 +1953,15 @@ public class NsharpResourceHandler {
// based on this KEY string format "KGRI 100616/03(Wed)Vxxx GFSSND"
String stnId, sndType, timeLine, timeLine_sndType, stnId_timeLine_sndType;
List sndLyLst;
+
try {
stnId_timeLine_sndType = tempTimeLineArr[i].toString();
+ if(stnId_timeLine_sndType.equals("N/A"))
+ {
+ continue;
+ }
sndLyLst = soundMap.get(stnId_timeLine_sndType);
+
stnId = stnId_timeLine_sndType.substring(0,
stnId_timeLine_sndType.indexOf(" "));
timeLine_sndType = stnId_timeLine_sndType
@@ -2022,8 +2050,10 @@ public class NsharpResourceHandler {
// No more needed? timeLine = timeLine.replace(" ", "-"); //fixed
// DR15325 - sorting time line issue in D2D
// add time line to stnTimeTable and set its index
+ //task#5929
+ boolean goodData = checkDataIntegrity( sndLyLst);
addElementToTableAndLists(stnId_timeLine_sndType, stnId, timeLine,
- sndType, stnInfo, sndLyLst);
+ sndType, stnInfo, sndLyLst, goodData);
}
if (displayNewData) {
// Set default parcel trace data
@@ -2627,10 +2657,7 @@ public class NsharpResourceHandler {
break;
}
- if (compareSndIsOn) {
- handleUserPickNewTimeLine(currentTimeElementListIndex) ;
- return;
- }
+
curTimeLinePage = currentTimeElementListIndex / numTimeLinePerPage
+ 1;
setCurSndProfileProp();
@@ -2767,9 +2794,6 @@ public class NsharpResourceHandler {
// we should get out of here
break;
} else if (compareSndIsOn) {
- handleUserPickNewTimeLine(targetIndex) ;
- return;
- /* Chin TBD 12112014
boolean found = false;
if (currentStnElementListIndex >= 0
&& currentSndElementListIndex >= 0
@@ -2795,7 +2819,6 @@ public class NsharpResourceHandler {
if (!found) {
currentSndElementListIndex = -1;
} else {
-
int colorIndex = NsharpConstants.LINE_COMP1;
for (NsharpOperationElement elm : sndElementList) {
if (elm.getActionState() == NsharpConstants.ActState.INACTIVE)
@@ -2811,13 +2834,11 @@ public class NsharpResourceHandler {
if (colorIndex > NsharpConstants.LINE_COMP10)
colorIndex = NsharpConstants.LINE_COMP1;
}
-
}
// no matter we find current snd type for this stn or
// not
// we should get out of here
break;
- */
} else {
break;
}
@@ -4043,7 +4064,13 @@ public class NsharpResourceHandler {
// re-populate snd data to nsharp native code lib for later calculating
Collections.sort(soundingLys,
NsharpDataHandling.reversePressureHeightWindComparator());
- nsharpNative.populateSndgData(soundingLys);
+ //#5929
+ goodData = checkDataIntegrity( soundingLys);
+ if(getCurSoundingElementStateProperty()!=null){
+ getCurSoundingElementStateProperty().setGoodData(goodData);
+ }
+ if(goodData)
+ nsharpNative.populateSndgData(soundingLys);
// get storm motion wind data after populate sounding from NsharpLib
// refresh test area if it is shown now
NsharpShowTextDialog textarea = NsharpShowTextDialog.getAccess();
@@ -4069,6 +4096,13 @@ public class NsharpResourceHandler {
}
if (dataPaneRsc != null)
dataPaneRsc.setSoundingLys(soundingLys);
+
+ if (spcGraphsPaneRsc != null && (goodData) ){//#5929
+ // Chin: SPC graphs performance concern, as it need to call get
+ // info functions from bigSharo.so and cause long delay.
+ // Therefore, do it once only when reset data.
+ spcGraphsPaneRsc.getSpcGraphsInfo();
+ }
}
public void addNewLayer(float tp, float dp, float ws, float wd,
@@ -4086,7 +4120,13 @@ public class NsharpResourceHandler {
// re-populate snd data to nsharp native code lib for later calculating
Collections.sort(soundingLys,
NsharpDataHandling.reversePressureHeightWindComparator());
- nsharpNative.populateSndgData(soundingLys);
+ //#5929
+ goodData = checkDataIntegrity( soundingLys);
+ if(getCurSoundingElementStateProperty()!=null){
+ getCurSoundingElementStateProperty().setGoodData(goodData);
+ }
+ if(goodData)
+ nsharpNative.populateSndgData(soundingLys);
// get storm motion wind data after populate sounding from NsharpLib
// refresh text area if it is shown now
NsharpShowTextDialog textarea = NsharpShowTextDialog.getAccess();
@@ -4112,6 +4152,12 @@ public class NsharpResourceHandler {
}
if (dataPaneRsc != null)
dataPaneRsc.setSoundingLys(soundingLys);
+ if (spcGraphsPaneRsc != null && (goodData) ){//#5929
+ // Chin: SPC graphs performance concern, as it need to call get
+ // info functions from bigSharo.so and cause long delay.
+ // Therefore, do it once only when reset data.
+ spcGraphsPaneRsc.getSpcGraphsInfo();
+ }
}
public void setGraphConfigProperty(NsharpGraphProperty graphConfigProperty) {
@@ -4440,4 +4486,9 @@ public class NsharpResourceHandler {
refreshPane();
return true;
}
+ //#5929
+ public boolean isGoodData() {
+ return goodData;
+ }
+
}
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSkewTPaneResource.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSkewTPaneResource.java
index 5238c421e2..b4f5606f6b 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSkewTPaneResource.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSkewTPaneResource.java
@@ -14,7 +14,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* May 08, 2013 1847 bsteffen Allow painting with no Wind Data.
* 02/03/2014 1106 Chin Chen Need to be able to use clicking on the Src,Time, or StnId to select display
* 08/04/2014 Chin Chen fixed effective level line drawing, height marker drawing
- * 12/11/2014 DR16888 Chin Chen fixed issue that "Comp(Src) button not functioning properly in NSHARP display"
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
*
@@ -1740,6 +1742,8 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
// box
}
target.drawStrings(str, latlonstr);
+ if(wwTypeColor == null)
+ wwTypeColor = NsharpConstants.color_gold;
target.drawRect(boxExt, wwTypeColor, 2f, 1f); // box border line colored
// with "Psbl Watch Type"
// color
@@ -1768,7 +1772,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
// to check a scenario that sounding data is removed while
// thread is locked
if (soundingLys == null
- || (soundingLys != null && soundingLys.size() <= 0)) {
+ || (soundingLys != null && soundingLys.size() < 2)) {
reentryLock.unlock();
return;
}
@@ -1779,7 +1783,7 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
} else if (justBackToMainPane) {
reentryLock.lock();
if (soundingLys == null
- || (soundingLys != null && soundingLys.size() <= 0)) {
+ || (soundingLys != null && soundingLys.size() < 2)) {
reentryLock.unlock();
return;
}
@@ -1828,376 +1832,384 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
this.font12.setScaleFont(false);
// nsharpNative.populateSndgData(soundingLys);
if (currentGraphMode == NsharpConstants.GRAPH_SKEWT) {
- target.setupClippingPlane(pe);
- // plot temp curve, when constructing pressureTempRscShapeList,
- // it already considered
- // comparison, overlay, etc..so, just draw it.
- for (NsharpShapeAndLineProperty shapeNLp : pressureTempRscShapeList) {
- target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
- .getLp().getLineColor(), shapeNLp.getLp()
- .getLineWidth(), shapeNLp.getLp().getLineStyle(),
- font10);// commonLinewidth*2,commonLineStyle,font10);
- }
- // plot real temp parcel trace, when constructing
- // parcelRtShapeList, it already considered
- // comparison, overlay, etc..so, just draw it.
- // color is following comparison/overlay lines' configuration.
- // line width and line style are following parcel line
- // configuration
- if (graphConfigProperty.isParcel() == true) {
- NsharpLineProperty parcelLp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL]);
- for (NsharpShapeAndLineProperty shapeNLp : parcelRtShapeList) {
- target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
- .getLp().getLineColor(), parcelLp
- .getLineWidth(), parcelLp.getLineStyle(),
- font10);// commonLinewidth*2,commonLineStyle,font10);
- }
- }
- boolean compareStnIsOn = rscHandler.isCompareStnIsOn();
- boolean compareSndIsOn = rscHandler.isCompareSndIsOn();
- boolean compareTmIsOn = rscHandler.isCompareTmIsOn();
- boolean editGraphOn = rscHandler.isEditGraphOn();
- boolean overlayIsOn = rscHandler.isOverlayIsOn();
- if (graphConfigProperty != null) {
- if (graphConfigProperty.isTemp() == true && !compareStnIsOn
- && !compareTmIsOn && !compareSndIsOn) {
- if (editGraphOn)
- plotPressureTempEditPoints(target, world,
- NsharpConstants.color_red, TEMP_TYPE,
- this.soundingLys);
- }
- // dew point curve
- if (graphConfigProperty.isDewp() == true && !compareStnIsOn
- && !compareTmIsOn && !compareSndIsOn) {
- if (editGraphOn)
- plotPressureTempEditPoints(target, world,
- NsharpConstants.color_green, DEWPOINT_TYPE,
- this.soundingLys);
- }
- // plot wet bulb trace
- if (graphConfigProperty.isWetBulb() == true
- && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
- target.drawWireframeShape(wetBulbTraceRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
- }
- // plot virtual temperature trace
- if (graphConfigProperty.isVTemp() == true
- && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
- target.drawWireframeShape(vtempTraceCurveRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
- }
- // virtual temperature parcel trace curve
- if (graphConfigProperty.isParcelTv() == true
- && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn
- && !overlayIsOn) {
- if (soundingLys.size() > 0) {
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
- target.drawWireframeShape(parcelVtTraceRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
- }
- }
- if (graphConfigProperty.isDcape() == true
- && dacpeTraceRscShape != null && !compareStnIsOn && !compareSndIsOn
- && !compareTmIsOn && !overlayIsOn) {
- if (soundingLys.size() > 0) {
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
- target.drawWireframeShape(dacpeTraceRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
+ target.setupClippingPlane(pe);
+ // plot temp curve, when constructing pressureTempRscShapeList,
+ // it already considered
+ // comparison, overlay, etc..so, just draw it.
+ for (NsharpShapeAndLineProperty shapeNLp : pressureTempRscShapeList) {
+ target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
+ .getLp().getLineColor(), shapeNLp.getLp()
+ .getLineWidth(), shapeNLp.getLp().getLineStyle(),
+ font10);// commonLinewidth*2,commonLineStyle,font10);
+ }
+ // plot real temp parcel trace, when constructing
+ // parcelRtShapeList, it already considered
+ // comparison, overlay, etc..so, just draw it.
+ // color is following comparison/overlay lines' configuration.
+ // line width and line style are following parcel line
+ // configuration
+ if (graphConfigProperty.isParcel() == true && rscHandler.isGoodData()) { //#5929
+ NsharpLineProperty parcelLp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL]);
+ for (NsharpShapeAndLineProperty shapeNLp : parcelRtShapeList) {
+ target.drawWireframeShape(shapeNLp.getShape(), shapeNLp
+ .getLp().getLineColor(), parcelLp
+ .getLineWidth(), parcelLp.getLineStyle(),
+ font10);// commonLinewidth*2,commonLineStyle,font10);
+ }
+ }
+ boolean compareStnIsOn = rscHandler.isCompareStnIsOn();
+ boolean compareSndIsOn = rscHandler.isCompareSndIsOn();
+ boolean compareTmIsOn = rscHandler.isCompareTmIsOn();
+ boolean editGraphOn = rscHandler.isEditGraphOn();
+ boolean overlayIsOn = rscHandler.isOverlayIsOn();
+ if (graphConfigProperty != null) {
+ if (graphConfigProperty.isTemp() == true && !compareStnIsOn
+ && !compareTmIsOn) {
+ if (editGraphOn)
+ plotPressureTempEditPoints(target, world,
+ NsharpConstants.color_red, TEMP_TYPE,
+ this.soundingLys);
+ }
+ // dew point curve
+ if (graphConfigProperty.isDewp() == true && !compareStnIsOn
+ && !compareTmIsOn) {
+ if (editGraphOn)
+ plotPressureTempEditPoints(target, world,
+ NsharpConstants.color_green, DEWPOINT_TYPE,
+ this.soundingLys);
+ }
+ // plot wet bulb trace
+ if (graphConfigProperty.isWetBulb() == true && rscHandler.isGoodData() //#5929
+ && !compareStnIsOn && !compareTmIsOn) {
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
+ target.drawWireframeShape(wetBulbTraceRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
+ }
+ // plot virtual temperature trace
+ if (graphConfigProperty.isVTemp() == true && rscHandler.isGoodData() //#5929
+ && !compareStnIsOn && !compareTmIsOn) {
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
+ target.drawWireframeShape(vtempTraceCurveRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
+ }
+ // virtual temperature parcel trace curve
+ if (graphConfigProperty.isParcelTv() == true && rscHandler.isGoodData() //#5929
+ && !compareStnIsOn && !compareTmIsOn
+ && !overlayIsOn) {
+ if (soundingLys.size() > 0) {
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
+ target.drawWireframeShape(parcelVtTraceRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
+ }
+ }
- }
- }
- if (graphConfigProperty.isEffLayer() == true
- && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
- // draw effective layer lines
- // drawEffectiveLayerLines(target);
- target.drawWireframeShape(effectiveLayerLineShape,
- NsharpConstants.color_cyan_md, 2,
- commonLineStyle, font10);
- }
- // cloud
- if (graphConfigProperty.isCloud() == true
- && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
- if (cloudFMShape != null)
- target.drawShadedShape(cloudFMShape, 1f);
- if (cloudFMLabelShape != null)
- target.drawWireframeShape(cloudFMLabelShape,
- NsharpConstants.color_chocolate,
- commonLinewidth * 3, commonLineStyle, font9);
- if (cloudCEShape != null)
- target.drawShadedShape(cloudCEShape, 1f);
- }
- if (graphConfigProperty.isOmega() == true
- && !compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
- if (NsharpLoadDialog.getAccess() != null
- && (NsharpLoadDialog.getAccess()
- .getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
- .getAccess()
- .getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
- // plot omega
- drawOmega();
- }
- }
- } else {
- // by default, draw everything
- if (!compareStnIsOn && !compareTmIsOn && !compareSndIsOn) {
- if (editGraphOn)
- plotPressureTempEditPoints(target, world,
- NsharpConstants.color_red, TEMP_TYPE,
- this.soundingLys);
- // dew point curve
- if (editGraphOn)
- plotPressureTempEditPoints(target, world,
- NsharpConstants.color_green, DEWPOINT_TYPE,
- this.soundingLys);
- // plot wetbulb trace
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
- target.drawWireframeShape(wetBulbTraceRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
- // plot virtual temp trace
- lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
- target.drawWireframeShape(vtempTraceCurveRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
+ if (graphConfigProperty.isDcape() == true && rscHandler.isGoodData() //#5929
+ && dacpeTraceRscShape != null && !compareStnIsOn
+ && !compareTmIsOn && !overlayIsOn) {
+ if (soundingLys.size() > 0) {
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
+ target.drawWireframeShape(dacpeTraceRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
- // virtual temperature parcel trace curve
- if (!overlayIsOn) {
- lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
- target.drawWireframeShape(parcelVtTraceRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
- if (dacpeTraceRscShape != null) {
- lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
- target.drawWireframeShape(dacpeTraceRscShape,
- lp.getLineColor(), lp.getLineWidth(),
- lp.getLineStyle(), font10);
- }
- }
- // draw effective layer lines
- // drawEffectiveLayerLines(target);
- target.drawWireframeShape(effectiveLayerLineShape,
- NsharpConstants.color_cyan_md, 2,
- commonLineStyle, font10);
- if (NsharpLoadDialog.getAccess() != null
- && (NsharpLoadDialog.getAccess()
- .getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
- .getAccess()
- .getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
- // plot omega
- drawOmega();
- }
- }
- }
- if (plotInteractiveTemp == true) {
- if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_EDITPOINT)
- plotNsharpInteractiveEditingTemp(target,
- currentZoomLevel, world,
- NsharpConstants.color_white);
- else if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_MOVELINE)
- plotNsharpMovingTempLine(target, world,
- NsharpConstants.color_white);
+ }
+ }
+ if (graphConfigProperty.isEffLayer() == true && rscHandler.isGoodData() //#5929
+ && !compareStnIsOn && !compareTmIsOn) {
+ // draw effective layer lines
+ // drawEffectiveLayerLines(target);
+ target.drawWireframeShape(effectiveLayerLineShape,
+ NsharpConstants.color_cyan_md, 2,
+ commonLineStyle, font10);
+ }
+ // cloud
+ if (graphConfigProperty.isCloud() == true && rscHandler.isGoodData() //#5929
+ && !compareStnIsOn && !compareTmIsOn) {
+ if (cloudFMShape != null)
+ target.drawShadedShape(cloudFMShape, 1f);
+ if (cloudFMLabelShape != null)
+ target.drawWireframeShape(cloudFMLabelShape,
+ NsharpConstants.color_chocolate,
+ commonLinewidth * 3, commonLineStyle, font9);
+ if (cloudCEShape != null)
+ target.drawShadedShape(cloudCEShape, 1f);
+ }
+ if (graphConfigProperty.isOmega() == true
+ && !compareStnIsOn && !compareTmIsOn) {
+ if (NsharpLoadDialog.getAccess() != null
+ && (NsharpLoadDialog.getAccess()
+ .getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
+ .getAccess()
+ .getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
+ // plot omega
+ drawOmega();
+ }
+ }
+ } else {
+ // by default, draw everything
+ if (!compareStnIsOn && !compareTmIsOn) {
+ if (editGraphOn)
+ plotPressureTempEditPoints(target, world,
+ NsharpConstants.color_red, TEMP_TYPE,
+ this.soundingLys);
+ // dew point curve
+ if (editGraphOn)
+ plotPressureTempEditPoints(target, world,
+ NsharpConstants.color_green, DEWPOINT_TYPE,
+ this.soundingLys);
+ if(rscHandler.isGoodData()) { //#5929
+ // plot wetbulb trace
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_WETBULB]);
+ target.drawWireframeShape(wetBulbTraceRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
+ // plot virtual temp trace
+ lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_VIRTUAL_TEMP]);
+ target.drawWireframeShape(vtempTraceCurveRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
- }
- target.clearClippingPlane();
+ // virtual temperature parcel trace curve
+ if (!overlayIsOn) {
+ lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_PARCEL_TV]);
+ target.drawWireframeShape(parcelVtTraceRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
+ if (dacpeTraceRscShape != null) {
+ lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_DCAPE]);
+ target.drawWireframeShape(dacpeTraceRscShape,
+ lp.getLineColor(), lp.getLineWidth(),
+ lp.getLineStyle(), font10);
+ }
+ }
+ // draw effective layer lines
+ // drawEffectiveLayerLines(target);
+ target.drawWireframeShape(effectiveLayerLineShape,
+ NsharpConstants.color_cyan_md, 2,
+ commonLineStyle, font10);
+ }
+ if (NsharpLoadDialog.getAccess() != null
+ && (NsharpLoadDialog.getAccess()
+ .getActiveLoadSoundingType() == NsharpLoadDialog.MODEL_SND || NsharpLoadDialog
+ .getAccess()
+ .getActiveLoadSoundingType() == NsharpLoadDialog.PFC_SND)) {
+ // plot omega
+ drawOmega();
+ }
+ }
+ }
+ if (plotInteractiveTemp == true) {
+ if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_EDITPOINT)
+ plotNsharpInteractiveEditingTemp(target,
+ currentZoomLevel, world,
+ NsharpConstants.color_white);
+ else if (currentSkewTEditMode == NsharpConstants.SKEWT_EDIT_MODE_MOVELINE)
+ plotNsharpMovingTempLine(target, world,
+ NsharpConstants.color_white);
+
+ }
+ target.clearClippingPlane();
+
+ // Wind Barb
+ if ((graphConfigProperty != null && graphConfigProperty
+ .isWindBarb() == true) || graphConfigProperty == null) {
+ double xPos = skewTBackground.getWindBarbXPosition();
+ if (overlayIsOn == true && this.previousSoundingLys != null) {
+ drawNsharpWindBarb(
+ target,
+ currentZoomLevel,
+ world,
+ linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY1])
+ .getLineColor(), this.soundingLys,
+ xPos, 100);
+ if (!previousSoundingLys.equals(soundingLys))
+ drawNsharpWindBarb(
+ target,
+ currentZoomLevel,
+ world,
+ linePropertyMap
+ .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY2])
+ .getLineColor(),
+ this.previousSoundingLys,
+ xPos - NsharpResourceHandler.BARB_LENGTH,
+ 100);
+ } else {
+ if (!compareStnIsOn && !compareTmIsOn
+ && !compareSndIsOn) {
+ drawNsharpWindBarb(target, currentZoomLevel, world,
+ graphConfigProperty.getWindBarbColor(),
+ this.soundingLys, xPos, 100);
+ } else {
+ int currentTimeListIndex = rscHandler
+ .getCurrentTimeElementListIndex();
+ int currentStnListIndex = rscHandler
+ .getCurrentStnElementListIndex();
+ int currentSndListIndex = rscHandler
+ .getCurrentSndElementListIndex();
+ List stnElemList = rscHandler
+ .getStnElementList();
+ List timeElemList = rscHandler
+ .getTimeElementList();
+ List sndElemList = rscHandler
+ .getSndElementList();
+ List>> stnTimeSndTable = rscHandler
+ .getStnTimeSndTable();
+ if (compareTmIsOn && currentStnListIndex >= 0
+ && currentSndListIndex >= 0) {
+ int colorIndex;
+ for (NsharpOperationElement elm : timeElemList) {
+ if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
+ && stnTimeSndTable
+ .get(currentStnListIndex)
+ .get(timeElemList
+ .indexOf(elm))
+ .get(currentSndListIndex) != null) {
+ List soundingLayeys = stnTimeSndTable
+ .get(currentStnListIndex)
+ .get(timeElemList.indexOf(elm))
+ .get(currentSndListIndex)
+ .getSndLyLst();
+ colorIndex = stnTimeSndTable
+ .get(currentStnListIndex)
+ .get(timeElemList.indexOf(elm))
+ .get(currentSndListIndex)
+ .getCompColorIndex();
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[colorIndex]);
+ drawNsharpWindBarb(target,
+ currentZoomLevel, world,
+ lp.getLineColor(),
+ soundingLayeys, xPos, 100);
+ }
+ }
+ } else if (compareStnIsOn
+ && currentTimeListIndex >= 0
+ && currentSndListIndex >= 0) {
+ int colorIndex;
+ for (NsharpOperationElement elm : stnElemList) {
+ if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
+ && stnTimeSndTable
+ .get(stnElemList
+ .indexOf(elm))
+ .get(currentTimeListIndex)
+ .get(currentSndListIndex) != null) {
+ List soundingLayeys = stnTimeSndTable
+ .get(stnElemList.indexOf(elm))
+ .get(currentTimeListIndex)
+ .get(currentSndListIndex)
+ .getSndLyLst();
+ colorIndex = stnTimeSndTable
+ .get(stnElemList.indexOf(elm))
+ .get(currentTimeListIndex)
+ .get(currentSndListIndex)
+ .getCompColorIndex();
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[colorIndex]);
+ drawNsharpWindBarb(target,
+ currentZoomLevel, world,
+ lp.getLineColor(),
+ soundingLayeys, xPos, 100);
+ }
+ }
+ } else if (compareSndIsOn
+ && currentStnListIndex >= 0
+ && currentTimeListIndex >= 0) {
+ int colorIndex;
+ // start FixMark:nearByStnCompSnd
+ List sndCompElementList = rscHandler
+ .getCompSndSelectedElemList();
+ for (NsharpResourceHandler.CompSndSelectedElem compElem : sndCompElementList) {
+ NsharpSoundingElementStateProperty elemProp = stnTimeSndTable
+ .get(compElem.getStnIndex())
+ .get(compElem.getTimeIndex())
+ .get(compElem.getSndIndex());
+ if (sndElemList.get(compElem.getSndIndex())
+ .getActionState() == NsharpConstants.ActState.ACTIVE
+ && elemProp != null) {
+ List soundingLayeys = elemProp
+ .getSndLyLst();
+ colorIndex = elemProp
+ .getCompColorIndex();
+ NsharpLineProperty lp = linePropertyMap
+ .get(NsharpConstants.lineNameArray[colorIndex]);
+ drawNsharpWindBarb(target,
+ currentZoomLevel, world,
+ lp.getLineColor(),
+ soundingLayeys, xPos, 100);
+ }
+ }
+
+ /*
+ * original code for(NsharpOperationElement elm:
+ * sndElemList) { if(elm.getActionState() ==
+ * NsharpConstants.ActState.ACTIVE &&
+ * stnTimeSndTable.get(currentStnListIndex).get(
+ * currentTimeListIndex
+ * ).get(sndElemList.indexOf(elm))!=null){
+ * List soundingLayeys =
+ * stnTimeSndTable.get(currentStnListIndex).get(
+ * currentTimeListIndex
+ * ).get(sndElemList.indexOf(
+ * elm)).getSndLyLst(); colorIndex =
+ * stnTimeSndTable.get(currentStnListIndex).get(
+ * currentTimeListIndex
+ * ).get(sndElemList.indexOf(
+ * elm)).getCompColorIndex(); NsharpLineProperty
+ * lp =
+ * linePropertyMap.get(NsharpConstants.lineNameArray
+ * [colorIndex]); drawNsharpWindBarb(target,
+ * currentZoomLevel, world, lp.getLineColor(),
+ * soundingLayeys, xPos,100); } }
+ */
+ // end start FixMark:nearByStnCompSnd
+ }
+ }
+ }
+ // System.out.println("x1 pos"+xPos+ " x2 pos="+ (xPos -
+ // NsharpResourceHandler.BARB_LENGTH));
+ }
+ if( rscHandler.isGoodData() ){ //#5929)
+ drawHeightMark(target);
+ // draw EL, LFC, LCL, FZL, -20C, -30C lines
+ // drawLclLine(target);
+ target.drawWireframeShape(lclShape,
+ NsharpConstants.color_green, 2, LineStyle.SOLID, font10);
+ target.drawWireframeShape(elShape, NsharpConstants.color_red,
+ 2, LineStyle.SOLID, font10);
+ target.drawWireframeShape(lfcShape,
+ NsharpConstants.color_yellow, 2, LineStyle.SOLID,
+ font10);
+ target.drawWireframeShape(fzlShape, NsharpConstants.color_cyan,
+ 2, LineStyle.SOLID, font10);
+
+ }
+ drawNsharpFileNameAndSampling(target, currentZoomLevel);
+ // draw cursor data
+ if (cursorInSkewT == true && rscHandler.isGoodData()) {
+ if ((curseToggledFontLevel < CURSER_STRING_OFF)
+ && (cursorTopWindBarb == false || windBarbMagnify == false))
+ drawNsharpSkewtCursorData(target);
+ }
- // Wind Barb
- if ((graphConfigProperty != null && graphConfigProperty
- .isWindBarb() == true) || graphConfigProperty == null) {
- double xPos = skewTBackground.getWindBarbXPosition();
- if (overlayIsOn == true && this.previousSoundingLys != null) {
- drawNsharpWindBarb(
- target,
- currentZoomLevel,
- world,
- linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY1])
- .getLineColor(), this.soundingLys,
- xPos, 100);
- if (!previousSoundingLys.equals(soundingLys))
- drawNsharpWindBarb(
- target,
- currentZoomLevel,
- world,
- linePropertyMap
- .get(NsharpConstants.lineNameArray[NsharpConstants.LINE_OVERLAY2])
- .getLineColor(),
- this.previousSoundingLys,
- xPos - NsharpResourceHandler.BARB_LENGTH,
- 100);
- } else {
- if (!compareStnIsOn && !compareTmIsOn
- && !compareSndIsOn) {
- drawNsharpWindBarb(target, currentZoomLevel, world,
- graphConfigProperty.getWindBarbColor(),
- this.soundingLys, xPos, 100);
- } else {
- int currentTimeListIndex = rscHandler
- .getCurrentTimeElementListIndex();
- int currentStnListIndex = rscHandler
- .getCurrentStnElementListIndex();
- int currentSndListIndex = rscHandler
- .getCurrentSndElementListIndex();
- List stnElemList = rscHandler
- .getStnElementList();
- List timeElemList = rscHandler
- .getTimeElementList();
- List sndElemList = rscHandler
- .getSndElementList();
- List>> stnTimeSndTable = rscHandler
- .getStnTimeSndTable();
- if (compareTmIsOn && currentStnListIndex >= 0
- && currentSndListIndex >= 0) {
- int colorIndex;
- for (NsharpOperationElement elm : timeElemList) {
- if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
- && stnTimeSndTable
- .get(currentStnListIndex)
- .get(timeElemList
- .indexOf(elm))
- .get(currentSndListIndex) != null) {
- List soundingLayeys = stnTimeSndTable
- .get(currentStnListIndex)
- .get(timeElemList.indexOf(elm))
- .get(currentSndListIndex)
- .getSndLyLst();
- colorIndex = stnTimeSndTable
- .get(currentStnListIndex)
- .get(timeElemList.indexOf(elm))
- .get(currentSndListIndex)
- .getCompColorIndex();
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[colorIndex]);
- drawNsharpWindBarb(target,
- currentZoomLevel, world,
- lp.getLineColor(),
- soundingLayeys, xPos, 100);
- }
- }
- } else if (compareStnIsOn
- && currentTimeListIndex >= 0
- && currentSndListIndex >= 0) {
- int colorIndex;
- for (NsharpOperationElement elm : stnElemList) {
- if (elm.getActionState() == NsharpConstants.ActState.ACTIVE
- && stnTimeSndTable
- .get(stnElemList
- .indexOf(elm))
- .get(currentTimeListIndex)
- .get(currentSndListIndex) != null) {
- List soundingLayeys = stnTimeSndTable
- .get(stnElemList.indexOf(elm))
- .get(currentTimeListIndex)
- .get(currentSndListIndex)
- .getSndLyLst();
- colorIndex = stnTimeSndTable
- .get(stnElemList.indexOf(elm))
- .get(currentTimeListIndex)
- .get(currentSndListIndex)
- .getCompColorIndex();
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[colorIndex]);
- drawNsharpWindBarb(target,
- currentZoomLevel, world,
- lp.getLineColor(),
- soundingLayeys, xPos, 100);
- }
- }
- } else if (compareSndIsOn
- && currentStnListIndex >= 0
- && currentTimeListIndex >= 0) {
- int colorIndex;
- // start FixMark:nearByStnCompSnd
- List sndCompElementList = rscHandler
- .getCompSndSelectedElemList();
- for (NsharpResourceHandler.CompSndSelectedElem compElem : sndCompElementList) {
- NsharpSoundingElementStateProperty elemProp = stnTimeSndTable
- .get(compElem.getStnIndex())
- .get(compElem.getTimeIndex())
- .get(compElem.getSndIndex());
- if (sndElemList.get(compElem.getSndIndex())
- .getActionState() == NsharpConstants.ActState.ACTIVE
- && elemProp != null) {
- List soundingLayeys = elemProp
- .getSndLyLst();
- colorIndex = elemProp
- .getCompColorIndex();
- NsharpLineProperty lp = linePropertyMap
- .get(NsharpConstants.lineNameArray[colorIndex]);
- drawNsharpWindBarb(target,
- currentZoomLevel, world,
- lp.getLineColor(),
- soundingLayeys, xPos, 100);
- }
- }
- /*
- * original code for(NsharpOperationElement elm:
- * sndElemList) { if(elm.getActionState() ==
- * NsharpConstants.ActState.ACTIVE &&
- * stnTimeSndTable.get(currentStnListIndex).get(
- * currentTimeListIndex
- * ).get(sndElemList.indexOf(elm))!=null){
- * List soundingLayeys =
- * stnTimeSndTable.get(currentStnListIndex).get(
- * currentTimeListIndex
- * ).get(sndElemList.indexOf(
- * elm)).getSndLyLst(); colorIndex =
- * stnTimeSndTable.get(currentStnListIndex).get(
- * currentTimeListIndex
- * ).get(sndElemList.indexOf(
- * elm)).getCompColorIndex(); NsharpLineProperty
- * lp =
- * linePropertyMap.get(NsharpConstants.lineNameArray
- * [colorIndex]); drawNsharpWindBarb(target,
- * currentZoomLevel, world, lp.getLineColor(),
- * soundingLayeys, xPos,100); } }
- */
- // end start FixMark:nearByStnCompSnd
- }
- }
- }
- // System.out.println("x1 pos"+xPos+ " x2 pos="+ (xPos -
- // NsharpResourceHandler.BARB_LENGTH));
- }
- drawHeightMark(target);
- // draw EL, LFC, LCL, FZL, -20C, -30C lines
- // drawLclLine(target);
- target.drawWireframeShape(lclShape,
- NsharpConstants.color_green, 2, LineStyle.SOLID, font10);
- target.drawWireframeShape(elShape, NsharpConstants.color_red,
- 2, LineStyle.SOLID, font10);
- target.drawWireframeShape(lfcShape,
- NsharpConstants.color_yellow, 2, LineStyle.SOLID,
- font10);
- target.drawWireframeShape(fzlShape, NsharpConstants.color_cyan,
- 2, LineStyle.SOLID, font10);
- drawNsharpFileNameAndSampling(target, currentZoomLevel);
- // draw cursor data
- if (cursorInSkewT == true) {
- if ((curseToggledFontLevel < CURSER_STRING_OFF)
- && (cursorTopWindBarb == false || windBarbMagnify == false))
- drawNsharpSkewtCursorData(target);
- }
}// end of currentGraphMode= NsharpConstants.GRAPH_SKEWT
- else if (currentGraphMode == NsharpConstants.GRAPH_ICING) {
+ else if (currentGraphMode == NsharpConstants.GRAPH_ICING && rscHandler.isGoodData()) {//#5929
paintIcing(currentZoomLevel, target);
- } else if (currentGraphMode == NsharpConstants.GRAPH_TURB) {
+ } else if (currentGraphMode == NsharpConstants.GRAPH_TURB && rscHandler.isGoodData()) {//#5929
paintTurbulence(currentZoomLevel, target);
}
// drawNsharpFileNameAndSampling(target, currentZoomLevel);
@@ -3506,31 +3518,37 @@ public class NsharpSkewTPaneResource extends NsharpAbstractPaneResource {
*/
public void createRscWireFrameShapes() {
- // System.out.println("createRscWireFrameShapes called");
- if (target != null) {
- disposeRscWireFrameShapes();
- if (soundingLys != null) {
- // createRscOmegaShape();
- // createRscHeightMarkShape();
- createRscwetBulbTraceShape();
- createRscPressTempCurveShapeAll(target);
- createRscVTempTraceShape();
- createRscParcelRtTraceShapesList(rscHandler.getCurrentParcel(),
- rscHandler.getCurrentParcelLayerPressure());// real temp
- // trace
- createRscParcelTraceShapes(rscHandler.getCurrentParcel(),
- rscHandler.getCurrentParcelLayerPressure()); // Virtual
- // Temp
- // Trace
- // and
- // DCAPE
- // trace
- createLCLEtcLinesShape();
- createEffectiveLayerLinesShape();
- createCloudsShape();
- updatePsblWatchColor();
- }
- }
+ // System.out.println("createRscWireFrameShapes called");
+ if (target != null) {
+ disposeRscWireFrameShapes();
+ if (soundingLys != null){
+ if( rscHandler.isGoodData()) {//#5929
+
+ // createRscOmegaShape();
+ // createRscHeightMarkShape();
+ createRscwetBulbTraceShape();
+ createRscPressTempCurveShapeAll(target);
+ createRscVTempTraceShape();
+ createRscParcelRtTraceShapesList(rscHandler.getCurrentParcel(),
+ rscHandler.getCurrentParcelLayerPressure());// real temp
+ // trace
+ createRscParcelTraceShapes(rscHandler.getCurrentParcel(),
+ rscHandler.getCurrentParcelLayerPressure()); // Virtual
+ // Temp
+ // Trace
+ // and
+ // DCAPE
+ // trace
+ createLCLEtcLinesShape();
+ createEffectiveLayerLinesShape();
+ createCloudsShape();
+ updatePsblWatchColor();
+ }
+ else {//#5929
+ createRscPressTempCurveShapeAll(target);
+ }
+ }
+ }
}
public void disposeRscWireFrameShapes() {
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSpcGraphsPaneResource.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSpcGraphsPaneResource.java
index d92226edb6..2a12ba4abb 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSpcGraphsPaneResource.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpSpcGraphsPaneResource.java
@@ -17,7 +17,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* bigsharp version 2013Jun12
* 12/03/2014 DR#16884 Chin Chen fixed issue, NSHARP crashes if user loops a product and
* then clicks WINTER/FIRE buttons in Toolbar
- *
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
* @author Chin Chen
@@ -1896,7 +1898,7 @@ public class NsharpSpcGraphsPaneResource extends NsharpAbstractPaneResource {
PaintProperties paintProps) throws VizException {
super.paintInternal(target, paintProps);
// defineCharHeight(font10);
- if (rscHandler == null || rscHandler.getSoundingLys() == null)
+ if (rscHandler == null || rscHandler.getSoundingLys() == null || !rscHandler.isGoodData())//#5929
return;
this.font10.setSmoothing(false);
this.font10.setScaleFont(false);
diff --git a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpWitoPaneResource.java b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpWitoPaneResource.java
index 30ac01fe00..c41f087f53 100644
--- a/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpWitoPaneResource.java
+++ b/ncep/gov.noaa.nws.ncep.ui.nsharp/src/gov/noaa/nws/ncep/ui/nsharp/display/rsc/NsharpWitoPaneResource.java
@@ -10,6 +10,9 @@ package gov.noaa.nws.ncep.ui.nsharp.display.rsc;
* Date Ticket# Engineer Description
* ------- ------- -------- -----------
* 04/23/2012 229 Chin Chen Initial coding
+ * 01/27/2015 DR#17006,
+ * Task#5929 Chin Chen NSHARP freezes when loading a sounding from MDCRS products
+ * in Volume Browser
*
*
*
@@ -159,11 +162,14 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
float x1 = verticalWindXOrig+ (verticalWindWidth/2);
target.drawLine(x1, verticalWindYOrig, 0, x1, verticalWindYOrig+verticalWindHeight, 0,
NsharpConstants.color_white, 1, LineStyle.DASHED);
- target.drawWireframeShape(verticalWindLabelShape, NsharpConstants.color_white,
+ if(verticalWindLabelShape!=null) //#5929
+ target.drawWireframeShape(verticalWindLabelShape, NsharpConstants.color_white,
0.3F, commonLineStyle,font10);
- target.drawWireframeShape(verticalWindRShape, NsharpConstants.color_red,
+ if(verticalWindRShape!=null)
+ target.drawWireframeShape(verticalWindRShape, NsharpConstants.color_red,
0.3F, commonLineStyle,font10);
- target.drawWireframeShape(verticalWindSbShape, NsharpConstants.color_skyblue,
+ if(verticalWindSbShape!=null)
+ target.drawWireframeShape(verticalWindSbShape, NsharpConstants.color_skyblue,
0.3F, commonLineStyle,font10);
target.clearClippingPlane();
}
@@ -304,7 +310,7 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
windBoxWindRscShapeList.add(shNcolor);
-
+ float surfaceLevel = soundingLys.get(0).getGeoHeight(); //#5929
//System.out.println("my wolrd minvY="+ myYViewMin+ " maxVY="+myYViewMax+ " YRange="+myYViewRange);
for (NcSoundingLayer layer : soundingLys) {
float pressure = layer.getPressure();
@@ -321,13 +327,14 @@ public class NsharpWitoPaneResource extends NsharpAbstractPaneResource{
//System.out.println("Wind p="+pressure+" yP="+ windBoxY+ " ratio="+yRatio);
float geoHt = layer.getGeoHeight();
double [][] lines = {{windBoxX, windBoxY},{windBoxX + (spd) * xRatio,windBoxY}};
- if(geoHt