Omaha #4501 - Changed database connections. Got rid of Vector.
Former-commit-id: 61a635e29d3d823c750cf8b69f683766c47898c4
This commit is contained in:
parent
ae058a5bc7
commit
3ca1c006aa
7 changed files with 261 additions and 391 deletions
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Xdat Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.xdat;singleton:=true
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Version: 1.15.0.qualifier
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
@ -14,5 +14,6 @@ Bundle-ActivationPolicy: lazy
|
|||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Import-Package: com.raytheon.uf.common.ohd,
|
||||
com.raytheon.uf.common.time,
|
||||
com.raytheon.uf.common.time.util,
|
||||
com.raytheon.uf.common.util
|
||||
Bundle-ClassPath: com.raytheon.viz.xdat.jar
|
||||
|
|
|
@ -21,7 +21,6 @@ package com.raytheon.viz.xdat;
|
|||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
|
@ -48,6 +47,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* 10 Nov 2008 lvenable Initial creation.
|
||||
* 10 Feb 2009 wkwock Added functions.
|
||||
* 31 May 2015 4501 skorolev Got rid of Vector.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -176,8 +177,9 @@ public class GroupDataDlg extends CaveSWTDialog {
|
|||
*/
|
||||
private void retrieveAndDisplayGroupData() {
|
||||
String selectedGroup = groupList.getItem(groupList.getSelectionIndex());
|
||||
|
||||
String groupsDir = AppsDefaults.getInstance().getToken("xdat_groups_dir");
|
||||
|
||||
String groupsDir = AppsDefaults.getInstance().getToken(
|
||||
"xdat_groups_dir");
|
||||
|
||||
File file = new File(groupsDir + File.separator + selectedGroup);
|
||||
|
||||
|
@ -186,10 +188,9 @@ public class GroupDataDlg extends CaveSWTDialog {
|
|||
|
||||
StringBuilder strBld = new StringBuilder();
|
||||
for (int i = 0; i < idList.size(); i++) {
|
||||
|
||||
Vector<String[]> results = databaseMgr.getGroupData(idList.get(i),
|
||||
displayCB.getStartDate(), displayCB.getEndDate());
|
||||
|
||||
java.util.List<String[]> results = databaseMgr.getGroupData(
|
||||
idList.get(i), displayCB.getStartDate(),
|
||||
displayCB.getEndDate());
|
||||
if (results == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -204,11 +205,11 @@ public class GroupDataDlg extends CaveSWTDialog {
|
|||
/**
|
||||
* Format the group data.
|
||||
*
|
||||
* @param dataArray
|
||||
* @param results
|
||||
* Array of data to be formatted for the display.
|
||||
* @return StringBuilder class containing the formatted data.
|
||||
*/
|
||||
private StringBuilder formatGroupData(Vector<String[]> dataArray) {
|
||||
private StringBuilder formatGroupData(java.util.List<String[]> results) {
|
||||
|
||||
StringBuilder strBld = new StringBuilder();
|
||||
|
||||
|
@ -221,7 +222,7 @@ public class GroupDataDlg extends CaveSWTDialog {
|
|||
String hdr = " ID PE DUR TS E OBSTIME PRODUCT VALUE CHANGE";
|
||||
String dashLine = "-------------------------------------------------------------------------------";
|
||||
|
||||
for (String[] rowData : dataArray) {
|
||||
for (String[] rowData : results) {
|
||||
|
||||
if (rowData.length == 2) {
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* 10 Nov 2008 lvenable Initial creation.
|
||||
* 10 Feb 2009 wkwock Added functions.
|
||||
* 22 May 2015 skorolev Corrected shefParamCode. Got rid of Vector.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -203,7 +204,6 @@ public class InsertDataDlg extends CaveSWTDialog {
|
|||
Label idLbl = new Label(topCtrlComp, SWT.RIGHT);
|
||||
idLbl.setText("ID: ");
|
||||
idLbl.setLayoutData(gd);
|
||||
;
|
||||
|
||||
gd = new GridData(100, SWT.DEFAULT);
|
||||
idTF = new Text(topCtrlComp, SWT.BORDER);
|
||||
|
@ -246,10 +246,11 @@ public class InsertDataDlg extends CaveSWTDialog {
|
|||
return;
|
||||
}
|
||||
|
||||
String[] shefParamCode = databaseMgr.getShefParamCode(ID, PE);
|
||||
java.util.List<String> shefParamCode = databaseMgr
|
||||
.getShefParamCode(ID, PE);
|
||||
if (shefParamCode != null) {
|
||||
for (int i = 0; i < shefParamCode.length; i++) {
|
||||
shefParamList.add(shefParamCode[i]);
|
||||
for (int i = 0; i < shefParamCode.size(); i++) {
|
||||
shefParamList.add(shefParamCode.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -368,12 +369,11 @@ public class InsertDataDlg extends CaveSWTDialog {
|
|||
hourSpnr.setEnabled(flag);
|
||||
minuteSpnr.setEnabled(flag);
|
||||
}
|
||||
|
||||
|
||||
private void postToDB() {
|
||||
String id = idTF.getText().trim();
|
||||
if (id.compareTo("") == 0) {
|
||||
MessageBox mb = new MessageBox(getParent(),
|
||||
SWT.ICON_ERROR | SWT.OK);
|
||||
MessageBox mb = new MessageBox(getParent(), SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Error");
|
||||
mb.setMessage("ERROR: cannot post because ID is blank.");
|
||||
mb.open();
|
||||
|
@ -382,8 +382,7 @@ public class InsertDataDlg extends CaveSWTDialog {
|
|||
|
||||
String shefParamCode[] = shefParamList.getSelection();
|
||||
if (shefParamCode.length != 1) {
|
||||
MessageBox mb = new MessageBox(getParent(),
|
||||
SWT.ICON_ERROR | SWT.OK);
|
||||
MessageBox mb = new MessageBox(getParent(), SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Error");
|
||||
mb.setMessage("ERROR: cannot post because PE Type is blank.");
|
||||
mb.open();
|
||||
|
@ -396,19 +395,19 @@ public class InsertDataDlg extends CaveSWTDialog {
|
|||
try {
|
||||
value = Double.parseDouble(enterDataTF.getText().trim());
|
||||
} catch (NumberFormatException nfe) {
|
||||
MessageBox mb = new MessageBox(getParent(),
|
||||
SWT.ICON_ERROR | SWT.OK);
|
||||
MessageBox mb = new MessageBox(getParent(), SWT.ICON_ERROR | SWT.OK);
|
||||
mb.setText("Error");
|
||||
mb.setMessage("ERROR: cannot post because data value is blank or invalid.");
|
||||
mb.open();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int hour = hourSpnr.getSelection();
|
||||
int minute = minuteSpnr.getSelection();
|
||||
|
||||
XdatShefUtil shefUtil = new XdatShefUtil();
|
||||
shefUtil.createInsertFile(id, pe, value, hour, minute, displayCB.getStartDate());
|
||||
shefUtil.createInsertFile(id, pe, value, hour, minute,
|
||||
displayCB.getStartDate());
|
||||
shefUtil.sendFile();
|
||||
|
||||
shell.dispose();
|
||||
|
|
|
@ -25,14 +25,12 @@ import java.util.ArrayList;
|
|||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
|
@ -47,6 +45,10 @@ import org.eclipse.swt.widgets.Layout;
|
|||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Spinner;
|
||||
|
||||
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.util.TimeUtil;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||
|
||||
|
@ -59,6 +61,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* 27 Oct 2008 lvenable Initial creation.
|
||||
* 10 Feb 2009 wkwock Added functions.
|
||||
* 31 May 2015 4501 skorolev Got rid of Vector.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -68,6 +71,9 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
*/
|
||||
public class PrecipDataDlg extends CaveSWTDialog {
|
||||
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(PrecipDataDlg.class);
|
||||
|
||||
/**
|
||||
* Hour spinner.
|
||||
*/
|
||||
|
@ -227,7 +233,7 @@ public class PrecipDataDlg extends CaveSWTDialog {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void displayCoopPrecip() {
|
||||
String startDate = displayCB.getEndDate();
|
||||
String header1 = "\t\t\t 24 Hour Precipitation Ending at "
|
||||
|
@ -235,7 +241,7 @@ public class PrecipDataDlg extends CaveSWTDialog {
|
|||
String header2 = " ID PE DUR TS E OBSTIME PRODUCT VALUE";
|
||||
String dashLine = "-------------------------------------------------------------------";
|
||||
String dataFmt = "%-8s %2s %4s %2s %1s %19s %13s %6.2f";
|
||||
Vector<String[]> coopPrecipData = databaseMgr
|
||||
List<String[]> coopPrecipData = databaseMgr
|
||||
.getCoopPrecipData(startDate);
|
||||
|
||||
if (coopPrecipData == null) {
|
||||
|
@ -258,10 +264,12 @@ public class PrecipDataDlg extends CaveSWTDialog {
|
|||
value = Double.parseDouble(dataText[6]);
|
||||
} catch (NumberFormatException nfe) {
|
||||
value = HydroConstants.MISSING_VALUE;
|
||||
statusHandler.handle(Priority.ERROR, "Fail to parse "
|
||||
+ dataText[6] + ".");
|
||||
}
|
||||
displayText[i] = String.format(dataFmt, dataText[0],
|
||||
"PP", dataText[1], dataText[2], dataText[3],
|
||||
dataText[4], productID, value);
|
||||
displayText[i] = String.format(dataFmt, dataText[0], "PP",
|
||||
dataText[1], dataText[2], dataText[3], dataText[4],
|
||||
productID, value);
|
||||
i++;
|
||||
}
|
||||
displayCB.setDisplayText(displayText);
|
||||
|
@ -277,11 +285,11 @@ public class PrecipDataDlg extends CaveSWTDialog {
|
|||
Calendar date = null;
|
||||
try {
|
||||
Date sDate = obsDate.parse(displayCB.getEndDate());
|
||||
date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
date.setTime(sDate);
|
||||
date.set(GregorianCalendar.HOUR_OF_DAY, hour);
|
||||
date = TimeUtil.newGmtCalendar(sDate);
|
||||
} catch (ParseException e) {
|
||||
date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));;
|
||||
date = TimeUtil.newGmtCalendar();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Fail to parse " + displayCB.getEndDate() + ".");
|
||||
}
|
||||
|
||||
obsDate = new SimpleDateFormat("yyyy-MM-dd HH:00:00", Locale.US);
|
||||
|
@ -292,16 +300,21 @@ public class PrecipDataDlg extends CaveSWTDialog {
|
|||
HashMap<String, Double> precipLidAndValue = databaseMgr
|
||||
.getPrecipLidAndValue(obsTimeStr);
|
||||
|
||||
if (precipLidAndValue == null) {
|
||||
precipLidAndValue = new HashMap<String, Double>();
|
||||
}
|
||||
|
||||
date.add(Calendar.HOUR_OF_DAY, 0 - duration);
|
||||
obsTimeStr = obsDate.format(date.getTime());
|
||||
|
||||
|
||||
Map<String, Double> precipLidAndValue2 = databaseMgr
|
||||
.getPrecipLidAndValue(obsTimeStr);
|
||||
if (precipLidAndValue2 == null) {
|
||||
precipLidAndValue2 = new HashMap<String, Double>();
|
||||
}
|
||||
ArrayList<String> precipLidAndDiffBuf = new ArrayList<String>(precipLidAndValue.size());
|
||||
|
||||
List<String> precipLidAndDiffBuf = new ArrayList<String>(
|
||||
precipLidAndValue.size());
|
||||
|
||||
if (precipLidAndValue.size() == 0) {
|
||||
precipLidAndDiffBuf.add("No " + duration
|
||||
+ " Hour Precipitation data found.");
|
||||
|
@ -316,7 +329,7 @@ public class PrecipDataDlg extends CaveSWTDialog {
|
|||
List<XdatPcData> dataList = new ArrayList<XdatPcData>();
|
||||
while (iter.hasNext()) {
|
||||
lid = iter.next();
|
||||
|
||||
|
||||
double value = precipLidAndValue.get(lid);
|
||||
double value2 = -999;
|
||||
if (precipLidAndValue2.containsKey(lid)) {
|
||||
|
@ -332,20 +345,20 @@ public class PrecipDataDlg extends CaveSWTDialog {
|
|||
}
|
||||
|
||||
XdatPcData data = new XdatPcData(lid, valDiff);
|
||||
dataList.add(data);
|
||||
dataList.add(data);
|
||||
}
|
||||
|
||||
|
||||
Collections.sort(dataList);
|
||||
for (int i = 0; i < dataList.size(); i++) {
|
||||
XdatPcData data = dataList.get(i);
|
||||
|
||||
precipLidAndDiffBuf.add(String.format("%-8s %4.2f", data.getLid(),
|
||||
data.getValue()));
|
||||
precipLidAndDiffBuf.add(String.format("%-8s %4.2f",
|
||||
data.getLid(), data.getValue()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
displayCB.setDisplayText(precipLidAndDiffBuf.toArray(new String[precipLidAndDiffBuf.size()]));
|
||||
displayCB.setDisplayText(precipLidAndDiffBuf
|
||||
.toArray(new String[precipLidAndDiffBuf.size()]));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
**/
|
||||
package com.raytheon.viz.xdat;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
|
@ -51,6 +49,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* 17 Jan 2008 lvenable Updated code to format data display on
|
||||
* the screen.
|
||||
* 10 Feb 2009 wkwock Added functions.
|
||||
* 31 May 2015 4501 skorolev Got rid of Vector.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -68,7 +67,7 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
/**
|
||||
* Data list control.
|
||||
*/
|
||||
private List dataList;
|
||||
private List dataListLst;
|
||||
|
||||
/**
|
||||
* Label for the data list control.
|
||||
|
@ -88,7 +87,7 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
/**
|
||||
* Data array.
|
||||
*/
|
||||
private Vector<String[]> dataArray;
|
||||
private java.util.List<String[]> dataArray;
|
||||
|
||||
/**
|
||||
* This is for TESTING PURPOSES ONLY. There can be a subset of states in the
|
||||
|
@ -218,12 +217,12 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
gd.widthHint = 350;
|
||||
gd.heightHint = 400;
|
||||
gd.horizontalSpan = 2;
|
||||
dataList = new List(controlComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL
|
||||
| SWT.H_SCROLL);
|
||||
dataList.setLayoutData(gd);
|
||||
dataList.setFont(controlFont);
|
||||
dataListLst = new List(controlComp, SWT.BORDER | SWT.SINGLE
|
||||
| SWT.V_SCROLL | SWT.H_SCROLL);
|
||||
dataListLst.setLayoutData(gd);
|
||||
dataListLst.setFont(controlFont);
|
||||
|
||||
dataList.addSelectionListener(new SelectionAdapter() {
|
||||
dataListLst.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
displayListSelection();
|
||||
|
@ -288,7 +287,7 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
searchStr = searchTF.getText().toUpperCase();
|
||||
|
||||
dataArray = databaseMgr.search_string_list(searchStr, peType);
|
||||
dataList.removeAll();
|
||||
dataListLst.removeAll();
|
||||
|
||||
if (dataArray == null) {
|
||||
String msg = String.format(searchFmt, 0, peType, searchStr);
|
||||
|
@ -303,7 +302,7 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
des = rowData[1];
|
||||
}
|
||||
|
||||
dataList.add(String.format(listFmt, rowData[0], des));
|
||||
dataListLst.add(String.format(listFmt, rowData[0], des));
|
||||
}
|
||||
|
||||
String str = String.format(searchFmt, dataArray.size(), peType,
|
||||
|
@ -334,7 +333,7 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
}
|
||||
|
||||
dataArray = databaseMgr.searchIds(stateName, pe);
|
||||
dataList.removeAll();
|
||||
dataListLst.removeAll();
|
||||
|
||||
if (dataArray == null) {
|
||||
String msg = String.format(searchFmt, 0, pe, stateName);
|
||||
|
@ -349,7 +348,7 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
des = rowData[1];
|
||||
}
|
||||
|
||||
dataList.add(String.format(listFmt, rowData[0], des));
|
||||
dataListLst.add(String.format(listFmt, rowData[0], des));
|
||||
}
|
||||
|
||||
String str = String.format(searchFmt, dataArray.size(), pe, stateName);
|
||||
|
@ -365,16 +364,16 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
String peType = displayCB.getSelectedPE();
|
||||
|
||||
// Get the ID from the data array.
|
||||
int selectionIndex = dataList.getSelectionIndex();
|
||||
int selectionIndex = dataListLst.getSelectionIndex();
|
||||
String selectedId = null;
|
||||
if (selectionIndex > -1) {
|
||||
selectedId = dataArray.get(selectionIndex)[0];
|
||||
}
|
||||
|
||||
Vector<String[]> dataVec = databaseMgr.getListData(selectedId, peType,
|
||||
displayCB.getStartDate(), displayCB.getEndDate());
|
||||
java.util.List<String[]> dataList = databaseMgr.getListData(selectedId,
|
||||
peType, displayCB.getStartDate(), displayCB.getEndDate());
|
||||
|
||||
if (dataVec == null) {
|
||||
if (dataList == null) {
|
||||
String[] msg = new String[] { "No data available." };
|
||||
displayCB.setDisplayText(msg);
|
||||
return;
|
||||
|
@ -389,7 +388,7 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
locationDes = "";
|
||||
}
|
||||
|
||||
String[] displayData = new String[dataVec.size() + 3]; // 1st three
|
||||
String[] displayData = new String[dataList.size() + 3]; // 1st three
|
||||
// lines for
|
||||
// header
|
||||
String dataFmt = "%-8S %2s %-4S %2S %1S %19S %13S % 6.2f % 6.2f";
|
||||
|
@ -399,16 +398,17 @@ public class SiteListDlg extends CaveSWTDialog {
|
|||
displayData[1] = displayHeader;
|
||||
displayData[2] = dashLine;
|
||||
|
||||
for (int i = 0; i < dataVec.size(); i++) {
|
||||
String[] rowData = dataVec.get(i);
|
||||
for (int i = 0; i < dataList.size(); i++) {
|
||||
String[] rowData = dataList.get(i);
|
||||
|
||||
double dblVal = Double.valueOf(rowData[5]);
|
||||
double rndVal = (Math.round(dblVal * 100.0)) / 100.0;
|
||||
double change = 0;
|
||||
|
||||
if (i < (dataVec.size() - 1)) { // if this is not the last one, then
|
||||
if (i < (dataList.size() - 1)) { // if this is not the last one,
|
||||
// then
|
||||
// calculate the changes
|
||||
String[] nextRowData = dataVec.get(i + 1);
|
||||
String[] nextRowData = dataList.get(i + 1);
|
||||
if ((Double.valueOf(rowData[5]) != HydroConstants.MISSING_VALUE)
|
||||
&& (Double.valueOf(nextRowData[5]) != HydroConstants.MISSING_VALUE)) {
|
||||
change = Double.valueOf(rowData[5])
|
||||
|
|
383
cave/com.raytheon.viz.xdat/src/com/raytheon/viz/xdat/XdatDB.java
Executable file → Normal file
383
cave/com.raytheon.viz.xdat/src/com/raytheon/viz/xdat/XdatDB.java
Executable file → Normal file
|
@ -24,32 +24,27 @@ import java.io.BufferedReader;
|
|||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLWarning;
|
||||
import java.sql.Statement;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.postgresql.util.PSQLException;
|
||||
|
||||
import com.raytheon.uf.common.ohd.AppsDefaults;
|
||||
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.viz.core.catalog.DirectDbQuery;
|
||||
import com.raytheon.uf.viz.core.catalog.DirectDbQuery.QueryLanguage;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||
|
||||
/**
|
||||
* This class acquire all xdat tokens.
|
||||
* XdatDB manager. This class acquire all xdat tokens.
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
|
@ -60,6 +55,8 @@ import com.raytheon.viz.hydrocommon.HydroConstants;
|
|||
* Duff
|
||||
* 10 Feb 2009 wkwock Added functions and clean up.
|
||||
* 12 Aug 2014 3049 bkowal Close the BufferedReader when finished.
|
||||
* 21 May 2015 4501 skorolev Changed a way of database connection. Got rid of Vector.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author wkwock
|
||||
|
@ -70,54 +67,15 @@ public class XdatDB {
|
|||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(XdatDB.class);
|
||||
|
||||
/**
|
||||
* Database connection.
|
||||
*/
|
||||
private Connection conn;
|
||||
|
||||
/**
|
||||
* Query statement.
|
||||
*/
|
||||
private Statement queryStmt;
|
||||
public static final String IHFS = "ihfs";
|
||||
|
||||
private Map<String, String> peMap = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param shell
|
||||
* , URL
|
||||
*/
|
||||
public XdatDB(String URL) {
|
||||
try {
|
||||
Class.forName("org.postgresql.Driver");
|
||||
} catch (ClassNotFoundException cnfe) {
|
||||
cnfe.printStackTrace();
|
||||
}
|
||||
public XdatDB() {
|
||||
|
||||
try {
|
||||
|
||||
conn = DriverManager.getConnection(URL);
|
||||
|
||||
// Print all warnings
|
||||
for (SQLWarning warn = conn.getWarnings(); warn != null; warn = warn
|
||||
.getNextWarning()) {
|
||||
conn = null;
|
||||
}
|
||||
|
||||
if (conn != null) {
|
||||
queryStmt = conn.createStatement();
|
||||
}
|
||||
|
||||
} catch (PSQLException pe) {
|
||||
conn = null;
|
||||
pe.printStackTrace();
|
||||
} catch (SQLException se) {
|
||||
conn = null;
|
||||
se.printStackTrace();
|
||||
}
|
||||
|
||||
// peMap = new ReadPeMap();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -125,40 +83,26 @@ public class XdatDB {
|
|||
*
|
||||
* @param query
|
||||
* SQL statement.
|
||||
* @return Vector Rows of data.
|
||||
* @return List Rows of data.
|
||||
*/
|
||||
public Vector<String> runQuery(String query) {
|
||||
Vector<String> result = new Vector<String>();
|
||||
|
||||
if (conn == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<String> runQuery(String query) {
|
||||
List<String> result = new ArrayList<String>();
|
||||
try {
|
||||
ResultSet rs = queryStmt.executeQuery(query);
|
||||
|
||||
if (rs == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
while (rs.next()) {
|
||||
|
||||
StringBuilder strBld = new StringBuilder();
|
||||
|
||||
int numberOfCols = rs.getMetaData().getColumnCount();
|
||||
|
||||
for (int i = 1; i <= numberOfCols; i++) {
|
||||
strBld.append(rs.getString(i)).append(" ");
|
||||
List<Object[]> rs = DirectDbQuery.executeQuery(query, IHFS,
|
||||
QueryLanguage.SQL);
|
||||
if (!rs.isEmpty()) {
|
||||
for (Object[] obj : rs) {
|
||||
if (obj[0] != null) {
|
||||
result.add(((String) obj[0]).trim());
|
||||
}
|
||||
}
|
||||
|
||||
result.add(strBld.toString().trim());
|
||||
} else {
|
||||
result = null;
|
||||
}
|
||||
} catch (SQLException se) {
|
||||
|
||||
se.printStackTrace();
|
||||
return null;
|
||||
} catch (VizException e) {
|
||||
statusHandler
|
||||
.handle(Priority.PROBLEM, "Error querying database", e);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -168,42 +112,37 @@ public class XdatDB {
|
|||
*
|
||||
* @param query
|
||||
* SQL query.
|
||||
* @return Vector (rows) of String arrays (columns of data).
|
||||
* @return List (rows) of String arrays (columns of data).
|
||||
*/
|
||||
public Vector<String[]> runDetailedQuery(String query) {
|
||||
Vector<String[]> result = null;
|
||||
// If the database connection is null then return null.
|
||||
if (conn == null) {
|
||||
return null;
|
||||
}
|
||||
public List<String[]> runDetailedQuery(String query) {
|
||||
List<String[]> result = null;
|
||||
|
||||
try {
|
||||
ResultSet rs = queryStmt.executeQuery(query);
|
||||
|
||||
if (rs == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
while (rs.next()) {
|
||||
|
||||
List<Object[]> rs = DirectDbQuery.executeQuery(query, IHFS,
|
||||
QueryLanguage.SQL);
|
||||
if (!rs.isEmpty()) {
|
||||
if (result == null) {
|
||||
result = new Vector<String[]>();
|
||||
result = new ArrayList<String[]>();
|
||||
}
|
||||
Iterator<Object[]> rsiterator = rs.iterator();
|
||||
while (rsiterator.hasNext()) {
|
||||
Object[] row = rsiterator.next();
|
||||
int numberOfCols = row.length;
|
||||
String[] data = new String[numberOfCols];
|
||||
for (int i = 0; i < numberOfCols; i++) {
|
||||
if (row[i] != null) {
|
||||
data[i] = row[i].toString();
|
||||
}
|
||||
|
||||
// Get the number of columns in the row of data.
|
||||
int numberOfCols = rs.getMetaData().getColumnCount();
|
||||
String[] data = new String[numberOfCols];
|
||||
|
||||
for (int i = 0; i < numberOfCols; i++) {
|
||||
data[i] = rs.getString(i + 1);
|
||||
}
|
||||
result.add(data);
|
||||
}
|
||||
result.add(data);
|
||||
}
|
||||
} catch (SQLException se) {
|
||||
se.printStackTrace();
|
||||
} catch (VizException e) {
|
||||
statusHandler
|
||||
.handle(Priority.PROBLEM, "Error querying database", e);
|
||||
return null;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -223,23 +162,23 @@ public class XdatDB {
|
|||
if (table.compareTo("_no_table_") != 0) {
|
||||
String queryStr = "SELECT num_hours_host from purgedyndata where table_name = '"
|
||||
+ table + "'";
|
||||
|
||||
ResultSet rs;
|
||||
List<Integer> hours;
|
||||
try {
|
||||
rs = queryStmt.executeQuery(queryStr);
|
||||
if (rs == null) {
|
||||
numHours = 0;
|
||||
} else {
|
||||
if (rs.next()) {
|
||||
numHours = rs.getInt(1);
|
||||
}
|
||||
List<Object[]> rs = DirectDbQuery.executeQuery(queryStr,
|
||||
IHFS, QueryLanguage.SQL);
|
||||
hours = new ArrayList<Integer>(rs.size());
|
||||
for (Object[] obj : rs) {
|
||||
hours.add((Integer) obj[0]);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (numHours > maxNumHours) {
|
||||
maxNumHours = numHours;
|
||||
if (hours != null && hours.size() > 1) {
|
||||
numHours = hours.get(0);
|
||||
}
|
||||
if (numHours > maxNumHours) {
|
||||
maxNumHours = numHours;
|
||||
}
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error to get number of observation days", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -259,11 +198,9 @@ public class XdatDB {
|
|||
*/
|
||||
public String[] getStateList() {
|
||||
String states[];
|
||||
// select DISTINCT state from location where post = 1 and state !='XX'
|
||||
// order by state
|
||||
|
||||
Vector<String> stateVector = runQuery("select DISTINCT state from location where post = 1 and state !='XX' order by state");
|
||||
states = stateVector.toArray(new String[stateVector.size()]);
|
||||
List<String> stateList = runQuery("select DISTINCT state from location where post = 1 and state !='XX' order by state");
|
||||
states = stateList.toArray(new String[stateList.size()]);
|
||||
|
||||
return states;
|
||||
}
|
||||
|
@ -274,10 +211,9 @@ public class XdatDB {
|
|||
* @param stateName
|
||||
* 2 Letter state abbreviation.
|
||||
* @param pe
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public Vector<String[]> searchIds(String stateName, String pe) {
|
||||
public List<String[]> searchIds(String stateName, String pe) {
|
||||
|
||||
String queryStr = "select distinct location.lid, des from location, latestobsvalue "
|
||||
+ "where location.lid = latestobsvalue.lid and location.state = '"
|
||||
|
@ -286,7 +222,7 @@ public class XdatDB {
|
|||
+ pe
|
||||
+ "' order by location.lid";
|
||||
|
||||
Vector<String[]> idVector = runDetailedQuery(queryStr);
|
||||
List<String[]> idVector = runDetailedQuery(queryStr);
|
||||
|
||||
return idVector;
|
||||
}
|
||||
|
@ -298,7 +234,7 @@ public class XdatDB {
|
|||
* @param peType
|
||||
* @return ID and Destination from location table
|
||||
*/
|
||||
public Vector<String[]> search_string_list(String searchStr, String peType) {
|
||||
public List<String[]> search_string_list(String searchStr, String peType) {
|
||||
String queryStr = "select distinct location.lid, location.des from location, latestobsvalue "
|
||||
+ "where location.lid = latestobsvalue.lid and (location.lid like '%"
|
||||
+ searchStr
|
||||
|
@ -308,7 +244,7 @@ public class XdatDB {
|
|||
+ peType
|
||||
+ "' order by location.lid";
|
||||
|
||||
Vector<String[]> idVector = runDetailedQuery(queryStr);
|
||||
List<String[]> idVector = runDetailedQuery(queryStr);
|
||||
|
||||
return idVector;
|
||||
}
|
||||
|
@ -318,10 +254,9 @@ public class XdatDB {
|
|||
*
|
||||
* @param dateStr
|
||||
* Date in a String format.
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public Vector<String[]> getAboveFsSearch(String dateStr) {
|
||||
public List<String[]> getAboveFsSearch(String dateStr) {
|
||||
|
||||
String query = "select height.lid, height.pe, height.dur, height.ts, height.extremum, "
|
||||
+ "height.obstime, height.value, height.product_id, riverstat.fs "
|
||||
|
@ -332,7 +267,7 @@ public class XdatDB {
|
|||
+ "' and height.value >= riverstat.fs order by height.lid, "
|
||||
+ "height.obstime desc";
|
||||
|
||||
Vector<String[]> aboveFsVector = runDetailedQuery(query);
|
||||
List<String[]> aboveFsVector = runDetailedQuery(query);
|
||||
|
||||
return aboveFsVector;
|
||||
}
|
||||
|
@ -342,15 +277,14 @@ public class XdatDB {
|
|||
*
|
||||
* @param unknownTable
|
||||
* Unknown table name.
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public Vector<String[]> getUnknownSites(String unknownTable) {
|
||||
public List<String[]> getUnknownSites(String unknownTable) {
|
||||
|
||||
String query = "select lid, product_id, producttime from "
|
||||
+ unknownTable + " order by lid, producttime desc";
|
||||
System.out.println("Query = [" + query + "]");
|
||||
Vector<String[]> unknownSitesVector = runDetailedQuery(query);
|
||||
List<String[]> unknownSitesVector = runDetailedQuery(query);
|
||||
|
||||
return unknownSitesVector;
|
||||
}
|
||||
|
@ -364,10 +298,9 @@ public class XdatDB {
|
|||
* Starting date string.
|
||||
* @param endDateStr
|
||||
* Ending date string.
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public Vector<String[]> getRejectedData(String peStr, String startDateStr,
|
||||
public List<String[]> getRejectedData(String peStr, String startDateStr,
|
||||
String endDateStr) {
|
||||
|
||||
String query = "select lid, pe, dur, ts, extremum, validtime, postingtime, value "
|
||||
|
@ -379,7 +312,7 @@ public class XdatDB {
|
|||
+ endDateStr
|
||||
+ " 23:59:59' order by lid, validtime desc";
|
||||
|
||||
Vector<String[]> rejectedDataVector = runDetailedQuery(query);
|
||||
List<String[]> rejectedDataVector = runDetailedQuery(query);
|
||||
|
||||
return rejectedDataVector;
|
||||
}
|
||||
|
@ -387,14 +320,13 @@ public class XdatDB {
|
|||
/**
|
||||
* Get the sites turned off.
|
||||
*
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public Vector<String[]> getSitesTurnedOffData() {
|
||||
public List<String[]> getSitesTurnedOffData() {
|
||||
|
||||
String query = "select lid, county, state, des from location where post = 0 order by state, lid";
|
||||
|
||||
Vector<String[]> sitesTurnedOffVector = runDetailedQuery(query);
|
||||
List<String[]> sitesTurnedOffVector = runDetailedQuery(query);
|
||||
|
||||
return sitesTurnedOffVector;
|
||||
|
||||
|
@ -411,8 +343,7 @@ public class XdatDB {
|
|||
* Starting date.
|
||||
* @param endDateStr
|
||||
* Ending date.
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public String[] getSearchData(String lidStr, String peStr,
|
||||
String startDateStr, String endDateStr) {
|
||||
|
@ -426,7 +357,7 @@ public class XdatDB {
|
|||
+ endDateStr
|
||||
+ " 23:59:59' order by obstime desc";
|
||||
|
||||
Vector<String> searchDataVector = runQuery(query);
|
||||
List<String> searchDataVector = runQuery(query);
|
||||
|
||||
if (searchDataVector != null) {
|
||||
searchDataBuf = new String[searchDataVector.size()];
|
||||
|
@ -450,7 +381,7 @@ public class XdatDB {
|
|||
|
||||
String locationDes = "";
|
||||
String query = "select des from location where lid = '" + ID + "'";
|
||||
Vector<String> searchDataVector = runQuery(query);
|
||||
List<String> searchDataVector = runQuery(query);
|
||||
|
||||
if (searchDataVector != null) {
|
||||
|
||||
|
@ -471,13 +402,12 @@ public class XdatDB {
|
|||
* Starting Date
|
||||
* @param endDate
|
||||
* Ending Date
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public Vector<String[]> getGroupData(String[] input, String startDate,
|
||||
public List<String[]> getGroupData(String[] input, String startDate,
|
||||
String endDate) {
|
||||
|
||||
Vector<String[]> returnVec = new Vector<String[]>();
|
||||
ArrayList<String[]> returnVec = new ArrayList<String[]>();
|
||||
String lid = null;
|
||||
String pe = null;
|
||||
StringBuffer sql = new StringBuffer();
|
||||
|
@ -489,7 +419,7 @@ public class XdatDB {
|
|||
|
||||
sql.append("select des from location where lid = '" + lid + "'");
|
||||
|
||||
Vector<String[]> rs = runDetailedQuery(sql.toString());
|
||||
List<String[]> rs = runDetailedQuery(sql.toString());
|
||||
sql.setLength(0);
|
||||
|
||||
data = new String[2];
|
||||
|
@ -502,7 +432,7 @@ public class XdatDB {
|
|||
} else {
|
||||
data[1] = "";
|
||||
}
|
||||
/* Add row to return Vector */
|
||||
/* Add row to return List */
|
||||
returnVec.add(data);
|
||||
|
||||
// Determine the table to query
|
||||
|
@ -529,10 +459,10 @@ public class XdatDB {
|
|||
double nextValue = 0.0;
|
||||
double value = 0.0;
|
||||
|
||||
/* Need to calculate the chage */
|
||||
/* Need to calculate the change */
|
||||
if ((rs != null) && (rs.size() > 0)) {
|
||||
for (int j = 0; j < rs.size(); j++) { // Vector
|
||||
ArrayList<String> list = new ArrayList<String>();
|
||||
List<String> list = new ArrayList<String>();
|
||||
list.add(lid);
|
||||
list.add(pe);
|
||||
nextValue = HydroConstants.MISSING_VALUE;
|
||||
|
@ -574,7 +504,6 @@ public class XdatDB {
|
|||
} else {
|
||||
list.add(row[k]);
|
||||
}
|
||||
// returnVec.add(list.toArray(new String[list.size()]));
|
||||
}
|
||||
returnVec.add(list.toArray(new String[list.size()]));
|
||||
}
|
||||
|
@ -594,10 +523,9 @@ public class XdatDB {
|
|||
* Start date.
|
||||
* @param endDate
|
||||
* End date.
|
||||
* @return Vector<String[]> Vector (rows) of String arrays (columns) of
|
||||
* data.
|
||||
* @return List<String[]> List (rows) of String arrays (columns) of data.
|
||||
*/
|
||||
public Vector<String[]> getListData(String id, String peStr,
|
||||
public List<String[]> getListData(String id, String peStr,
|
||||
String startDate, String endDate) {
|
||||
|
||||
String dbTable = getPeMap().get(peStr);
|
||||
|
@ -622,7 +550,7 @@ public class XdatDB {
|
|||
+ " 00:00:00' and '"
|
||||
+ endDate + " 23:59:59' order by obstime desc";
|
||||
|
||||
Vector<String[]> listDataVector = runDetailedQuery(query);
|
||||
List<String[]> listDataVector = runDetailedQuery(query);
|
||||
|
||||
return listDataVector;
|
||||
}
|
||||
|
@ -634,9 +562,9 @@ public class XdatDB {
|
|||
* The ID.
|
||||
* @param pe
|
||||
* Physical Element.
|
||||
* @return The SHEF parameter code.
|
||||
* @return List<String> List The SHEF parameter code.
|
||||
*/
|
||||
public String[] getShefParamCode(String id, String pe) {
|
||||
public List<String> getShefParamCode(String id, String pe) {
|
||||
|
||||
String query = "select ingestfilter.ts, ingestfilter.extremum, shefdur.durcode, shefdur.name "
|
||||
+ "from ingestfilter, shefdur where ingestfilter.lid = '"
|
||||
|
@ -645,38 +573,28 @@ public class XdatDB {
|
|||
+ pe
|
||||
+ "' and ingestfilter.ts like 'R%' and ingestfilter.dur = shefdur.dur";
|
||||
|
||||
Vector<String> result = new Vector<String>();
|
||||
|
||||
if (conn == null) {
|
||||
return null;
|
||||
}
|
||||
List<String> result = new ArrayList<String>();
|
||||
|
||||
try {
|
||||
ResultSet rs = queryStmt.executeQuery(query);
|
||||
if (rs == null) {
|
||||
List<Object[]> rs = DirectDbQuery.executeQuery(query, IHFS,
|
||||
QueryLanguage.SQL);
|
||||
if (!rs.isEmpty()) {
|
||||
Iterator<Object[]> shefIterator = rs.iterator();
|
||||
while (shefIterator.hasNext()) {
|
||||
Object[] row = shefIterator.next();
|
||||
String strBuf = pe + row[2].toString() + row[0].toString()
|
||||
+ row[1].toString() + " (" + row[3].toString()
|
||||
+ ")";
|
||||
result.add(strBuf);
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
while (rs.next()) {
|
||||
String strBuf = pe + rs.getString(3) + rs.getString(1)
|
||||
+ rs.getString(2) + " (" + rs.getString(4) + ")";
|
||||
result.add(strBuf);
|
||||
}
|
||||
} catch (SQLException se) {
|
||||
se.printStackTrace();
|
||||
return null;
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error to get the SHEF parameter code.", e);
|
||||
}
|
||||
|
||||
String paramCode[] = null;
|
||||
|
||||
if (result.size() > 0) {
|
||||
paramCode = new String[result.size()];
|
||||
|
||||
for (int i = 0; i < result.size(); i++) {
|
||||
paramCode[i] = result.get(i);
|
||||
}
|
||||
}
|
||||
return paramCode;
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -684,7 +602,7 @@ public class XdatDB {
|
|||
*
|
||||
* @return Vector<String> Array of coop precip data.
|
||||
*/
|
||||
public Vector<String[]> getCoopPrecipData(String startDate) {
|
||||
public List<String[]> getCoopPrecipData(String startDate) {
|
||||
|
||||
String query = "select lid, dur, ts, extremum, obstime, product_id, value "
|
||||
+ "from rawpp where (pe = 'PP' and obstime between '"
|
||||
|
@ -695,7 +613,7 @@ public class XdatDB {
|
|||
+ " 14:00:00' and value >= 0.00 and (dur = 2001 or dur = 5004)) "
|
||||
+ "order by value desc,lid";
|
||||
|
||||
Vector<String[]> precipDataVector = runDetailedQuery(query);
|
||||
List<String[]> precipDataVector = runDetailedQuery(query);
|
||||
|
||||
return precipDataVector;
|
||||
}
|
||||
|
@ -738,37 +656,26 @@ public class XdatDB {
|
|||
* Get precipitation ID and value
|
||||
*
|
||||
* @param obsDate
|
||||
* @return Vector<String[]> Array of ID and value from rawpc table.
|
||||
* @return HashMap<String, Double> of ID and value from rawpc table.
|
||||
*/
|
||||
public HashMap<String, Double> getPrecipLidAndValue(String obsDate) {
|
||||
String query = "select lid, value from rawpc where (pe = 'PC' and obstime = '"
|
||||
+ obsDate + "' and value >= 0.00)";
|
||||
|
||||
// If the database connection is null then return null.
|
||||
if (conn == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
HashMap<String, Double> results = new HashMap<String, Double>();
|
||||
try {
|
||||
ResultSet rs = queryStmt.executeQuery(query);
|
||||
|
||||
if (rs == null) {
|
||||
List<Object[]> rs = DirectDbQuery.executeQuery(query, IHFS,
|
||||
QueryLanguage.SQL);
|
||||
if (!rs.isEmpty()) {
|
||||
// Get the number of columns in the row of data.
|
||||
int numberOfCols = rs.get(0).length;
|
||||
results = new HashMap<String, Double>(numberOfCols);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get the number of columns in the row of data.
|
||||
int numberOfCols = rs.getMetaData().getColumnCount();
|
||||
results = new HashMap<String, Double>(numberOfCols);
|
||||
|
||||
while (rs.next()) {
|
||||
results.put(rs.getString(1), rs.getDouble(2));
|
||||
}
|
||||
} catch (SQLException se) {
|
||||
se.printStackTrace();
|
||||
return null;
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error to get precipitation ID and value.", e);
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
|
@ -776,21 +683,21 @@ public class XdatDB {
|
|||
* Get precipitation value
|
||||
*
|
||||
* @param obsDate
|
||||
* @return Vector<String[]> Array value from rawpc table.
|
||||
* @return List<String[]> Array of values from rawpc table.
|
||||
*/
|
||||
public Vector<String[]> getPrecipValues(String obstime, String lid,
|
||||
public List<String[]> getPrecipValues(String obstime, String lid,
|
||||
double value) {
|
||||
String query = "select value from rawpc where (lid = '" + lid
|
||||
+ "' and pe = 'PC' and obstime = '" + obstime
|
||||
+ "' and value <= " + value + ")";
|
||||
|
||||
Vector<String[]> precipValueVector = runDetailedQuery(query);
|
||||
List<String[]> precipValueVector = runDetailedQuery(query);
|
||||
|
||||
return precipValueVector;
|
||||
}
|
||||
|
||||
/**
|
||||
* update the rejectteddata table.
|
||||
* Update the rejected data table.
|
||||
*
|
||||
* @param lid
|
||||
* @param pe
|
||||
|
@ -819,9 +726,8 @@ public class XdatDB {
|
|||
final int QC_MANUAL_FAILED = 123;
|
||||
Long quality_code = new Long(0);
|
||||
|
||||
set_qccode(QC_MANUAL_FAILED, quality_code);// set_qccode should be
|
||||
// defined in some other
|
||||
// package
|
||||
set_qccode(QC_MANUAL_FAILED, quality_code);
|
||||
// set_qccode should be defined in some other package
|
||||
|
||||
GregorianCalendar postTime = new GregorianCalendar();
|
||||
SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
|
||||
|
@ -836,27 +742,23 @@ public class XdatDB {
|
|||
+ "', " + quality_code + ", '" + rejected_type + "', '"
|
||||
+ userid + "')";
|
||||
|
||||
if (conn == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
queryStmt.executeUpdate(query);
|
||||
} catch (SQLException se) {
|
||||
se.printStackTrace();
|
||||
return;
|
||||
DirectDbQuery.executeQuery(query, IHFS, QueryLanguage.SQL);
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error to update the rejected data table.", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get durcode from shefdur table
|
||||
* Get durcode from shefdur table
|
||||
*
|
||||
* @param dur
|
||||
* @return durcode from shefdur table
|
||||
*/
|
||||
public String getDurcode(int dur) {
|
||||
String query = "select durcode from shefdur where dur=" + dur;
|
||||
Vector<String[]> durcodeVector = runDetailedQuery(query);
|
||||
List<String[]> durcodeVector = runDetailedQuery(query);
|
||||
if (durcodeVector != null) {
|
||||
return durcodeVector.get(0)[0];
|
||||
}
|
||||
|
@ -963,17 +865,4 @@ public class XdatDB {
|
|||
|
||||
return (status);
|
||||
}
|
||||
|
||||
/**
|
||||
* return whether the database has connected.
|
||||
*
|
||||
* @return true/ false
|
||||
*/
|
||||
public boolean isDBConnected() {
|
||||
if (conn == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ import java.util.Date;
|
|||
import java.util.GregorianCalendar;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.custom.StyledText;
|
||||
|
@ -61,6 +60,7 @@ import org.eclipse.swt.widgets.Text;
|
|||
|
||||
import com.raytheon.uf.common.ohd.AppsDefaults;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.common.time.util.TimeUtil;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||
|
||||
|
@ -79,6 +79,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* 23 Nov 2010 6244 lbousaidi cleared idTF box after search
|
||||
* 16 Mar 2011 6251 lbousaidi activate [Enter] for idTF box
|
||||
* 02 Jun 2011 9150 mduff xdat_flood_hours needs to be negative on the calendar.add
|
||||
* 22 May 2015 4501 skorolev Removed old DB connection commands. Got rid of Vector.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -93,11 +94,6 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
*/
|
||||
private Font controlFont;
|
||||
|
||||
/**
|
||||
* Database name.
|
||||
*/
|
||||
private String dbName;
|
||||
|
||||
/**
|
||||
* Version.
|
||||
*/
|
||||
|
@ -178,11 +174,6 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
*/
|
||||
private XdatDB databaseMgr;
|
||||
|
||||
/**
|
||||
* URL for JDBC.
|
||||
*/
|
||||
private String jdbcUrl;
|
||||
|
||||
/**
|
||||
* Array of Physical Element radio buttons.
|
||||
*/
|
||||
|
@ -192,7 +183,7 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
* Printer class.
|
||||
*/
|
||||
private Printer printer;
|
||||
|
||||
|
||||
private GroupDataDlg groupDlg = null;
|
||||
|
||||
/**
|
||||
|
@ -202,30 +193,17 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
* Parent shell.
|
||||
*/
|
||||
public XdatDlg(Shell parentShell) {
|
||||
super(parentShell, SWT.DIALOG_TRIM | SWT.RESIZE);
|
||||
|
||||
super(parentShell, SWT.DIALOG_TRIM | SWT.RESIZE | CAVE.DO_NOT_BLOCK);
|
||||
databaseMgr = new XdatDB();
|
||||
appsDefaults = AppsDefaults.getInstance();
|
||||
|
||||
StringBuilder buffer = new StringBuilder("jdbc:postgresql://");
|
||||
buffer.append(appsDefaults.getToken("pghost") + ":");
|
||||
buffer.append(appsDefaults.getToken("pgport") + "/");
|
||||
dbName = appsDefaults.getToken("db_name");
|
||||
buffer.append(dbName + "?user=");
|
||||
buffer.append(appsDefaults.getToken("pguser"));
|
||||
jdbcUrl = buffer.toString();
|
||||
System.out.println(jdbcUrl);
|
||||
|
||||
StringBuilder title = new StringBuilder("xdat (Version: ");
|
||||
title.append(version).append(") (db_name = ");
|
||||
|
||||
if (dbName == null) {
|
||||
title.append("UNKNOWN");
|
||||
} else {
|
||||
title.append(dbName);
|
||||
}
|
||||
title.append(XdatDB.IHFS);
|
||||
title.append(")");
|
||||
|
||||
setText(title.toString());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -242,19 +220,6 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
protected void initializeComponents(Shell shell) {
|
||||
setReturnValue(false);
|
||||
|
||||
databaseMgr = new XdatDB(jdbcUrl);
|
||||
if (!databaseMgr.isDBConnected()) {
|
||||
MessageBox mb = new MessageBox(getParent(), SWT.ICON_WARNING
|
||||
| SWT.OK);
|
||||
mb.setText("Error");
|
||||
mb.setMessage("Unable to connect to \n" + jdbcUrl
|
||||
+ "\n\nPlease make sure\n"
|
||||
+ "the tokens pghost and pgport are set\n"
|
||||
+ "correctly in Apps_defaults\n"
|
||||
+ "and the database server is running.");
|
||||
mb.open();
|
||||
}
|
||||
|
||||
controlFont = new Font(shell.getDisplay(), "Monospace", 10, SWT.NORMAL);
|
||||
|
||||
createTopButtons();
|
||||
|
@ -847,8 +812,8 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
|
||||
String peStr = getSelectedPE();
|
||||
|
||||
Vector<String[]> rejectedDataBuf = databaseMgr.getRejectedData(peStr,
|
||||
startDateStr, endDateStr);
|
||||
java.util.List<String[]> rejectedDataBuf = databaseMgr.getRejectedData(
|
||||
peStr, startDateStr, endDateStr);
|
||||
|
||||
if (rejectedDataBuf == null) {
|
||||
textArea.setText("No rejected " + peStr
|
||||
|
@ -863,13 +828,13 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/**
|
||||
* Format the rejected data for displaying.
|
||||
*
|
||||
* @param rejectedData
|
||||
* @param rejectedDataBuf
|
||||
* Array of rejected data.
|
||||
* @param peStr
|
||||
* Physical Element.
|
||||
* @return The formatted data.
|
||||
*/
|
||||
private String formatRejectedData(Vector<String[]> rejectedData,
|
||||
private String formatRejectedData(java.util.List<String[]> rejectedDataBuf,
|
||||
String peStr) {
|
||||
StringBuilder strBld = new StringBuilder();
|
||||
|
||||
|
@ -901,7 +866,7 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/*
|
||||
* Add the data
|
||||
*/
|
||||
for (String[] strArray : rejectedData) {
|
||||
for (String[] strArray : rejectedDataBuf) {
|
||||
|
||||
double dblVal = Double.valueOf(strArray[7]);
|
||||
double rndVal = (Math.round(dblVal * 10.0)) / 10.0;
|
||||
|
@ -922,13 +887,13 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
SimpleDateFormat dbFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
SimpleDateFormat startDate = new SimpleDateFormat("mm/dd/yyy",
|
||||
Locale.US);
|
||||
|
||||
|
||||
Date sDate = SimulatedTime.getSystemTime().getTime();
|
||||
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
|
||||
String setToday = appsDefaults.getToken("xdat_settoday");
|
||||
String floodHours = appsDefaults.getToken("xdat_flood_hours", "6");
|
||||
|
||||
|
||||
try {
|
||||
if ((setToday != null) && !setToday.equals("")
|
||||
&& !setToday.equals(" ")) {
|
||||
|
@ -947,7 +912,8 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
sDate = cal.getTime();
|
||||
String dateStr = dbFormat.format(sDate);
|
||||
|
||||
Vector<String[]> aboveFsBuf = databaseMgr.getAboveFsSearch(dateStr);
|
||||
java.util.List<String[]> aboveFsBuf = databaseMgr
|
||||
.getAboveFsSearch(dateStr);
|
||||
|
||||
if (aboveFsBuf == null) {
|
||||
textArea.setText("No sites above flood stage");
|
||||
|
@ -960,12 +926,12 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/**
|
||||
* Format the site above flood stage data for displaying.
|
||||
*
|
||||
* @param abvFldStgText
|
||||
* @param aboveFsBuf
|
||||
* Array of flood stage data.
|
||||
* @return The formatted data.
|
||||
*/
|
||||
private String formatSiteAboveFldStageData(Vector<String[]> abvFldStgText,
|
||||
Date sDate) {
|
||||
private String formatSiteAboveFldStageData(
|
||||
java.util.List<String[]> aboveFsBuf, Date sDate) {
|
||||
SimpleDateFormat displayDate = new SimpleDateFormat(
|
||||
"yyyy-MM-dd HH:00:00", Locale.US);
|
||||
StringBuilder strBld = new StringBuilder();
|
||||
|
@ -977,8 +943,7 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/*
|
||||
* Add the Title text
|
||||
*/
|
||||
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
cal.setTime(sDate);
|
||||
Calendar cal = TimeUtil.newGmtCalendar(sDate);
|
||||
String floodHours = appsDefaults.getToken("xdat_flood_hours");
|
||||
if ((floodHours != null) && (floodHours.length() > 0)) {
|
||||
cal.add(Calendar.HOUR_OF_DAY, -1 * (Integer.parseInt(floodHours)));
|
||||
|
@ -1005,7 +970,7 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/*
|
||||
* Add the data
|
||||
*/
|
||||
for (String[] dataArray : abvFldStgText) {
|
||||
for (String[] dataArray : aboveFsBuf) {
|
||||
|
||||
double dblVal = Double.valueOf(dataArray[6]);
|
||||
double rndVal = (Math.round(dblVal * 100.0)) / 100.0;
|
||||
|
@ -1032,7 +997,7 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
*/
|
||||
private void displaySitesTurnedOffData() {
|
||||
|
||||
Vector<String[]> sitesTurnedOffBuf = databaseMgr
|
||||
java.util.List<String[]> sitesTurnedOffBuf = databaseMgr
|
||||
.getSitesTurnedOffData();
|
||||
|
||||
if (sitesTurnedOffBuf == null) {
|
||||
|
@ -1046,11 +1011,12 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/**
|
||||
* Format the sites turned off data for displaying.
|
||||
*
|
||||
* @param sitesTurnedOffArray
|
||||
* @param sitesTurnedOffBuf
|
||||
* Array of data.
|
||||
* @return The formatted data.
|
||||
*/
|
||||
private String formatSitesTurnedOffData(Vector<String[]> sitesTurnedOffArray) {
|
||||
private String formatSitesTurnedOffData(
|
||||
java.util.List<String[]> sitesTurnedOffBuf) {
|
||||
StringBuilder strBld = new StringBuilder();
|
||||
|
||||
String titleFmt = "%50s";
|
||||
|
@ -1081,7 +1047,7 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/*
|
||||
* Add the data
|
||||
*/
|
||||
for (String[] dataArray : sitesTurnedOffArray) {
|
||||
for (String[] dataArray : sitesTurnedOffBuf) {
|
||||
|
||||
strBld.append(
|
||||
String.format(dataFmt, dataArray[0], dataArray[1],
|
||||
|
@ -1096,18 +1062,18 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
*/
|
||||
private void displayUnknownSitesData() {
|
||||
String postFlag = appsDefaults.getToken("xdat_post_unk");
|
||||
|
||||
|
||||
if (postFlag.equalsIgnoreCase("NONE")) {
|
||||
textArea.setText("Shefdecoder not posting unknown data.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
String unknownTable = "unkstnvalue";
|
||||
if (postFlag.compareTo("IDS_ONLY") == 0) {
|
||||
unknownTable = "unkstn";
|
||||
}
|
||||
|
||||
Vector<String[]> unknownSiteBuf = databaseMgr
|
||||
java.util.List<String[]> unknownSiteBuf = databaseMgr
|
||||
.getUnknownSites(unknownTable);
|
||||
|
||||
if (unknownSiteBuf == null) {
|
||||
|
@ -1122,11 +1088,12 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/**
|
||||
* Format the unknown sites data for displaying.
|
||||
*
|
||||
* @param unknownSiteArray
|
||||
* @param unknownSiteBuf
|
||||
* Array of data.
|
||||
* @return The formatted data.
|
||||
*/
|
||||
private String formatUnknownSitesData(Vector<String[]> unknownSiteArray) {
|
||||
private String formatUnknownSitesData(
|
||||
java.util.List<String[]> unknownSiteBuf) {
|
||||
StringBuilder strBld = new StringBuilder();
|
||||
|
||||
String titleFmt = "%40s";
|
||||
|
@ -1157,7 +1124,7 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/*
|
||||
* Add the data
|
||||
*/
|
||||
for (String[] dataArray : unknownSiteArray) {
|
||||
for (String[] dataArray : unknownSiteBuf) {
|
||||
String productID = dataArray[1];
|
||||
if (productID == null) {
|
||||
productID = "";
|
||||
|
@ -1179,11 +1146,10 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
/**
|
||||
* Display the search data on the display.
|
||||
*/
|
||||
private void displaySearchData() /*
|
||||
* code very similiar to
|
||||
* SiteListDlg.displayListSelection(). need
|
||||
* refactor
|
||||
*/
|
||||
private void displaySearchData()
|
||||
/*
|
||||
* code very similar to SiteListDlg.displayListSelection(). need refactor
|
||||
*/
|
||||
{
|
||||
String selectedId = idTF.getText().trim().toUpperCase();
|
||||
|
||||
|
@ -1198,8 +1164,8 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
|
||||
String peType = getSelectedPE();
|
||||
|
||||
Vector<String[]> dataVec = databaseMgr.getListData(selectedId, peType,
|
||||
getStartDate(), getEndDate());
|
||||
java.util.List<String[]> dataVec = databaseMgr.getListData(selectedId,
|
||||
peType, getStartDate(), getEndDate());
|
||||
|
||||
if (dataVec == null) {
|
||||
String[] msg = new String[] { "No data available." };
|
||||
|
@ -1213,9 +1179,8 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
locationDes = "";
|
||||
}
|
||||
|
||||
String[] displayData = new String[dataVec.size() + 3]; // 1st three
|
||||
// lines for
|
||||
// header
|
||||
String[] displayData = new String[dataVec.size() + 3];
|
||||
// 1st three lines for header
|
||||
String dataFmt = "%-8S %2s %-4S %2S %1S %19S %13S % 6.2f % 6.2f";
|
||||
String displayHeader = " ID PE DUR TS E OBSTIME PRODUCT VALUE CHANGE";
|
||||
String dashLine = "---------------------------------------------------------------------------";
|
||||
|
@ -1405,7 +1370,9 @@ public class XdatDlg extends CaveSWTDialog implements ITextDisplay {
|
|||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.viz.xdat.ITextDisplay#getSelectedSite()
|
||||
*/
|
||||
@Override
|
||||
|
|
Loading…
Add table
Reference in a new issue