195 lines
6.2 KiB
Java
195 lines
6.2 KiB
Java
/**
|
|
* This software was developed and / or modified by Raytheon Company,
|
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
|
*
|
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
|
* This software product contains export-restricted data whose
|
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
|
* to non-U.S. persons whether in the United States or abroad requires
|
|
* an export license or other authorization.
|
|
*
|
|
* Contractor Name: Raytheon Company
|
|
* Contractor Address: 6825 Pine Street, Suite 340
|
|
* Mail Stop B8
|
|
* Omaha, NE 68106
|
|
* 402.291.0100
|
|
*
|
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
|
* further licensing information.
|
|
**/
|
|
package com.raytheon.edex.plugin.obs;
|
|
|
|
import java.io.InputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import javax.xml.bind.JAXBException;
|
|
|
|
import com.raytheon.uf.common.dataplugin.PluginException;
|
|
import com.raytheon.uf.common.dataplugin.obs.metar.MetarRecord;
|
|
import com.raytheon.uf.common.dataplugin.persist.IPersistable;
|
|
import com.raytheon.uf.common.dataquery.db.QueryParam;
|
|
import com.raytheon.uf.common.datastorage.IDataStore;
|
|
import com.raytheon.uf.common.pointdata.PointDataDescription;
|
|
import com.raytheon.uf.common.pointdata.spatial.ObStation;
|
|
import com.raytheon.uf.common.serialization.SerializationException;
|
|
import com.raytheon.uf.edex.database.DataAccessLayerException;
|
|
import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
|
import com.raytheon.uf.edex.pointdata.PointDataDbDescription;
|
|
import com.raytheon.uf.edex.pointdata.PointDataPluginDao;
|
|
import com.raytheon.uf.edex.pointdata.spatial.ObStationDao;
|
|
|
|
/**
|
|
* TODO Add Description
|
|
*
|
|
* <pre>
|
|
*
|
|
* SOFTWARE HISTORY
|
|
* Date Ticket# Engineer Description
|
|
* ------------ ---------- ----------- --------------------------
|
|
*
|
|
* 20071217 453 jkorman added queryDataUriColumn method.
|
|
* Feb 27, 2013 1638 mschenke Moved ObStationDao to edex pointdata plugin
|
|
* </pre>
|
|
*
|
|
* @author jkorman
|
|
* @version 1.0
|
|
*/
|
|
public class ObsDao extends PointDataPluginDao<MetarRecord> {
|
|
|
|
/** The station dao */
|
|
private ObStationDao obDao = new ObStationDao();
|
|
|
|
/**
|
|
* Constructs a new obs dao.
|
|
*
|
|
* @throws PluginException
|
|
*/
|
|
public ObsDao(String pluginName) throws PluginException {
|
|
super(pluginName);
|
|
}
|
|
|
|
@Override
|
|
protected IDataStore populateDataStore(IDataStore dataStore,
|
|
IPersistable obj) throws Exception {
|
|
// TODO Auto-generated method stub
|
|
return null;
|
|
}
|
|
|
|
public List<?> queryBySpatialBox(double upperLeftLat, double upperLeftLon,
|
|
double lowerRightLat, double lowerRightLon)
|
|
throws DataAccessLayerException {
|
|
|
|
List<ObStation> stationList = obDao.queryBySpatialBox(upperLeftLat,
|
|
upperLeftLon, lowerRightLat, lowerRightLon);
|
|
|
|
List<String> stationNames = new ArrayList<String>();
|
|
// for(ObStation station:stationList){
|
|
// stationNames.add((String)station.getIdentifier());
|
|
// }
|
|
stationList.clear();
|
|
|
|
DatabaseQuery query = new DatabaseQuery(MetarRecord.class);
|
|
query.addQueryParam("location.stationId", stationNames,
|
|
QueryParam.QueryOperand.IN);
|
|
return queryByCriteria(query);
|
|
}
|
|
|
|
public List<?> queryByState(String state, Integer count)
|
|
throws DataAccessLayerException {
|
|
|
|
// List<ObStation> results = obDao.queryByState(state);
|
|
|
|
ArrayList<String> icaos = new ArrayList<String>();
|
|
// for (ObStation station : results) {
|
|
// //icaos.add((String)station.getIdentifier());
|
|
// }
|
|
|
|
DatabaseQuery query = new DatabaseQuery(MetarRecord.class, count);
|
|
query.addQueryParam("location.stationId", icaos,
|
|
QueryParam.QueryOperand.IN);
|
|
return queryByCriteria(query);
|
|
}
|
|
|
|
/**
|
|
* Queries for to determine if a given data uri exists on the sfcobs table.
|
|
*
|
|
* @param dataUri
|
|
* The DataURI to find.
|
|
* @return An array of objects. If not null, there should only be a single
|
|
* element.
|
|
*/
|
|
public Object[] queryDataUriColumn(final String dataUri) {
|
|
|
|
String sql = "select datauri from awips.obs where datauri='" + dataUri
|
|
+ "';";
|
|
|
|
Object[] results = executeSQLQuery(sql);
|
|
|
|
return results;
|
|
}
|
|
|
|
public ObStationDao getObDao() {
|
|
return obDao;
|
|
}
|
|
|
|
public void setObDao(ObStationDao obDao) {
|
|
this.obDao = obDao;
|
|
}
|
|
|
|
@Override
|
|
public String[] getKeysRequiredForFileName() {
|
|
return new String[] { "dataTime.refTime" };
|
|
}
|
|
|
|
@Override
|
|
public String getPointDataFileName(MetarRecord p) {
|
|
return "metar.h5";
|
|
}
|
|
|
|
@Override
|
|
public MetarRecord newObject() {
|
|
return new MetarRecord();
|
|
}
|
|
|
|
@Override
|
|
public PointDataDescription getPointDataDescription(Map<String, Object> obj) {
|
|
if (hdf5DataDescription == null) {
|
|
try {
|
|
hdf5DataDescription = PointDataDescription.fromStream(this
|
|
.getClass().getResourceAsStream(
|
|
"/res/pointdata/metar.xml"));
|
|
} catch (SerializationException e) {
|
|
logger.error("Unable to load metar Point Data Description", e);
|
|
}
|
|
}
|
|
return hdf5DataDescription;
|
|
}
|
|
|
|
/*
|
|
* (non-Javadoc)
|
|
*
|
|
* @see
|
|
* com.raytheon.uf.edex.pointdata.PointDataPluginDao#getPointDataDbDescription
|
|
* ()
|
|
*/
|
|
@Override
|
|
public PointDataDbDescription getPointDataDbDescription() {
|
|
if (dbDataDescription == null) {
|
|
InputStream stream = this.getClass().getResourceAsStream(
|
|
"/res/pointdata/metardb.xml");
|
|
if (stream != null) {
|
|
try {
|
|
dbDataDescription = PointDataDbDescription
|
|
.fromStream(stream);
|
|
} catch (JAXBException e) {
|
|
logger.error("Unable to load " + pluginName
|
|
+ " Point Data Database Description", e);
|
|
}
|
|
}
|
|
}
|
|
return dbDataDescription;
|
|
}
|
|
|
|
}
|