Merge remote-tracking branch 'vlab/ohd_16.2.2' into master_16.2.2
Former-commit-id: c3a9e71a1dd7a971701ac3c157a8a7b2eb1f3182
This commit is contained in:
commit
8a618519ec
16 changed files with 968 additions and 664 deletions
|
@ -70,7 +70,6 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
|||
import com.raytheon.uf.viz.core.requests.ThriftClient;
|
||||
import com.raytheon.viz.hydrobase.addEditFloodTS.AddEditFloodEventDlg;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||
import com.raytheon.viz.hydrocommon.util.DbUtils;
|
||||
import com.raytheon.viz.hydrocommon.util.RatingUtils;
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||
|
||||
|
@ -90,6 +89,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* Jun 18, 2012 14377 wkwock Correct insert data into crest table.
|
||||
* Jun 27, 2013 2088 rferrel Made dialog non-blocking.
|
||||
* Jun 10, 2015 DCS15095 wkwock Added edit/insert flood event feature.
|
||||
* Jan 15, 2016 DCS18180 JingtaoD code improvement based on code review for DR17935
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -220,7 +220,7 @@ public class FloodReportDlg extends CaveSWTDialog {
|
|||
private SimpleDateFormat dbFormat = null;
|
||||
|
||||
private SimpleDateFormat fr = null;
|
||||
|
||||
|
||||
private AddEditFloodEventDlg efeDlg = null;
|
||||
|
||||
/**
|
||||
|
@ -349,7 +349,7 @@ public class FloodReportDlg extends CaveSWTDialog {
|
|||
* Create the middle list and canvas controls.
|
||||
*/
|
||||
private void createMiddleControls() {
|
||||
final int BUTTON_WIDTH=165;
|
||||
final int BUTTON_WIDTH = 165;
|
||||
GridData gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
|
||||
Composite mainComp = new Composite(shell, SWT.NONE);
|
||||
mainComp.setLayout(new GridLayout(2, false));
|
||||
|
@ -1026,22 +1026,22 @@ public class FloodReportDlg extends CaveSWTDialog {
|
|||
*/
|
||||
private void editEvent(boolean newEventFlg) {
|
||||
String key = null;
|
||||
|
||||
|
||||
if (!newEventFlg && locationList.getSelectionIndex() < 0) {
|
||||
MessageBox mb = new MessageBox(shell, SWT.OK);
|
||||
mb.setText("Make a Selection");
|
||||
mb.setMessage("You must select a river observation!");
|
||||
mb.open();
|
||||
} else {
|
||||
if (!newEventFlg) {
|
||||
key=selectedKey;
|
||||
if (!newEventFlg) {
|
||||
key = selectedKey;
|
||||
}
|
||||
if (efeDlg == null || efeDlg.isDisposed()) {
|
||||
efeDlg = new AddEditFloodEventDlg(this.getParent(), key, this);
|
||||
efeDlg.open();
|
||||
} else {
|
||||
efeDlg.bringToTop();
|
||||
}
|
||||
if (efeDlg==null || efeDlg.isDisposed()) {
|
||||
efeDlg = new AddEditFloodEventDlg(this.getParent(), key, this);
|
||||
efeDlg.open();
|
||||
} else {
|
||||
efeDlg.bringToTop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1268,8 +1268,6 @@ public class FloodReportDlg extends CaveSWTDialog {
|
|||
sql.append(", q");
|
||||
}
|
||||
|
||||
cremark = DbUtils.escapeSpecialCharforStr(cremark);
|
||||
|
||||
sql.append(") values('" + data.getLid() + "', ");
|
||||
sql.append("'" + dateFormat.format(eventDate) + "', ");
|
||||
sql.append("'" + hourFormat.format(eventDate) + "', ");
|
||||
|
|
|
@ -53,6 +53,7 @@ import com.raytheon.viz.hydrocommon.util.DbUtils;
|
|||
public class GeoDataManager extends HydroDataManager {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(GeoDataManager.class);
|
||||
|
||||
private static GeoDataManager instance = null;
|
||||
|
||||
private GeoDataManager() {
|
||||
|
@ -168,8 +169,6 @@ public class GeoDataManager extends HydroDataManager {
|
|||
return status;
|
||||
}
|
||||
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
|
||||
/*
|
||||
* if the interior lat, lon were provided from the input file, then use
|
||||
* them. otherwise compute them.
|
||||
|
@ -203,11 +202,13 @@ public class GeoDataManager extends HydroDataManager {
|
|||
data.setInteriorLon(intLon);
|
||||
}
|
||||
|
||||
String dataName = DbUtils.escapeSpecialCharforStr(data.getName());
|
||||
|
||||
StringBuilder query = new StringBuilder();
|
||||
query.append("insert into geoarea (area_id,");
|
||||
query.append(" name, boundary_type, interior_lat, interior_lon)");
|
||||
query.append(" values ('" + data.getAreaId() + "', '");
|
||||
query.append(data.getName() + "', '");
|
||||
query.append(dataName + "', '");
|
||||
query.append(data.getBoundaryType() + "', ");
|
||||
query.append(data.getInteriorLat() + ", ");
|
||||
query.append(data.getInteriorLon() + ")");
|
||||
|
|
|
@ -53,6 +53,7 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
|||
import com.raytheon.viz.hydrobase.FcstPointGroupDlg;
|
||||
import com.raytheon.viz.hydrobase.listeners.IForecastGroupAssignmentListener;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||
import com.raytheon.viz.hydrocommon.data.LocationData;
|
||||
import com.raytheon.viz.hydrocommon.data.RPFFcstGroupData;
|
||||
import com.raytheon.viz.hydrocommon.data.RPFFcstPointData;
|
||||
import com.raytheon.viz.hydrocommon.data.RiverStatData;
|
||||
|
@ -81,6 +82,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
|||
* Feb.02, 2015 #13372 djingtao Change from GMT time to local time for "Revise" field
|
||||
* May 15, 2015 4380 skorolev Added issuanceStage and issuanceFlow text fields.
|
||||
* Jul 06, 2015 #14104 lbousaidi increased textlimit to 15
|
||||
* Jan 13, 2016 #17652 jingtaoD use location lat/lon for 1st guess for new River Gage
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -302,6 +304,11 @@ public class RiverGageDlg extends CaveSWTDialog implements
|
|||
*/
|
||||
private RiverStatData riverGageData;
|
||||
|
||||
/**
|
||||
* Data for the current location
|
||||
*/
|
||||
private LocationData locData;
|
||||
|
||||
/**
|
||||
* Value for no Forecast Group assignment
|
||||
*/
|
||||
|
@ -995,6 +1002,24 @@ public class RiverGageDlg extends CaveSWTDialog implements
|
|||
+ "'s data ", e);
|
||||
}
|
||||
|
||||
// get locData
|
||||
locData = new LocationData();
|
||||
locData.setLid(lid);
|
||||
|
||||
java.util.List<LocationData> locDataList = null;
|
||||
|
||||
try {
|
||||
locDataList = HydroDBDataManager.getInstance().getData(locData);
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Unable to load location data for " + lid, e);
|
||||
}
|
||||
|
||||
if ((locDataList != null) && (locDataList.size() > 0)) {
|
||||
locData = locDataList.get(0);
|
||||
} else
|
||||
locData = null;
|
||||
|
||||
if ((data != null) && (data.size() > 0)) {
|
||||
// There will only be one record per lid
|
||||
riverGageData = data.get(0);
|
||||
|
@ -1012,21 +1037,24 @@ public class RiverGageDlg extends CaveSWTDialog implements
|
|||
* Populate te display.
|
||||
*/
|
||||
private void updateDisplay() {
|
||||
if (riverGageData != null) {
|
||||
// Stream
|
||||
streamTF.setText(riverGageData.getStream());
|
||||
|
||||
if (locData != null) {
|
||||
// Lat/Lon
|
||||
|
||||
latitudeTF
|
||||
.setText((riverGageData.getLatitude() != HydroConstants.MISSING_VALUE) ? String
|
||||
.valueOf(riverGageData.getLatitude()) : "");
|
||||
.setText((locData.getLatitude() != HydroConstants.MISSING_VALUE) ? String
|
||||
.valueOf(locData.getLatitude()) : "");
|
||||
origLat = latitudeTF.getText();
|
||||
|
||||
longitudeTF
|
||||
.setText((riverGageData.getLongitude() != HydroConstants.MISSING_VALUE) ? String
|
||||
.valueOf(riverGageData.getLongitude()) : "");
|
||||
.setText((locData.getLongitude() != HydroConstants.MISSING_VALUE) ? String
|
||||
.valueOf(locData.getLongitude()) : "");
|
||||
origLon = longitudeTF.getText();
|
||||
|
||||
}
|
||||
if (riverGageData != null) {
|
||||
// Stream
|
||||
streamTF.setText(riverGageData.getStream());
|
||||
|
||||
// Drainage Area
|
||||
drainageAreaTF.setText(HydroDataUtils
|
||||
.getDisplayString(riverGageData.getDrainageArea()));
|
||||
|
|
|
@ -42,13 +42,13 @@ package com.raytheon.viz.hydrocommon.cresthistory;
|
|||
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;
|
||||
import com.raytheon.viz.hydrocommon.data.RiverDataPoint;
|
||||
import com.raytheon.viz.hydrocommon.datamanager.RiverDataManager;
|
||||
import com.raytheon.viz.hydrocommon.datamanager.HydroDBDataManager;
|
||||
import com.raytheon.viz.hydrocommon.util.DbUtils;
|
||||
|
||||
public class CrestHistoryDataManager {
|
||||
|
@ -136,8 +136,6 @@ public class CrestHistoryDataManager {
|
|||
CrestData selectedCrest, int mode) {
|
||||
String errMsg = null;
|
||||
|
||||
DbUtils.escapeSpecialCharforData(cd);
|
||||
|
||||
if (mode == 3) {
|
||||
|
||||
// Did the primary key change?
|
||||
|
@ -166,7 +164,9 @@ public class CrestHistoryDataManager {
|
|||
DirectDbQuery.executeStatement(query, HydroConstants.IHFS,
|
||||
QueryLanguage.SQL);
|
||||
} catch (VizException e) {
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Error to insert crest data with query: " + query,
|
||||
e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -179,9 +179,9 @@ public class CrestHistoryDataManager {
|
|||
if (cd.getRemarks() != null) {
|
||||
String remarks = cd.getRemarks();
|
||||
remarks = remarks.replaceAll("\n", "\\n");
|
||||
remarks = DbUtils.escapeSpecialCharforStr(remarks);
|
||||
back.append("'" + remarks + "', ");
|
||||
front.append("cremark, ");
|
||||
// back.append("'" + cd.getRemarks() + "', ");
|
||||
}
|
||||
if (cd.isHighWater()) {
|
||||
front.append("hw, ");
|
||||
|
@ -224,8 +224,8 @@ public class CrestHistoryDataManager {
|
|||
DirectDbQuery.executeStatement(insertCrest, HydroConstants.IHFS,
|
||||
QueryLanguage.SQL);
|
||||
} catch (VizException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Error to insert crest data with query: " + insertCrest, e);
|
||||
|
||||
// exception with duplicate key value is throwed in the 2nd cause
|
||||
|
||||
|
@ -240,14 +240,11 @@ public class CrestHistoryDataManager {
|
|||
/* execute an update */
|
||||
StringBuilder query = new StringBuilder("update crest set ");
|
||||
|
||||
// query.append("lid = '" + lid + "', ");
|
||||
// query.append("datcrst = '" + cd.getDateString() + "', ");
|
||||
|
||||
if (cd.getRemarks() != null) {
|
||||
String remarks = cd.getRemarks();
|
||||
remarks = remarks.replace("\n", "\\n");
|
||||
remarks = DbUtils.escapeSpecialCharforStr(remarks);
|
||||
query.append("cremark = E'" + remarks + "', ");
|
||||
// query.append("cremark = '" + cd.getRemarks() + "', ");
|
||||
}
|
||||
|
||||
if (cd.isHighWater()) {
|
||||
|
|
|
@ -38,6 +38,7 @@ import com.raytheon.viz.hydrocommon.util.DbUtils;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* 20 Nov 2008 lvenable Initial creation
|
||||
* Sep 03, 2015 4846 rjpeter List out columns in select.
|
||||
* Jan 15, 2016 DCS18180 JingtaoD code improvement based on code review for DR17935
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -121,12 +122,13 @@ public class ContactsDataManager extends HydroDataManager {
|
|||
* Database exception.
|
||||
*/
|
||||
public void deleteRecord(ContactsData contactsData) throws VizException {
|
||||
DbUtils.escapeSpecialCharforData(contactsData);
|
||||
|
||||
String contacts = DbUtils.escapeSpecialCharforStr(contactsData
|
||||
.getContact());
|
||||
StringBuilder query = new StringBuilder(DELETE_STATEMENT);
|
||||
String whereClaus = String.format(
|
||||
" WHERE lid = '%s' AND contact = '%s' ", contactsData.getLid(),
|
||||
contactsData.getContact());
|
||||
contacts);
|
||||
query.append(whereClaus);
|
||||
|
||||
runStatement(query.toString());
|
||||
|
@ -171,11 +173,16 @@ public class ContactsDataManager extends HydroDataManager {
|
|||
* Database exception.
|
||||
*/
|
||||
public void insertContactData(ContactsData data) throws VizException {
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
ContactsData contactsDataForQuery = new ContactsData();
|
||||
DbUtils.escapeSpecialCharforData(data, contactsDataForQuery);
|
||||
|
||||
String query = String.format(INSERT_STATEMENT, data.getLid(),
|
||||
data.getContact(), data.getPhone(), data.getEmail(),
|
||||
data.getRemark(), data.getPriority());
|
||||
String query = String.format(INSERT_STATEMENT,
|
||||
contactsDataForQuery.getLid(),
|
||||
contactsDataForQuery.getContact(),
|
||||
contactsDataForQuery.getPhone(),
|
||||
contactsDataForQuery.getEmail(),
|
||||
contactsDataForQuery.getRemark(),
|
||||
contactsDataForQuery.getPriority());
|
||||
|
||||
runStatement(query);
|
||||
}
|
||||
|
@ -190,13 +197,19 @@ public class ContactsDataManager extends HydroDataManager {
|
|||
*/
|
||||
public void updateContactData(ContactsData data, String originalContactName)
|
||||
throws VizException {
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
ContactsData contactsDataForQuery = new ContactsData();
|
||||
DbUtils.escapeSpecialCharforData(data, contactsDataForQuery);
|
||||
|
||||
originalContactName = DbUtils
|
||||
.escapeSpecialCharforStr(originalContactName);
|
||||
|
||||
String query = String.format(UPDATE_STATEMENT, data.getContact(),
|
||||
data.getPhone(), data.getEmail(), data.getRemark(),
|
||||
data.getPriority(), data.getLid(), originalContactName);
|
||||
String query = String.format(UPDATE_STATEMENT,
|
||||
contactsDataForQuery.getContact(),
|
||||
contactsDataForQuery.getPhone(),
|
||||
contactsDataForQuery.getEmail(),
|
||||
contactsDataForQuery.getRemark(),
|
||||
contactsDataForQuery.getPriority(),
|
||||
contactsDataForQuery.getLid(), originalContactName);
|
||||
|
||||
runStatement(query);
|
||||
}
|
||||
|
|
|
@ -137,13 +137,16 @@ public class DescriptionDataManager extends HydroDataManager {
|
|||
*/
|
||||
public void insertDescriptionData(DescriptionData descData)
|
||||
throws VizException {
|
||||
DbUtils.escapeSpecialCharforData(descData);
|
||||
|
||||
String query = String.format(INSERT_STATEMENT, descData.getLid(),
|
||||
descData.getStreamBed(), descData.getDivert(),
|
||||
descData.getRemark(), descData.getIce(),
|
||||
descData.getProximity(), descData.getReach(),
|
||||
descData.getRegulation(), descData.getTopo());
|
||||
DescriptionData descDataForQuery = new DescriptionData();
|
||||
DbUtils.escapeSpecialCharforData(descData, descDataForQuery);
|
||||
|
||||
String query = String.format(INSERT_STATEMENT,
|
||||
descDataForQuery.getLid(), descDataForQuery.getStreamBed(),
|
||||
descDataForQuery.getDivert(), descDataForQuery.getRemark(),
|
||||
descDataForQuery.getIce(), descDataForQuery.getProximity(),
|
||||
descDataForQuery.getReach(), descDataForQuery.getRegulation(),
|
||||
descDataForQuery.getTopo());
|
||||
|
||||
runStatement(query);
|
||||
}
|
||||
|
@ -158,14 +161,16 @@ public class DescriptionDataManager extends HydroDataManager {
|
|||
*/
|
||||
public void updateDescriptionData(DescriptionData descData)
|
||||
throws VizException {
|
||||
DbUtils.escapeSpecialCharforData(descData);
|
||||
|
||||
String query = String
|
||||
.format(UPDATE_STATEMENT, descData.getStreamBed(),
|
||||
descData.getDivert(), descData.getRemark(),
|
||||
descData.getIce(), descData.getProximity(),
|
||||
descData.getReach(), descData.getRegulation(),
|
||||
descData.getTopo(), descData.getLid());
|
||||
DescriptionData descDataForQuery = new DescriptionData();
|
||||
DbUtils.escapeSpecialCharforData(descData, descDataForQuery);
|
||||
|
||||
String query = String.format(UPDATE_STATEMENT,
|
||||
descDataForQuery.getStreamBed(), descDataForQuery.getDivert(),
|
||||
descDataForQuery.getRemark(), descDataForQuery.getIce(),
|
||||
descDataForQuery.getProximity(), descDataForQuery.getReach(),
|
||||
descDataForQuery.getRegulation(), descDataForQuery.getTopo(),
|
||||
descDataForQuery.getLid());
|
||||
|
||||
runStatement(query);
|
||||
}
|
||||
|
|
|
@ -29,7 +29,6 @@ import com.raytheon.uf.common.dataquery.db.QueryResult;
|
|||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||
import com.raytheon.viz.hydrocommon.data.FloodCategoryData;
|
||||
import com.raytheon.viz.hydrocommon.util.DbUtils;
|
||||
import com.raytheon.viz.hydrocommon.util.HydroDataUtils;
|
||||
|
||||
/**
|
||||
|
@ -151,8 +150,6 @@ public class FloodCategoryDataManager extends HydroDataManager {
|
|||
throws VizException {
|
||||
Double majorS = null, minorS = null, moderateS = null, majorD = null, minorD = null, moderateD = null;
|
||||
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
|
||||
if (data.getMajorStage() != HydroConstants.MISSING_VALUE)
|
||||
majorS = data.getMajorStage();
|
||||
if (data.getModerateStage() != HydroConstants.MISSING_VALUE)
|
||||
|
@ -179,8 +176,6 @@ public class FloodCategoryDataManager extends HydroDataManager {
|
|||
|
||||
Double majorS = null, minorS = null, moderateS = null, majorD = null, minorD = null, moderateD = null;
|
||||
|
||||
DbUtils.escapeSpecialCharforData(currData);
|
||||
|
||||
if (currData.getMajorStage() != HydroConstants.MISSING_VALUE)
|
||||
majorS = currData.getMajorStage();
|
||||
if (currData.getModerateStage() != HydroConstants.MISSING_VALUE)
|
||||
|
|
|
@ -36,6 +36,7 @@ import com.raytheon.viz.hydrocommon.util.HydroDataUtils;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 10, 2008 1661 askripsky Initial Creation
|
||||
* Jan 15, 2016 DCS18180 JingtaoD code improvement based on code review for DR17935
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -162,18 +163,15 @@ public class FloodDataManager extends HydroDataManager {
|
|||
|
||||
private void updateFloodData(FloodData data) throws VizException {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
|
||||
runStatement(String
|
||||
.format(UPDATE_STATEMENT, data.getDamage(),
|
||||
data.getDisplayStatement(),
|
||||
HydroDataUtils.getPKStatement(data)));
|
||||
|
||||
}
|
||||
|
||||
private void insertFloodData(FloodData currData) throws VizException {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(currData);
|
||||
|
||||
runStatement(String.format(INSERT_STATEMENT, currData.getLid(),
|
||||
String.format("%8.2f", currData.getStage()),
|
||||
currData.getDamage(), currData.getDisplayStatement()));
|
||||
|
@ -189,13 +187,16 @@ public class FloodDataManager extends HydroDataManager {
|
|||
newData.setDisplayStatement(displayStatement);
|
||||
newData.setStage(stage);
|
||||
|
||||
FloodData newDataForQuery = new FloodData();
|
||||
DbUtils.escapeSpecialCharforData(newData, newDataForQuery);
|
||||
|
||||
// Check if it's going to be an update or insert
|
||||
if (checkFloodData(newData) > 0) {
|
||||
if (checkFloodData(newDataForQuery) > 0) {
|
||||
// Do an update
|
||||
updateFloodData(newData);
|
||||
updateFloodData(newDataForQuery);
|
||||
} else {
|
||||
// Do an insert
|
||||
insertFloodData(newData);
|
||||
insertFloodData(newDataForQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,6 +28,9 @@ import java.util.Map;
|
|||
|
||||
import com.raytheon.uf.common.dataquery.db.QueryResult;
|
||||
import com.raytheon.uf.common.dataquery.db.QueryResultRow;
|
||||
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.exception.VizException;
|
||||
import com.raytheon.viz.hydrocommon.data.HydroDBData;
|
||||
import com.raytheon.viz.hydrocommon.util.DbUtils;
|
||||
|
@ -43,6 +46,7 @@ import com.raytheon.viz.hydrocommon.util.DbUtils;
|
|||
* Nov 21, 2008 1697 askripsky Changed to use reflection and filter generic methods
|
||||
* Nov 03, 2011 11273 lbousaidi added updateNewData and putNewData.
|
||||
* Apr 18, 2013 1790 rferrel Code cleanup part of non-blocking dialogs.
|
||||
* Jan 15, 2016 DCS18180 JingtaoD code improvement based on code review for DR17935
|
||||
* </pre>
|
||||
*
|
||||
* @author askripsky
|
||||
|
@ -67,6 +71,10 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
return manager;
|
||||
}
|
||||
|
||||
/** The logger */
|
||||
private static final IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(HydroDBDataManager.class);
|
||||
|
||||
/**
|
||||
* Deletes each record passed in from the respective table.
|
||||
*
|
||||
|
@ -89,16 +97,25 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
*/
|
||||
public <T extends HydroDBData> void deleteRecord(T recordToDelete)
|
||||
throws VizException {
|
||||
|
||||
try {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(recordToDelete);
|
||||
@SuppressWarnings("unchecked")
|
||||
T recordToDeleteForQuery = (T) recordToDelete.getClass()
|
||||
.newInstance();
|
||||
|
||||
DbUtils.escapeSpecialCharforData(recordToDelete,
|
||||
recordToDeleteForQuery);
|
||||
|
||||
String deleteQuery = (String) recordToDelete.getClass()
|
||||
.getMethod("getDeleteStatement").invoke(recordToDelete);
|
||||
.getMethod("getDeleteStatement")
|
||||
.invoke(recordToDeleteForQuery);
|
||||
|
||||
runStatement(deleteQuery);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to delete record with getDeleteStatement method.",
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -131,7 +148,8 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to get data with getSelectStatement method.", e);
|
||||
}
|
||||
|
||||
return rval;
|
||||
|
@ -179,7 +197,10 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
result.getColumnNames()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
"Unable to get data with getConstrainedSelectStatement method.",
|
||||
e);
|
||||
}
|
||||
|
||||
return rval;
|
||||
|
@ -204,7 +225,10 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
rval = runMappedQuery(dataQuery).getResultCount();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
"Error in checking data with getExistsStatement method.",
|
||||
e);
|
||||
}
|
||||
|
||||
return rval;
|
||||
|
@ -220,8 +244,6 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
public <T extends HydroDBData> void updateData(T data) throws VizException {
|
||||
try {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
|
||||
// Get the update statement with the values filled in
|
||||
String updateQuery = (String) data.getClass()
|
||||
.getMethod("getUpdateStatement").invoke(data);
|
||||
|
@ -230,7 +252,8 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
runStatement(updateQuery);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to update data with getUpdateStatement method.", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -246,11 +269,9 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
throws VizException {
|
||||
try {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(newData);
|
||||
String updateQuery = (String) newData.getClass()
|
||||
.getMethod("getUpdateStatement").invoke(newData);
|
||||
|
||||
DbUtils.escapeSpecialCharforData(updateData);
|
||||
String pkquery = (String) updateData.getClass()
|
||||
.getMethod("getPKStatement").invoke(updateData);
|
||||
|
||||
|
@ -260,7 +281,8 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
runStatement(updateQueryToRun);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR, "Unable to update new data.",
|
||||
e);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -277,34 +299,44 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
String insertQuery = null;
|
||||
|
||||
try {
|
||||
DbUtils.escapeSpecialCharforData(currData);
|
||||
// if (currData.getClass() == LocationAgencyOfficeData.class) {
|
||||
Method getSQLMethod = currData.getClass().getMethod(
|
||||
"getInsertStatement");
|
||||
|
||||
insertQuery = (String) getSQLMethod.invoke(currData);
|
||||
// }
|
||||
|
||||
if (insertQuery != null) {
|
||||
runStatement(insertQuery);
|
||||
}
|
||||
} catch (SecurityException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to insert data due to security exception.", e);
|
||||
|
||||
} catch (NoSuchMethodException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
"Unable to insert data due to no method existing exception.",
|
||||
e);
|
||||
|
||||
} catch (IllegalArgumentException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to insert data due to illegal argument exception.",
|
||||
e);
|
||||
|
||||
} catch (IllegalAccessException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
"Unable to insert data due to illegal access exception.",
|
||||
e);
|
||||
|
||||
} catch (InvocationTargetException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
"Unable to insert data due to invocation target exception.",
|
||||
e);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to insert data with getInsertStatement method.", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -319,13 +351,26 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
* @throws VizException
|
||||
*/
|
||||
public <T extends HydroDBData> void putData(T newData) throws VizException {
|
||||
// Check if it's going to be an update or insert
|
||||
if (checkData(newData) > 0) {
|
||||
// Do an update
|
||||
updateData(newData);
|
||||
} else {
|
||||
// Do an insert
|
||||
insertData(newData);
|
||||
|
||||
try {
|
||||
@SuppressWarnings("unchecked")
|
||||
T newDataForQuery = (T) newData.getClass().newInstance();
|
||||
DbUtils.escapeSpecialCharforData(newData, newDataForQuery);
|
||||
|
||||
// Check if it's going to be an update or insert
|
||||
if (checkData(newDataForQuery) > 0) {
|
||||
// Do an update
|
||||
updateData(newDataForQuery);
|
||||
} else {
|
||||
// Do an insert
|
||||
insertData(newDataForQuery);
|
||||
}
|
||||
|
||||
} catch (InstantiationException | IllegalAccessException e) {
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
"Error to update/insert data due to instantiation or illegalAccess exception for "
|
||||
+ newData.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -342,16 +387,31 @@ public class HydroDBDataManager extends HydroDataManager {
|
|||
*/
|
||||
public <T extends HydroDBData> void putNewData(T newData, T updateData,
|
||||
boolean insert) throws VizException {
|
||||
// Check if it's going to be an update
|
||||
|
||||
if ((insert) && (checkData(newData) == 0)) {
|
||||
// Do an insert
|
||||
insertData(newData);
|
||||
try {
|
||||
@SuppressWarnings("unchecked")
|
||||
T newDataForQuery = (T) newData.getClass().newInstance();
|
||||
DbUtils.escapeSpecialCharforData(newData, newDataForQuery);
|
||||
|
||||
} else if (checkData(updateData) > 0) {
|
||||
// Do an update
|
||||
updateNewData(newData, updateData);
|
||||
@SuppressWarnings("unchecked")
|
||||
T updateDataForQuery = (T) updateData.getClass().newInstance();
|
||||
DbUtils.escapeSpecialCharforData(updateData, updateDataForQuery);
|
||||
|
||||
// Check if it's going to be an update
|
||||
if ((insert) && (checkData(newDataForQuery) == 0)) {
|
||||
// Do an insert
|
||||
insertData(newDataForQuery);
|
||||
|
||||
} else if (checkData(updateDataForQuery) > 0) {
|
||||
// Do an update
|
||||
updateNewData(newDataForQuery, updateDataForQuery);
|
||||
}
|
||||
} catch (InstantiationException | IllegalAccessException e) {
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
"Error to update/insert data due to instantiation or illegal access exception for "
|
||||
+ newData.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,10 +137,9 @@ public class LocationAreaManager extends HydroDataManager {
|
|||
*/
|
||||
public void insertLocationAreaData(LocationAreaData data)
|
||||
throws VizException {
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
String areaStr = DbUtils.escapeSpecialCharforStr(data.getArea());
|
||||
|
||||
String query = String.format(INSERT_STATEMENT, data.getLid(),
|
||||
data.getArea());
|
||||
String query = String.format(INSERT_STATEMENT, data.getLid(), areaStr);
|
||||
|
||||
runStatement(query);
|
||||
}
|
||||
|
@ -155,10 +154,9 @@ public class LocationAreaManager extends HydroDataManager {
|
|||
*/
|
||||
public void updateLocationAreaData(LocationAreaData data)
|
||||
throws VizException {
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
String areaStr = DbUtils.escapeSpecialCharforStr(data.getArea());
|
||||
|
||||
String query = String.format(UPDATE_STATEMENT, data.getArea(),
|
||||
data.getLid());
|
||||
String query = String.format(UPDATE_STATEMENT, areaStr, data.getLid());
|
||||
|
||||
runStatement(query);
|
||||
}
|
||||
|
|
|
@ -163,25 +163,25 @@ public class LowWaterDataManager extends HydroDataManager {
|
|||
|
||||
private void updateLowWaterData(LowWaterData data) throws VizException {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
String noteStr = DbUtils.escapeSpecialCharforStr(data.getRemark());
|
||||
|
||||
runStatement(String.format(
|
||||
UPDATE_STATEMENT,
|
||||
(data.getFlow() == LowWaterData.MISSING_VALUE) ? "null" : data
|
||||
.getFlow(), data.getRemark(),
|
||||
.getFlow(), noteStr,
|
||||
(data.getStage() == LowWaterData.MISSING_VALUE_D) ? "null"
|
||||
: data.getStage(), HydroDataUtils.getPKStatement(data)));
|
||||
}
|
||||
|
||||
private void insertLowWaterData(LowWaterData currData) throws VizException {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(currData);
|
||||
String noteStr = DbUtils.escapeSpecialCharforStr(currData.getRemark());
|
||||
|
||||
runStatement(String.format(INSERT_STATEMENT, currData.getLid(),
|
||||
dateFormat.format(currData.getDate()),
|
||||
(currData.getFlow() == LowWaterData.MISSING_VALUE) ? "null"
|
||||
: currData.getFlow(), currData.getRemark(), (currData
|
||||
.getStage() == LowWaterData.MISSING_VALUE_D) ? "null"
|
||||
: currData.getFlow(), noteStr,
|
||||
(currData.getStage() == LowWaterData.MISSING_VALUE_D) ? "null"
|
||||
: String.format("%8.2f", currData.getStage())));
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ import com.raytheon.viz.hydrocommon.util.HydroDataUtils;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 14, 2008 1697 askripsky Initial Creation
|
||||
* Jan 15, 2016 DCS18180 JingtaoD code improvement based on code review for DR17935
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -139,8 +140,6 @@ public class LowWaterStatementDataManager extends HydroDataManager {
|
|||
private void updateLowWaterStatementData(LowWaterStatementData data)
|
||||
throws VizException {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(data);
|
||||
|
||||
runStatement(String.format(UPDATE_STATEMENT,
|
||||
data.getUpperValueDBString(), data.getStatement(),
|
||||
data.getLowWaterCriteria(), data.getLowWaterSource(),
|
||||
|
@ -150,8 +149,6 @@ public class LowWaterStatementDataManager extends HydroDataManager {
|
|||
private void insertLowWaterData(LowWaterStatementData currData)
|
||||
throws VizException {
|
||||
|
||||
DbUtils.escapeSpecialCharforData(currData);
|
||||
|
||||
runStatement(String.format(INSERT_STATEMENT, currData.getLid(),
|
||||
currData.getPe(), currData.getLowerValue(),
|
||||
currData.getUpperValueDBString(), currData.getCriteriaRank(),
|
||||
|
@ -161,13 +158,17 @@ public class LowWaterStatementDataManager extends HydroDataManager {
|
|||
|
||||
public void putLowWaterStatementData(LowWaterStatementData dataToPut)
|
||||
throws VizException {
|
||||
|
||||
LowWaterStatementData dataToPutForQuery = new LowWaterStatementData();
|
||||
DbUtils.escapeSpecialCharforData(dataToPut, dataToPutForQuery);
|
||||
|
||||
// Check if it's going to be an update or insert
|
||||
if (checkLowWaterStatementData(dataToPut) > 0) {
|
||||
if (checkLowWaterStatementData(dataToPutForQuery) > 0) {
|
||||
// Do an update
|
||||
updateLowWaterStatementData(dataToPut);
|
||||
updateLowWaterStatementData(dataToPutForQuery);
|
||||
} else {
|
||||
// Do an insert
|
||||
insertLowWaterData(dataToPut);
|
||||
insertLowWaterData(dataToPutForQuery);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,14 +55,14 @@ public class B44AReport extends TextReport {
|
|||
private int b44aLastPage = B44A_COOPERATIVE;
|
||||
|
||||
protected String lid = null;
|
||||
|
||||
|
||||
TextReportData locB44AData;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param lid
|
||||
* The location id
|
||||
* The location id
|
||||
*/
|
||||
public B44AReport(String lid) {
|
||||
this.lid = lid;
|
||||
|
@ -72,7 +72,7 @@ public class B44AReport extends TextReport {
|
|||
* Get the text of the report.
|
||||
*
|
||||
* @param page
|
||||
* The page number to generate
|
||||
* The page number to generate
|
||||
*/
|
||||
@Override
|
||||
public String getText(int page) {
|
||||
|
@ -100,25 +100,22 @@ public class B44AReport extends TextReport {
|
|||
/**
|
||||
* Build the text for the report.
|
||||
*
|
||||
* @return
|
||||
* The report text
|
||||
* @return The report text
|
||||
*/
|
||||
private String b44ACooperative() {
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
|
||||
buffer.append(b44aHdrCooperative + "\n");
|
||||
buffer
|
||||
.append(" NATIONAL OCEANIC AND ATMOSPHERIC ADMINISTRATION\n");
|
||||
buffer
|
||||
.append(" NATIONAL WEATHER SERVICE\n\n");
|
||||
buffer
|
||||
.append(" UNOFFICIAL COOPERATIVE STATION REPORT\n\n");
|
||||
buffer
|
||||
.append("---------------------------- IDENTIFICATION SECTION --------------------------\n\n");
|
||||
buffer.append(" NATIONAL OCEANIC AND ATMOSPHERIC ADMINISTRATION\n");
|
||||
buffer.append(" NATIONAL WEATHER SERVICE\n\n");
|
||||
buffer.append(" UNOFFICIAL COOPERATIVE STATION REPORT\n\n");
|
||||
buffer.append("---------------------------- IDENTIFICATION SECTION --------------------------\n\n");
|
||||
|
||||
TextReportData data = TextReportDataManager.getInstance()
|
||||
.getDataForReports(lid, 7);
|
||||
TextReportData dataRiverStat = TextReportDataManager.getInstance()
|
||||
.getDataForReports(lid, 0);
|
||||
|
||||
TextReportData data = TextReportDataManager.getInstance().getDataForReports(lid, 7);
|
||||
TextReportData dataRiverStat = TextReportDataManager.getInstance().getDataForReports(lid, 0);
|
||||
|
||||
GeoUtil util = GeoUtil.getInstance();
|
||||
String lat;
|
||||
String lon;
|
||||
|
@ -127,17 +124,21 @@ public class B44AReport extends TextReport {
|
|||
Date now = Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTime();
|
||||
|
||||
buffer.append(String.format("%12s: %-37s %3s: %s\n", "Station Name",
|
||||
locB44AData.getLocation().getName(), "LID", lid));
|
||||
buffer.append(String.format("%12s: %-20s %18s: %s\n", "State", locB44AData
|
||||
.getLocation().getState(), "County",locB44AData.getLocation()
|
||||
.getCounty()));
|
||||
locB44AData.getLocation().getName(), "LID", lid));
|
||||
buffer.append(String.format("%12s: %-20s %18s: %s\n", "State",
|
||||
locB44AData.getLocation().getState(), "County", locB44AData
|
||||
.getLocation().getCounty()));
|
||||
|
||||
if (dataRiverStat.getRiverstat().getLat() > 0) {
|
||||
lat = util.cvt_latlon_from_double(dataRiverStat.getRiverstat().getLat());
|
||||
lon = util.cvt_latlon_from_double(dataRiverStat.getRiverstat().getLon());
|
||||
} else if (dataRiverStat.getLocation().getLat() > 0) {
|
||||
lat = util.cvt_latlon_from_double(locB44AData.getLocation().getLat());
|
||||
lon = util.cvt_latlon_from_double(locB44AData.getLocation().getLon());
|
||||
lat = util.cvt_latlon_from_double(dataRiverStat.getRiverstat()
|
||||
.getLat());
|
||||
lon = util.cvt_latlon_from_double(dataRiverStat.getRiverstat()
|
||||
.getLon());
|
||||
} else if (locB44AData.getLocation().getLat() > 0) {
|
||||
lat = util.cvt_latlon_from_double(locB44AData.getLocation()
|
||||
.getLat());
|
||||
lon = util.cvt_latlon_from_double(locB44AData.getLocation()
|
||||
.getLon());
|
||||
} else {
|
||||
lat = "MISSING";
|
||||
lon = "MISSING";
|
||||
|
@ -156,8 +157,7 @@ public class B44AReport extends TextReport {
|
|||
"Station Begin Date: %s\n River Basin: %s\n\n", date,
|
||||
locB44AData.getLocation().getRb()));
|
||||
|
||||
buffer
|
||||
.append("------------------------------- OBSERVER SECTION -----------------------------\n\n");
|
||||
buffer.append("------------------------------- OBSERVER SECTION -----------------------------\n\n");
|
||||
|
||||
name = "";
|
||||
if ((data.getObserver().getFirstname() != null)
|
||||
|
@ -176,10 +176,10 @@ public class B44AReport extends TextReport {
|
|||
} else {
|
||||
dos = " ";
|
||||
}
|
||||
|
||||
|
||||
buffer.append(String.format(
|
||||
"Observer: %-41s DOS: %-10s Gender: %s\n", name, dos,
|
||||
data.getObserver().getGn()));
|
||||
"Observer: %-41s DOS: %-10s Gender: %s\n", name, dos, data
|
||||
.getObserver().getGn()));
|
||||
|
||||
buffer.append(String.format(" Address: %-30s\n", data.getObserver()
|
||||
.getA1()));
|
||||
|
@ -198,21 +198,20 @@ public class B44AReport extends TextReport {
|
|||
buffer.append(String.format(" Duties: %s\n\n", data.getObserver()
|
||||
.getRprt()));
|
||||
|
||||
buffer
|
||||
.append("-------------------------- STATION MANAGEMENT SECTION ------------------------\n\n");
|
||||
buffer.append("-------------------------- STATION MANAGEMENT SECTION ------------------------\n\n");
|
||||
|
||||
buffer.append(String.format(
|
||||
"HSA: %-3s WFO: %-3s RFC: %s\n\n", locB44AData
|
||||
.getLocation().getHsa(), locB44AData.getLocation().getWfo(),
|
||||
locB44AData.getLocation().getRfc()));
|
||||
buffer
|
||||
.append("----------------------------------- REMARKS ----------------------------------\n\n");
|
||||
"HSA: %-3s WFO: %-3s RFC: %s\n\n",
|
||||
locB44AData.getLocation().getHsa(), locB44AData.getLocation()
|
||||
.getWfo(), locB44AData.getLocation().getRfc()));
|
||||
buffer.append("----------------------------------- REMARKS ----------------------------------\n\n");
|
||||
if ((locB44AData.getLocation().getLremark() != null)
|
||||
&& (locB44AData.getLocation().getLremark().length() > 0)) {
|
||||
String[] wrappedLines = TextUtil.wordWrap(locB44AData.getLocation().getLremark() + "\n", 80, 0);
|
||||
for (String s: wrappedLines) {
|
||||
String[] wrappedLines = TextUtil.wordWrap(locB44AData.getLocation()
|
||||
.getLremark() + "\n", 80, 0);
|
||||
for (String s : wrappedLines) {
|
||||
buffer.append(s + "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* try to place FOOTER at the bottom */
|
||||
|
@ -233,8 +232,7 @@ public class B44AReport extends TextReport {
|
|||
/**
|
||||
* Generate all pages of the report.
|
||||
*
|
||||
* @return
|
||||
* The full text
|
||||
* @return The full text
|
||||
*/
|
||||
private String getAllPages() {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
|
|
|
@ -19,27 +19,28 @@
|
|||
**/
|
||||
package com.raytheon.viz.hydrocommon.util;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import com.raytheon.uf.common.ohd.AppsDefaults;
|
||||
import com.raytheon.viz.hydrocommon.data.HydroDBData;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
|
||||
/**
|
||||
* Hydro Database Utilities
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 9, 2008 1194 mpduff Initial creation.
|
||||
* Date Ticket# Engineer Description
|
||||
* -----------------------------------------------------------
|
||||
* Jul 9, 2008 1194 mpduff Initial creation.
|
||||
* Mar 7, 2014 16692 lbousaidi Any Forecast source other than
|
||||
* H*,P*,Q*,T* should be handled by fcstother.
|
||||
* Oct 10, 2015 17935 special char (e.g apostrophe) can not be saved/updated in Hyrobase
|
||||
* *
|
||||
* Jan 15, 2016 DCS18180 JingtaoD code improvement based on code review for DR17935
|
||||
* </pre>
|
||||
*
|
||||
* @author mpduff
|
||||
|
@ -53,6 +54,10 @@ public class DbUtils {
|
|||
|
||||
private static ConcurrentHashMap<String, String> fcstTableMap = null;
|
||||
|
||||
/** The logger */
|
||||
private static final IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(DbUtils.class);
|
||||
|
||||
public static String getTableName(String pe, String ts) {
|
||||
populateMaps();
|
||||
String retVal = "procvalue";
|
||||
|
@ -195,9 +200,14 @@ public class DbUtils {
|
|||
* replace string fields in table class which contains apostrophe
|
||||
*
|
||||
* @param curData
|
||||
* , retData
|
||||
*/
|
||||
public static <T> void escapeSpecialCharforData(T curData) {
|
||||
Class<?> c = curData.getClass();
|
||||
public static <T extends Object> void escapeSpecialCharforData(T curData,
|
||||
T retData) {
|
||||
|
||||
copyFields(curData, retData);
|
||||
|
||||
Class<?> c = retData.getClass();
|
||||
|
||||
Field fields[] = c.getDeclaredFields();
|
||||
|
||||
|
@ -206,18 +216,21 @@ public class DbUtils {
|
|||
if (f.getType().isAssignableFrom(String.class)) {
|
||||
|
||||
f.setAccessible(true);
|
||||
if (f.get(curData) != null) {
|
||||
String value = (String) f.get(curData).toString();
|
||||
if (f.get(retData) != null) {
|
||||
String value = (String) f.get(retData).toString();
|
||||
|
||||
if (value != null) {
|
||||
if (value.contains("'")) {
|
||||
value = value.replace("'", "''");
|
||||
f.set(curData, value);
|
||||
f.set(retData, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Error to escape special characters for object "
|
||||
+ curData.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,17 +240,53 @@ public class DbUtils {
|
|||
* replace apostrophe for string
|
||||
*
|
||||
* @param strValue
|
||||
* @return
|
||||
* @return strValue
|
||||
*/
|
||||
public static String escapeSpecialCharforStr(String strValue) {
|
||||
String rVal;
|
||||
|
||||
if (strValue != null) {
|
||||
if (strValue.contains("'")) {
|
||||
strValue = strValue.replace("'", "''");
|
||||
}
|
||||
}
|
||||
rVal = strValue;
|
||||
return rVal;
|
||||
return strValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the fields in origData to copiedData, later replace special char in
|
||||
* copiedData object
|
||||
*
|
||||
* @param origData
|
||||
* @param copiedData
|
||||
*/
|
||||
public static <T extends Object> void copyFields(T origData, T copiedData) {
|
||||
|
||||
Class<? extends Object> fromCopy = origData.getClass();
|
||||
Class<? extends Object> toCopy = copiedData.getClass();
|
||||
|
||||
Field origFields[] = fromCopy.getDeclaredFields();
|
||||
|
||||
Object value = null;
|
||||
|
||||
for (Field f : origFields) {
|
||||
|
||||
try {
|
||||
|
||||
Field copiedField = toCopy.getDeclaredField(f.getName());
|
||||
|
||||
f.setAccessible(true);
|
||||
copiedField.setAccessible(true);
|
||||
|
||||
value = f.get(origData);
|
||||
copiedField.set(copiedData, value);
|
||||
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Error to copy object from " + origData.toString()
|
||||
+ "to" + copiedData.toString(), e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
17
deltaScripts/16.2.2/DCS18497/ModifyTable.sql
Executable file
17
deltaScripts/16.2.2/DCS18497/ModifyTable.sql
Executable file
|
@ -0,0 +1,17 @@
|
|||
-- Change name of column "ml_overide_flag" to "melt_layer_src"
|
||||
|
||||
ALTER TABLE DSAAdapt RENAME COLUMN ml_overide_flag TO melt_layer_src;
|
||||
|
||||
-- Add new columns for Build 17 parameters
|
||||
|
||||
ALTER TABLE DSAAdapt ADD COLUMN min_early_term_angle float4;
|
||||
ALTER TABLE DSAAdapt ADD COLUMN max_volume_per_hour float4;
|
||||
ALTER TABLE DSAAdapt ADD COLUMN dry_snow_mult float4;
|
||||
ALTER TABLE DSAAdapt ADD COLUMN rkdp_use_thresh float4;
|
||||
ALTER TABLE DSAAdapt ADD COLUMN bias_applied_flag varchar(3);
|
||||
ALTER TABLE DSAAdapt ADD COLUMN met_sig_proc_flag varchar(3);
|
||||
ALTER TABLE DSAAdapt ADD COLUMN met_sig_thresh float4;
|
||||
ALTER TABLE DSAAdapt ADD COLUMN cappi_proc_flag varchar(3);
|
||||
ALTER TABLE DSAAdapt ADD COLUMN cappi_thresh float4;
|
||||
ALTER TABLE DSAAdapt ADD COLUMN cappi_height float4;
|
||||
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue