Omaha #4124 Implement getAvailableParameters() for satellite retrieval through DAF

Change-Id: I532640b7305ad0f5e7423a35e37abce22866ebad

Former-commit-id: 51466d91a9327b0bcfdeae9d1eadcd06df622da1
This commit is contained in:
Mark Peters 2015-02-17 17:06:45 -06:00
parent 6442e88fe3
commit e383afe23f
3 changed files with 50 additions and 36 deletions

View file

@ -32,7 +32,6 @@ import javax.measure.unit.Unit;
import org.geotools.coverage.grid.GridGeometry2D; import org.geotools.coverage.grid.GridGeometry2D;
import com.raytheon.uf.common.comm.CommunicationException; import com.raytheon.uf.common.comm.CommunicationException;
import com.raytheon.uf.common.dataaccess.IDataFactory;
import com.raytheon.uf.common.dataaccess.IDataRequest; import com.raytheon.uf.common.dataaccess.IDataRequest;
import com.raytheon.uf.common.dataaccess.exception.DataRetrievalException; import com.raytheon.uf.common.dataaccess.exception.DataRetrievalException;
import com.raytheon.uf.common.dataaccess.grid.IGridData; import com.raytheon.uf.common.dataaccess.grid.IGridData;
@ -55,11 +54,11 @@ import com.raytheon.uf.common.util.mapping.Mapper;
/** /**
* Data access factory for accessing data from the Grid plugin as grid types. * Data access factory for accessing data from the Grid plugin as grid types.
* *
* <pre> * <pre>
* *
* SOFTWARE HISTORY * SOFTWARE HISTORY
* *
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------- -------- ----------- -------------------------- * ------------- -------- ----------- --------------------------
* Jan 17, 2013 bsteffen Initial creation * Jan 17, 2013 bsteffen Initial creation
@ -70,16 +69,16 @@ import com.raytheon.uf.common.util.mapping.Mapper;
* Sep 09, 2014 3356 njensen Remove CommunicationException * Sep 09, 2014 3356 njensen Remove CommunicationException
* Oct 16, 2014 3598 nabowle Accept level identifiers. * Oct 16, 2014 3598 nabowle Accept level identifiers.
* Oct 21, 2014 3755 nabowle Add getAvailable levels and parameters. * Oct 21, 2014 3755 nabowle Add getAvailable levels and parameters.
* * Feb 13, 2015 4124 mapeters Inherits IDataFactory.
* *
*
* </pre> * </pre>
* *
* @author bsteffen * @author bsteffen
* @version 1.0 * @version 1.0
*/ */
public class GridDataAccessFactory extends AbstractGridDataPluginFactory public class GridDataAccessFactory extends AbstractGridDataPluginFactory {
implements IDataFactory {
private static final String NAMESPACE = "namespace"; private static final String NAMESPACE = "namespace";
@ -183,7 +182,7 @@ public class GridDataAccessFactory extends AbstractGridDataPluginFactory
/** /**
* Check for possible level conflicts. * Check for possible level conflicts.
* *
* @param levels * @param levels
* The request levels. Assumed to not be null. * The request levels. Assumed to not be null.
* @param identifiers * @param identifiers
@ -211,7 +210,7 @@ public class GridDataAccessFactory extends AbstractGridDataPluginFactory
/** /**
* Copy all constraints from source to target. If target already contains a * Copy all constraints from source to target. If target already contains a
* constraint for a key then merge the values into target. * constraint for a key then merge the values into target.
* *
* @param target * @param target
* @param source * @param source
*/ */

View file

@ -33,7 +33,6 @@ import org.geotools.coverage.grid.GridGeometry2D;
import org.geotools.geometry.jts.ReferencedEnvelope; import org.geotools.geometry.jts.ReferencedEnvelope;
import org.opengis.referencing.FactoryException; import org.opengis.referencing.FactoryException;
import com.raytheon.uf.common.dataaccess.IDataFactory;
import com.raytheon.uf.common.dataaccess.IDataRequest; import com.raytheon.uf.common.dataaccess.IDataRequest;
import com.raytheon.uf.common.dataaccess.exception.DataRetrievalException; import com.raytheon.uf.common.dataaccess.exception.DataRetrievalException;
import com.raytheon.uf.common.dataaccess.exception.EnvelopeProjectionException; import com.raytheon.uf.common.dataaccess.exception.EnvelopeProjectionException;
@ -64,19 +63,19 @@ import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Envelope;
/** /**
* *
* A data factory for getting radar data from the metadata database. There are * A data factory for getting radar data from the metadata database. There are
* currently not any required identifiers. * currently not any required identifiers.
* *
* Radar does not return subgrids for request envelopes like other gridded * Radar does not return subgrids for request envelopes like other gridded
* types. Instead data for only icaos within the request envelope are returned * types. Instead data for only icaos within the request envelope are returned
* and all data for the product is used. This is done because subgridding radial * and all data for the product is used. This is done because subgridding radial
* products is complex and this is not often what a caller actually wants. * products is complex and this is not often what a caller actually wants.
* *
* <pre> * <pre>
* *
* SOFTWARE HISTORY * SOFTWARE HISTORY
* *
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------- -------- ----------- -------------------------- * ------------- -------- ----------- --------------------------
* Jan 23, 2013 bsteffen Initial creation * Jan 23, 2013 bsteffen Initial creation
@ -91,14 +90,14 @@ import com.vividsolutions.jts.geom.Envelope;
* optional identifiers to indicate what * optional identifiers to indicate what
* fields are used for the level one and two * fields are used for the level one and two
* values. * values.
* * Feb 13, 2015 4124 mapeters Inherits IDataFactory.
*
* </pre> * </pre>
* *
* @author bsteffen * @author bsteffen
* @version 1.0 * @version 1.0
*/ */
public class RadarGridFactory extends AbstractGridDataPluginFactory implements public class RadarGridFactory extends AbstractGridDataPluginFactory {
IDataFactory {
private static final String PRODUCT_CODE = "productCode"; private static final String PRODUCT_CODE = "productCode";
@ -180,7 +179,7 @@ public class RadarGridFactory extends AbstractGridDataPluginFactory implements
* {@value #LEVEL_ONE} or {@value #LEVEL_TWO} identifiers, those fields will * {@value #LEVEL_ONE} or {@value #LEVEL_TWO} identifiers, those fields will
* be used. If {@value #LEVEL_ONE} is not specified, {@value #PRIMARY_ANGLE} * be used. If {@value #LEVEL_ONE} is not specified, {@value #PRIMARY_ANGLE}
* will be used. * will be used.
* *
* @param radarRecord * @param radarRecord
* The radar record. * The radar record.
* @param request * @param request
@ -227,8 +226,8 @@ public class RadarGridFactory extends AbstractGridDataPluginFactory implements
* Theoretically two radial geometries could have the same name but * Theoretically two radial geometries could have the same name but
* internally different angleData but this is very unlikely and the points * internally different angleData but this is very unlikely and the points
* would be very nearly identical. * would be very nearly identical.
* *
* *
* @param radarRecord * @param radarRecord
* a record. * a record.
* @return A unique location name * @return A unique location name
@ -345,7 +344,7 @@ public class RadarGridFactory extends AbstractGridDataPluginFactory implements
/** /**
* Populate a DataSource from the raw data(byte or short) in the provided * Populate a DataSource from the raw data(byte or short) in the provided
* record. * record.
* *
* @param radarRecord * @param radarRecord
* @return a DataSource or null if the record is not populated or has no * @return a DataSource or null if the record is not populated or has no
* grid data. * grid data.
@ -599,7 +598,7 @@ public class RadarGridFactory extends AbstractGridDataPluginFactory implements
/** /**
* Validates that, if specified, the {@value #LEVEL_ONE} and * Validates that, if specified, the {@value #LEVEL_ONE} and
* {@value #LEVEL_TWO} identifier values are supported. * {@value #LEVEL_TWO} identifier values are supported.
* *
* @param request * @param request
*/ */
private void validateLevelIdentifiers(IDataRequest request) { private void validateLevelIdentifiers(IDataRequest request) {
@ -617,21 +616,21 @@ public class RadarGridFactory extends AbstractGridDataPluginFactory implements
} }
/** /**
* *
* This is used to convert data from bin,radial format to radial bin format. * This is used to convert data from bin,radial format to radial bin format.
* *
* <pre> * <pre>
* *
* SOFTWARE HISTORY * SOFTWARE HISTORY
* *
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Jan 25, 2013 bsteffen Initial creation * Jan 25, 2013 bsteffen Initial creation
* Feb 14, 2013 1614 bsteffen refactor data access framework to use * Feb 14, 2013 1614 bsteffen refactor data access framework to use
* single request. * single request.
* *
* </pre> * </pre>
* *
* @author bsteffen * @author bsteffen
* @version 1.0 * @version 1.0
*/ */

View file

@ -30,7 +30,6 @@ import javax.measure.unit.UnitFormat;
import org.geotools.coverage.grid.GridGeometry2D; import org.geotools.coverage.grid.GridGeometry2D;
import com.raytheon.uf.common.dataaccess.IDataFactory;
import com.raytheon.uf.common.dataaccess.IDataRequest; import com.raytheon.uf.common.dataaccess.IDataRequest;
import com.raytheon.uf.common.dataaccess.exception.DataRetrievalException; import com.raytheon.uf.common.dataaccess.exception.DataRetrievalException;
import com.raytheon.uf.common.dataaccess.impl.AbstractGridDataPluginFactory; import com.raytheon.uf.common.dataaccess.impl.AbstractGridDataPluginFactory;
@ -38,7 +37,9 @@ import com.raytheon.uf.common.dataaccess.impl.DefaultGridData;
import com.raytheon.uf.common.dataplugin.PluginDataObject; import com.raytheon.uf.common.dataplugin.PluginDataObject;
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord; import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
import com.raytheon.uf.common.dataplugin.satellite.units.SatelliteUnits; import com.raytheon.uf.common.dataplugin.satellite.units.SatelliteUnits;
import com.raytheon.uf.common.dataquery.requests.DbQueryRequest;
import com.raytheon.uf.common.dataquery.requests.RequestConstraint; import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
import com.raytheon.uf.common.dataquery.responses.DbQueryResponse;
import com.raytheon.uf.common.numeric.source.DataSource; import com.raytheon.uf.common.numeric.source.DataSource;
/** /**
@ -58,14 +59,14 @@ import com.raytheon.uf.common.numeric.source.DataSource;
* Feb 04, 2014 2672 bsteffen Enable requesting subgrids. * Feb 04, 2014 2672 bsteffen Enable requesting subgrids.
* Jul 30, 2014 3184 njensen Renamed valid identifiers to optional * Jul 30, 2014 3184 njensen Renamed valid identifiers to optional
* Sep 29, 2014 3596 nabowle Always put creatingEntity in attributes. * Sep 29, 2014 3596 nabowle Always put creatingEntity in attributes.
* Feb 13, 2015 4124 mapeters Overrode getAvailableParameters(), inherits IDataFactory.
* *
* </pre> * </pre>
* *
* @author bkowal * @author bkowal
* @version 1.0 * @version 1.0
*/ */
public class SatelliteGridFactory extends AbstractGridDataPluginFactory public class SatelliteGridFactory extends AbstractGridDataPluginFactory {
implements IDataFactory {
private static final String FIELD_CREATING_ENTITY = "creatingEntity"; private static final String FIELD_CREATING_ENTITY = "creatingEntity";
@ -127,7 +128,7 @@ public class SatelliteGridFactory extends AbstractGridDataPluginFactory
/** /**
* Builds the base constraint map based on the supplied grid request * Builds the base constraint map based on the supplied grid request
* *
* @param request * @param request
* the original grid request * the original grid request
* @return the base constraint map * @return the base constraint map
@ -172,4 +173,19 @@ public class SatelliteGridFactory extends AbstractGridDataPluginFactory
return getAvailableLocationNames(request, FIELD_SECTOR_ID); return getAvailableLocationNames(request, FIELD_SECTOR_ID);
} }
/**
* Get the available parameters.
*/
@Override
public String[] getAvailableParameters(IDataRequest request) {
DbQueryRequest dbQueryRequest = buildDbQueryRequest(request);
dbQueryRequest.setDistinct(Boolean.TRUE);
dbQueryRequest.addRequestField(FIELD_PYHSICAL_ELEMENT);
DbQueryResponse dbQueryResponse = this.executeDbQueryRequest(
dbQueryRequest, request.toString());
return dbQueryResponse.getFieldObjects(FIELD_PYHSICAL_ELEMENT,
String.class);
}
} }