Merge tag 'OB_14.4.1-16m' into omaha_14.4.1

14.4.1-16m


Former-commit-id: 62527097b4 [formerly b5f51e446c [formerly ed67f8932f910a858b32b503fc8009e39dac03ab]]
Former-commit-id: b5f51e446c
Former-commit-id: 651a86512c
This commit is contained in:
Steve Harris 2015-03-09 11:39:50 -05:00
commit 701501ad9e
22 changed files with 698 additions and 799 deletions

View file

@ -64,6 +64,9 @@ import com.raytheon.viz.mpe.ui.rsc.PointPrecipResourceData;
import com.raytheon.viz.mpe.ui.rsc.PointTempPlotResource;
import com.raytheon.viz.mpe.ui.rsc.PointTempResourceData;
import com.raytheon.viz.mpe.util.DailyQcUtils;
import com.raytheon.viz.mpe.util.DailyQcUtils.Pdata;
import com.raytheon.viz.mpe.util.DailyQcUtils.Tdata;
import com.raytheon.viz.mpe.util.DailyQcUtils.Zdata;
/**
* TODO Add Description
@ -121,13 +124,13 @@ public class DrawDQCStations {
int pcpn_time = 0;
// Pdata pdata[] = dqc.pdata;
Pdata pdata[] = DailyQcUtils.pdata;
int old_isom = 0;
// Tdata tdata[] = DailyQcUtils.tdata;
Tdata tdata[] = DailyQcUtils.tdata;
// Zdata zdata[] = DailyQcUtils.zdata;
Zdata zdata[] = DailyQcUtils.zdata;
public static ColorMap colorMap = new ColorMap();
@ -311,10 +314,10 @@ public class DrawDQCStations {
grids_flag = DailyQcUtils.grids_flag;
dflag = DailyQcUtils.dflag;
pcpn_time = DailyQcUtils.pcpn_time;
// pdata = DailyQcUtils.pdata;
pdata = DailyQcUtils.pdata;
old_isom = DailyQcUtils.old_isom;
// tdata = DailyQcUtils.tdata;
// zdata = DailyQcUtils.zdata;
tdata = DailyQcUtils.tdata;
zdata = DailyQcUtils.zdata;
/*
* get the token dqc_preprocessor_basetime, the default value is 12Z
@ -732,10 +735,10 @@ public class DrawDQCStations {
/* Precipitation period is always 12z-12z. */
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
ltime.setTime(pdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
ltime.setTime(pdata[pcpn_day].data_time);
}
tbuf.append("Precipitation ");
@ -785,18 +788,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
if (DailyQcUtils.pdata[pcpn_day].level == 1) {
if (pdata[pcpn_day].level == 1) {
tbuf.append(" - Level 1");
} else if (DailyQcUtils.pdata[pcpn_day].level == 2) {
} else if (pdata[pcpn_day].level == 2) {
tbuf.append(" - Level 2");
}
if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 4) {
if (pdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
} else if ((DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 3)
|| (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 2)) {
} else if ((pdata[pcpn_day].used[ptime_pos] == 3)
|| (pdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
} else if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 1) {
} else if (pdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@ -811,19 +814,19 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
/* Times: 18, 00, 06, 12 */
if (pcpn_time < 1) {
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.setTime(zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.setTime(zdata[pcpn_day].data_time);
}
} else {
/* Times 12, 18, 00, 06 */
if (pcpn_time < 2) {
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.setTime(zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.setTime(zdata[pcpn_day].data_time);
}
}
@ -883,20 +886,20 @@ public class DrawDQCStations {
}
if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 1) {
if (zdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
} else if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 2) {
} else if (zdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 6) {
if (zdata[pcpn_day].used[ptime_pos] == 6) {
tbuf.append(" Calculated");
} else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 4) {
} else if (zdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
} else if ((DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 3)
|| (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 2)) {
} else if ((zdata[pcpn_day].used[ptime_pos] == 3)
|| (zdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
} else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 1) {
} else if (zdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@ -916,18 +919,18 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
if ((pcpn_time < 1) && (pcpn_time_step == 0)) {
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.setTime(tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.setTime(tdata[pcpn_day].data_time);
}
} else {
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.setTime(tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.setTime(tdata[pcpn_day].data_time);
}
}
@ -995,18 +998,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 1) {
if (tdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
} else if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 2) {
} else if (tdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 4) {
if (tdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
} else if ((DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 3)
|| (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 2)) {
} else if ((tdata[pcpn_day].used[ptime_pos] == 3)
|| (tdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
} else if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 1) {
} else if (tdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");

View file

@ -125,14 +125,14 @@ public class OtherPrecipOptions {
public void chg_precip_time(int data) {
int i = 0;
int points_flag = dqc.points_flag;
int grids_flag = dqc.grids_flag;
int map_flag = dqc.map_flag;
int points_flag = DailyQcUtils.points_flag;
int grids_flag = DailyQcUtils.grids_flag;
int map_flag = DailyQcUtils.map_flag;
/* 24 hour or 6 hour time step */
if (MPEDisplayManager.pcpn_time_step == 0) {
time_pos = dqc.pcpn_time;
time_pos = DailyQcUtils.pcpn_time;
} else {
time_pos = 4;
}
@ -141,7 +141,7 @@ public class OtherPrecipOptions {
return;
} else if (data == 2 && MPEDisplayManager.pcpn_time_step == 1) {
MPEDisplayManager.pcpn_time_step = 0;
dqc.pcp_flag = 3;
DailyQcUtils.pcp_flag = 3;
} else if (data == 3 && MPEDisplayManager.pcpn_time_step == 1) {
return;
} else if (data == 3 && MPEDisplayManager.pcpn_time_step == 0) {
@ -149,7 +149,7 @@ public class OtherPrecipOptions {
if (dqc.curHr18_00 == 1 || dqc.curHr00_06 == 1
|| dqc.curHr06_12 == 1) {
dqc.pcp_flag = 0;
DailyQcUtils.pcp_flag = 0;
}
if (rsmode == 0) {
@ -167,38 +167,38 @@ public class OtherPrecipOptions {
if (data == 0) {
/* 6 hour precip time step mode. */
if (MPEDisplayManager.pcpn_time_step == 0) {
dqc.pcp_flag--;
DailyQcUtils.pcp_flag--;
} else {
/* 24 hour precip time step mode. */
dqc.pcp_flag = dqc.pcp_flag - 4;
DailyQcUtils.pcp_flag = DailyQcUtils.pcp_flag - 4;
}
} else if (data == 1) {
/* 6 hour precip time step mode. */
if (MPEDisplayManager.pcpn_time_step == 0) {
dqc.pcp_flag++;
DailyQcUtils.pcp_flag++;
} else {
/* 24 hour precip time step mode. */
dqc.pcp_flag = dqc.pcp_flag + 4;
DailyQcUtils.pcp_flag = DailyQcUtils.pcp_flag + 4;
}
}
if (dqc.pcp_flag < 0) {
dqc.pcp_flag = 0;
if (DailyQcUtils.pcp_flag < 0) {
DailyQcUtils.pcp_flag = 0;
}
if (dqc.pcp_flag >= (MAX_GAGEQC_DAYS * 4)) {
dqc.pcp_flag = ((MAX_GAGEQC_DAYS * 4) - 1);
if (DailyQcUtils.pcp_flag >= (MAX_GAGEQC_DAYS * 4)) {
DailyQcUtils.pcp_flag = ((MAX_GAGEQC_DAYS * 4) - 1);
}
dqc.pcpn_day = dqc.pcp_flag / 4;
DailyQcUtils.pcpn_day = DailyQcUtils.pcp_flag / 4;
dqc.pcpn_time = 3 - (dqc.pcp_flag - dqc.pcpn_day * 4);
DailyQcUtils.pcpn_time = 3 - (DailyQcUtils.pcp_flag - DailyQcUtils.pcpn_day * 4);
if (MPEDisplayManager.pcpn_time_step == 0) {
time_pos = dqc.pcp_flag;
time_pos = DailyQcUtils.pcp_flag;
} else {
time_pos = 40 + dqc.pcpn_day;
time_pos = 40 + DailyQcUtils.pcpn_day;
}
QcPrecipOptionsDialog.dataSet.clear();
@ -207,7 +207,7 @@ public class OtherPrecipOptions {
QcPrecipOptionsDialog.setDataSetCombo(QcPrecipOptionsDialog.dataSet
.toArray(a));
if (dqc.pcp_in_use[time_pos] == -1) {
if (DailyQcUtils.pcp_in_use[time_pos] == -1) {
QcPrecipOptionsDialog.dataSet.clear();
QcPrecipOptionsDialog.dataSet.add(0,
QcPrecipOptionsDialog.dataType.get(0));
@ -218,7 +218,7 @@ public class OtherPrecipOptions {
.toArray(a));
}
if (points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) {
if (points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) {
i = 0;
} else if (points_flag == 1 && grids_flag == -1 && map_flag == -1) {
i = 0;
@ -236,9 +236,9 @@ public class OtherPrecipOptions {
QcPrecipOptionsDialog.selectDataSetVal(i);
if (dqc.pdata[dqc.pcpn_day].stddev == 5.0) {
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 5.0) {
i = 0;
} else if (dqc.pdata[dqc.pcpn_day].stddev == 3.0) {
} else if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 3.0) {
i = 1;
} else {
i = 2;
@ -246,14 +246,14 @@ public class OtherPrecipOptions {
QcPrecipOptionsDialog.pntScnCbo.select(i);
if ((dqc.pcp_in_use[time_pos] == -1)
&& ((((MPEDisplayManager.pcpn_time_step == 1) && (dqc.pdata[dqc.pcpn_day].used[4] != 0))) || ((MPEDisplayManager.pcpn_time_step == 0) && (dqc.pdata[dqc.pcpn_day].used[dqc.pcpn_time] != 0)))) {
if ((DailyQcUtils.pcp_in_use[time_pos] == -1)
&& ((((MPEDisplayManager.pcpn_time_step == 1) && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] != 0))) || ((MPEDisplayManager.pcpn_time_step == 0) && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[DailyQcUtils.pcpn_time] != 0)))) {
QcPrecipOptionsDialog.renderGridsBtn.setEnabled(true);
} else {
QcPrecipOptionsDialog.renderGridsBtn.setEnabled(false);
}
time_pos = 100 + dqc.pcp_flag;
time_pos = 100 + DailyQcUtils.pcp_flag;
if (MPEDisplayManager.pcpn_time_step == 1) {
@ -263,8 +263,8 @@ public class OtherPrecipOptions {
QcPrecipOptionsDialog.pcpTypeCbo.select(1);
} else {
if ((dqc.pcp_flag != 0 && (dqc.pcp_in_use[time_pos] == 1 || dqc.pcp_in_use[time_pos - 1] == 1))
|| (dqc.pcp_flag == 0 && dqc.pcp_in_use[time_pos] != -1)) {
if ((DailyQcUtils.pcp_flag != 0 && (DailyQcUtils.pcp_in_use[time_pos] == 1 || DailyQcUtils.pcp_in_use[time_pos - 1] == 1))
|| (DailyQcUtils.pcp_flag == 0 && DailyQcUtils.pcp_in_use[time_pos] != -1)) {
for (i = 0; i < 1; i++) {
QcPrecipOptionsDialog.pcpTypeCbo.setEnabled(true);
@ -286,10 +286,10 @@ public class OtherPrecipOptions {
}
Calendar tget = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
long offset = (dqc.pcpn_day * 86400);
long offset = (DailyQcUtils.pcpn_day * 86400);
tget.setTime(dqc.btime.getTime());
tget.add(Calendar.SECOND, (int) -offset);
dqc.isom = tget.get(Calendar.MONTH);
DailyQcUtils.isom = tget.get(Calendar.MONTH);
/*
* Set the sensitivity of the precipitation time step arrows based on
@ -301,8 +301,8 @@ public class OtherPrecipOptions {
public void set_precip_arrow_sensitivity() {
int num_qc_days = dqc.qcDays;
int pcp_flag = dqc.pcp_flag;
int num_qc_days = DailyQcUtils.qcDays;
int pcp_flag = DailyQcUtils.pcp_flag;
Button up_arrow = QcPrecipOptionsDialog.upTimeBtn;
Button down_arrow = QcPrecipOptionsDialog.dnTimeBtn;
@ -352,8 +352,8 @@ public class OtherPrecipOptions {
}
Calendar currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Calendar tmpDate = (Calendar) currentTime.clone();
tmpDate.setTime(dqc.pdata[dqc.pcpn_day].data_time);
tmpDate.add(Calendar.HOUR_OF_DAY, (dqc.pcpn_time-3)*6);
tmpDate.setTime(DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time);
tmpDate.add(Calendar.HOUR_OF_DAY, (DailyQcUtils.pcpn_time-3)*6);
if (currentTime.before(tmpDate)){
up_arrow.setEnabled(false);
@ -390,36 +390,36 @@ public class OtherPrecipOptions {
public void display_pcpn_options(int data) {
/* Initialize the display flags. */
dqc.points_flag = -1;
dqc.grids_flag = -1;
dqc.map_flag = -1;
dqc.contour_flag = -1;
DailyQcUtils.points_flag = -1;
DailyQcUtils.grids_flag = -1;
DailyQcUtils.map_flag = -1;
DailyQcUtils.contour_flag = -1;
if (data == 0) {
dqc.points_flag = 1;
DailyQcUtils.points_flag = 1;
}
else if (data == 1) {
dqc.grids_flag = 1;
DailyQcUtils.grids_flag = 1;
} else if (data == 2) {
dqc.map_flag = 1;
DailyQcUtils.map_flag = 1;
} else if (data == 3) {
dqc.points_flag = 1;
dqc.grids_flag = 1;
DailyQcUtils.points_flag = 1;
DailyQcUtils.grids_flag = 1;
} else if (data == 4) {
dqc.points_flag = 1;
dqc.map_flag = 1;
DailyQcUtils.points_flag = 1;
DailyQcUtils.map_flag = 1;
} else if (data == 5) {
dqc.points_flag = -1;
dqc.contour_flag = 1;
DailyQcUtils.points_flag = -1;
DailyQcUtils.contour_flag = 1;
} else if (data == 6) {
dqc.points_flag = 1;
dqc.contour_flag = 1;
DailyQcUtils.points_flag = 1;
DailyQcUtils.contour_flag = 1;
} else if (data == 7) {
dqc.contour_flag = -1;
dqc.points_flag = -1;
dqc.grids_flag = -1;
dqc.map_flag = -1;
DailyQcUtils.contour_flag = -1;
DailyQcUtils.points_flag = -1;
DailyQcUtils.grids_flag = -1;
DailyQcUtils.map_flag = -1;
}
send_expose();
}
@ -442,7 +442,7 @@ public class OtherPrecipOptions {
// Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
Calendar tmtime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// ReadPrecipStationList rp = new ReadPrecipStationList();
int num_stations = dqc.precip_stations.size();
int num_stations = DailyQcUtils.precip_stations.size();
String s = appsDefaults.getToken(dqc_ending_6hour_obstime_tok);
int dqc_ending_6hour_obstime = ((!(null == s)) ? Integer.parseInt(s)
: -1);
@ -463,34 +463,34 @@ public class OtherPrecipOptions {
else if (clientdata == 0) {
BadValues bv = new BadValues();
bv.update_bad_values(dqc.pcpn_day);
bv.update_bad_values(DailyQcUtils.pcpn_day);
/*
* do not estimate daily and partial point precipitation from each
* other if run DQC on partial time frame and pcpn_day=0
*/
if (dqc.pcpn_day == 0
if (DailyQcUtils.pcpn_day == 0
&& (dqc.curHr00_06 == 1
|| dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1)) {
// don't estimate
} else {
EstDailyStations ed = new EstDailyStations();
ed.estimate_daily_stations(dqc.pcpn_day,
dqc.precip_stations, num_stations);
ed.estimate_daily_stations(DailyQcUtils.pcpn_day,
DailyQcUtils.precip_stations, num_stations);
EstPartStations ep = new EstPartStations();
ep.estimate_partial_stations(dqc.pcpn_day,
dqc.precip_stations, num_stations);
ep.estimate_partial_stations(DailyQcUtils.pcpn_day,
DailyQcUtils.precip_stations, num_stations);
}
QCStations qs = new QCStations();
qs.quality_control_stations(dqc.pcpn_day,
dqc.precip_stations, num_stations);
qs.quality_control_stations(DailyQcUtils.pcpn_day,
DailyQcUtils.precip_stations, num_stations);
CheckConsistency cc = new CheckConsistency();
cc.check_consistency(dqc.pcpn_day,
dqc.precip_stations, num_stations);
cc.check_consistency(DailyQcUtils.pcpn_day,
DailyQcUtils.precip_stations, num_stations);
/* render Grids and MAP for 24 hr precipitation */
@ -499,19 +499,19 @@ public class OtherPrecipOptions {
* curHr06_12, for precipitation, do not display the 24 hr
* precipiation if the pcpn_day=0
*/
if ((dqc.pcpn_day == 0)
if ((DailyQcUtils.pcpn_day == 0)
&& (dqc.curHr18_00 == 1
|| dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1)) {
dqc.pdata[dqc.pcpn_day].used[4] = 0;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] = 0;
}
if (dqc.pdata[dqc.pcpn_day].used[4] != 0) {
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] != 0) {
rpc.render_pcp(dqc.pcpn_day, dqc.pcpn_time,
1, num_stations, dqc.precip_stations,
dqc.getHrap_grid(), dqc.pdata, dqc.pcp_in_use);
rpc.render_pcp(DailyQcUtils.pcpn_day, DailyQcUtils.pcpn_time,
1, num_stations, DailyQcUtils.precip_stations,
DailyQcUtils.getHrap_grid(), DailyQcUtils.pdata, DailyQcUtils.pcp_in_use);
old_time = dqc.pdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
dbuf = String.format("%s%s_%04d%02d%02d",
@ -535,7 +535,7 @@ public class OtherPrecipOptions {
// write_dqc_netcdf_grids(dbuf, pdata[pcpn_day].data_time,
// &begin_time, 1);
// }
cm.create_map(40 + dqc.pcpn_day);
cm.create_map(40 + DailyQcUtils.pcpn_day);
}
/* render Grids and MAP for four 6hr precipitation */
@ -544,35 +544,35 @@ public class OtherPrecipOptions {
* 18-00, m=2 represents time frame 00-06Z
*/
if (dqc.pcpn_day == 0 && dqc.curHr18_00 == 1) {
dqc.pdata[dqc.pcpn_day].used[1] = 0;
dqc.pdata[dqc.pcpn_day].used[2] = 0;
dqc.pdata[dqc.pcpn_day].used[3] = 0;
} else if (dqc.pcpn_day == 0
if (DailyQcUtils.pcpn_day == 0 && dqc.curHr18_00 == 1) {
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[1] = 0;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[2] = 0;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[3] = 0;
} else if (DailyQcUtils.pcpn_day == 0
&& dqc.curHr00_06 == 1) {
dqc.pdata[dqc.pcpn_day].used[2] = 0;
dqc.pdata[dqc.pcpn_day].used[3] = 0;
} else if (dqc.pcpn_day == 0
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[2] = 0;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[3] = 0;
} else if (DailyQcUtils.pcpn_day == 0
&& dqc.curHr06_12 == 1) {
dqc.pdata[dqc.pcpn_day].used[3] = 0;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[3] = 0;
}
for (int m = 0; m < 4; m++) {
if (dqc.pdata[dqc.pcpn_day].used[m] == 0) {
if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[m] == 0) {
continue;
}
rpc.render_pcp(dqc.pcpn_day, m, 0, num_stations,
dqc.precip_stations, dqc.getHrap_grid(),
dqc.pdata, dqc.pcp_in_use);
rpc.render_pcp(DailyQcUtils.pcpn_day, m, 0, num_stations,
DailyQcUtils.precip_stations, DailyQcUtils.getHrap_grid(),
DailyQcUtils.pdata, DailyQcUtils.pcp_in_use);
if (m < 2) {
old_time = dqc.pdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
tmtime.add(Calendar.SECOND, -86400);
} else {
old_time = dqc.pdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
}
@ -596,28 +596,28 @@ public class OtherPrecipOptions {
// write_dqc_netcdf_grids(dbuf, pdata[pcpn_day].data_time,
// &begin_time, 1);
// }
int num = 4 * dqc.pcpn_day + 3 - m;
int num = 4 * DailyQcUtils.pcpn_day + 3 - m;
cm.create_map(num);
dqc.pdata[dqc.pcpn_day].used[m] = 3;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[m] = 3;
}
EstMissingStations ems = new EstMissingStations();
ems.estimate_missing_stations(dqc.pcpn_day,
dqc.precip_stations, num_stations,
dqc.pdata);
ems.estimate_missing_stations(DailyQcUtils.pcpn_day,
DailyQcUtils.precip_stations, num_stations,
DailyQcUtils.pdata);
bv.restore_bad_values(dqc.pcpn_day,
dqc.precip_stations, num_stations);
bv.restore_bad_values(DailyQcUtils.pcpn_day,
DailyQcUtils.precip_stations, num_stations);
if ((dqc.pcpn_day == 0)
if ((DailyQcUtils.pcpn_day == 0)
&& (dqc.curHr18_00 == 1
|| dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1)) {
dqc.pdata[dqc.pcpn_day].used[4] = 0;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] = 0;
} else {
dqc.pdata[dqc.pcpn_day].used[4] = 3;
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] = 3;
}
QcPrecipOptionsDialog.dataSet.clear();
@ -628,55 +628,55 @@ public class OtherPrecipOptions {
.toArray(a));
if (MPEDisplayManager.pcpn_time_step == 0) {
time_pos = dqc.pcp_flag;
time_pos = DailyQcUtils.pcp_flag;
} else {
time_pos = 40 + dqc.pcpn_day;
time_pos = 40 + DailyQcUtils.pcpn_day;
}
if (dqc.points_flag == 1
&& dqc.pcp_in_use[time_pos] == -1) {
if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.pcp_in_use[time_pos] == -1) {
k = 0;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == -1) {
// Points
k = 0;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == 1
&& dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == 1
&& DailyQcUtils.map_flag == -1) {
// Grids
k = 1;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == 1) {
// MATs
k = 2;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == 1
&& dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == 1
&& DailyQcUtils.map_flag == -1) {
// Points & Grids
k = 3;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == 1) {
// Points & MATs
k = 4;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1) {
// Contours
k = 5;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == 1) {
// Points & Contours
k = 6;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == -1) {
// None
k = 7;
}
@ -698,25 +698,25 @@ public class OtherPrecipOptions {
* 18-00, m=2 represents time frame 00-06Z
*/
if (dqc.pcpn_day == 0 && dqc.curHr18_00 == 1) {
dqc.zdata[dqc.pcpn_day].used[1] = 0;
dqc.zdata[dqc.pcpn_day].used[2] = 0;
dqc.zdata[dqc.pcpn_day].used[3] = 0;
} else if (dqc.pcpn_day == 0
if (DailyQcUtils.pcpn_day == 0 && dqc.curHr18_00 == 1) {
DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[1] = 0;
DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[2] = 0;
DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[3] = 0;
} else if (DailyQcUtils.pcpn_day == 0
&& dqc.curHr00_06 == 1) {
dqc.zdata[dqc.pcpn_day].used[2] = 0;
dqc.zdata[dqc.pcpn_day].used[3] = 0;
} else if (dqc.pcpn_day == 0
DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[2] = 0;
DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[3] = 0;
} else if (DailyQcUtils.pcpn_day == 0
&& dqc.curHr06_12 == 1) {
dqc.zdata[dqc.pcpn_day].used[3] = 0;
DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[3] = 0;
}
for (m = 0; m < 4; m++) {
if (dqc.zdata[dqc.pcpn_day].used[m] == 0
|| dqc.zdata[dqc.pcpn_day].used[m] == 3
|| (dqc.zdata[dqc.pcpn_day].used[m] == 1 && dqc.zdata[dqc.pcpn_day].level[m] == 2)
|| dqc.zdata[dqc.pcpn_day].used[m] == 4) {
if (DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 0
|| DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 3
|| (DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 1 && DailyQcUtils.zdata[DailyQcUtils.pcpn_day].level[m] == 2)
|| DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 4) {
/*
* logMessage(
* "\n in other pcpn zdata used = %d pcpn_dauy=%d m=%d\n"
@ -725,9 +725,9 @@ public class OtherPrecipOptions {
continue;
}
rz.render_z(dqc.pcpn_day, m, 0, num_zstations,
dqc.freezing_stations, dqc.getHrap_grid(),
dqc.zdata, dqc.pcp_in_use);
rz.render_z(DailyQcUtils.pcpn_day, m, 0, num_zstations,
DailyQcUtils.freezing_stations, DailyQcUtils.getHrap_grid(),
DailyQcUtils.zdata, DailyQcUtils.pcp_in_use);
/*
* dqcEndingObsTime is controlled by the
* dqc_ending_6hour_obstime token. It should only be 06 or 12
@ -737,20 +737,20 @@ public class OtherPrecipOptions {
if (dqc.dqc_ending_6hour_obstime == 12) {
if (m < 1) {
old_time = dqc.zdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
tmtime.add(Calendar.SECOND, -86400);
} else {
old_time = dqc.zdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
}
} else {
if (m < 2) {
old_time = dqc.zdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
tmtime.add(Calendar.SECOND, -86400);
} else {
old_time = dqc.zdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
}
}
@ -763,9 +763,9 @@ public class OtherPrecipOptions {
wq.write_qpf_grids(dbuf);
int num = 100 + 4 * dqc.pcpn_day + 3 - m;
int num = 100 + 4 * DailyQcUtils.pcpn_day + 3 - m;
dqc.zdata[dqc.pcpn_day].used[m] = 3;
DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] = 3;
mr.make_rsel(num, num - 100);
/*
@ -782,52 +782,52 @@ public class OtherPrecipOptions {
QcFreezeOptionsDialog.dataDispCbo
.setItems(QcFreezeOptionsDialog.dataSet.toArray(a));
time_pos = 100 + dqc.pcp_flag;
time_pos = 100 + DailyQcUtils.pcp_flag;
if (dqc.points_flag == 1
&& dqc.pcp_in_use[time_pos] == -1) {
if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.pcp_in_use[time_pos] == -1) {
k = 0;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == -1) {
// Points
k = 0;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == 1
&& dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == 1
&& DailyQcUtils.map_flag == -1) {
// Grids
k = 1;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == 1) {
// MATs
k = 2;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == 1
&& dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == 1
&& DailyQcUtils.map_flag == -1) {
// Points & Grids
k = 3;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == 1) {
// Points & MATs
k = 4;
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == 1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == 1) {
// Contours
k = 5;
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == 1) {
// Points & Contours
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == -1) {
// None
k = 7;
}
@ -840,50 +840,50 @@ public class OtherPrecipOptions {
ReadTemperatureStationList rt = new ReadTemperatureStationList();
int num_tstations = rt.getNumTstations();
BadTValues bt = new BadTValues();
bt.update_bad_tvalues(dqc.pcpn_day);
bt.update_bad_tvalues(DailyQcUtils.pcpn_day);
/*
* do not estimate daily and partial point precipitation from each
* other if run DQC on partial time frame and pcpn_day=0
*/
if (dqc.pcpn_day == 0
if (DailyQcUtils.pcpn_day == 0
&& (dqc.curHr00_06 == 1
|| dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1)) {
// do not run estimate on stations
} else {
EstDailyTStations edt = new EstDailyTStations();
edt.estimate_daily_tstations(dqc.pcpn_day,
dqc.temperature_stations, num_tstations);
edt.estimate_daily_tstations(DailyQcUtils.pcpn_day,
DailyQcUtils.temperature_stations, num_tstations);
}
QCTStations qct = new QCTStations();
qct.quality_control_tstations(dqc.pcpn_day,
dqc.temperature_stations, num_tstations);
qct.quality_control_tstations(DailyQcUtils.pcpn_day,
DailyQcUtils.temperature_stations, num_tstations);
if (dqc.pcpn_day == 0 && dqc.curHr18_00 == 1) {
dqc.tdata[dqc.pcpn_day].used[1] = 0;
dqc.tdata[dqc.pcpn_day].used[2] = 0;
dqc.tdata[dqc.pcpn_day].used[3] = 0;
if (DailyQcUtils.pcpn_day == 0 && dqc.curHr18_00 == 1) {
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[1] = 0;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[2] = 0;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[3] = 0;
} else if (dqc.pcpn_day == 0
} else if (DailyQcUtils.pcpn_day == 0
&& dqc.curHr00_06 == 1) {
dqc.tdata[dqc.pcpn_day].used[2] = 0;
dqc.tdata[dqc.pcpn_day].used[3] = 0;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[2] = 0;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[3] = 0;
} else if (dqc.pcpn_day == 0
} else if (DailyQcUtils.pcpn_day == 0
&& dqc.curHr06_12 == 1) {
dqc.tdata[dqc.pcpn_day].used[3] = 0;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[3] = 0;
}
RenderT rent = new RenderT();
if (dqc.tdata[dqc.pcpn_day].used[4] != 0) {
if (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[4] != 0) {
rent.render_t(dqc.pcpn_day, dqc.pcpn_time, 1,
num_tstations, dqc.temperature_stations,
dqc.getHrap_grid(), dqc.tdata, dqc.pcp_in_use);
rent.render_t(DailyQcUtils.pcpn_day, DailyQcUtils.pcpn_time, 1,
num_tstations, DailyQcUtils.temperature_stations,
DailyQcUtils.getHrap_grid(), DailyQcUtils.tdata, DailyQcUtils.pcp_in_use);
old_time = dqc.tdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
dbuf = String.format("%s%s_%04d%02d%02d",
@ -895,17 +895,17 @@ public class OtherPrecipOptions {
wq.write_qpf_grids(dbuf);
dqc.tdata[dqc.pcpn_day].used[4] = 3;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[4] = 3;
}
if (dqc.tdata[dqc.pcpn_day].used[5] != 0) {
if (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[5] != 0) {
rent.render_t(dqc.pcpn_day, dqc.pcpn_time, 2,
num_tstations, dqc.temperature_stations,
dqc.getHrap_grid(), dqc.tdata, dqc.pcp_in_use);
rent.render_t(DailyQcUtils.pcpn_day, DailyQcUtils.pcpn_time, 2,
num_tstations, DailyQcUtils.temperature_stations,
DailyQcUtils.getHrap_grid(), DailyQcUtils.tdata, DailyQcUtils.pcp_in_use);
old_time = dqc.tdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
@ -918,23 +918,23 @@ public class OtherPrecipOptions {
wq.write_qpf_grids(dbuf);
dqc.tdata[dqc.pcpn_day].used[5] = 3;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[5] = 3;
}
for (int m = 0; m < 4; m++) {
if (dqc.tdata[dqc.pcpn_day].used[m] == 0
|| dqc.tdata[dqc.pcpn_day].used[m] == 3
|| (dqc.tdata[dqc.pcpn_day].used[m] == 1 && dqc.tdata[dqc.pcpn_day].level[m] == 2)
|| dqc.tdata[dqc.pcpn_day].used[m] == 4) {
if (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 0
|| DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 3
|| (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 1 && DailyQcUtils.tdata[DailyQcUtils.pcpn_day].level[m] == 2)
|| DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 4) {
continue;
}
RenderT6 rt6 = new RenderT6();
rt6.render_t6(dqc.pcpn_day, m, 0, num_tstations,
dqc.temperature_stations, dqc.getHrap_grid(),
dqc.tdata, dqc.pcp_in_use);
rt6.render_t6(DailyQcUtils.pcpn_day, m, 0, num_tstations,
DailyQcUtils.temperature_stations, DailyQcUtils.getHrap_grid(),
DailyQcUtils.tdata, DailyQcUtils.pcp_in_use);
/*
* dqcEndingObsTime is controlled by the
@ -946,20 +946,20 @@ public class OtherPrecipOptions {
if (dqc_ending_6hour_obstime == 12) {
if (m < 1) {
old_time = dqc.tdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
tmtime.add(Calendar.SECOND, -86400);
} else {
old_time = dqc.tdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
}
} else {
if (m < 2) {
old_time = dqc.tdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
tmtime.add(Calendar.SECOND, -86400);
} else {
old_time = dqc.tdata[dqc.pcpn_day].data_time;
old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time;
tmtime.setTime(old_time);
}
}
@ -973,25 +973,25 @@ public class OtherPrecipOptions {
wq.write_qpf_grids(dbuf);
int num = 150 + 4 * dqc.pcpn_day + 3 - m;
int num = 150 + 4 * DailyQcUtils.pcpn_day + 3 - m;
dqc.tdata[dqc.pcpn_day].used[m] = 3;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] = 3;
MakeMat mmat = new MakeMat();
mmat.make_mat(num, num - 150);
dqc.tdata[dqc.pcpn_day].used[m] = 3;
DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] = 3;
}
EstMissingTStations emt = new EstMissingTStations();
emt.estimate_missing_tstations(dqc.pcpn_day,
dqc.temperature_stations, num_tstations,
dqc.tdata);
emt.estimate_missing_tstations(DailyQcUtils.pcpn_day,
DailyQcUtils.temperature_stations, num_tstations,
DailyQcUtils.tdata);
BadTValues btv = new BadTValues();
btv.restore_bad_tvalues(dqc.pcpn_day,
dqc.temperature_stations, num_tstations);
btv.restore_bad_tvalues(DailyQcUtils.pcpn_day,
DailyQcUtils.temperature_stations, num_tstations);
QcTempOptionsDialog.dataSet.clear();
QcTempOptionsDialog.dataSet.addAll(QcTempOptionsDialog.dataType);
@ -999,46 +999,46 @@ public class OtherPrecipOptions {
QcTempOptionsDialog.dataDispCbo
.setItems(QcTempOptionsDialog.dataSet.toArray(a));
time_pos = 150 + dqc.pcp_flag;
time_pos = 150 + DailyQcUtils.pcp_flag;
if (dqc.points_flag == 1
&& dqc.pcp_in_use[time_pos] == -1) {
if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.pcp_in_use[time_pos] == -1) {
k = 0; // Points
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == -1) {
k = 0; // Points
} else if (dqc.points_flag == -1
&& dqc.grids_flag == 1
&& dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == 1
&& DailyQcUtils.map_flag == -1) {
k = 1; // Grids
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == 1) {
k = 2; // MATs
} else if (dqc.points_flag == 1
&& dqc.grids_flag == 1
&& dqc.map_flag == -1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == 1
&& DailyQcUtils.map_flag == -1) {
k = 3; // Points + Grids
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == 1) {
k = 4; // Points + MATs
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == 1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == 1) {
k = 5; // Contours
} else if (dqc.points_flag == 1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == 1) {
} else if (DailyQcUtils.points_flag == 1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == 1) {
k = 6; // Points + Contours
} else if (dqc.points_flag == -1
&& dqc.grids_flag == -1
&& dqc.map_flag == -1
&& dqc.contour_flag == -1) {
} else if (DailyQcUtils.points_flag == -1
&& DailyQcUtils.grids_flag == -1
&& DailyQcUtils.map_flag == -1
&& DailyQcUtils.contour_flag == -1) {
k = 7; // None
}

View file

@ -2503,7 +2503,12 @@ public class SaveLevel2Data {
}
Disagg6Hr d6h = new Disagg6Hr();
d6h.disagg6hr();
try {
d6h.disagg6hr();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/* Free DailyQC resources. */

View file

@ -23,6 +23,7 @@ import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -60,8 +61,10 @@ import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions;
import com.raytheon.viz.mpe.util.BadValues;
import com.raytheon.viz.mpe.util.CheckConsistency;
import com.raytheon.viz.mpe.util.DailyQcUtils;
import com.raytheon.viz.mpe.util.DailyQcUtils.Pdata;
import com.raytheon.viz.mpe.util.DailyQcUtils.Rain;
import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
import com.raytheon.viz.mpe.util.DailyQcUtils.Ts;
import com.raytheon.viz.mpe.util.EstDailyStations;
import com.raytheon.viz.mpe.util.EstPartStations;
import com.raytheon.viz.mpe.util.QCStations;
@ -116,7 +119,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
private int pcpn_time_step = MPEDisplayManager.pcpn_time_step;
private int pcpn_time = dqc.pcpn_time;
private int pcpn_time = DailyQcUtils.pcpn_time;
private Button applyBtn;
@ -216,29 +219,29 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
int tcmode = OtherPrecipOptions.tcmode;
// Ts ts[] = DailyQcUtils.ts;
Ts ts[] = DailyQcUtils.ts;
int tsmax = dqc.tsmax;
int tsmax = DailyQcUtils.tsmax;
int isom = dqc.isom;
int isom = DailyQcUtils.isom;
int gage_char[] = dqc.gage_char;
int gage_char[] = DailyQcUtils.gage_char;
int method = dqc.method;
int qflag[] = dqc.qflag;
int qflag[] = DailyQcUtils.qflag;
// Pdata pdata[] = DailyQcUtils.pdata;
Pdata pdata[] = DailyQcUtils.pdata;
int dflag[] = dqc.dflag;
int dflag[] = DailyQcUtils.dflag;
int naflag;
// ArrayList<Station> precipStationList = DailyQcUtils.precip_stations;
ArrayList<Station> precipStationList = DailyQcUtils.precip_stations;
// ReadPrecipStationList rp = new ReadPrecipStationList();
int max_stations = dqc.precip_stations.size();
int max_stations = DailyQcUtils.precip_stations.size();
int i, m, x, y;
@ -248,7 +251,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
int[] allowedQualityCodes = dqc.func;
int pcpn_day = dqc.pcpn_day;
int pcpn_day = DailyQcUtils.pcpn_day;
Coordinate coord = new Coordinate();
@ -371,18 +374,18 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
ClosestStationFinder finder = new ClosestStationFinder(this);
isave = finder.findClosestStation(dqc.precip_stations, coord);
isave = finder.findClosestStation(precipStationList, coord);
if (isave == -1) {
return;
}
Rain frain = dqc.pdata[pcpn_day].stn[isave].frain[time_pos];
Rain frain = pdata[pcpn_day].stn[isave].frain[time_pos];
reset_value = 0;
initial_qual = frain.qual;
new_qual = initial_qual;
Rain srain = dqc.pdata[pcpn_day].stn[isave].srain[time_pos];
Rain srain = pdata[pcpn_day].stn[isave].srain[time_pos];
if (srain.data > -98) {
if (time_pos == HOURS_24 && srain.data >= 0) {
@ -413,7 +416,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
private void loadPrecipStationText(StringBuilder stationStringBuilder,
Station selectedStation) {
Rain frain = dqc.pdata[pcpn_day].stn[isave].frain[time_pos];
Rain frain = pdata[pcpn_day].stn[isave].frain[time_pos];
stationStringBuilder.append(selectedStation.hb5 + " "
+ selectedStation.parm + "\n" + selectedStation.name + "\n"
@ -440,13 +443,13 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
frain.stddev));
}
int frzlvl = dqc.pdata[pcpn_day].stn[isave].frzlvl[time_pos];
int frzlvl = pdata[pcpn_day].stn[isave].frzlvl[time_pos];
if (selectedStation.tip == 0 && time_pos != HOURS_24 && frzlvl > -99) {
stationStringBuilder.append(String.format("Freezing level %dft\n",
frzlvl));
}
short snoflag = dqc.pdata[pcpn_day].stn[isave].snoflag[time_pos];
short snoflag = pdata[pcpn_day].stn[isave].snoflag[time_pos];
if (snoflag > 0) {
stationStringBuilder.append("SNOTEL error is ");
@ -469,7 +472,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
Rain srain = dqc.pdata[pcpn_day].stn[isave].srain[time_pos];
Rain srain = pdata[pcpn_day].stn[isave].srain[time_pos];
if (srain.data > -98) {
@ -487,9 +490,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
double accumulatedAmount = get24HourPrecipTotal(
dqc.QPEaccum24hr, selectedStation.hrap_x
- dqc.getHrap_grid().hrap_minx,
- DailyQcUtils.getHrap_grid().hrap_minx,
selectedStation.hrap_y
- dqc.getHrap_grid().hrap_miny);
- DailyQcUtils.getHrap_grid().hrap_miny);
stationStringBuilder.append(String.format(
"accumulated amount %5.2f in.", accumulatedAmount));
@ -522,9 +525,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
// --------------------------------------------------------
public boolean shouldFilterOut(int stationIndex) {
boolean filteredOut = false;
Station station = dqc.precip_stations.get(stationIndex);
Station station = precipStationList.get(stationIndex);
Rain frain = dqc.pdata[pcpn_day].stn[stationIndex].frain[time_pos];
Rain frain = pdata[pcpn_day].stn[stationIndex].frain[time_pos];
if ((frain.data > QcPrecipOptionsDialog.getPointFilterReverseValue())
&& (frain.data < 20.00)) {
@ -532,7 +535,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
if (station.elev > 0
&& station.elev < dqc.elevation_filter_value) {
&& station.elev < DailyQcUtils.elevation_filter_value) {
return true;
}
@ -544,21 +547,21 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
return true;
}
if (tcmode == 0 && dqc.pdata[pcpn_day].stn[stationIndex].tcons == -1) {
if (tcmode == 0 && pdata[pcpn_day].stn[stationIndex].tcons == -1) {
return true;
}
if (tcmode == 1 && dqc.pdata[pcpn_day].stn[stationIndex].tcons == 1) {
if (tcmode == 1 && pdata[pcpn_day].stn[stationIndex].tcons == 1) {
return true;
}
if (dcmode == 0
&& dqc.pdata[pcpn_day].stn[stationIndex].scons[time_pos] == -1) {
&& pdata[pcpn_day].stn[stationIndex].scons[time_pos] == -1) {
return true;
}
if (dcmode == 1
&& dqc.pdata[pcpn_day].stn[stationIndex].scons[time_pos] == 1) {
&& pdata[pcpn_day].stn[stationIndex].scons[time_pos] == 1) {
return true;
}
@ -574,7 +577,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
for (m = 0; m < tsmax; m++) {
String kd = station.parm.substring(3, 5);
if ((kd.compareTo(dqc.ts[m].abr) == 0 && dflag[m + 1] == 1)) {
if ((kd.compareTo(ts[m].abr) == 0 && dflag[m + 1] == 1)) {
break;
}
}
@ -613,7 +616,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
dataComp.setLayoutData(gd);
StringBuilder stringBuilder = new StringBuilder();
Station selectedStation = dqc.precip_stations.get(isave);
Station selectedStation = precipStationList.get(isave);
loadPrecipStationText(stringBuilder, selectedStation);
gd = new GridData(SWT.FILL, SWT.DEFAULT, false, false);
@ -628,8 +631,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
snotelButton.setText("Use SWD for PPD");
snotelButton.setLayoutData(gd);
Rain srain = dqc.pdata[pcpn_day].stn[isave].srain[time_pos];
short sflag = dqc.pdata[pcpn_day].stn[isave].sflag[time_pos];
Rain srain = pdata[pcpn_day].stn[isave].srain[time_pos];
short sflag = pdata[pcpn_day].stn[isave].sflag[time_pos];
if (srain.data > -98) {
if (time_pos == HOURS_24 && srain.data >= 0) {
@ -665,7 +668,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
stnQualComp.setLayoutData(gd);
if (initial_qual < 0
|| dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data < 0) {
|| pdata[pcpn_day].stn[isave].frain[time_pos].data < 0) {
naflag = 1;
} else {
naflag = 0;
@ -811,7 +814,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
*/
private void createStnLocComp() {
Station selectedStation = dqc.precip_stations.get(isave);
Station selectedStation = precipStationList.get(isave);
initial_pos = _textPosMgr.getTextPosition(selectedStation);
Group stnLocGroup = new Group(shell, SWT.NONE);
@ -843,7 +846,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
b.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Station station = dqc.precip_stations.get(isave);
Station station = precipStationList.get(isave);
int textPositionCode = (Integer) b.getData();
_textPosMgr
.changeStationLocation(textPositionCode, station);
@ -884,12 +887,12 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
qualityCodeStatusLabelArray[i] = new Label(stnConComp, SWT.CENTER);
int qualityCode = dqc.pdata[pcpn_day].stn[isave].frain[i].qual;
int qualityCode = pdata[pcpn_day].stn[isave].frain[i].qual;
String qualityText = getQualityTextFromCode(qualityCode);
qualityCodeStatusLabelArray[i].setText(qualityText);
Rain frainI = dqc.pdata[pcpn_day].stn[isave].frain[i];
Rain frainI = pdata[pcpn_day].stn[isave].frain[i];
precipValueTextArray[i].setEditable(true);
if (frainI.data < 0) {
@ -983,8 +986,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
@Override
public void widgetSelected(SelectionEvent e) {
AppLauncherHandler alh = new AppLauncherHandler();
String lid = dqc.precip_stations.get(isave).hb5;
String dataType = dqc.precip_stations.get(isave).parm;
String lid = precipStationList.get(isave).hb5;
String dataType = precipStationList.get(isave).parm;
final String TSL_BUNDLE_LOC = "bundles/run-TimeSeriesLite.xml";
try {
System.out
@ -1018,14 +1021,14 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
for (k = 0; k < 5; k++) {
dqc.pdata[pcpn_day].stn[isave].frain[k].qual = dqc.pdata[pcpn_day].stn[isave].rrain[k].qual;
pdata[pcpn_day].stn[isave].frain[k].qual = pdata[pcpn_day].stn[isave].rrain[k].qual;
dqc.pdata[pcpn_day].stn[isave].frain[k].data = dqc.pdata[pcpn_day].stn[isave].rrain[k].data;
pdata[pcpn_day].stn[isave].frain[k].data = pdata[pcpn_day].stn[isave].rrain[k].data;
}
reset_value = 1;
new_qual = dqc.pdata[pcpn_day].stn[isave].rrain[time_pos].qual;
new_qual = pdata[pcpn_day].stn[isave].rrain[time_pos].qual;
} else {
reset_value = 0;
@ -1043,7 +1046,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
new_qual = allowedQualityCodes[data];
dqc.pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
System.out.println(header + " new_qual = " + new_qual);
}
@ -1051,7 +1054,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
String header = "EditPrecipStationsDialog.changeCustomFile(): ";
String pathName = getStationListPath(dqc.currentQcArea);
String pathName = getStationListPath(DailyQcUtils.currentQcArea);
String station_list_custom_file = pathName + "_label_position";
int i;
int time_pos;
@ -1065,10 +1068,10 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
Button rpbutton = QcPrecipOptionsDialog.renderGridsBtn;
int tcmode = OtherPrecipOptions.tcmode;
BufferedWriter out = null;
int pcp_flag = dqc.pcp_flag;
int grids_flag = dqc.grids_flag;
int points_flag = dqc.points_flag;
int map_flag = dqc.map_flag;
int pcp_flag = DailyQcUtils.pcp_flag;
int grids_flag = DailyQcUtils.grids_flag;
int points_flag = DailyQcUtils.points_flag;
int map_flag = DailyQcUtils.map_flag;
File custom = new File(station_list_custom_file);
custom.setReadable(true, false);
custom.setWritable(true, false);
@ -1092,7 +1095,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
out = new BufferedWriter(new FileWriter(custom));
for (i = 0; i < max_stations; i++) {
Station station = dqc.precip_stations.get(i);
Station station = precipStationList.get(i);
String rec = String.format("%s %s %d %d\n", station.hb5,
station.parm, station.xadd, station.yadd);
out.write(rec);
@ -1120,26 +1123,26 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
/* snotel path */
if (snow == true
&& ((bval == true && dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1))) {
&& ((bval == true && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1))) {
dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] = (short) -dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24];
pdata[pcpn_day].stn[isave].sflag[HOURS_24] = (short) -pdata[pcpn_day].stn[isave].sflag[HOURS_24];
if (dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1) {
if (pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1) {
dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data = dqc.pdata[pcpn_day].stn[isave].srain[HOURS_24].data;
dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED;
pdata[pcpn_day].stn[isave].frain[HOURS_24].data = pdata[pcpn_day].stn[isave].srain[HOURS_24].data;
pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED;
}
else {
dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data = dqc.pdata[pcpn_day].stn[isave].rrain[HOURS_24].data;
dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED;
pdata[pcpn_day].stn[isave].frain[HOURS_24].data = pdata[pcpn_day].stn[isave].rrain[HOURS_24].data;
pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED;
}
}
else {
boolean value_edit_flag = false;
val = dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data;
val = pdata[pcpn_day].stn[isave].frain[time_pos].data;
p = -1;
// if (editVal != null) // null unless a value was edited
// {
@ -1158,12 +1161,12 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
/* need to ensure consistency in 6 and 24 hour data??? */
fdif = Math.abs(val
- dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data);
- pdata[pcpn_day].stn[isave].frain[time_pos].data);
if (fdif > .005 && p == -1 && reset_value == 0) {
dqc.pdata[pcpn_day].stn[isave].frain[k].data = val;
dqc.pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
dqc.pdata[pcpn_day].stn[isave].sflag[k] = -1;
pdata[pcpn_day].stn[isave].frain[k].data = val;
pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
pdata[pcpn_day].stn[isave].sflag[k] = -1;
value_edit_flag = true;
}
@ -1172,9 +1175,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
rtotal = 0;
for (m = 0; m < 4; m++) {
if (dqc.pdata[pcpn_day].stn[isave].frain[m].data >= 0) {
if (pdata[pcpn_day].stn[isave].frain[m].data >= 0) {
rtotal = rtotal
+ dqc.pdata[pcpn_day].stn[isave].frain[m].data;
+ pdata[pcpn_day].stn[isave].frain[m].data;
}
}
@ -1184,17 +1187,17 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
*/
if ((Math
.abs(dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001)
.abs(pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001)
&& (time_pos == HOURS_24)) {
for (m = 0; m < 4; m++) {
dqc.pdata[pcpn_day].stn[isave].frain[m].data = 0;
dqc.pdata[pcpn_day].stn[isave].frain[m].qual = F_MANUAL;
pdata[pcpn_day].stn[isave].frain[m].data = 0;
pdata[pcpn_day].stn[isave].frain[m].qual = F_MANUAL;
}
rtotal = 0;
}
if (Math.abs(rtotal
- dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005) {
- pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005) {
read_text();
return;
@ -1204,16 +1207,16 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
else {
dqc.pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual;
/* 24 hour data set bad/good then 6 hourly bad/good also */
if (new_qual == F_BAD && time_pos == HOURS_24
&& dqc.pdata[pcpn_day].stn[isave].sflag[time_pos] == 1) {
&& pdata[pcpn_day].stn[isave].sflag[time_pos] == 1) {
dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data = dqc.pdata[pcpn_day].stn[isave].rrain[time_pos].data;
pdata[pcpn_day].stn[isave].frain[time_pos].data = pdata[pcpn_day].stn[isave].rrain[time_pos].data;
dqc.pdata[pcpn_day].stn[isave].sflag[time_pos] = -1;
pdata[pcpn_day].stn[isave].sflag[time_pos] = -1;
}
@ -1223,7 +1226,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
for (k = 0; k < 4; k++) {
/* if(pdata[pcpn_day].stn[isave].frain[k].qual!=1) */
dqc.pdata[pcpn_day].stn[isave].frain[k].qual = (short) new_qual;
pdata[pcpn_day].stn[isave].frain[k].qual = (short) new_qual;
}
}
@ -1239,13 +1242,13 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
if (time_pos != HOURS_24
&& new_qual == F_BAD
&& dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual != F_ESTIMATED
&& dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0) {
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].qual != F_ESTIMATED
&& pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0) {
if (mpe_dqc_6hr_24hr_flag == 1) {
System.out
.println("6hr qual code set to Bad - 24hr qual code changed to Bad\n");
// frain24.qual = (short) new_qual;
dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = (short) new_qual;
pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = (short) new_qual;
}
}
@ -1254,12 +1257,12 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
* --
*/
if (dqc.pdata[pcpn_day].stn[isave].frain[4].qual == F_BAD
|| dqc.pdata[pcpn_day].stn[isave].frain[4].data < 0) {
if (pdata[pcpn_day].stn[isave].frain[4].qual == F_BAD
|| pdata[pcpn_day].stn[isave].frain[4].data < 0) {
if (tcmode == 0) {
dqc.pdata[pcpn_day].stn[isave].tcons = 1;
pdata[pcpn_day].stn[isave].tcons = 1;
} else {
dqc.pdata[pcpn_day].stn[isave].tcons = -1;
pdata[pcpn_day].stn[isave].tcons = -1;
}
}
} // end else
@ -1275,8 +1278,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
// pcp_in_use[time_pos] = -1;
if (dqc.pdata[pcpn_day].used[k] != 0) {
dqc.pdata[pcpn_day].used[k] = 2;
if (pdata[pcpn_day].used[k] != 0) {
pdata[pcpn_day].used[k] = 2;
}
}
@ -1296,7 +1299,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
time_pos = 40 + pcpn_day;
}
if (points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) {
if (points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) {
k = 0;
} else if (points_flag == 1 && grids_flag == -1 && map_flag == -1) {
k = 0;
@ -1310,7 +1313,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
k = 4;
} else if (points_flag == -1 && grids_flag == -1 && map_flag == -1) {
k = 5;
} else if (points_flag == 1 && dqc.contour_flag == 1) {
} else if (points_flag == 1 && DailyQcUtils.contour_flag == 1) {
k = 6;
} else if (points_flag == -1 && grids_flag == -1 && map_flag == -1) {
k = 7;
@ -1334,21 +1337,21 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
// do nothing
} else {
EstDailyStations eds = new EstDailyStations();
eds.estimate_daily_stations(pcpn_day, dqc.precip_stations,
eds.estimate_daily_stations(pcpn_day, precipStationList,
max_stations);
EstPartStations eps = new EstPartStations();
eps.estimate_partial_stations(pcpn_day, dqc.precip_stations,
eps.estimate_partial_stations(pcpn_day, precipStationList,
max_stations);
}
QCStations qcs = new QCStations();
qcs.quality_control_stations(pcpn_day, dqc.precip_stations, max_stations);
qcs.quality_control_stations(pcpn_day, precipStationList, max_stations);
CheckConsistency cc = new CheckConsistency();
cc.check_consistency(pcpn_day, dqc.precip_stations, max_stations);
cc.check_consistency(pcpn_day, precipStationList, max_stations);
bv.restore_bad_values(pcpn_day, dqc.precip_stations, max_stations);
bv.restore_bad_values(pcpn_day, precipStationList, max_stations);
// logMessage("new_qual again %d station qual %d\n", new_qual,
// pdata[pcpn_day].stn[isave].frain[4].qual);
@ -1437,7 +1440,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
/* check if there is any change in the five partial values text fields */
for (k = 0; k < 5; k++) {
Rain frainK = dqc.pdata[pcpn_day].stn[isave].frain[k];
Rain frainK = pdata[pcpn_day].stn[isave].frain[k];
cstr = precipValueStringArray[k];
p = cstr.indexOf('M');
@ -1483,18 +1486,18 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
String cstr;
float val, fdif;
// int[] pcp_in_use = DailyQcUtils.pcp_in_use;
int pcp_flag = dqc.pcp_flag;
int pcp_flag = DailyQcUtils.pcp_flag;
Button rpbutton = QcPrecipOptionsDialog.renderGridsBtn;
int grids_flag = dqc.grids_flag;
int points_flag = dqc.points_flag;
int map_flag = dqc.map_flag;
int contour_flag = dqc.contour_flag;
int grids_flag = DailyQcUtils.grids_flag;
int points_flag = DailyQcUtils.points_flag;
int map_flag = DailyQcUtils.map_flag;
int contour_flag = DailyQcUtils.contour_flag;
Rain frain24 = dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24];
Rain frain24 = pdata[pcpn_day].stn[isave].frain[HOURS_24];
for (k = 0; k < 5; k++) {
Rain frain = dqc.pdata[pcpn_day].stn[isave].frain[k];
Rain frain = pdata[pcpn_day].stn[isave].frain[k];
cstr = precipValueStringArray[k];
val = 0;
@ -1506,13 +1509,13 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
fdif = Math.abs(val - frain.data);
if (p != -1) {
dqc.pdata[pcpn_day].stn[isave].frain[k].data = -1;
pdata[pcpn_day].stn[isave].frain[k].data = -1;
p = -1;
} else if (fdif > .005 && p == -1) {
dqc.pdata[pcpn_day].stn[isave].frain[k].data = val;
dqc.pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
dqc.pdata[pcpn_day].stn[isave].sflag[k] = -1;
pdata[pcpn_day].stn[isave].frain[k].data = val;
pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL;
pdata[pcpn_day].stn[isave].sflag[k] = -1;
}
cstr = null;
@ -1525,7 +1528,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
if (Math.abs(frain24.data - 0.0) < 0.001) {
for (k = 0; k < 4; k++) {
dqc.pdata[pcpn_day].stn[isave].frain[k].data = 0.0f;
pdata[pcpn_day].stn[isave].frain[k].data = 0.0f;
}
}
@ -1539,8 +1542,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
// pcp_in_use[time_pos] = -1;
if (dqc.pdata[pcpn_day].used[k] != 0) {
dqc.pdata[pcpn_day].used[k] = 2;
if (pdata[pcpn_day].used[k] != 0) {
pdata[pcpn_day].used[k] = 2;
}
}
@ -1557,7 +1560,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
time_pos = 40 + pcpn_day;
}
if (points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) {
if (points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) {
k = 0;
} else if (points_flag == 1 && grids_flag == -1 && map_flag == -1
&& contour_flag == -1) {
@ -1597,24 +1600,24 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
} else {
EstDailyStations eds = new EstDailyStations();
eds.estimate_daily_stations(pcpn_day, dqc.precip_stations,
eds.estimate_daily_stations(pcpn_day, precipStationList,
max_stations);
EstPartStations eps = new EstPartStations();
eps.estimate_partial_stations(pcpn_day, dqc.precip_stations,
eps.estimate_partial_stations(pcpn_day, precipStationList,
max_stations);
}
QCStations qcs = new QCStations();
qcs.quality_control_stations(pcpn_day, dqc.precip_stations, max_stations);
qcs.quality_control_stations(pcpn_day, precipStationList, max_stations);
CheckConsistency cc = new CheckConsistency();
cc.check_consistency(pcpn_day, dqc.precip_stations, max_stations);
cc.check_consistency(pcpn_day, precipStationList, max_stations);
bv.restore_bad_values(pcpn_day, dqc.precip_stations, max_stations);
bv.restore_bad_values(pcpn_day, precipStationList, max_stations);
if (k == 1 || k == 3) {
dqc.grids_flag = 1;
DailyQcUtils.grids_flag = 1;
}
OtherPrecipOptions op = new OtherPrecipOptions();
@ -1623,7 +1626,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
}
private String getStationListPath(String qcArea) {
String station_dir = dqc.mpe_station_list_dir;
String station_dir = DailyQcUtils.mpe_station_list_dir;
String dir;
if (qcArea != null) {

View file

@ -68,7 +68,7 @@ public class MPELegendInputHandler extends InputAdapter {
if ((mouseButton == 1 || mouseButton == 3)
&& (MPEDisplayManager.getCurrent().isGroupedt() == false)
&& pe.contains(v[0], v[1])
&& (DrawDQCStations.getInstance().grids_flag == 1 || DrawDQCStations.getInstance().map_flag == 1)) {
&& (DrawDQCStations.grids_flag == 1 || DrawDQCStations.map_flag == 1)) {
return execute(x, y, true);
}

View file

@ -70,6 +70,7 @@ import com.raytheon.viz.mpe.ui.actions.DrawDQCStations;
import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions;
import com.raytheon.viz.mpe.ui.dialogs.QcPrecipOptionsDialog;
import com.raytheon.viz.mpe.util.DailyQcUtils;
import com.raytheon.viz.mpe.util.DailyQcUtils.Pdata;
import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
import com.raytheon.viz.mpe.util.DailyQcUtils.Stn;
import com.vividsolutions.jts.geom.Coordinate;
@ -125,6 +126,10 @@ public class PointPrecipPlotResource extends
"Blue", "Blue", "Yellow", "Yellow", "Yellow2", "VioletRed", "Red",
"White" };
Pdata pdata[];
ArrayList<Station> station;
private int time_pos = 0;
private Hashtable<String, Stn> pdataMap;
@ -148,6 +153,8 @@ public class PointPrecipPlotResource extends
public PointPrecipPlotResource(PointPrecipResourceData resourceData,
LoadProperties props) {
super(resourceData, props);
pdata = DailyQcUtils.pdata;
station = DailyQcUtils.precip_stations;
prevPcpnDay = 0;
df.setMaximumFractionDigits(2);
df.setMaximumIntegerDigits(4);
@ -172,9 +179,9 @@ public class PointPrecipPlotResource extends
strTree = new STRtree();
gageData = dqc.new Station();
if (!dqc.precip_stations.isEmpty()) {
if (!DailyQcUtils.precip_stations.isEmpty()) {
int i = 0;
for (ListIterator<Station> it = dqc.precip_stations.listIterator(); it
for (ListIterator<Station> it = DailyQcUtils.precip_stations.listIterator(); it
.hasNext();) {
gageData = it.next();
Coordinate xy = new Coordinate();
@ -188,7 +195,7 @@ public class PointPrecipPlotResource extends
kv.append(pm);
dataMap.put(kv.toString(), gageData);
pdataMap.put(kv.toString(),
DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i]);
pdata[DailyQcUtils.pcpn_day].stn[i]);
/* Create a small envelope around the point */
Coordinate p1 = new Coordinate(xy.x + .02, xy.y + .02);
@ -199,7 +206,7 @@ public class PointPrecipPlotResource extends
data.add("STATION: "
+ gageData.hb5
+ " VALUE: "
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data);
+ pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data);
strTree.insert(env, data);
i++;
}
@ -276,9 +283,9 @@ public class PointPrecipPlotResource extends
int dcmode = OtherPrecipOptions.dcmode;
int tcmode = OtherPrecipOptions.tcmode;
int dmvalue = dqc.dmvalue;
int tsmax = dqc.tsmax;
int tsmax = DailyQcUtils.tsmax;
boolean frzlvl_flag = dqc.frzlvl_flag;
int gage_char[] = dqc.gage_char;
int gage_char[] = DailyQcUtils.gage_char;
int find_station_flag = dqc.find_station_flag;
String mbuf = "";
String tbuf = "";
@ -304,7 +311,7 @@ public class PointPrecipPlotResource extends
return;
}
if ((station.elev >= 0)
&& (station.elev < dqc.elevation_filter_value)) {
&& (station.elev < DailyQcUtils.elevation_filter_value)) {
return;
}
@ -334,7 +341,7 @@ public class PointPrecipPlotResource extends
for (m = 0; m < tsmax; m++) {
if (station.parm.substring(3, 5)
.equalsIgnoreCase(dqc.ts[m].abr)
.equalsIgnoreCase(DailyQcUtils.ts[m].abr)
&& (DailyQcUtils.dflag[m + 1] == 1)) {
break;
}
@ -347,9 +354,9 @@ public class PointPrecipPlotResource extends
for (m = 0; m < 9; m++) {
if ((m == pdataMap.get(key).frain[time_pos].qual)
&& (dqc.qflag[m] == 1)) {
&& (DailyQcUtils.qflag[m] == 1)) {
break;
} else if ((m == 7) && (dqc.qflag[7] == 1)
} else if ((m == 7) && (DailyQcUtils.qflag[7] == 1)
&& (pdataMap.get(key).frain[time_pos].data == -99)
&& (pdataMap.get(key).frain[time_pos].qual == -99)) {
break;
@ -363,8 +370,8 @@ public class PointPrecipPlotResource extends
/* locate station in data stream */
if (((type == 4) || (type == 5))
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
&& (pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
if (((type == 4) || (type == 5))
@ -410,8 +417,8 @@ public class PointPrecipPlotResource extends
tbuf = station.name;
} else if (type == 4) {
if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
if ((pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}
@ -435,8 +442,8 @@ public class PointPrecipPlotResource extends
tbuf = mbuf;
} else if (type == 5) {
if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) {
if ((pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0)
&& (pdata[DailyQcUtils.pcpn_day].level == 0)) {
return;
}

View file

@ -60,6 +60,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 20, 2009 snaples Initial creation
* Mar 2, 2015 15660 snaples Fixed issues with the file writing and creating the new files.
*
* </pre>
*
@ -107,19 +108,19 @@ public class Compute1HrNeighborList {
DailyQcUtils dqc = DailyQcUtils.getInstance();
Station[] disagg_station_6hr = Disagg6Hr.disagg_station_6hr;
Station[] disagg_station_6hr = null;
Dist[] dist_6hr_to_1hr = Disagg6Hr.dist_6hr_to_1hr;
Dist[] dist_6hr_to_1hr = null;
public static Values_1hr[] valuesReadIn = null;
BufferedWriter disagg_log_fd = Disagg6Hr.disagg_log_fd;
Date station_list_time_stamp_6hr;
Date station_list_time_stamp_6hr = new Date();
String disagg_1hr_neighbors_fd = Disagg6Hr.disagg_1hr_neighbors_fd;
String neighbor_list_file = Disagg6Hr.neighbor_list_file;
String neighbor_list_file = null;
int ret_neighbors = Disagg6Hr.ret_neighbors;
@ -139,9 +140,7 @@ public class Compute1HrNeighborList {
public static Station[] disagg_station_1hr;
// int num_days_to_qc = DailyQcUtils.qcDays;
// static int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors;
int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors;
public Compute1HrNeighborList() {
// default constructor
@ -159,17 +158,20 @@ public class Compute1HrNeighborList {
MeanMonthlyPrecip mmp = new MeanMonthlyPrecip();
Isoh isoh = mmp.getIsoh();
int smonth = dqc.smonth;
int emonth = dqc.emonth;
int smonth = DailyQcUtils.smonth;
int emonth = DailyQcUtils.emonth;
String hb5 = "";
double dist1, dist2, dist;
double[] sorted = new double[dqc.mpe_dqc_max_precip_neighbors];
double[] sorted = new double[mpe_dqc_max_precip_neighbors];
int ind, h, i, ier, l, m, k;
char[] kbuf = new char[200];
QCHRAP hrap_point = new QCHRAP();
float lat, lon;
double conv = .0174533;
disagg_station_6hr = Disagg6Hr.disagg_station_6hr;
dist_6hr_to_1hr = Disagg6Hr.dist_6hr_to_1hr;
neighbor_list_file = Disagg6Hr.neighbor_list_file;
int num_disagg_stations = Disagg6Hr.num_disagg_stations;
int file_error = 0;
String area_id;
@ -189,11 +191,10 @@ public class Compute1HrNeighborList {
disagg_1hr_stations_dir = appsDefaults.getToken("mpe_station_list_dir");
area_id = appsDefaults.getToken("mpe_site_id");
BufferedReader in = null;
BufferedWriter out = disagg_log_fd;
BufferedWriter out = Disagg6Hr.getDisagg_log_fd();
BufferedWriter out2 = null;
try {
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
if (area_id.length() > 0) {
disagg_1hr_stations_path = String.format("%s/%s%s",
@ -210,7 +211,8 @@ public class Compute1HrNeighborList {
}
/* Read the record containing the number of hourly stations. */
int p = in.read(kbuf, 0, 200);
String hstat = in.readLine().trim();
int p = hstat.length();
if (p == -1) {
out.write("could not read number of hourly stations from file\n");
@ -219,10 +221,9 @@ public class Compute1HrNeighborList {
}
ier = Integer.parseInt(kbuf.toString());
num_records = ier;
num_records = Integer.parseInt(hstat);
if (ier < 1) {
if (num_records < 1) {
out.write("could not read number of hourly stations from file\n");
in.close();
return;
@ -249,7 +250,7 @@ public class Compute1HrNeighborList {
/* Read the PPH stations. */
i = 0;
for (ind = 0; ind < num_records; ++ind) {
String pp = in.readLine();
String pp = in.readLine().trim();
if (pp == null) {
out.write(String
@ -266,10 +267,10 @@ public class Compute1HrNeighborList {
lon = s.nextFloat();
// ier=sscanf(kbuf,"%s %s %f %f ",hb5, temp_str, &lat, &lon);
disagg_station_1hr[i] = new DailyQcUtils().new Station();
disagg_station_1hr[i].isoh = new float[24];
disagg_station_1hr[i].hb5 = "";
disagg_station_1hr[i].index = new short[dqc.mpe_dqc_max_precip_neighbors];
disagg_station_1hr[i].index = new short[DailyQcUtils.mpe_dqc_max_precip_neighbors];
disagg_station_1hr[i].parm = "";
disagg_station_1hr[i].cparm = "";
@ -295,7 +296,11 @@ public class Compute1HrNeighborList {
disagg_station_1hr[i].hb5 = hb5;
disagg_station_1hr[i].lat = lat;
disagg_station_1hr[i].lon = lon;
float testlon = lon;
if (testlon > 0) {
testlon = testlon * -1;
}
disagg_station_1hr[i].lon = testlon;
/*
* Set elev to 1 ft. The value of 0 creates problems with
@ -345,10 +350,10 @@ public class Compute1HrNeighborList {
}
if (((int) hrap_point.x - xor) < maxx
&& ((int) hrap_point.y - yor) < maxy
&& ((int) hrap_point.x - xor) >= 0
&& ((int) hrap_point.y - yor) >= 0) {
if (((int) hrap_point.x < maxx)
&& ((int) hrap_point.y < maxy)
&& ((int) hrap_point.x >= xor)
&& ((int) hrap_point.y >=yor)) {
disagg_station_1hr[i].isoh[k] = isoh.value[k][(int) hrap_point.y
- yor][(int) hrap_point.x - xor];
@ -357,7 +362,7 @@ public class Compute1HrNeighborList {
}
i++;
s.close();
}
num_records = num_distinct_1hrs;
@ -394,7 +399,7 @@ public class Compute1HrNeighborList {
}
if (dqc.mpe_dqc_max_precip_neighbors != num_previous_neighbors
if (mpe_dqc_max_precip_neighbors != num_previous_neighbors
|| timestamp_previous_neighbors
.before(station_list_time_stamp_6hr)) {
generate = 1;
@ -402,11 +407,11 @@ public class Compute1HrNeighborList {
} else {
out.write(String.format(
"Reading %d nearest neighbor 1hr stations\n",
dqc.mpe_dqc_max_precip_neighbors));
mpe_dqc_max_precip_neighbors));
for (i = 0; i < Disagg6Hr.num_disagg_stations; i++) {
lines = in.readLine();
for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) {
for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) {
// read from neighbor list file
// read the 1hr station info for each 6hr station
lines = in.readLine();
@ -438,6 +443,7 @@ public class Compute1HrNeighborList {
generate = 0;
}
s.close();
} else {
generate = 1;
@ -453,9 +459,9 @@ public class Compute1HrNeighborList {
// ---------------------------------------------------------------
out.write(String.format(
"Generating %d nearest neighbor 1hr stations\n",
dqc.mpe_dqc_max_precip_neighbors));
mpe_dqc_max_precip_neighbors));
for (i = 0; i < Disagg6Hr.num_disagg_stations; i++) {
for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) {
for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) {
sorted[l] = 9999999;
}
@ -482,9 +488,9 @@ public class Compute1HrNeighborList {
// distance from the array.
// Note that the 'sorted' array is sorted literally!
for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) {
for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) {
if (dist < sorted[l]) {
for (h = dqc.mpe_dqc_max_precip_neighbors - 1; h > l; h--) {
for (h = mpe_dqc_max_precip_neighbors - 1; h > l; h--) {
sorted[h] = sorted[h - 1];
disagg_station_6hr[i].index[h] = disagg_station_6hr[i].index[h - 1];
@ -516,7 +522,7 @@ public class Compute1HrNeighborList {
out2 = new BufferedWriter(new FileWriter(neighbor_list_file));
if (generate == 1) {
in.close();
out2.write(String.format("%d\n", dqc.mpe_dqc_max_precip_neighbors));
out2.write(String.format("%d\n", mpe_dqc_max_precip_neighbors));
File nlf = new File(neighbor_list_file);
station_list_time_stamp_6hr.setTime(nlf.lastModified());
out2.write(String.format("%d\n",
@ -525,17 +531,17 @@ public class Compute1HrNeighborList {
}
/* print out list of 1hr nearest neighbor stations */
for (i = 0; i < Disagg6Hr.num_disagg_stations; i++) {
for (i = 0; i < num_disagg_stations; i++) {
out.write(String
.format("---%s---\n", disagg_station_6hr[i].hb5));
if (generate == 1) {
out2.write(String.format("%s\n", disagg_station_6hr[i].hb5));
}
for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) {
for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) {
temp_buf = String
.format("%d\t%s\t%5.2f\t%5.2f\t%6.2lf",
.format("%d\t%s\t%5.2f\t%5.2f\t%6.2f",
disagg_station_6hr[i].index[l],
disagg_station_1hr[disagg_station_6hr[i].index[l]].hb5,
disagg_station_1hr[disagg_station_6hr[i].index[l]].lat,
@ -548,7 +554,6 @@ public class Compute1HrNeighborList {
out.write(String.format("%s\n", temp_buf));
}
}
out.close();
out2.close();
} catch (IOException e) {
@ -557,9 +562,6 @@ public class Compute1HrNeighborList {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (out2 != null) {
out2.close();
}
@ -588,25 +590,25 @@ public class Compute1HrNeighborList {
int day = 0;
int i, j, k;
int num_disagg_stations = Disagg6Hr.num_disagg_stations;
int[] temp = new int[num_disagg_stations * dqc.mpe_dqc_max_precip_neighbors];
BufferedWriter out = disagg_log_fd;
int[] temp = new int[num_disagg_stations * mpe_dqc_max_precip_neighbors];
BufferedWriter out = Disagg6Hr.getDisagg_log_fd();
disagg_station_6hr = Disagg6Hr.disagg_station_6hr;
int qc_days = DailyQcUtils.qcDays;
try {
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
out.write(" Reading 1hr Precip Gage Values \n");
sorted_list_1hr = new int[num_disagg_stations
* dqc.mpe_dqc_max_precip_neighbors];
* mpe_dqc_max_precip_neighbors];
/* sorted_list_1hr array is array of indexes of 1hr gages */
/* defined in compute_1hr_station_list function */
for (i = 0; i < num_disagg_stations * dqc.mpe_dqc_max_precip_neighbors; i++) {
for (i = 0; i < num_disagg_stations * mpe_dqc_max_precip_neighbors; i++) {
sorted_list_1hr[i] = -1;
}
for (i = 0; i < num_disagg_stations; i++) {
for (j = 0; j < dqc.mpe_dqc_max_precip_neighbors; j++) {
sorted_list_1hr[dqc.mpe_dqc_max_precip_neighbors * i + j] = disagg_station_6hr[i].index[j];
for (j = 0; j < mpe_dqc_max_precip_neighbors; j++) {
sorted_list_1hr[mpe_dqc_max_precip_neighbors * i + j] = disagg_station_6hr[i].index[j];
}
}
@ -631,7 +633,7 @@ public class Compute1HrNeighborList {
.format(" number of non-duplicate 1hr nearest-neighbor stations = %d\n",
sorted_array_size));
valuesReadIn = new Values_1hr[dqc.qcDays * sorted_array_size];
valuesReadIn = new Values_1hr[qc_days * sorted_array_size];
out.write(String.format(
"endtime_disagg = %10.0f starttime_disagg = %10.0f\n",
@ -665,7 +667,7 @@ public class Compute1HrNeighborList {
.format("precip totalling routines found no data for gage %s and missing data substituted \n",
disagg_station_1hr[sorted_list_1hr[i]].hb5));
end_time_temp = endtime_disagg;
for (k = 0; k < dqc.qcDays; k++) {
for (k = 0; k < qc_days; k++) {
valuesReadIn[k * sorted_array_size + i].index_in_1hr_list = sorted_list_1hr[i];
valuesReadIn[k * sorted_array_size + i].ID = disagg_station_1hr[sorted_list_1hr[i]].hb5;
for (j = 0; j < 24; j++) {
@ -691,7 +693,7 @@ public class Compute1HrNeighborList {
end_time_temp = endtime_disagg;
Calendar nt = Calendar.getInstance(TimeZone
.getTimeZone("GMT"));
for (k = 0; k < dqc.qcDays; k++) {
for (k = 0; k < qc_days; k++) {
valuesReadIn[k * sorted_array_size + i].ID = disagg_station_1hr[sorted_list_1hr[i]].hb5;
for (j = 0; j < 24; j++) {
@ -720,17 +722,8 @@ public class Compute1HrNeighborList {
} /* end for (i=0 ... */
out.flush();
out.close();
} catch (IOException e) {
return;
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

View file

@ -91,7 +91,7 @@ public class DailyQcUtils {
private Date selDate;
public int qcDays;
public static int qcDays;
public int firstTok = 1;
@ -185,7 +185,7 @@ public class DailyQcUtils {
private String mpe_dqc_warningpopup_val = "";
public String mpe_gridmasks;
public static String mpe_gridmasks;
public String mpe_rfc_name;
@ -225,15 +225,15 @@ public class DailyQcUtils {
public String mpe_dev_temperature_dir;
public String mpe_station_list_dir;
public static String mpe_station_list_dir;
public String mpe_climo_list_dir;
public String mpe_prism_dir;
public int mpe_dqc_max_precip_neighbors;
public static int mpe_dqc_max_precip_neighbors;
public int mpe_dqc_max_temp_neighbors;
public static int mpe_dqc_max_temp_neighbors;
public float mpe_dqc_precip_deviation;
@ -301,13 +301,13 @@ public class DailyQcUtils {
public int pid = newPid();
public int emonth;
public static int emonth;
public int smonth;
public static int smonth;
private int max_basins;
public Calendar btime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
public static Calendar btime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
/* Define timefile file extensions. */
public String timefile[][] = {

View file

@ -70,6 +70,7 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jun 1, 2011 snaples Initial creation
* Mar 2, 2015 15660 snaples Fixed issues with null pointer on writing to closed file.
*
* </pre>
*
@ -79,15 +80,13 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr;
public class Delete1hrDisaggValues {
DailyQcUtils dqc = DailyQcUtils.getInstance();
public void delete1hrDisaggValues() {
Values_1hr[] disaggValues = Disagg6Hr.disaggValues;
BufferedWriter disagg_log_fd = Disagg6Hr.disagg_log_fd;
BufferedWriter disagg_log_fd = Disagg6Hr.getDisagg_log_fd();
String[] obsdate = Disagg6Hr.obsdate;
Date[] obsdate_date_t = Disagg6Hr.obsdate_date_t;
Values_6hr[] values6hr = Disagg6Hr.values6hr;
// int num_days_to_qc = dqc.qcDays;
int num_days_to_qc = DailyQcUtils.qcDays;
int num_disagg_stations = Disagg6Hr.num_disagg_stations;
String ts = "";
@ -102,8 +101,6 @@ public class Delete1hrDisaggValues {
ts = "PZ";
try {
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
/*-----------------------------------------*/
/* populate the HourlyPP structure */
/*-----------------------------------------*/
@ -123,14 +120,14 @@ public class Delete1hrDisaggValues {
out.write("\nIn delete1hrDisaggValues\n");
for (j = 0; j < dqc.qcDays + 1; j++) {
for (j = 0; j < num_days_to_qc + 1; j++) {
out.write("\n");
out.write(String.format(" \t Day %d\n", j));
hourlyPPId.setObsdate(obsdate_date_t[j]);
jj = j;
if (j == dqc.qcDays) {
if (j == num_days_to_qc) {
jj = jj - 1;
}
@ -184,7 +181,6 @@ public class Delete1hrDisaggValues {
out.write("\n");
/* update record */
GagePPWrite.update_gage_rec(hourlyPP);
} else if (j == jj) {
@ -230,7 +226,6 @@ public class Delete1hrDisaggValues {
out.write("\n");
/* update record */
GagePPWrite.update_gage_rec(hourlyPP);
}
@ -240,18 +235,6 @@ public class Delete1hrDisaggValues {
} catch (IOException e) {
return;
}
// finally {
// try {
// if (out != null) {
// out.close();
// }
//
// } catch (IOException e) {
// e.printStackTrace();
// }
//
// }
}
public int deleteHourlyPP(String where) {

View file

@ -58,6 +58,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 20, 2009 snaples Initial creation
* Mar 2, 2015 15660 snaples Fixed the disagg logging and corrected the procedure.
*
* </pre>
*
@ -114,7 +115,7 @@ public class Disagg6Hr {
public static int disagg_maxx, disagg_maxy;
Calendar station_list_time_stamp_6hr;
Date station_list_time_stamp_6hr;
public static int ret_neighbors = -1;
@ -143,9 +144,9 @@ public class Disagg6Hr {
public static Date end_time_temp;
// int num_days_to_qc;
int num_days_to_qc;
Date btim = dqc.btime.getTime();
Date btim = DailyQcUtils.btime.getTime();
Values_1hr valuesReadIn;
@ -155,7 +156,7 @@ public class Disagg6Hr {
static int first = 0;
int mpe_dqc_max_precip_neighbors = dqc.mpe_dqc_max_precip_neighbors;
int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors;
DisaggGridMethod dgm = new DisaggGridMethod();
@ -228,34 +229,36 @@ public class Disagg6Hr {
}
}
public void disagg6hr() {
public void disagg6hr() throws IOException {
long start_time, end_time;
String logdir;
String station_list_dir = dqc.mpe_station_list_dir;
String station_list_dir = DailyQcUtils.mpe_station_list_dir;
String disagg_log_file;
String gridmask_dir = dqc.mpe_gridmasks;
String gridmask_dir = DailyQcUtils.mpe_gridmasks;
String station_list_file;
String mpe_disagg_execute;
// char buf[] = new char[10];
String buf = "";
String cval6hr = "";
station_list_time_stamp_6hr = SimulatedTime.getSystemTime().getTime();
Date currentTime = SimulatedTime.getSystemTime().getTime();
String datestring = "";
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
final SimpleDateFormat ddf = new SimpleDateFormat("yyyyMMddHHMM");
ddf.setTimeZone(TimeZone.getTimeZone("GMT"));
int max_stations = dqc.precip_stations.size();
int max_stations = DailyQcUtils.precip_stations.size();
ArrayList<Station> station = new ArrayList<Station>();
station = DailyQcUtils.precip_stations;
num_days_to_qc = DailyQcUtils.qcDays;
int ier, k = 0, j, i, ii;
int emonth = dqc.emonth;
int smonth = dqc.smonth;
int emonth = DailyQcUtils.emonth;
int smonth = DailyQcUtils.smonth;
MeanMonthlyPrecip mmp = new MeanMonthlyPrecip();
Isoh isoh = mmp.getIsoh();
String area_val_local = dqc.currentQcArea;
Pdata pdata[] = dqc.pdata;
String area_val_local = DailyQcUtils.currentQcArea;
Pdata pdata[] = DailyQcUtils.pdata;
AppsDefaults appsDefaults = AppsDefaults.getInstance();
QCHRAP hrap_point = new QCHRAP();
@ -265,9 +268,7 @@ public class Disagg6Hr {
start_time = tt.getTime();
// num_days_to_qc = DailyQcUtils.qcDays;
// station = DailyQcUtils.precip_stations;
currentTime.getTime();
datestring = ddf.format(currentTime);
@ -281,6 +282,10 @@ public class Disagg6Hr {
neighbor_list_file = String.format("%s/%s_disagg_1hr_neighbors",
gridmask_dir, area_val_local);
disagg_stations_fd = station_list_file;
BufferedReader in = null;
BufferedWriter out = null;
FileWriter fd_log = null;
/*---------------------------------------------*/
/* First time only: */
@ -309,27 +314,43 @@ public class Disagg6Hr {
disagg_log_file = String
.format("%s/disagg_%sz", logdir, datestring);
// BufferedWriter disagg_log_fd = null;
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(disagg_stations_fd));
disagg_log_fd = new BufferedWriter(new FileWriter(
disagg_log_file));
fd_log = new FileWriter(disagg_log_file);
out = new BufferedWriter(fd_log);
disagg_log_fd = out;
disagg_log_fd.write("\t\t-- 6hr to 1hr Disaggregation -- \n");
disagg_log_fd.write("\t\t-- Version AWIPS II 11.9.0-1 -- \n");
disagg_log_fd.write("hydrologic day = 12z - 12z\n");
first = 1;
disagg_method = appsDefaults.getToken("mpe_disagg_method");
} catch (IOException e) {
statusHandler.handle(Priority.WARN,
"Warning: Could not open disagg log file...\n"
+ "exiting from disagg routine..mpe_editor continuing...\n",
e);
e.printStackTrace();
return;
}
} // first block
logdir = appsDefaults.getToken("mpe_editor_logs_dir");
disagg_log_file = String.format("%s/disagg_%sz", logdir, datestring);
disagg_method = appsDefaults.getToken("mpe_disagg_method");
delete_values = appsDefaults.getToken("mpe_disagg_delete_1hr");
if(delete_values == null){
delete_values = "on";
}
disagg_log_fd.write(String.format(
"6hr disagg station list file name: %s\n",
station_list_file));
try {
disagg_log_fd.write(String.format(
"6hr disagg station list file name: %s\n",
station_list_file));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
xor = (int) MPEDataManager.getInstance().getHRAPExtent()
.getMinX();
@ -345,15 +366,23 @@ public class Disagg6Hr {
endtime_disagg = btim;
Calendar nt = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
nt.setTime(endtime_disagg);
nt.add(Calendar.SECOND, -(dqc.qcDays * 86400));
nt.add(Calendar.SECOND, -(num_days_to_qc * 86400));
starttime_disagg = nt.getTime();
end_time_temp = endtime_disagg;
disagg_log_fd.write(String.format(
" endtime = %10.0f starttime = %10.0f\n",
(float) endtime_disagg.getTime(),
(float) starttime_disagg.getTime()));
try {
disagg_log_fd.write(String.format(
" endtime = %10.0f starttime = %10.0f\n",
(float) endtime_disagg.getTime(),
(float) starttime_disagg.getTime()));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(in == null){
in = new BufferedReader(new FileReader(disagg_stations_fd));
}
buf = in.readLine();
num_disagg_stations = Integer.parseInt(buf);
if (num_disagg_stations <= 0) {
@ -363,11 +392,11 @@ public class Disagg6Hr {
return;
}
disagg_station_6hr = new Station[(dqc.qcDays * num_disagg_stations)];
disaggValues = new Values_1hr[(dqc.qcDays * num_disagg_stations)];
values6hr = new Values_6hr[(dqc.qcDays * num_disagg_stations)];
disagg_station_6hr = new Station[(num_days_to_qc * num_disagg_stations)];
disaggValues = new Values_1hr[(num_days_to_qc * num_disagg_stations)];
values6hr = new Values_6hr[(num_days_to_qc * num_disagg_stations)];
for (int z = 0; z < (dqc.qcDays * num_disagg_stations); z++) {
for (int z = 0; z < (num_days_to_qc * num_disagg_stations); z++) {
disagg_station_6hr[z] = dqc.new Station();
disaggValues[z] = new Values_1hr();
values6hr[z] = new Values_6hr();
@ -378,12 +407,12 @@ public class Disagg6Hr {
dist_6hr_to_1hr[z] = new Dist();
}
obsdate = new String[(dqc.qcDays + 1)];
obsdate_date_t = new Date[dqc.qcDays + 1];
obsdate = new String[(num_days_to_qc + 1)];
obsdate_date_t = new Date[num_days_to_qc + 1];
disagg_log_fd.write(" 6hr Disagg Station List\n");
for (j = 0; j < dqc.qcDays; j++) {
for (j = 0; j < num_days_to_qc; j++) {
for (i = 0; i < num_disagg_stations; i++) {
index = (j * num_disagg_stations) + i;
@ -405,15 +434,9 @@ public class Disagg6Hr {
disagg_station_6hr[index].parm = "";
disagg_station_6hr[index].cparm = "";
// char[] kbuf = new char[200];
if (j == 0) {
// int p = in.read(kbuf, 0, 80);
//
// if (p <= 0) {
if (in.ready()) {
buf = in.readLine();
// break;
// }
}
Scanner s = new Scanner(buf);
@ -432,7 +455,7 @@ public class Disagg6Hr {
ll);
Coordinate gridCell = null;
try {
try {
// try {
gridCell = rc
.asGridCell(
com.raytheon.uf.common.hydro.spatial.HRAP
@ -445,8 +468,7 @@ public class Disagg6Hr {
} catch (FactoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
@ -476,17 +498,17 @@ public class Disagg6Hr {
}
if ((((int) hrap_point.x - xor) < maxx)
&& (((int) hrap_point.y - yor) < maxy)
&& (((int) hrap_point.x - xor) >= 0)
&& (((int) hrap_point.y - yor) >= 0)) {
if ((((int) hrap_point.x) < maxx)
&& (((int) hrap_point.y) < maxy)
&& (((int) hrap_point.x >= xor))
&& (((int) hrap_point.y >= yor))) {
disagg_station_6hr[i].isoh[k] = isoh.value[k][(int) hrap_point.y
- yor][(int) hrap_point.x - xor];
}
}
s.close();
} else {
values6hr[index].hrapx_local = values6hr[i].hrapx_local;
values6hr[index].hrapy_local = values6hr[i].hrapy_local;
@ -558,16 +580,16 @@ public class Disagg6Hr {
}
obsdate[dqc.qcDays] = "";
obsdate[num_days_to_qc] = "";
// note that end_time_temp is not being decremented
// as in the above loop because it will be decremented
// one extra time in the loop already.
obsdate[dqc.qcDays] = sdf.format(end_time_temp);
obsdate[num_days_to_qc] = sdf.format(end_time_temp);
disagg_log_fd.write(String.format(
"datestring for disagg day %d = %s\n", dqc.qcDays,
obsdate[dqc.qcDays]));
obsdate_date_t[dqc.qcDays] = end_time_temp;
"datestring for disagg day %d = %s\n", num_days_to_qc,
obsdate[num_days_to_qc]));
obsdate_date_t[num_days_to_qc] = end_time_temp;
/* print 6hr values to log */
disagg_log_fd.write("\n");
@ -577,7 +599,7 @@ public class Disagg6Hr {
index = -1;
for (i = 0; i < num_disagg_stations; i++) {
for (j = 0; j < dqc.qcDays; j++) {
for (j = 0; j < num_days_to_qc; j++) {
index = (j * num_disagg_stations) + i;
if (values6hr[index].ID
@ -665,18 +687,13 @@ public class Disagg6Hr {
long stm = st.lastModified();
Date std = SimulatedTime.getSystemTime().getTime();
std.setTime(stm);
station_list_time_stamp_6hr.setTime(std);
station_list_time_stamp_6hr.setTime(std.getTime());
st = new File(neighbor_list_file);
ret_neighbors = (int) st.lastModified();
// disagg_log_fd.close();
c1n.compute1hrStationList();
c1n.read1hrGageVals();
}
// disagg_log_fd = new BufferedWriter(new FileWriter(
// disagg_log_file));
disagg_log_fd.write("---------------------\n");
// disagg_log_fd.close();
/*---------------------------------------------*/
/* disagg 6hr to 1hr values */
@ -727,31 +744,9 @@ public class Disagg6Hr {
disagg_log_fd.close();
in.close();
// return;
} catch (IOException e) {
statusHandler
.handle(Priority.WARN,
"Warning: Could not open disagg log file...\n"
+ "exiting from disagg routine..mpe_editor continuing...\n",
e);
e.printStackTrace();
return;
} finally {
try {
if (disagg_log_fd != null) {
disagg_log_fd.close();
}
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// here
}
public static BufferedWriter getDisagg_log_fd() {
return disagg_log_fd;
} // here
}

View file

@ -71,7 +71,7 @@ public class DisaggPointMethod {
double[][] totals_1hr;
int mpe_dqc_max_precip_neighbors = dqc.mpe_dqc_max_precip_neighbors;
int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors;
Dist[] dist_6hr_to_1hr = Disagg6Hr.dist_6hr_to_1hr;
@ -99,7 +99,7 @@ public class DisaggPointMethod {
float stotal = 0.f;
int num_missing_periods = 0;
int num_disagg_stations = Disagg6Hr.num_disagg_stations;
int num_days_to_qc = dqc.qcDays;
int num_days_to_qc = DailyQcUtils.qcDays;
// int num_1hrs_reported = 0;
boolean go_to_next_neighbor = false;
boolean next_6hr_station = false;

View file

@ -36,6 +36,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Feb 23, 2009 snaples Initial creation
* Mar 2, 2015 15660 snaples Fixed issue with if statement testing CPARM and checking for both values to be true, broken logic.
*
* </pre>
*
@ -133,8 +134,8 @@ public class InitPrecipClimo {
continue;
}
if (tokens[1].equalsIgnoreCase("PPMPBCM")
&& tokens[1].equalsIgnoreCase("PPMRZCM")) {
if (!(tokens[1].equalsIgnoreCase("PPMPBCM"))
&& !(tokens[1].equalsIgnoreCase("PPMRZCM"))) {
line = in.readLine();
++record_count;
continue;

View file

@ -44,6 +44,7 @@ import com.raytheon.viz.mpe.core.MPEDataManager;
* ------------ ---------- ----------- --------------------------
* Feb 24, 2009 snaples Initial creation
* April , 2012 8672 lbousaidi fixed the reading of the PRISM data.
* Mar 2, 2015 15660 snaples Fixed problem with color scale using wrong values. Causing grids to be all zeros.
* </pre>
*
* @author snaples
@ -90,9 +91,8 @@ public class MeanMonthlyPrecip {
displayUnit = NonSI.INCH;
dataUnit = SI.MILLIMETER;
cmc.setDisplayUnit(displayUnit);
cmc.setColorMapUnit(SI.MILLIMETER);
cmc.setDataUnit(dataUnit);
UnitConverter dataToImage = cmc.getColorMapToDisplayConverter();//cmc.getDataToImageConverter();
UnitConverter dataToImage = cmc.getDataToImageConverter();
/*
* Loop over the months. Determine for which months PRISM data are

View file

@ -38,6 +38,7 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 22, 2009 snaples Initial creation
* Mar 2, 2015 15660 snaples Fixed issue with writing to file after stream was closed.
*
* </pre>
*
@ -47,16 +48,14 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr;
public class Write1hrVals6HrGages {
private DailyQcUtils dqc = DailyQcUtils.getInstance();
public void write1hrValuesFor6hrGages() {
Values_1hr[] disaggValues = Disagg6Hr.disaggValues;
BufferedWriter disagg_log_fd = Disagg6Hr.disagg_log_fd;
BufferedWriter disagg_log_fd = Disagg6Hr.getDisagg_log_fd();
String[] obsdate = Disagg6Hr.obsdate;
Date[] obsdate_date_t = Disagg6Hr.obsdate_date_t;
Values_6hr[] values6hr = Disagg6Hr.values6hr;
int num_days_to_qc = dqc.qcDays;
int num_days_to_qc = DailyQcUtils.qcDays;
int num_disagg_stations = Disagg6Hr.num_disagg_stations;
String ts = "";
@ -71,8 +70,6 @@ public class Write1hrVals6HrGages {
ts = "PZ";
try {
// out = new BufferedWriter(new FileWriter(disagg_log_fd));
/*-----------------------------------------*/
/* populate the HourlyPP structure */
/*-----------------------------------------*/
@ -273,20 +270,8 @@ public class Write1hrVals6HrGages {
} /* end for (i=0;i<num_disagg_stations;i++) */
} /* end for (j=0;j<num_days_to_qc+1;j++) */
// out.close();
} catch (IOException e) {
return;
}
// finally {
// try {
// if (out != null) {
// out.close();
// }
//
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
}
}

View file

@ -63,16 +63,16 @@ public class WriteQPFGrids {
// fprintf(fp,"%d %d %d %d %d\n",hrap_grid->hrap_minx,hrap_grid->hrap_miny,hrap_grid->maxi
// ,hrap_grid->maxj,iflag);
StringBuffer sb = new StringBuffer();
sb.append(String.format("%d %d %d %d %d", dqc.getHrap_grid().hrap_minx,
dqc.getHrap_grid().hrap_miny, dqc.getHrap_grid().maxi, dqc.getHrap_grid().maxj, iflag));
sb.append(String.format("%d %d %d %d %d", DailyQcUtils.getHrap_grid().hrap_minx,
DailyQcUtils.getHrap_grid().hrap_miny, DailyQcUtils.getHrap_grid().maxi, DailyQcUtils.getHrap_grid().maxj, iflag));
out.write(sb.toString());
out.newLine();
// for (j = hrap_grid.maxj - hrap_grid.hrap_miny - 1; j >= 0; j--) {
for (i = 0; i < dqc.getHrap_grid().maxi; i++) {
for (i = 0; i < DailyQcUtils.getHrap_grid().maxi; i++) {
sb.setLength(0);
for (j = 0; j < dqc.getHrap_grid().maxj; j++) {
sb.append(String.format(" %5d", dqc.pcp.value[i][j]));
for (j = 0; j < DailyQcUtils.getHrap_grid().maxj; j++) {
sb.append(String.format(" %5d", DailyQcUtils.pcp.value[i][j]));
}
out.write(sb.toString());
out.newLine();

View file

@ -240,7 +240,6 @@
<property name="provider" ref="brokerConnectionsProvider" />
</bean>
<!-- Service Backup Handlers -->
<bean id="GetPrimarySiteHandler" class="com.raytheon.uf.edex.site.handlers.GetPrimarySiteHandler"/>

View file

@ -14,5 +14,5 @@ purge.svcbu.logs.cron=0+30+0+*+*+?
purge.gfe.products.isc.cron=0+45+0+*+*+?
purge.gfe.products.atbl.cron=0+50+0+*+*+?
# Interval at which the gfe orphaned locks are cleared
# Interval at which gfe orphaned locks are cleared
clear.gfe.orphaned.locks.cron = 0+0/10+*+*+*+?

View file

@ -34,6 +34,7 @@ import org.hibernate.StatelessSession;
import org.hibernate.Transaction;
import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID;
//import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID;
import com.raytheon.uf.common.dataplugin.gfe.server.lock.Lock;
import com.raytheon.uf.common.dataplugin.gfe.server.lock.LockTable;
import com.raytheon.uf.common.message.WsId;
@ -53,7 +54,7 @@ import com.raytheon.uf.edex.database.dao.DaoConfig;
* 04/19/13 #1949 rjpeter Normalized GFE Database.
* 06/20/13 #2127 rjpeter Set session to read only.
* 10/16/2014 3454 bphillip Upgrading to Hibernate 4
* 01/07/15 629 mgamazaychikov Add getAllLocks method.
* 03/03/15 629 mgamazaychikov Add getAllLocks method.
* </pre>
*
* @author bphillip
@ -195,8 +196,8 @@ public class GFELockDao extends CoreDao {
}
@SuppressWarnings("unchecked")
public Map<ParmID, LockTable> getAllLocks() throws DataAccessLayerException{
Map<ParmID, LockTable> lockMap = new HashMap<ParmID, LockTable>();
public List<Lock> getAllLocks(final String siteId)
throws DataAccessLayerException {
Session sess = null;
Transaction tx = null;
@ -204,24 +205,12 @@ public class GFELockDao extends CoreDao {
sess = getSession();
sess.setDefaultReadOnly(true);
tx = sess.beginTransaction();
Query query = sess
.createQuery("FROM Lock");
.createQuery("FROM Lock WHERE parmId in (SELECT id FROM ParmID WHERE dbId in (SELECT id FROM DatabaseID WHERE siteId = ?))");
query.setParameter(0, siteId);
List<Lock> locks = query.list();
tx.commit();
// populate Lock table
for (Lock lock : locks) {
WsId wid = lock.getWsId();
ParmID pid = lock.getParmId();
LockTable lockTable = lockMap.get(pid);
if (lockTable == null) {
lockTable = new LockTable(pid, new ArrayList<Lock>(), wid);
lockMap.put(pid, lockTable);
}
lockTable.addLock(lock);
}
return lockMap;
return locks;
} catch (Exception e) {
if (tx != null) {
try {
@ -230,16 +219,13 @@ public class GFELockDao extends CoreDao {
logger.error("Error occurred rolling back transaction", e1);
}
}
throw new DataAccessLayerException(
"Unable to look up locks ", e);
throw new DataAccessLayerException("Unable to look up locks for site " + siteId, e);
} finally {
if (sess != null) {
try {
sess.close();
} catch (Exception e) {
logger.error(
"Error occurred closing database session", e);
logger.error("Error occurred closing database session", e);
}
}
}

View file

@ -22,21 +22,22 @@ package com.raytheon.edex.plugin.gfe.server.lock;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.raytheon.edex.plugin.gfe.server.IFPServer;
import com.raytheon.edex.plugin.gfe.server.lock.LockManager;
import com.raytheon.edex.plugin.gfe.util.SendNotifications;
import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException;
import com.raytheon.uf.common.dataplugin.gfe.server.lock.Lock;
import com.raytheon.uf.common.dataplugin.gfe.server.lock.LockTable;
import com.raytheon.uf.common.dataplugin.gfe.server.lock.LockTable.LockMode;
import com.raytheon.uf.common.dataplugin.gfe.server.message.ServerResponse;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.GfeNotification;
import com.raytheon.uf.common.dataplugin.gfe.server.notify.LockNotification;
import com.raytheon.uf.common.dataplugin.gfe.server.request.LockRequest;
import com.raytheon.uf.common.message.WsId;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.time.TimeRange;
import com.raytheon.uf.edex.core.EDEXUtil;
import com.raytheon.uf.edex.esb.camel.jms.IBrokerConnectionsProvider;
/**
@ -50,7 +51,7 @@ import com.raytheon.uf.edex.esb.camel.jms.IBrokerConnectionsProvider;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jan 07, 2015 629 mgamazaychikov Initial creation
* Mar 03, 2015 629 mgamazaychikov Initial creation
*
* </pre>
*
@ -62,148 +63,90 @@ public class ClearGfeOrphanedLocks {
private static IBrokerConnectionsProvider provider;
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(ClearGfeOrphanedLocks.class);
public final String CAVE = "CAVE";
public static void setProvider(IBrokerConnectionsProvider provider) {
ClearGfeOrphanedLocks.provider = provider;
}
private Set<String> breakAllLocks(List<LockTable> lockTables,
LockManager lockMgr) {
Set<String> inactives = new HashSet<String>();
for (LockTable lockTable : lockTables) {
for (Lock lock : lockTable.getLocks()) {
TimeRange tr = lock.getTimeRange();
List<LockRequest> lreq = new ArrayList<LockRequest>();
lreq.add(new LockRequest(lock.getParmId(), tr,
private void breakLocks(Set<String> clients, List<Lock> lockList,
LockManager lockMgr, String siteId) {
boolean foundOrpanedLocks = false;
List<LockRequest> lreq = new ArrayList<LockRequest>();
StringBuilder sb = new StringBuilder();
for (Lock lock : lockList) {
String lockWsid = lock.getWsId().toString();
if (!clients.contains(lockWsid)) {
foundOrpanedLocks = true;
List<Lock> lst = new ArrayList<Lock>();
lst.add(lock);
// Inactive clients found
lreq.add(new LockRequest(lock.getParmId(), lock.getTimeRange(),
LockMode.BREAK_LOCK));
lockMgr.requestLockChange(lreq, lock.getWsId());
if (!inactives.contains(lock.getWsId().toPrettyString())
&& !inactives.contains(lock.getParmId().toString())) {
String message = " Breaking orphaned lock on "
+ lock.getParmId().toString() + " owned by "
+ lock.getWsId().toPrettyString() + ".";
inactives.add(message);
}
sb.append(" Breaking orphaned lock for site " + siteId + " on "
+ lock.getParmId().toString() + " owned by "
+ lock.getWsId().toPrettyString() + ".");
}
}
return inactives;
}
private Set<String> breakLocks(Set<String> clients,
List<LockTable> lockTables, LockManager lockMgr) {
Set<String> inactives = new HashSet<String>();
for (LockTable lockTable : lockTables) {
for (Lock lock : lockTable.getLocks()) {
String lockedWsid = lock.getWsId().toString();
for (String client : clients) {
if (!lockedWsid.equals(client)) {
// Inactive CAVE clients found - break its lock
List<LockRequest> lreq = new ArrayList<LockRequest>();
lreq.add(new LockRequest(lock.getParmId(), lock
.getTimeRange(), LockMode.BREAK_LOCK));
lockMgr.requestLockChange(lreq, lock.getWsId());
if (!inactives
.contains(lock.getWsId().toPrettyString())
&& !inactives.contains(lock.getParmId()
.toString())) {
String message = " Breaking orphaned lock on "
+ lock.getParmId().toString()
+ " owned by "
+ lock.getWsId().toPrettyString() + ".";
inactives.add(message);
}
if (foundOrpanedLocks) {
statusHandler.info(sb.toString());
WsId requestor = new WsId(null, null, "ClearGfeOrphanedLocks");
ServerResponse<List<LockTable>> sr = lockMgr.requestLockChange(
lreq, requestor);
if (sr.isOkay()) {
try {
List<LockTable> lockTables = sr.getPayload();
List<GfeNotification> notes = new ArrayList<GfeNotification>(
lockTables.size());
for (LockTable table : lockTables) {
notes.add(new LockNotification(table, siteId));
}
ServerResponse<?> notifyResponse = SendNotifications
.send(notes);
if (!notifyResponse.isOkay()) {
statusHandler.error(notifyResponse.message());
}
// send out grid update notifications
notifyResponse = SendNotifications.send(sr.getNotifications());
if (!notifyResponse.isOkay()) {
statusHandler.error(notifyResponse.message());
}
} catch (Exception e) {
statusHandler.error("Error sending lock notification", e);
}
}
} else {
statusHandler.error(sr.message());
}
return;
} else {
statusHandler.info(" No orphaned locks found for site " + siteId
+ ".");
return;
}
return inactives;
}
@SuppressWarnings("unchecked")
public void clearLocksCron() throws Exception {
Date executionTime = new Date(System.currentTimeMillis());
if (statusHandler.isPriorityEnabled(Priority.INFO)) {
String msg = "Started at " + executionTime;
statusHandler.info(msg);
}
statusHandler
.info("Started at " + new Date(System.currentTimeMillis()));
Set<String> clients = new HashSet<String>(provider.getConnections());
Set<String> inactives = new HashSet<String>();
String siteId = EDEXUtil.getEdexSite();
IFPServer ifpServer = IFPServer.getActiveServer(siteId);
if (ifpServer == null) {
if (statusHandler.isPriorityEnabled(Priority.INFO)) {
String msg = "No active IFPServer for site " + siteId;
statusHandler.info(msg);
return;
}
if (IFPServer.getActiveServers().size() == 0) {
statusHandler.info("No active IFPServer found.");
return;
}
LockManager lockMgr = ifpServer.getLockMgr();
List<LockTable> lockTables = (List<LockTable>) lockMgr.getAllLocks()
.getPayload();
/*
* There are no locks in the db.
*/
if (lockTables.size() == 0) {
if (statusHandler.isPriorityEnabled(Priority.INFO)) {
String msg = "No locks found for site " + siteId;
statusHandler.info(msg);
return;
}
}
/*
* Filter out non-CAVE clients.
*/
for (Iterator<String> iterator = clients.iterator(); iterator.hasNext();) {
String client = iterator.next();
if (!client.contains(CAVE)) {
iterator.remove();
}
}
/*
* If there are no active CAVE clients but the locks exist, they all
* must be orphaned -> break the locks.
*/
if (clients.isEmpty() && lockTables.size() > 0) {
inactives = breakAllLocks(lockTables, lockMgr);
if (statusHandler.isPriorityEnabled(Priority.INFO)) {
StringBuilder sb = new StringBuilder();
for (String in : inactives) {
sb.append(in);
}
statusHandler.info(sb.toString());
return;
}
}
/*
* There are active CAVE clients, find orphaned locks and break the
* locks.
*/
inactives = breakLocks(clients, lockTables, lockMgr);
if (inactives.isEmpty()) {
if (statusHandler.isPriorityEnabled(Priority.INFO)) {
String msg = "No orphaned locks found for site " + siteId;
statusHandler.info(msg);
return;
}
} else {
if (statusHandler.isPriorityEnabled(Priority.INFO)) {
StringBuilder sb = new StringBuilder();
for (String in : inactives) {
sb.append(in);
}
statusHandler.info(sb.toString());
List<IFPServer> ifpServers = IFPServer.getActiveServers();
for (IFPServer ifps : ifpServers) {
LockManager lockMgr = ifps.getLockMgr();
String siteId = ifps.getSiteId();
List<Lock> lockList;
try {
lockList = (List<Lock>) lockMgr.getAllLocks(siteId);
// find orphaned locks and break them
breakLocks(clients, lockList, lockMgr, siteId);
return;
} catch (GfeException e) {
statusHandler.error("Error retrieving all locks", e);
}
}
}

View file

@ -68,7 +68,7 @@ import com.raytheon.uf.edex.database.DataAccessLayerException;
* 06/13/13 #2044 randerso Converted from singleton to instance per
* site managed by IFPServer
* 10/07/2014 #3684 randerso Restructured IFPServer start up
* 01/07/15 629 mgamazaychikov Add getAllLocks method.
* 03/03/15 629 mgamazaychikov Add getAllLocks method.
* </pre>
*
* @author bphillip
@ -909,19 +909,15 @@ public class LockManager {
}
}
public ServerResponse <?> getAllLocks() {
ServerResponse<List<LockTable>> sr = new ServerResponse<List<LockTable>>();
public List<Lock> getAllLocks(String siteId) throws GfeException {
List<Lock> lt = new ArrayList<Lock>();
try {
List<LockTable> payLoad = null;
Map<ParmID, LockTable> lockMap = dao.getAllLocks();
payLoad = new ArrayList<LockTable>(lockMap.size());
payLoad.addAll(lockMap.values());
sr.setPayload(payLoad);
lt = dao.getAllLocks(siteId);
} catch (Exception e) {
sr.addMessage("Error getting lock tables for");
sr.setPayload(new ArrayList<LockTable>(0));
throw new GfeException("Error getting lock tables for site "
+ this.siteId + ": " + e.getMessage());
}
return sr;
return lt;
}
}

View file

@ -11,7 +11,7 @@
200:200:Significant Tornado probability:%:SIGTRNDPROB
201:201:Significant Hail probability:%:SIGHAILPROB
202:202:Significant Wind probability:%:SIGWINDPROB
203:203:Categorical Lightning:categorical:CLGHT
203:203:Categorical Lightning:categorical:CLGTN
204:204:Number of mixed layers next to surface:integer:MIXLY
205:205:Flight Category::FLGHT
206:206:Confidence - Ceiling::CICEL
@ -28,7 +28,7 @@
217:217:Supercooled Large Droplet Icing:mm:SIPD
218:218:Radiative emissivity:mm:EPSR
219:219:Turbulence Potential Forecast Index::TPFI
220:220:Categorical Servre Thunderstorm::SVRTS
220:220:Categorical Severe Thunderstorm::SVRTS
221:221:Probability of Convection:%:PROCON
222:222:Categorical Convection :categorical:CONVP
223:223:Cumulonimbus Horizontal Exten:%:CBHE

View file

@ -18,4 +18,4 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<DerivedParameter abbreviation="CONVP2hr" name="2hr Convection potential" unit="%"/>
<DerivedParameter abbreviation="CONVP2hr" name="2hr Convection potential" unit=""/>