Issue #2190 Cleaned up sounding and cloud height dependencies
Change-Id: If07406f7e618fca0ea001b56a81b8552d9d44546 Former-commit-id: 767ecfd7f2930de641d532d08120d5023b6e38e4
This commit is contained in:
parent
1a0c6e540e
commit
56fef93541
52 changed files with 318 additions and 1831 deletions
|
@ -7,37 +7,20 @@ Bundle-Activator: com.raytheon.uf.viz.acarssounding.Activator
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
Eclipse-RegisterBuddy: com.raytheon.viz.core, com.raytheon.uf.viz.core
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization, com.raytheon.uf.viz.sounding
|
||||||
Import-Package: com.raytheon.edex.meteoLib,
|
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.dataplugin.acarssounding,
|
|
||||||
com.raytheon.uf.common.dataplugin.level,
|
|
||||||
com.raytheon.uf.common.dataquery.requests,
|
|
||||||
com.raytheon.uf.common.datastorage,
|
|
||||||
com.raytheon.uf.common.datastorage.records,
|
|
||||||
com.raytheon.uf.common.derivparam.tree,
|
|
||||||
com.raytheon.uf.common.localization,
|
|
||||||
com.raytheon.uf.common.pointdata,
|
|
||||||
com.raytheon.uf.common.pointdata.spatial,
|
|
||||||
com.raytheon.uf.common.serialization,
|
|
||||||
com.raytheon.uf.common.status,
|
|
||||||
com.raytheon.uf.common.time,
|
|
||||||
com.raytheon.uf.viz.core.alerts,
|
|
||||||
com.raytheon.uf.viz.core.catalog,
|
|
||||||
com.raytheon.uf.viz.core.comm,
|
|
||||||
com.raytheon.uf.viz.core.datastructure,
|
|
||||||
com.raytheon.uf.viz.core.exception,
|
|
||||||
com.raytheon.uf.viz.core.level,
|
|
||||||
com.raytheon.uf.viz.derivparam,
|
|
||||||
com.raytheon.uf.viz.derivparam.data,
|
|
||||||
com.raytheon.uf.viz.derivparam.inv,
|
|
||||||
com.raytheon.uf.viz.derivparam.library,
|
|
||||||
com.raytheon.uf.viz.derivparam.tree,
|
|
||||||
com.raytheon.viz.alerts,
|
|
||||||
com.raytheon.viz.pointdata.util,
|
|
||||||
javax.measure.unit,
|
|
||||||
org.eclipse.core.runtime,
|
|
||||||
org.eclipse.core.runtime.jobs,
|
|
||||||
org.osgi.framework
|
|
||||||
Require-Bundle: com.raytheon.uf.common.sounding;bundle-version="1.0.0"
|
|
||||||
Export-Package: com.raytheon.uf.viz.acarssounding
|
Export-Package: com.raytheon.uf.viz.acarssounding
|
||||||
|
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
|
||||||
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataplugin.acarssounding;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataquery;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.derivparam;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.sounding;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.derivparam;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.viz.pointdata;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.edex.meteolib;bundle-version="1.12.1174"
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
point="com.raytheon.uf.viz.sounding.verticalSoundingAdapter">
|
point="com.raytheon.uf.viz.sounding.verticalSoundingAdapter">
|
||||||
<verticalSoundingAdapter
|
<verticalSoundingAdapter
|
||||||
adapter="com.raytheon.uf.viz.acarssounding.AcarsSoundingAdapter"
|
adapter="com.raytheon.uf.viz.acarssounding.AcarsSoundingAdapter"
|
||||||
class="com.raytheon.uf.edex.plugin.acarssounding.common.ACARSSoundingRecord"
|
class="com.raytheon.uf.common.dataplugin.acarssounding.ACARSSoundingRecord"
|
||||||
name="ACARSSoundingAdapter">
|
name="ACARSSoundingAdapter">
|
||||||
</verticalSoundingAdapter>
|
</verticalSoundingAdapter>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
|
@ -5,26 +5,30 @@ Bundle-SymbolicName: com.raytheon.uf.viz.cloudheight;singleton:=true
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Bundle-Activator: com.raytheon.uf.viz.cloudheight.Activator
|
Bundle-Activator: com.raytheon.uf.viz.cloudheight.Activator
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Eclipse-RegisterBuddy: com.raytheon.viz.core, com.raytheon.uf.viz.core
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Eclipse-BuddyPolicy: ext, global
|
Require-Bundle: org.eclipse.ui;bundle-version="3.8.2",
|
||||||
Require-Bundle: org.eclipse.ui,
|
|
||||||
org.eclipse.core.runtime,
|
org.eclipse.core.runtime,
|
||||||
com.raytheon.uf.common.pointdata,
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.viz.d2d.core;bundle-version="1.11.17",
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
com.raytheon.viz.ui;bundle-version="1.11.17",
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
com.raytheon.viz.skewt;bundle-version="1.11.17",
|
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
com.raytheon.viz.core;bundle-version="1.11.17",
|
com.raytheon.uf.common.colormap;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.dataplugin.bufrua;bundle-version="1.11.22",
|
com.raytheon.uf.common.dataquery;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.sounding;bundle-version="1.0.0",
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
javax.measure;bundle-version="1.0.0",
|
com.raytheon.uf.common.sounding;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
|
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.dataplugin.satellite;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.dataplugin.grid;bundle-version="1.0.0",
|
com.raytheon.uf.common.dataplugin.grid;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.parameter;bundle-version="1.0.0",
|
com.raytheon.uf.common.dataplugin.satellite;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.colormap;bundle-version="1.12.1174"
|
com.raytheon.uf.common.dataplugin.bufrua;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.viz.ui;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.d2d.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.viz.skewt;bundle-version="1.12.1174",
|
||||||
|
javax.measure;bundle-version="1.0.0"
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
Export-Package: com.raytheon.uf.viz.cloudheight,
|
Export-Package: com.raytheon.uf.viz.cloudheight,
|
||||||
com.raytheon.uf.viz.cloudheight.data,
|
com.raytheon.uf.viz.cloudheight.data,
|
||||||
com.raytheon.uf.viz.cloudheight.rsc,
|
com.raytheon.uf.viz.cloudheight.rsc,
|
||||||
com.raytheon.uf.viz.cloudheight.ui
|
com.raytheon.uf.viz.cloudheight.ui
|
||||||
|
Import-Package: com.raytheon.viz.core.map
|
||||||
|
|
|
@ -214,10 +214,18 @@ public class ModelCloudHeightSourceImplementation extends
|
||||||
e);
|
e);
|
||||||
}
|
}
|
||||||
for (PluginDataObject gr : pdos) {
|
for (PluginDataObject gr : pdos) {
|
||||||
IDataRecord[] drs = (IDataRecord[]) gr
|
Object messageData = gr.getMessageData();
|
||||||
.getMessageData();
|
IDataRecord record = null;
|
||||||
if (drs != null && drs.length > 0) {
|
if (messageData instanceof IDataRecord[]) {
|
||||||
gr.setMessageData(((FloatDataRecord) drs[0])
|
IDataRecord[] records = (IDataRecord[]) messageData;
|
||||||
|
if (records.length > 0) {
|
||||||
|
record = records[0];
|
||||||
|
}
|
||||||
|
} else if (messageData instanceof IDataRecord) {
|
||||||
|
record = (IDataRecord) messageData;
|
||||||
|
}
|
||||||
|
if (record != null) {
|
||||||
|
gr.setMessageData(((FloatDataRecord) record)
|
||||||
.getFloatData());
|
.getFloatData());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,6 @@ Export-Package: com.raytheon.uf.viz.core,
|
||||||
com.raytheon.uf.viz.core.style.level,
|
com.raytheon.uf.viz.core.style.level,
|
||||||
com.raytheon.uf.viz.core.tile,
|
com.raytheon.uf.viz.core.tile,
|
||||||
com.raytheon.uf.viz.core.time,
|
com.raytheon.uf.viz.core.time,
|
||||||
com.raytheon.viz.core.slice,
|
|
||||||
com.raytheon.viz.core.slice.request,
|
com.raytheon.viz.core.slice.request,
|
||||||
com.raytheon.viz.core.units
|
com.raytheon.viz.core.units
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.uf.viz.core.datastructure;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract factory for creating data cubes
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 28, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public abstract class AbstractDataCubeFactory {
|
|
||||||
|
|
||||||
public abstract DataCube construct(PluginDataObject[] pdos,
|
|
||||||
DataCube.Mode mode) throws VizDataCubeException;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,667 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.uf.viz.core.datastructure;
|
|
||||||
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import javax.measure.unit.Unit;
|
|
||||||
|
|
||||||
import org.geotools.coverage.grid.GeneralGridEnvelope;
|
|
||||||
import org.geotools.coverage.grid.GridGeometry2D;
|
|
||||||
import org.geotools.geometry.DirectPosition2D;
|
|
||||||
import org.geotools.geometry.GeneralDirectPosition;
|
|
||||||
import org.geotools.geometry.GeneralEnvelope;
|
|
||||||
import org.geotools.geometry.jts.JTS;
|
|
||||||
import org.opengis.geometry.DirectPosition;
|
|
||||||
import org.opengis.geometry.MismatchedDimensionException;
|
|
||||||
import org.opengis.referencing.FactoryException;
|
|
||||||
import org.opengis.referencing.operation.MathTransform;
|
|
||||||
import org.opengis.referencing.operation.TransformException;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|
||||||
import com.raytheon.uf.common.geospatial.ISpatialObject;
|
|
||||||
import com.raytheon.uf.common.geospatial.MapUtil;
|
|
||||||
import com.raytheon.uf.common.geospatial.PointUtil;
|
|
||||||
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.DataTime;
|
|
||||||
import com.raytheon.uf.common.util.GridUtil;
|
|
||||||
import com.raytheon.uf.viz.core.Activator;
|
|
||||||
import com.raytheon.uf.viz.core.exception.VizException;
|
|
||||||
import com.raytheon.uf.viz.core.interp.IInterpolation;
|
|
||||||
import com.raytheon.uf.viz.core.interp.InterpolationRequest;
|
|
||||||
import com.raytheon.uf.viz.core.interp.InterpolationResult;
|
|
||||||
import com.raytheon.uf.viz.core.interp.PythonInterpolation;
|
|
||||||
import com.raytheon.uf.viz.core.status.StatusConstants;
|
|
||||||
import com.raytheon.uf.viz.core.style.level.SingleLevel;
|
|
||||||
import com.raytheon.viz.core.slice.AbstractSlice;
|
|
||||||
import com.raytheon.viz.core.slice.FloatSlice;
|
|
||||||
import com.raytheon.viz.core.slice.ISliceable;
|
|
||||||
import com.raytheon.viz.core.slice.request.SliceRequest;
|
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPlaneRequest;
|
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest;
|
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest.TimeDirection;
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
|
||||||
import com.vividsolutions.jts.geom.GeometryFactory;
|
|
||||||
import com.vividsolutions.jts.geom.LineString;
|
|
||||||
import com.vividsolutions.jts.geom.LinearRing;
|
|
||||||
import com.vividsolutions.jts.geom.Polygon;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 4 dimensional data cube that holds data in x, y, z, and time dimensions. All
|
|
||||||
* data in the cube should be of the same parameter and grid geometry.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 28, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class DataCube implements ISliceable {
|
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(DataCube.class);
|
|
||||||
|
|
||||||
public enum Mode {
|
|
||||||
EAGER, ON_DEMAND
|
|
||||||
};
|
|
||||||
|
|
||||||
protected Mode mode;
|
|
||||||
|
|
||||||
protected String type;
|
|
||||||
|
|
||||||
protected String parameter;
|
|
||||||
|
|
||||||
protected Unit<?> units;
|
|
||||||
|
|
||||||
protected ISpatialObject spatialArea;
|
|
||||||
|
|
||||||
protected HashMap<DataCubeKey, Object> data = new HashMap<DataCubeKey, Object>();
|
|
||||||
|
|
||||||
// /** elevations */
|
|
||||||
// private double lowerElevation;
|
|
||||||
//
|
|
||||||
// private double upperElevation;
|
|
||||||
|
|
||||||
protected MathTransform crsFromLatLon = null;
|
|
||||||
|
|
||||||
protected Polygon cubeGeometry;
|
|
||||||
|
|
||||||
public DataCube(String aType, Mode aMode) {
|
|
||||||
type = aType;
|
|
||||||
mode = aMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public AbstractSlice[] slice(SliceRequest request) throws VizException {
|
|
||||||
AbstractSlice[] sliceArray = null;
|
|
||||||
if (request instanceof VerticalPlaneRequest) {
|
|
||||||
sliceArray = verticalPlaneSlice((VerticalPlaneRequest) request);
|
|
||||||
} else if (request instanceof VerticalPointRequest) {
|
|
||||||
sliceArray = verticalPointSlice((VerticalPointRequest) request);
|
|
||||||
} else {
|
|
||||||
throw new VizException(
|
|
||||||
"Data cube does not yet support slice requests of type "
|
|
||||||
+ request.getClass().getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
return sliceArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected AbstractSlice[] verticalPlaneSlice(VerticalPlaneRequest vReq)
|
|
||||||
throws VizException {
|
|
||||||
Point startPosition = null;
|
|
||||||
Point endPosition = null;
|
|
||||||
|
|
||||||
GeometryFactory gf = new GeometryFactory();
|
|
||||||
|
|
||||||
LineString sliceReq = gf.createLineString(vReq.getCoordinates());
|
|
||||||
try {
|
|
||||||
sliceReq = (LineString) JTS.transform(sliceReq, crsFromLatLon);
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.handle(Priority.PROBLEM,
|
|
||||||
"Error converting slice coordinates", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
double totalDistance = sliceReq.getLength();
|
|
||||||
|
|
||||||
Geometry intersection = sliceReq.intersection(cubeGeometry);
|
|
||||||
if (intersection == null || intersection.getCoordinates().length == 0) {
|
|
||||||
System.out.println("No intersection");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Point> dataPoints = new ArrayList<Point>();
|
|
||||||
List<Point> uniquePoints = new ArrayList<Point>();
|
|
||||||
Coordinate[] coords = vReq.getCoordinates();
|
|
||||||
for (int i = 0; i < coords.length - 1; ++i) {
|
|
||||||
Coordinate start = coords[i];
|
|
||||||
Coordinate end = coords[i + 1];
|
|
||||||
|
|
||||||
try {
|
|
||||||
startPosition = PointUtil.determineIndex(start, spatialArea
|
|
||||||
.getCrs(), MapUtil.getGridGeometry(spatialArea));
|
|
||||||
endPosition = PointUtil.determineIndex(end, spatialArea
|
|
||||||
.getCrs(), MapUtil.getGridGeometry(spatialArea));
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new VizException("Error determining index in grid.", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// determine points in 2 dimensional grid space of the line
|
|
||||||
ArrayList<Point> points = GridUtil.bresenham(startPosition,
|
|
||||||
endPosition);
|
|
||||||
|
|
||||||
// TODO maybe fill in their values with interpolation
|
|
||||||
// if the points are outside the grid, drop them
|
|
||||||
List<Point> pointsToRemove = new ArrayList<Point>();
|
|
||||||
for (Point c : points) {
|
|
||||||
if (c.x < 0 || c.y < 0 || c.x >= spatialArea.getNx()
|
|
||||||
|| c.y >= spatialArea.getNy()) {
|
|
||||||
pointsToRemove.add(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
points.removeAll(pointsToRemove);
|
|
||||||
|
|
||||||
for (Point p : points) {
|
|
||||||
if (uniquePoints.contains(p) == false) {
|
|
||||||
uniquePoints.add(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dataPoints.addAll(uniquePoints);
|
|
||||||
}
|
|
||||||
|
|
||||||
int nPoints = dataPoints.size();
|
|
||||||
|
|
||||||
Coordinate[] sliceCoords = new Coordinate[dataPoints.size()];
|
|
||||||
MathTransform gridToCrs = MapUtil.getGridGeometry(spatialArea)
|
|
||||||
.getGridToCRS();
|
|
||||||
MathTransform crsToLL;
|
|
||||||
try {
|
|
||||||
crsToLL = MapUtil.getTransformToLatLon(spatialArea.getCrs());
|
|
||||||
} catch (FactoryException e) {
|
|
||||||
throw new VizException(
|
|
||||||
"Error Determining Coordinates of Grid Point.", e);
|
|
||||||
}
|
|
||||||
for (int i = 0; i < dataPoints.size(); i++) {
|
|
||||||
Point p = dataPoints.get(i);
|
|
||||||
DirectPosition2D result = new DirectPosition2D();
|
|
||||||
try {
|
|
||||||
DirectPosition2D crsDP = new DirectPosition2D();
|
|
||||||
gridToCrs.transform(new DirectPosition2D(p.x, p.y), crsDP);
|
|
||||||
crsToLL.transform(crsDP, result);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new VizException(
|
|
||||||
"Error Determining Coordinates of Grid Point.", e);
|
|
||||||
}
|
|
||||||
sliceCoords[i] = new Coordinate(result.x, result.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
SingleLevel[] reqLevels = vReq.getLevels();
|
|
||||||
Arrays.sort(reqLevels);
|
|
||||||
|
|
||||||
double lowestLevel = Math.min(reqLevels[0].getValue(),
|
|
||||||
reqLevels[reqLevels.length - 1].getValue());
|
|
||||||
double highestLevel = Math.max(reqLevels[0].getValue(),
|
|
||||||
reqLevels[reqLevels.length - 1].getValue());
|
|
||||||
// TODO fix max distance when slice req endpoints are outside datacube
|
|
||||||
GeneralEnvelope env = new GeneralEnvelope(
|
|
||||||
new double[] { 0, lowestLevel }, new double[] { totalDistance,
|
|
||||||
highestLevel });
|
|
||||||
GeneralGridEnvelope range = new GeneralGridEnvelope(new int[] { 0, 0 },
|
|
||||||
new int[] { nPoints, reqLevels.length }, false);
|
|
||||||
|
|
||||||
// create a slice for each time
|
|
||||||
ArrayList<AbstractSlice> sliceList = new ArrayList<AbstractSlice>();
|
|
||||||
for (DataTime time : vReq.getTimes()) {
|
|
||||||
GridGeometry2D sliceGeom = new GridGeometry2D(range, env);
|
|
||||||
FloatSlice slice = new FloatSlice();
|
|
||||||
slice = new FloatSlice();
|
|
||||||
slice.setGridGeometry(sliceGeom);
|
|
||||||
|
|
||||||
int dataLength = nPoints * reqLevels.length;
|
|
||||||
PluginDataObject[] organizedData = new PluginDataObject[reqLevels.length];
|
|
||||||
int n = 0;
|
|
||||||
for (int i = 0; i < reqLevels.length; i++) {
|
|
||||||
organizedData[n] = (PluginDataObject) data.get(new DataCubeKey(
|
|
||||||
time, reqLevels[i]));
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// retrieve the organized data values
|
|
||||||
float[] result = new float[dataLength];
|
|
||||||
if (mode == Mode.EAGER) {
|
|
||||||
// determine indices in 1 dimensional grid space of the line
|
|
||||||
int[] indices = new int[nPoints];
|
|
||||||
for (int i = 0; i < nPoints; i++) {
|
|
||||||
Point point = dataPoints.get(i);
|
|
||||||
indices[i] = point.y * spatialArea.getNx() + point.x;
|
|
||||||
}
|
|
||||||
|
|
||||||
float[] sliceLevelData = new float[nPoints];
|
|
||||||
for (int i = 0; i < organizedData.length; i++) {
|
|
||||||
float[] levelData = ((float[]) organizedData[i]
|
|
||||||
.getMessageData());
|
|
||||||
for (int k = 0; k < nPoints; k++) {
|
|
||||||
sliceLevelData[k] = levelData[indices[k]];
|
|
||||||
}
|
|
||||||
|
|
||||||
System.arraycopy(sliceLevelData, 0, result, i * nPoints,
|
|
||||||
nPoints);
|
|
||||||
}
|
|
||||||
} else if (mode == Mode.ON_DEMAND) {
|
|
||||||
float[] tmp = CubeUtil
|
|
||||||
.retrieveData(organizedData, uniquePoints);
|
|
||||||
if (dataPoints.size() != uniquePoints.size()) {
|
|
||||||
result = new float[dataPoints.size() * organizedData.length];
|
|
||||||
for (int i = 0; i < dataPoints.size(); ++i) {
|
|
||||||
int idx = uniquePoints.indexOf(dataPoints.get(i));
|
|
||||||
for (int j = 0; j < organizedData.length; ++j) {
|
|
||||||
result[i + j * dataPoints.size()] = tmp[idx + j
|
|
||||||
* uniquePoints.size()];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
result = tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
InterpolationRequest request = vReq.getRequest();
|
|
||||||
float[] xValues = new float[sliceGeom.getGridRange2D().width];
|
|
||||||
for (int i = 0; i < xValues.length; ++i) {
|
|
||||||
xValues[i] = i;
|
|
||||||
}
|
|
||||||
request.setXData(xValues);
|
|
||||||
request.setMinX(0);
|
|
||||||
request.setMaxX(xValues[xValues.length - 1]);
|
|
||||||
request.setZData(result);
|
|
||||||
scaleData(request);
|
|
||||||
|
|
||||||
float interpFactor = 1.0f;
|
|
||||||
IInterpolation interp = new PythonInterpolation(vReq.getScale());
|
|
||||||
InterpolationResult iResults = interp.interpolate(request);
|
|
||||||
result = iResults.getValues();
|
|
||||||
|
|
||||||
sliceGeom = iResults.getGeometry();
|
|
||||||
slice.setGridGeometry(sliceGeom);
|
|
||||||
slice.setInterpolationFactor(interpFactor);
|
|
||||||
slice.setSliceData(result);
|
|
||||||
slice.setDataTime(new DataTime[] { time });
|
|
||||||
slice.setLevels(vReq.getLevels());
|
|
||||||
slice.setCoordinates(sliceCoords);
|
|
||||||
sliceList.add(slice);
|
|
||||||
}
|
|
||||||
|
|
||||||
return sliceList.toArray(new AbstractSlice[sliceList.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected AbstractSlice[] verticalPointSlice(VerticalPointRequest vReq)
|
|
||||||
throws VizException {
|
|
||||||
if (!this.contains(vReq.getCoordinate())) {
|
|
||||||
return new AbstractSlice[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
Point position = null;
|
|
||||||
try {
|
|
||||||
position = PointUtil.determineIndex(vReq.getCoordinate(),
|
|
||||||
spatialArea.getCrs(), MapUtil.getGridGeometry(spatialArea));
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new VizException("Error determining index in grid.", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
DataTime[] times = vReq.getTimes();
|
|
||||||
Arrays.sort(times);
|
|
||||||
int nPoints = times.length;
|
|
||||||
|
|
||||||
double earliestTime = times[0].getValidTime().getTimeInMillis();
|
|
||||||
|
|
||||||
SingleLevel[] reqLevels = vReq.getLevels();
|
|
||||||
Arrays.sort(reqLevels);
|
|
||||||
|
|
||||||
double lowestLevel = Math.min(reqLevels[0].getValue(),
|
|
||||||
reqLevels[reqLevels.length - 1].getValue());
|
|
||||||
double highestLevel = Math.max(reqLevels[0].getValue(),
|
|
||||||
reqLevels[reqLevels.length - 1].getValue());
|
|
||||||
GeneralEnvelope env = new GeneralEnvelope(
|
|
||||||
new double[] { 0, lowestLevel }, new double[] { earliestTime,
|
|
||||||
highestLevel });
|
|
||||||
GeneralGridEnvelope range = new GeneralGridEnvelope(new int[] { 0, 0 },
|
|
||||||
new int[] { nPoints, reqLevels.length }, false);
|
|
||||||
GridGeometry2D sliceGeom = new GridGeometry2D(range, env);
|
|
||||||
|
|
||||||
ArrayList<AbstractSlice> sliceList = new ArrayList<AbstractSlice>();
|
|
||||||
FloatSlice slice = new FloatSlice();
|
|
||||||
slice = new FloatSlice();
|
|
||||||
slice.setGridGeometry(sliceGeom);
|
|
||||||
int dataLength = nPoints * reqLevels.length;
|
|
||||||
|
|
||||||
PluginDataObject[] organizedData = new PluginDataObject[dataLength];
|
|
||||||
|
|
||||||
int n = 0;
|
|
||||||
for (int i = 0; i < reqLevels.length; i++) {
|
|
||||||
if (vReq.getTimeDirection() == TimeDirection.LEFT_TO_RIGHT) {
|
|
||||||
for (int k = 0; k < times.length; k++) {
|
|
||||||
organizedData[n] = (PluginDataObject) data
|
|
||||||
.get(new DataCubeKey(times[k], reqLevels[i]));
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
} else if (vReq.getTimeDirection() == TimeDirection.RIGHT_TO_LEFT) {
|
|
||||||
for (int k = times.length - 1; k > -1; k--) {
|
|
||||||
organizedData[n] = (PluginDataObject) data
|
|
||||||
.get(new DataCubeKey(times[k], reqLevels[i]));
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
float[] result = new float[dataLength];
|
|
||||||
if (mode == Mode.EAGER) {
|
|
||||||
// determine indices in 1 dimensional grid space of the line
|
|
||||||
int index = position.y * spatialArea.getNx() + position.x;
|
|
||||||
|
|
||||||
for (int i = 0; i < dataLength; i++) {
|
|
||||||
result[i] = ((float[]) organizedData[i].getMessageData())[index];
|
|
||||||
}
|
|
||||||
} else if (mode == Mode.ON_DEMAND) {
|
|
||||||
result = CubeUtil.retrieveData(organizedData, position.x,
|
|
||||||
position.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
InterpolationRequest request = vReq.getRequest();
|
|
||||||
if (request != null) {
|
|
||||||
float[] xValues = new float[sliceGeom.getGridRange2D().width];
|
|
||||||
for (int i = 0; i < xValues.length; ++i) {
|
|
||||||
xValues[i] = i;
|
|
||||||
}
|
|
||||||
request.setXData(xValues);
|
|
||||||
request.setMinX(0);
|
|
||||||
request.setMaxX(xValues[xValues.length - 1]);
|
|
||||||
request.setZData(result);
|
|
||||||
scaleData(request);
|
|
||||||
|
|
||||||
IInterpolation interp = new PythonInterpolation(vReq.getScale());
|
|
||||||
InterpolationResult iResults = interp.interpolate(request);
|
|
||||||
result = iResults.getValues();
|
|
||||||
|
|
||||||
sliceGeom = iResults.getGeometry();
|
|
||||||
}
|
|
||||||
|
|
||||||
slice.setGridGeometry(sliceGeom);
|
|
||||||
slice.setSliceData(result);
|
|
||||||
slice.setDataTime(times);
|
|
||||||
slice.setLevels(vReq.getLevels());
|
|
||||||
sliceList.add(slice);
|
|
||||||
|
|
||||||
return sliceList.toArray(new AbstractSlice[sliceList.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addData(DataTime aTime, SingleLevel aLevel, Object aData) {
|
|
||||||
DataCubeKey key = new DataCubeKey(aTime, aLevel);
|
|
||||||
data.put(key, aData);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the parameter
|
|
||||||
*/
|
|
||||||
public String getParameter() {
|
|
||||||
return parameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param parameter
|
|
||||||
* the parameter to set
|
|
||||||
*/
|
|
||||||
public void setParameter(String parameter) {
|
|
||||||
this.parameter = parameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the spatialArea
|
|
||||||
*/
|
|
||||||
public ISpatialObject getSpatialArea() {
|
|
||||||
return spatialArea;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param spatialArea
|
|
||||||
* the spatialArea to set
|
|
||||||
*/
|
|
||||||
public void setSpatialArea(ISpatialObject spatialArea) {
|
|
||||||
this.spatialArea = spatialArea;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the data levels
|
|
||||||
*
|
|
||||||
* @param sort
|
|
||||||
* returned levels are in ascending order
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public SingleLevel[] getAvailableLevels(boolean sort) {
|
|
||||||
Set<SingleLevel> set = new HashSet<SingleLevel>();
|
|
||||||
Set<DataCubeKey> cubeKeys = data.keySet();
|
|
||||||
for (DataCubeKey key : cubeKeys) {
|
|
||||||
set.add(key.getLevel());
|
|
||||||
}
|
|
||||||
SingleLevel[] levels = set.toArray(new SingleLevel[set.size()]);
|
|
||||||
|
|
||||||
if (sort) {
|
|
||||||
Arrays.sort(levels);
|
|
||||||
}
|
|
||||||
return levels;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the available times
|
|
||||||
*
|
|
||||||
* @param sort
|
|
||||||
* returned data times are in ascending order
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public DataTime[] getAvailableTimes(boolean sort) {
|
|
||||||
Set<DataTime> set = new HashSet<DataTime>();
|
|
||||||
Set<DataCubeKey> cubeKeys = data.keySet();
|
|
||||||
for (DataCubeKey key : cubeKeys) {
|
|
||||||
set.add(key.getTime());
|
|
||||||
}
|
|
||||||
|
|
||||||
DataTime[] times = set.toArray(new DataTime[set.size()]);
|
|
||||||
if (sort) {
|
|
||||||
Arrays.sort(times);
|
|
||||||
}
|
|
||||||
return times;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the units
|
|
||||||
*/
|
|
||||||
public Unit<?> getUnits() {
|
|
||||||
return units;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param units
|
|
||||||
* the units to set
|
|
||||||
*/
|
|
||||||
public void setUnits(Unit<?> units) {
|
|
||||||
this.units = units;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the raw data for all levels
|
|
||||||
*/
|
|
||||||
public Object getData(DataTime time) {
|
|
||||||
SingleLevel[] levels = getAvailableLevels(true);
|
|
||||||
DataTime[] times = getAvailableTimes(false);
|
|
||||||
Arrays.sort(times);
|
|
||||||
int index = 0;
|
|
||||||
for (DataTime d : times) {
|
|
||||||
if (d.equals(time)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
|
|
||||||
float[] cubeData = (float[]) ((PluginDataObject) data
|
|
||||||
.get(new DataCubeKey(times[index], levels[0])))
|
|
||||||
.getMessageData();
|
|
||||||
|
|
||||||
float[][] theData = new float[levels.length][cubeData.length];
|
|
||||||
|
|
||||||
for (int i = 0; i < levels.length; ++i) {
|
|
||||||
cubeData = (float[]) ((PluginDataObject) this.data
|
|
||||||
.get(new DataCubeKey(times[index], levels[i])))
|
|
||||||
.getMessageData();
|
|
||||||
|
|
||||||
System.arraycopy(cubeData, 0, theData[i], 0, cubeData.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
return theData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine if coordinate is inside the data cube
|
|
||||||
*
|
|
||||||
* @param c
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public boolean contains(Coordinate c) {
|
|
||||||
DirectPosition ll = new GeneralDirectPosition(MapUtil.LATLON_PROJECTION);
|
|
||||||
ll.setOrdinate(0, c.x);
|
|
||||||
ll.setOrdinate(1, c.y);
|
|
||||||
DirectPosition crs = new GeneralDirectPosition(spatialArea.getCrs());
|
|
||||||
try {
|
|
||||||
crsFromLatLon.transform(ll, crs);
|
|
||||||
} catch (MismatchedDimensionException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (TransformException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
Coordinate newC = new Coordinate(crs.getOrdinate(0), crs.getOrdinate(1));
|
|
||||||
|
|
||||||
GeometryFactory gf = new GeometryFactory();
|
|
||||||
com.vividsolutions.jts.geom.Point p = gf.createPoint(newC);
|
|
||||||
|
|
||||||
return this.cubeGeometry.contains(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void initGeometry() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
crsFromLatLon = MapUtil
|
|
||||||
.getTransformFromLatLon(spatialArea.getCrs());
|
|
||||||
} catch (FactoryException e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
DirectPosition lowerCorner = MapUtil.getGridGeometry(spatialArea)
|
|
||||||
.getEnvelope().getLowerCorner();
|
|
||||||
DirectPosition upperCorner = MapUtil.getGridGeometry(spatialArea)
|
|
||||||
.getEnvelope().getUpperCorner();
|
|
||||||
|
|
||||||
GeometryFactory gf = new GeometryFactory();
|
|
||||||
|
|
||||||
Coordinate p1 = new Coordinate(lowerCorner.getOrdinate(0), lowerCorner
|
|
||||||
.getOrdinate(1));
|
|
||||||
Coordinate p2 = new Coordinate(lowerCorner.getOrdinate(0), upperCorner
|
|
||||||
.getOrdinate(1));
|
|
||||||
Coordinate p3 = new Coordinate(upperCorner.getOrdinate(0), upperCorner
|
|
||||||
.getOrdinate(1));
|
|
||||||
Coordinate p4 = new Coordinate(upperCorner.getOrdinate(0), lowerCorner
|
|
||||||
.getOrdinate(1));
|
|
||||||
|
|
||||||
LinearRing lr = gf.createLinearRing(new Coordinate[] { p1, p2, p3, p4,
|
|
||||||
p1 });
|
|
||||||
|
|
||||||
cubeGeometry = gf.createPolygon(lr, null);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void scaleData(InterpolationRequest request)
|
|
||||||
throws VizDataCubeException {
|
|
||||||
int maxPoints = 1000;
|
|
||||||
float[] xData = request.getXData();
|
|
||||||
float[] yData = request.getYData();
|
|
||||||
float[] zValues = request.getZData();
|
|
||||||
int xlen = xData.length;
|
|
||||||
int ylen = yData.length;
|
|
||||||
int totalSize = xlen * ylen;
|
|
||||||
float inc = totalSize / maxPoints;
|
|
||||||
Set<Integer> keep = new HashSet<Integer>();
|
|
||||||
|
|
||||||
if (inc > 1) {
|
|
||||||
keep.add(0);
|
|
||||||
for (int i = (int) inc; i < totalSize && keep.size() < maxPoints; i += inc) {
|
|
||||||
keep.add(i);
|
|
||||||
}
|
|
||||||
totalSize = maxPoints;
|
|
||||||
}
|
|
||||||
int skipped = 0;
|
|
||||||
float[] tmpZ = new float[totalSize];
|
|
||||||
float[] tmpX = new float[totalSize];
|
|
||||||
float[] tmpY = new float[totalSize];
|
|
||||||
int actualSize = 0;
|
|
||||||
for (int i = 0; i < yData.length; ++i) {
|
|
||||||
for (int j = 0; j < xData.length; ++j) {
|
|
||||||
int index = i * xData.length + j;
|
|
||||||
if ((inc <= 1 || keep.contains(index))
|
|
||||||
&& (zValues[index] > CubeUtil.MISSING)) {
|
|
||||||
tmpX[index - skipped] = xData[j];
|
|
||||||
tmpY[index - skipped] = yData[i];
|
|
||||||
tmpZ[index - skipped] = zValues[index];
|
|
||||||
++actualSize;
|
|
||||||
} else {
|
|
||||||
skipped++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (actualSize == 0) {
|
|
||||||
throw new VizDataCubeException(
|
|
||||||
"No Valid data found for interpolation");
|
|
||||||
}
|
|
||||||
zValues = new float[actualSize];
|
|
||||||
xData = new float[actualSize];
|
|
||||||
yData = new float[actualSize];
|
|
||||||
System.arraycopy(tmpZ, 0, zValues, 0, actualSize);
|
|
||||||
System.arraycopy(tmpX, 0, xData, 0, actualSize);
|
|
||||||
System.arraycopy(tmpY, 0, yData, 0, actualSize);
|
|
||||||
|
|
||||||
request.setXData(xData);
|
|
||||||
request.setYData(yData);
|
|
||||||
request.setZData(zValues);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.uf.viz.core.rsc.capabilities;
|
|
||||||
|
|
||||||
import com.raytheon.uf.viz.core.exception.VizException;
|
|
||||||
import com.raytheon.viz.core.slice.AbstractSlice;
|
|
||||||
import com.raytheon.viz.core.slice.request.SliceRequest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface for sliceable resources
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 29, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public interface ISliceableResource {
|
|
||||||
|
|
||||||
public void slice(SliceRequest request) throws VizException;
|
|
||||||
|
|
||||||
public AbstractSlice getSlice();
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,138 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.viz.core.slice;
|
|
||||||
|
|
||||||
import org.opengis.coverage.grid.GridGeometry;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
|
||||||
import com.raytheon.uf.viz.core.interp.InterpolationResult;
|
|
||||||
import com.raytheon.uf.viz.core.style.level.SingleLevel;
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A slice of data
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 28, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public abstract class AbstractSlice {
|
|
||||||
|
|
||||||
protected GridGeometry gridGeometry;
|
|
||||||
|
|
||||||
protected DataTime[] dataTimes;
|
|
||||||
|
|
||||||
protected float interpolationFactor = 1.0f;
|
|
||||||
|
|
||||||
protected SingleLevel[] levels;
|
|
||||||
|
|
||||||
protected InterpolationResult interpResult;
|
|
||||||
|
|
||||||
protected Coordinate[] coordinates;
|
|
||||||
|
|
||||||
public abstract Object getSliceData();
|
|
||||||
|
|
||||||
public abstract void setSliceData(Object data);
|
|
||||||
|
|
||||||
public InterpolationResult getInterpResult() {
|
|
||||||
return interpResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInterpResult(InterpolationResult interpResult) {
|
|
||||||
this.interpResult = interpResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the gridGeometry
|
|
||||||
*/
|
|
||||||
public GridGeometry getGridGeometry() {
|
|
||||||
return gridGeometry;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLevels(SingleLevel[] levels) {
|
|
||||||
this.levels = levels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SingleLevel[] getLevels() {
|
|
||||||
return this.levels;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param gridGeometry
|
|
||||||
* the gridGeometry to set
|
|
||||||
*/
|
|
||||||
public void setGridGeometry(GridGeometry gridGeometry) {
|
|
||||||
this.gridGeometry = gridGeometry;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the dataTime
|
|
||||||
*/
|
|
||||||
public DataTime[] getDataTime() {
|
|
||||||
return dataTimes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param dataTime
|
|
||||||
* the dataTime to set
|
|
||||||
*/
|
|
||||||
public void setDataTime(DataTime[] dataTimes) {
|
|
||||||
this.dataTimes = dataTimes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the interpolationFactor
|
|
||||||
*/
|
|
||||||
public float getInterpolationFactor() {
|
|
||||||
return interpolationFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param interpolationFactor
|
|
||||||
* the interpolationFactor to set
|
|
||||||
*/
|
|
||||||
public void setInterpolationFactor(float interpolationFactor) {
|
|
||||||
this.interpolationFactor = interpolationFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the coordinates
|
|
||||||
*/
|
|
||||||
public Coordinate[] getCoordinates() {
|
|
||||||
return coordinates;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param coordinates
|
|
||||||
* the coordinates to set
|
|
||||||
*/
|
|
||||||
public void setCoordinates(Coordinate[] coordinates) {
|
|
||||||
this.coordinates = coordinates;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.viz.core.slice;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A slice of data where the data is floats
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 28, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class FloatSlice extends AbstractSlice {
|
|
||||||
|
|
||||||
protected float[] sliceData;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the sliceData
|
|
||||||
*/
|
|
||||||
public float[] getSliceData() {
|
|
||||||
return sliceData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param sliceData
|
|
||||||
* the sliceData to set
|
|
||||||
*/
|
|
||||||
public void setSliceData(Object sliceData) {
|
|
||||||
this.sliceData = (float[]) sliceData;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.viz.core.slice;
|
|
||||||
|
|
||||||
import com.raytheon.uf.viz.core.exception.VizException;
|
|
||||||
import com.raytheon.viz.core.slice.request.SliceRequest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface for sliceable data
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 28, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public interface ISliceable {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Slices data, returning an AbstractSlice for each time requested
|
|
||||||
*
|
|
||||||
* @param aRequest
|
|
||||||
* the slice request
|
|
||||||
* @return a slice for each time
|
|
||||||
* @throws VizException
|
|
||||||
*/
|
|
||||||
public AbstractSlice[] slice(SliceRequest aRequest) throws VizException;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.viz.core.slice.request;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
|
||||||
import com.raytheon.uf.viz.core.interp.InterpolationRequest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A request to slice data
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 28, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public abstract class SliceRequest {
|
|
||||||
|
|
||||||
protected DataTime[] times;
|
|
||||||
|
|
||||||
protected InterpolationRequest request;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the times
|
|
||||||
*/
|
|
||||||
public DataTime[] getTimes() {
|
|
||||||
return times;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param times
|
|
||||||
* the times to set
|
|
||||||
*/
|
|
||||||
public void setTimes(DataTime[] times) {
|
|
||||||
this.times = times;
|
|
||||||
}
|
|
||||||
|
|
||||||
public InterpolationRequest getRequest() {
|
|
||||||
return request;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRequest(InterpolationRequest request) {
|
|
||||||
this.request = request;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.viz.core.slice.request;
|
|
||||||
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Slice request for a vertical plane (i.e. cross section). The results returned
|
|
||||||
* from this slice contain grids where y represents the height in the atmosphere
|
|
||||||
* and x represents point on a line on the earth.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Nov 28, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class VerticalPlaneRequest extends VerticalRequest {
|
|
||||||
|
|
||||||
protected Coordinate[] coordinates;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the startCoordinate
|
|
||||||
*/
|
|
||||||
public Coordinate[] getCoordinates() {
|
|
||||||
return coordinates;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param startCoordinate
|
|
||||||
* the startCoordinate to set
|
|
||||||
*/
|
|
||||||
public void setCoordinates(Coordinate[] coordinates) {
|
|
||||||
this.coordinates = coordinates;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,81 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.viz.core.slice.request;
|
|
||||||
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Slice request for data at a single point at multiple heights and times.
|
|
||||||
* Slices returned from this contain grids where y represents the height in the
|
|
||||||
* atmosphere and x represents successive data times.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Dec 11, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class VerticalPointRequest extends VerticalRequest {
|
|
||||||
|
|
||||||
public enum TimeDirection {
|
|
||||||
RIGHT_TO_LEFT, LEFT_TO_RIGHT
|
|
||||||
};
|
|
||||||
|
|
||||||
protected Coordinate coordinate;
|
|
||||||
|
|
||||||
protected TimeDirection timeDirection = TimeDirection.LEFT_TO_RIGHT;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the coordinate
|
|
||||||
*/
|
|
||||||
public Coordinate getCoordinate() {
|
|
||||||
return coordinate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param coordinate
|
|
||||||
* the coordinate to set
|
|
||||||
*/
|
|
||||||
public void setCoordinate(Coordinate coordinate) {
|
|
||||||
this.coordinate = coordinate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the timeDirection
|
|
||||||
*/
|
|
||||||
public TimeDirection getTimeDirection() {
|
|
||||||
return timeDirection;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param timeDirection
|
|
||||||
* the timeDirection to set
|
|
||||||
*/
|
|
||||||
public void setTimeDirection(TimeDirection timeDirection) {
|
|
||||||
this.timeDirection = timeDirection;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,76 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.viz.core.slice.request;
|
|
||||||
|
|
||||||
import com.raytheon.uf.viz.core.style.level.SingleLevel;
|
|
||||||
import com.raytheon.viz.core.slice.request.HeightScale.ScaleType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Slice request for vertical representation of data
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Dec 11, 2007 njensen Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author njensen
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public abstract class VerticalRequest extends SliceRequest {
|
|
||||||
|
|
||||||
protected SingleLevel[] levels;
|
|
||||||
|
|
||||||
protected ScaleType scale;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the levels
|
|
||||||
*/
|
|
||||||
public SingleLevel[] getLevels() {
|
|
||||||
return levels;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param levels
|
|
||||||
* the levels to set
|
|
||||||
*/
|
|
||||||
public void setLevels(SingleLevel[] levels) {
|
|
||||||
this.levels = levels;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the scale
|
|
||||||
*/
|
|
||||||
public ScaleType getScale() {
|
|
||||||
return scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param scale
|
|
||||||
* the scale to set
|
|
||||||
*/
|
|
||||||
public void setScale(ScaleType scale) {
|
|
||||||
this.scale = scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -16,10 +16,10 @@
|
||||||
<license url="http://www.example.com/license">
|
<license url="http://www.example.com/license">
|
||||||
[Enter License Description here.]
|
[Enter License Description here.]
|
||||||
</license>
|
</license>
|
||||||
|
|
||||||
<requires>
|
<requires>
|
||||||
<import feature="com.raytheon.uf.viz.common.core.feature" version="1.0.0.qualifier" />
|
<import feature="com.raytheon.uf.viz.base.feature" version="1.0.0.qualifier"/>
|
||||||
<import feature="com.raytheon.uf.viz.core.feature" version="1.0.0.qualifier" />
|
<import feature="com.raytheon.uf.common.base.feature" version="1.0.0.qualifier"/>
|
||||||
</requires>
|
</requires>
|
||||||
|
|
||||||
<plugin
|
<plugin
|
||||||
|
|
|
@ -6,31 +6,26 @@ Bundle-Version: 1.12.1174.qualifier
|
||||||
Bundle-Activator: com.raytheon.uf.viz.sounding.Activator
|
Bundle-Activator: com.raytheon.uf.viz.sounding.Activator
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Require-Bundle: org.eclipse.core.runtime,
|
Require-Bundle: org.eclipse.core.runtime,
|
||||||
javax.measure;bundle-version="1.0.0",
|
com.raytheon.uf.common.sounding;bundle-version="1.12.1174";visibility:=reexport,
|
||||||
com.raytheon.edex.common;bundle-version="1.11.17",
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.sounding;bundle-version="1.0.0",
|
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataquery;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.dataplugin.grid;bundle-version="1.0.0",
|
com.raytheon.uf.common.dataplugin.grid;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.dataplugin.goessounding;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.dataplugin.poessounding;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.dataplugin.profiler;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.topo;bundle-version="1.12.1174",
|
com.raytheon.uf.common.topo;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
|
com.raytheon.viz.pointdata;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.parameter;bundle-version="1.0.0",
|
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.viz.acarssounding;bundle-version="1.12.1174"
|
com.raytheon.edex.meteolib;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.edex.plugin.modelsounding;bundle-version="1.12.1174",
|
||||||
|
javax.measure;bundle-version="1.0.0"
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
|
Eclipse-BuddyPolicy: registered
|
||||||
Export-Package: com.raytheon.uf.viz.sounding,
|
Export-Package: com.raytheon.uf.viz.sounding,
|
||||||
com.raytheon.uf.viz.sounding.adapters
|
com.raytheon.uf.viz.sounding.adapters
|
||||||
Import-Package: com.raytheon.edex.meteoLib,
|
Import-Package: com.raytheon.viz.core.map
|
||||||
com.raytheon.edex.plugin.modelsounding.common,
|
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.dataplugin.goessounding,
|
|
||||||
com.raytheon.uf.common.dataplugin.poessounding,
|
|
||||||
com.raytheon.uf.common.dataplugin.profiler,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.common.pointdata,
|
|
||||||
com.raytheon.uf.common.pointdata.spatial,
|
|
||||||
com.raytheon.uf.common.status,
|
|
||||||
com.raytheon.uf.common.time,
|
|
||||||
com.raytheon.uf.viz.core.datastructure,
|
|
||||||
com.raytheon.uf.viz.core.exception,
|
|
||||||
com.raytheon.uf.viz.core.status,
|
|
||||||
com.raytheon.viz.core.map,
|
|
||||||
com.raytheon.viz.pointdata
|
|
||||||
|
|
|
@ -53,10 +53,5 @@
|
||||||
class="com.raytheon.uf.common.dataplugin.radar.RadarRecord"
|
class="com.raytheon.uf.common.dataplugin.radar.RadarRecord"
|
||||||
name="VwpSoundingAdapter">
|
name="VwpSoundingAdapter">
|
||||||
</verticalSoundingAdapter>
|
</verticalSoundingAdapter>
|
||||||
<verticalSoundingAdapter
|
|
||||||
adapter="com.raytheon.uf.viz.acarssounding.AcarsSoundingAdapter"
|
|
||||||
class="com.raytheon.uf.common.dataplugin.acarssounding.ACARSSoundingRecord"
|
|
||||||
name="AcarsSoundingAdapter">
|
|
||||||
</verticalSoundingAdapter>
|
|
||||||
</extension>
|
</extension>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -34,7 +34,6 @@ import com.raytheon.uf.viz.xy.map.rsc.IGraphableResource;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.graph.TimeHeightGraph;
|
import com.raytheon.uf.viz.xy.timeheight.graph.TimeHeightGraph;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.rsc.AbstractTimeHeightResource;
|
import com.raytheon.uf.viz.xy.timeheight.rsc.AbstractTimeHeightResource;
|
||||||
import com.raytheon.viz.core.slice.request.HeightScale;
|
import com.raytheon.viz.core.slice.request.HeightScale;
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest.TimeDirection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Add Description
|
* TODO Add Description
|
||||||
|
@ -57,6 +56,10 @@ public class TimeHeightDescriptor extends XyGraphDescriptor {
|
||||||
|
|
||||||
public static final int REAL_FRAME_COUNT_TO_USE_WHEN_FRAME_COUNT_IS_ONE = 999;
|
public static final int REAL_FRAME_COUNT_TO_USE_WHEN_FRAME_COUNT_IS_ONE = 999;
|
||||||
|
|
||||||
|
public static enum TimeDirection {
|
||||||
|
RIGHT_TO_LEFT, LEFT_TO_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
@XmlAttribute
|
@XmlAttribute
|
||||||
public TimeDirection timeDirection;
|
public TimeDirection timeDirection;
|
||||||
|
|
||||||
|
|
|
@ -39,10 +39,10 @@ import com.raytheon.uf.viz.d2d.ui.AbstractHeightDisplay;
|
||||||
import com.raytheon.uf.viz.xy.map.rsc.GraphResource;
|
import com.raytheon.uf.viz.xy.map.rsc.GraphResource;
|
||||||
import com.raytheon.uf.viz.xy.map.rsc.GraphResourceData;
|
import com.raytheon.uf.viz.xy.map.rsc.GraphResourceData;
|
||||||
import com.raytheon.uf.viz.xy.map.rsc.GraphResourceData.OverlayMode;
|
import com.raytheon.uf.viz.xy.map.rsc.GraphResourceData.OverlayMode;
|
||||||
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor.TimeDirection;
|
||||||
import com.raytheon.viz.core.imagery.ImageCombiner;
|
import com.raytheon.viz.core.imagery.ImageCombiner;
|
||||||
import com.raytheon.viz.core.slice.request.HeightScale;
|
import com.raytheon.viz.core.slice.request.HeightScale;
|
||||||
import com.raytheon.viz.core.slice.request.HeightScales;
|
import com.raytheon.viz.core.slice.request.HeightScales;
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Add Description
|
* TODO Add Description
|
||||||
|
@ -63,6 +63,7 @@ import com.raytheon.viz.core.slice.request.VerticalPointRequest;
|
||||||
@XmlAccessorType(XmlAccessType.NONE)
|
@XmlAccessorType(XmlAccessType.NONE)
|
||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
public class TimeHeightRenderableDisplay extends AbstractHeightDisplay {
|
public class TimeHeightRenderableDisplay extends AbstractHeightDisplay {
|
||||||
|
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
.getHandler(TimeHeightRenderableDisplay.class);
|
.getHandler(TimeHeightRenderableDisplay.class);
|
||||||
|
|
||||||
|
@ -106,8 +107,8 @@ public class TimeHeightRenderableDisplay extends AbstractHeightDisplay {
|
||||||
getDescriptor().setHeightScale(scale);
|
getDescriptor().setHeightScale(scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTimeDirection(VerticalPointRequest.TimeDirection direction) {
|
public void setTimeDirection(TimeDirection direction) {
|
||||||
((TimeHeightDescriptor) getDescriptor()).setTimeDirection(direction);
|
getDescriptor().setTimeDirection(direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -37,10 +37,10 @@ import com.raytheon.uf.viz.xy.graph.axis.LogarithmicAxisPlacer;
|
||||||
import com.raytheon.uf.viz.xy.graph.labeling.IGraphLabel;
|
import com.raytheon.uf.viz.xy.graph.labeling.IGraphLabel;
|
||||||
import com.raytheon.uf.viz.xy.map.rsc.IGraphableResource;
|
import com.raytheon.uf.viz.xy.map.rsc.IGraphableResource;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
||||||
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor.TimeDirection;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.rsc.AbstractTimeHeightResource;
|
import com.raytheon.uf.viz.xy.timeheight.rsc.AbstractTimeHeightResource;
|
||||||
import com.raytheon.viz.core.slice.request.HeightScale;
|
import com.raytheon.viz.core.slice.request.HeightScale;
|
||||||
import com.raytheon.viz.core.slice.request.HeightScale.ScaleType;
|
import com.raytheon.viz.core.slice.request.HeightScale.ScaleType;
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest.TimeDirection;
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
import com.vividsolutions.jts.geom.Coordinate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -60,6 +60,7 @@ import com.raytheon.uf.viz.xy.map.rsc.IGraphableResource;
|
||||||
import com.raytheon.uf.viz.xy.map.rsc.IInsetMapResource;
|
import com.raytheon.uf.viz.xy.map.rsc.IInsetMapResource;
|
||||||
import com.raytheon.uf.viz.xy.map.rsc.PointRenderable;
|
import com.raytheon.uf.viz.xy.map.rsc.PointRenderable;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
||||||
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor.TimeDirection;
|
||||||
import com.raytheon.uf.viz.xy.varheight.adapter.AbstractVarHeightAdapter;
|
import com.raytheon.uf.viz.xy.varheight.adapter.AbstractVarHeightAdapter;
|
||||||
import com.raytheon.viz.core.graphing.util.GraphPrefsFactory;
|
import com.raytheon.viz.core.graphing.util.GraphPrefsFactory;
|
||||||
import com.raytheon.viz.core.graphing.xy.XYData;
|
import com.raytheon.viz.core.graphing.xy.XYData;
|
||||||
|
@ -67,7 +68,6 @@ import com.raytheon.viz.core.map.GeoUtil;
|
||||||
import com.raytheon.viz.core.rsc.ICombinedResourceData;
|
import com.raytheon.viz.core.rsc.ICombinedResourceData;
|
||||||
import com.raytheon.viz.core.rsc.ICombinedResourceData.CombineOperation;
|
import com.raytheon.viz.core.rsc.ICombinedResourceData.CombineOperation;
|
||||||
import com.raytheon.viz.core.slice.request.HeightScale;
|
import com.raytheon.viz.core.slice.request.HeightScale;
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest.TimeDirection;
|
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,11 +51,11 @@ import com.raytheon.uf.viz.core.style.VizStyleException;
|
||||||
import com.raytheon.uf.viz.xy.InterpUtils;
|
import com.raytheon.uf.viz.xy.InterpUtils;
|
||||||
import com.raytheon.uf.viz.xy.graph.IGraph;
|
import com.raytheon.uf.viz.xy.graph.IGraph;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
||||||
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor.TimeDirection;
|
||||||
import com.raytheon.uf.viz.xy.varheight.adapter.AbstractVarHeightAdapter;
|
import com.raytheon.uf.viz.xy.varheight.adapter.AbstractVarHeightAdapter;
|
||||||
import com.raytheon.viz.core.contours.util.VectorGraphicsRenderable;
|
import com.raytheon.viz.core.contours.util.VectorGraphicsRenderable;
|
||||||
import com.raytheon.viz.core.graphing.xy.XYData;
|
import com.raytheon.viz.core.graphing.xy.XYData;
|
||||||
import com.raytheon.viz.core.graphing.xy.XYWindImageData;
|
import com.raytheon.viz.core.graphing.xy.XYWindImageData;
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest.TimeDirection;
|
|
||||||
import com.raytheon.viz.core.style.arrow.ArrowPreferences;
|
import com.raytheon.viz.core.style.arrow.ArrowPreferences;
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
import com.vividsolutions.jts.geom.Coordinate;
|
||||||
|
|
||||||
|
|
|
@ -5,119 +5,48 @@ Bundle-SymbolicName: com.raytheon.viz.radar;singleton:=true
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Bundle-Activator: com.raytheon.viz.radar.Activator
|
Bundle-Activator: com.raytheon.viz.radar.Activator
|
||||||
Bundle-Vendor: Raytheon
|
Bundle-Vendor: Raytheon
|
||||||
Eclipse-RegisterBuddy: com.raytheon.viz.core, com.raytheon.uf.viz.core, com.raytheon.uf.viz.ui.menus
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization, com.raytheon.uf.viz.core
|
||||||
Require-Bundle: org.apache.batik;bundle-version="1.6.0",
|
|
||||||
org.eclipse.ui,
|
|
||||||
org.eclipse.core.runtime,
|
|
||||||
com.raytheon.viz.core,
|
|
||||||
com.raytheon.uf.viz.core,
|
|
||||||
org.geotools,
|
|
||||||
com.raytheon.viz.ui,
|
|
||||||
javax.measure,
|
|
||||||
com.raytheon.viz.pointdata;bundle-version="1.10.13",
|
|
||||||
com.raytheon.uf.viz.d2d.ui;bundle-version="1.0.0",
|
|
||||||
com.raytheon.viz.core.graphing;bundle-version="1.11.1",
|
|
||||||
com.raytheon.viz.awipstools;bundle-version="1.11.11",
|
|
||||||
com.raytheon.uf.viz.xy,
|
|
||||||
com.raytheon.uf.common.serialization.comm;bundle-version="1.11.22",
|
|
||||||
com.raytheon.uf.viz.productbrowser;bundle-version="1.11.31",
|
|
||||||
com.raytheon.uf.viz.d2d.core;bundle-version="1.12.1130",
|
|
||||||
com.raytheon.uf.common.dataplugin.radar;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.menus;bundle-version="1.12.1174",
|
|
||||||
com.raytheon.uf.viz.ui.menus;bundle-version="1.12.1174",
|
|
||||||
com.raytheon.uf.viz.points;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.units;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.colormap;bundle-version="1.12.1174"
|
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
Import-Package: com.raytheon.edex.meteoLib,
|
Export-Package: com.raytheon.viz.radar,
|
||||||
com.raytheon.uf.common.dataplugin.level,
|
|
||||||
com.raytheon.uf.common.derivparam.tree,
|
|
||||||
com.raytheon.uf.common.message.response,
|
|
||||||
com.raytheon.uf.common.pointdata,
|
|
||||||
com.raytheon.uf.common.topo,
|
|
||||||
com.raytheon.uf.viz.derivparam,
|
|
||||||
com.raytheon.uf.viz.derivparam.data,
|
|
||||||
com.raytheon.uf.viz.derivparam.inv,
|
|
||||||
com.raytheon.uf.viz.derivparam.library,
|
|
||||||
com.raytheon.uf.viz.derivparam.tree,
|
|
||||||
com.raytheon.viz.core.contours.util
|
|
||||||
Export-Package: com.raytheon.viz.radar;
|
|
||||||
uses:="com.raytheon.viz.core.rsc,
|
|
||||||
com.raytheon.uf.viz.core.rsc,
|
|
||||||
com.raytheon.uf.viz.core.data,
|
|
||||||
com.raytheon.uf.viz.core.data.resp,
|
|
||||||
com.raytheon.edex.util.radar,
|
|
||||||
com.raytheon.uf.viz.core,
|
|
||||||
com.raytheon.uf.viz.core.drawables,
|
|
||||||
com.raytheon.uf.viz.core.map,
|
|
||||||
com.raytheon.uf.common.dataplugin.radar.level3,
|
|
||||||
com.raytheon.viz.awipstools.common,
|
|
||||||
org.geotools.coverage.grid,
|
|
||||||
org.eclipse.ui.plugin,
|
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
org.eclipse.jface.preference,
|
|
||||||
com.raytheon.viz.core.rsc.hdf5,
|
|
||||||
org.eclipse.swt.graphics,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
org.osgi.framework,
|
|
||||||
org.opengis.referencing.crs",
|
|
||||||
com.raytheon.viz.radar.interrogators,
|
com.raytheon.viz.radar.interrogators,
|
||||||
com.raytheon.viz.radar.rsc;
|
com.raytheon.viz.radar.rsc,
|
||||||
uses:="com.raytheon.viz.awipstools.capabilityInterfaces,
|
|
||||||
com.raytheon.viz.core.rsc,
|
|
||||||
com.raytheon.uf.viz.core.map,
|
|
||||||
com.raytheon.uf.viz.core.rsc.capabilities,
|
|
||||||
com.raytheon.uf.viz.core.rsc,
|
|
||||||
com.raytheon.viz.radar,
|
|
||||||
com.raytheon.uf.viz.productbrowser,
|
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.viz.core,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
com.raytheon.uf.viz.core.drawables,
|
|
||||||
org.opengis.referencing.crs,
|
|
||||||
com.raytheon.uf.common.time",
|
|
||||||
com.raytheon.viz.radar.rsc.graphic,
|
com.raytheon.viz.radar.rsc.graphic,
|
||||||
com.raytheon.viz.radar.rsc.image,
|
com.raytheon.viz.radar.rsc.image,
|
||||||
com.raytheon.viz.radar.rsc.mosaic,
|
com.raytheon.viz.radar.rsc.mosaic,
|
||||||
com.raytheon.viz.radar.ui;
|
com.raytheon.viz.radar.ui,
|
||||||
uses:="com.raytheon.viz.radar,
|
com.raytheon.viz.radar.ui.xy,
|
||||||
com.raytheon.viz.ui.dialogs,
|
com.raytheon.viz.radar.util
|
||||||
org.eclipse.core.commands,
|
|
||||||
org.eclipse.swt.widgets,
|
|
||||||
com.raytheon.uf.viz.core.procedures",
|
|
||||||
com.raytheon.viz.radar.ui.xy;
|
|
||||||
uses:="com.raytheon.uf.viz.core.rsc,
|
|
||||||
com.raytheon.viz.core.graphing.axis,
|
|
||||||
com.raytheon.viz.ui.editor,
|
|
||||||
com.raytheon.viz.radar.rsc,
|
|
||||||
com.raytheon.uf.viz.core,
|
|
||||||
com.raytheon.uf.viz.xy,
|
|
||||||
com.raytheon.uf.viz.core.drawables,
|
|
||||||
com.raytheon.uf.common.time,
|
|
||||||
com.raytheon.uf.viz.core.map,
|
|
||||||
com.raytheon.viz.core.graphing.rsc,
|
|
||||||
com.raytheon.uf.viz.xy.map.rsc,
|
|
||||||
com.raytheon.viz.core.slice.request,
|
|
||||||
com.raytheon.viz.core.graphing,
|
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
org.eclipse.swt.layout,
|
|
||||||
com.raytheon.uf.viz.d2d.ui,
|
|
||||||
com.raytheon.viz.core.style.graph,
|
|
||||||
org.eclipse.swt.graphics,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
org.eclipse.swt.widgets,
|
|
||||||
com.raytheon.viz.ui.input,
|
|
||||||
com.raytheon.viz.core.graphing.xy",
|
|
||||||
com.raytheon.viz.radar.util;
|
|
||||||
uses:="com.raytheon.viz.pointdata.util,
|
|
||||||
com.raytheon.uf.viz.core.rsc,
|
|
||||||
com.raytheon.uf.viz.core.alerts,
|
|
||||||
javax.measure.converter,
|
|
||||||
com.raytheon.viz.pointdata,
|
|
||||||
com.raytheon.uf.viz.core.catalog,
|
|
||||||
javax.measure.unit,
|
|
||||||
com.raytheon.uf.viz.core.drawables,
|
|
||||||
com.raytheon.uf.common.pointdata"
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
|
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
|
||||||
|
org.eclipse.ui;bundle-version="3.8.2",
|
||||||
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.units;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.colormap;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.util;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataplugin.radar;bundle-version="1.0.0";visibility:=reexport,
|
||||||
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.derivparam;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.topo;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.d2d.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.d2d.ui;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.viz.ui;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.xy;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.viz.pointdata;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.productbrowser;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.derivparam;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.viz.core.graphing;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.points;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.viz.ui.menus;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.viz.awipstools;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.edex.meteolib;bundle-version="1.12.1174",
|
||||||
|
org.apache.batik;bundle-version="1.6.0"
|
||||||
|
Import-Package: com.raytheon.viz.core.contours.util,
|
||||||
|
com.raytheon.viz.core.drawables,
|
||||||
|
com.raytheon.viz.core.rsc,
|
||||||
|
com.raytheon.viz.core.rsc.jts,
|
||||||
|
com.raytheon.viz.core.style.image
|
||||||
|
|
|
@ -18,10 +18,9 @@
|
||||||
</license>
|
</license>
|
||||||
|
|
||||||
<requires>
|
<requires>
|
||||||
<import feature="com.raytheon.uf.viz.cots.feature" version="1.0.0.qualifier"/>
|
<import feature="com.raytheon.uf.viz.base.feature" version="1.0.0.qualifier"/>
|
||||||
<import feature="com.raytheon.uf.viz.core.feature" version="1.0.0.qualifier"/>
|
<import feature="com.raytheon.uf.viz.core.feature" version="1.0.0.qualifier"/>
|
||||||
<import feature="com.raytheon.uf.viz.common.core.feature" version="1.0.0.qualifier"/>
|
<import feature="com.raytheon.uf.common.base.feature" version="1.0.0.qualifier"/>
|
||||||
<import feature="com.raytheon.uf.viz.d2d.core.feature" version="1.0.0.qualifier"/>
|
|
||||||
</requires>
|
</requires>
|
||||||
|
|
||||||
<plugin
|
<plugin
|
||||||
|
|
|
@ -5,18 +5,22 @@ Bundle-SymbolicName: com.raytheon.viz.skewt;singleton:=true
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Bundle-Activator: com.raytheon.viz.skewt.Activator
|
Bundle-Activator: com.raytheon.viz.skewt.Activator
|
||||||
Bundle-Vendor: Raytheon
|
Bundle-Vendor: Raytheon
|
||||||
Eclipse-RegisterBuddy: com.raytheon.viz.core, org.geotools, com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Require-Bundle: org.eclipse.ui,
|
Require-Bundle: org.eclipse.ui,
|
||||||
org.eclipse.core.runtime,
|
org.eclipse.core.runtime,
|
||||||
com.raytheon.viz.core,
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
com.raytheon.viz.ui,
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
org.geotools,
|
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
com.raytheon.viz.core.graphing,
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
javax.measure,
|
com.raytheon.uf.common.localization;bundle-version="1.12.1174",
|
||||||
com.raytheon.edex.meteolib,
|
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||||
org.apache.commons.lang;bundle-version="2.3.0",
|
com.raytheon.viz.ui;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.viz.xy;bundle-version="1.11.31",
|
com.raytheon.uf.viz.sounding;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.sounding;bundle-version="1.0.0"
|
com.raytheon.viz.core.graphing;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.d2d.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.viz.xy;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.edex.meteolib;bundle-version="1.12.1174",
|
||||||
|
javax.measure;bundle-version="1.0.0"
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
Export-Package: com.raytheon.viz.skewt,
|
Export-Package: com.raytheon.viz.skewt,
|
||||||
com.raytheon.viz.skewt.mockdata,
|
com.raytheon.viz.skewt.mockdata,
|
||||||
|
@ -24,9 +28,5 @@ Export-Package: com.raytheon.viz.skewt,
|
||||||
com.raytheon.viz.skewt.rsc,
|
com.raytheon.viz.skewt.rsc,
|
||||||
com.raytheon.viz.skewt.rscdata,
|
com.raytheon.viz.skewt.rscdata,
|
||||||
com.raytheon.viz.skewt.ui
|
com.raytheon.viz.skewt.ui
|
||||||
Import-Package: com.raytheon.uf.viz.d2d.core,
|
|
||||||
com.raytheon.uf.viz.d2d.core.legend,
|
|
||||||
com.raytheon.uf.viz.d2d.core.time,
|
|
||||||
com.raytheon.uf.viz.sounding,
|
|
||||||
com.raytheon.uf.viz.sounding.adapters
|
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
|
Import-Package: com.raytheon.viz.core
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
<resource
|
<resource
|
||||||
class="com.raytheon.viz.skewt.rsc.SkewTResource"
|
class="com.raytheon.viz.skewt.rsc.SkewTResource"
|
||||||
name="SkewT Data"
|
name="SkewT Data"
|
||||||
recordClass="com.raytheon.uf.common.dataplugin.bufrua.UAObs"
|
|
||||||
renderingOrderId="PLOT"
|
renderingOrderId="PLOT"
|
||||||
resourceType="SOUNDING"/>
|
resourceType="SOUNDING"/>
|
||||||
<resource
|
<resource
|
||||||
|
|
|
@ -76,6 +76,7 @@ import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData;
|
||||||
import com.raytheon.uf.viz.xy.crosssection.display.CrossSectionDescriptor;
|
import com.raytheon.uf.viz.xy.crosssection.display.CrossSectionDescriptor;
|
||||||
import com.raytheon.uf.viz.xy.crosssection.display.CrossSectionRenderableDisplay;
|
import com.raytheon.uf.viz.xy.crosssection.display.CrossSectionRenderableDisplay;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor;
|
||||||
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightDescriptor.TimeDirection;
|
||||||
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightRenderableDisplay;
|
import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightRenderableDisplay;
|
||||||
import com.raytheon.uf.viz.xy.timeseries.display.TimeSeriesRenderableDisplay;
|
import com.raytheon.uf.viz.xy.timeseries.display.TimeSeriesRenderableDisplay;
|
||||||
import com.raytheon.uf.viz.xy.varheight.display.VarHeightDescriptor;
|
import com.raytheon.uf.viz.xy.varheight.display.VarHeightDescriptor;
|
||||||
|
@ -86,11 +87,10 @@ import com.raytheon.viz.awipstools.ToolsDataManager;
|
||||||
import com.raytheon.viz.core.rsc.ICombinedResourceData;
|
import com.raytheon.viz.core.rsc.ICombinedResourceData;
|
||||||
import com.raytheon.viz.core.rsc.ICombinedResourceData.CombineOperation;
|
import com.raytheon.viz.core.rsc.ICombinedResourceData.CombineOperation;
|
||||||
import com.raytheon.viz.core.slice.request.HeightScales;
|
import com.raytheon.viz.core.slice.request.HeightScales;
|
||||||
import com.raytheon.viz.core.slice.request.VerticalPointRequest.TimeDirection;
|
|
||||||
import com.raytheon.viz.skewt.SkewtDisplay;
|
import com.raytheon.viz.skewt.SkewtDisplay;
|
||||||
import com.raytheon.viz.skewt.rscdata.SkewTResourceData;
|
import com.raytheon.viz.skewt.rscdata.SkewTResourceData;
|
||||||
import com.raytheon.viz.ui.EditorUtil;
|
|
||||||
import com.raytheon.viz.ui.BundleProductLoader;
|
import com.raytheon.viz.ui.BundleProductLoader;
|
||||||
|
import com.raytheon.viz.ui.EditorUtil;
|
||||||
import com.raytheon.viz.ui.UiUtil;
|
import com.raytheon.viz.ui.UiUtil;
|
||||||
import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
||||||
import com.raytheon.viz.ui.editor.AbstractEditor;
|
import com.raytheon.viz.ui.editor.AbstractEditor;
|
||||||
|
@ -925,7 +925,7 @@ public class ProductTableComp extends Composite {
|
||||||
csDesc.setRenderableDisplay(csDisplay);
|
csDesc.setRenderableDisplay(csDisplay);
|
||||||
|
|
||||||
selectNewTableItem();
|
selectNewTableItem();
|
||||||
|
|
||||||
IDataCatalogEntry catalogEntry = getSelectedData().get(0)
|
IDataCatalogEntry catalogEntry = getSelectedData().get(0)
|
||||||
.getCatalogEntry();
|
.getCatalogEntry();
|
||||||
VBMenuBarItemsMgr.SpaceTimeMenu currentSpaceTime = dialogSettings
|
VBMenuBarItemsMgr.SpaceTimeMenu currentSpaceTime = dialogSettings
|
||||||
|
@ -1118,7 +1118,7 @@ public class ProductTableComp extends Composite {
|
||||||
return (prodIndexes.length == 2
|
return (prodIndexes.length == 2
|
||||||
&& getProductData(prodIndexes[0]).getCatalogEntry()
|
&& getProductData(prodIndexes[0]).getCatalogEntry()
|
||||||
.getDialogSettings().getViewSelection() != ViewMenu.SOUNDING && getProductData(
|
.getDialogSettings().getViewSelection() != ViewMenu.SOUNDING && getProductData(
|
||||||
prodIndexes[0]).getDisplayTypeSet().equals(
|
prodIndexes[0]).getDisplayTypeSet().equals(
|
||||||
getProductData(prodIndexes[1]).getDisplayTypeSet()));
|
getProductData(prodIndexes[1]).getDisplayTypeSet()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,25 +3,29 @@ Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Modelsounding Plug-in
|
Bundle-Name: Modelsounding Plug-in
|
||||||
Bundle-SymbolicName: com.raytheon.edex.plugin.modelsounding
|
Bundle-SymbolicName: com.raytheon.edex.plugin.modelsounding
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.edex.common, com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Require-Bundle: com.raytheon.edex.common,
|
|
||||||
com.raytheon.uf.edex.decodertools;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.localization,
|
|
||||||
org.geotools,
|
|
||||||
org.apache.commons.logging,
|
|
||||||
javax.persistence,
|
|
||||||
com.raytheon.uf.common.site;bundle-version="1.12.1174",
|
|
||||||
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
|
||||||
org.apache.commons.lang;bundle-version="2.3.0"
|
|
||||||
Export-Package: com.raytheon.edex.plugin.modelsounding,
|
Export-Package: com.raytheon.edex.plugin.modelsounding,
|
||||||
com.raytheon.edex.plugin.modelsounding.common,
|
com.raytheon.edex.plugin.modelsounding.common,
|
||||||
com.raytheon.edex.plugin.modelsounding.dao,
|
com.raytheon.edex.plugin.modelsounding.dao,
|
||||||
com.raytheon.edex.plugin.modelsounding.decoder
|
com.raytheon.edex.plugin.modelsounding.decoder
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Import-Package: com.raytheon.uf.common.geospatial.spi,
|
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.pointdata,
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.pointdata.spatial,
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.pointdata.vadriver,
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.edex.pointdata
|
com.raytheon.uf.common.localization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.site;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.edex.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.edex.database;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.edex.pointdata;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.edex.decodertools;bundle-version="1.12.1174",
|
||||||
|
javax.persistence;bundle-version="1.0.0",
|
||||||
|
org.hibernate;bundle-version="1.0.0",
|
||||||
|
org.springframework;bundle-version="3.1.4"
|
||||||
|
Import-Package: com.raytheon.edex.esb,
|
||||||
|
com.raytheon.edex.exception,
|
||||||
|
com.raytheon.edex.plugin,
|
||||||
|
org.apache.commons.logging
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.edex.plugin.modelsounding">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -3,20 +3,28 @@ Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Satellite Plug-in
|
Bundle-Name: Satellite Plug-in
|
||||||
Bundle-SymbolicName: com.raytheon.edex.plugin.satellite
|
Bundle-SymbolicName: com.raytheon.edex.plugin.satellite
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.edex.common, com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Require-Bundle: com.raytheon.edex.common,
|
|
||||||
com.raytheon.uf.edex.decodertools;bundle-version="1.0.0",
|
|
||||||
org.apache.commons.logging,
|
|
||||||
javax.measure,
|
|
||||||
javax.persistence,
|
|
||||||
com.raytheon.uf.common.dataplugin.satellite;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.edex.menus;bundle-version="1.0.0"
|
|
||||||
Export-Package: com.raytheon.edex.plugin.satellite,
|
Export-Package: com.raytheon.edex.plugin.satellite,
|
||||||
com.raytheon.edex.plugin.satellite.dao,
|
com.raytheon.edex.plugin.satellite.dao,
|
||||||
com.raytheon.edex.util.satellite
|
com.raytheon.edex.util.satellite
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Import-Package: com.raytheon.uf.common.localization,
|
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.awipstools,
|
com.raytheon.uf.common.dataplugin.satellite;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.status,
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.edex.awipstools
|
com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataquery;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.localization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.util;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.awipstools;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.edex.core;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.edex.database;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.edex.menus;bundle-version="1.0.0",
|
||||||
|
org.springframework;bundle-version="3.1.4",
|
||||||
|
javax.persistence;bundle-version="1.0.0",
|
||||||
|
org.hibernate;bundle-version="1.0.0"
|
||||||
|
Import-Package: com.raytheon.edex.exception,
|
||||||
|
org.apache.commons.logging
|
||||||
|
|
|
@ -28,12 +28,10 @@ import java.nio.ByteBuffer;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import java.util.zip.DataFormatException;
|
import java.util.zip.DataFormatException;
|
||||||
import java.util.zip.Inflater;
|
import java.util.zip.Inflater;
|
||||||
|
|
||||||
import com.raytheon.edex.exception.DecoderException;
|
import com.raytheon.edex.exception.DecoderException;
|
||||||
import com.raytheon.edex.plugin.AbstractDecoder;
|
|
||||||
import com.raytheon.edex.plugin.satellite.dao.SatelliteDao;
|
import com.raytheon.edex.plugin.satellite.dao.SatelliteDao;
|
||||||
import com.raytheon.edex.util.satellite.SatSpatialFactory;
|
import com.raytheon.edex.util.satellite.SatSpatialFactory;
|
||||||
import com.raytheon.edex.util.satellite.SatellitePosition;
|
import com.raytheon.edex.util.satellite.SatellitePosition;
|
||||||
|
@ -44,13 +42,14 @@ import com.raytheon.uf.common.dataplugin.satellite.SatelliteMessageData;
|
||||||
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
import com.raytheon.uf.common.dataplugin.satellite.SatelliteRecord;
|
||||||
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
import com.raytheon.uf.common.datastorage.records.IDataRecord;
|
||||||
import com.raytheon.uf.common.status.IPerformanceStatusHandler;
|
import com.raytheon.uf.common.status.IPerformanceStatusHandler;
|
||||||
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
import com.raytheon.uf.common.status.PerformanceStatus;
|
import com.raytheon.uf.common.status.PerformanceStatus;
|
||||||
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
import com.raytheon.uf.common.time.DataTime;
|
import com.raytheon.uf.common.time.DataTime;
|
||||||
import com.raytheon.uf.common.util.ArraysUtil;
|
|
||||||
import com.raytheon.uf.common.time.util.ITimer;
|
import com.raytheon.uf.common.time.util.ITimer;
|
||||||
import com.raytheon.uf.common.time.util.TimeUtil;
|
import com.raytheon.uf.common.time.util.TimeUtil;
|
||||||
import com.raytheon.uf.edex.decodertools.time.TimeTools;
|
import com.raytheon.uf.common.util.ArraysUtil;
|
||||||
import com.raytheon.uf.edex.wmo.message.WMOHeader;
|
import com.raytheon.uf.common.util.header.WMOHeaderFinder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decoder implementation for satellite plugin.
|
* Decoder implementation for satellite plugin.
|
||||||
|
@ -79,7 +78,7 @@ import com.raytheon.uf.edex.wmo.message.WMOHeader;
|
||||||
* 01/03/2013 15294 D. Friedman Start with File instead of byte[] to
|
* 01/03/2013 15294 D. Friedman Start with File instead of byte[] to
|
||||||
* reduce memory usage.
|
* reduce memory usage.
|
||||||
* Feb 15, 2013 1638 mschenke Moved array based utilities from Util into ArraysUtil
|
* Feb 15, 2013 1638 mschenke Moved array based utilities from Util into ArraysUtil
|
||||||
*
|
*
|
||||||
* Mar 19, 2013 1785 bgonzale Added performance status handler and added status
|
* Mar 19, 2013 1785 bgonzale Added performance status handler and added status
|
||||||
* to decode.
|
* to decode.
|
||||||
*
|
*
|
||||||
|
@ -88,7 +87,9 @@ import com.raytheon.uf.edex.wmo.message.WMOHeader;
|
||||||
* @author bphillip
|
* @author bphillip
|
||||||
* @version 1
|
* @version 1
|
||||||
*/
|
*/
|
||||||
public class SatelliteDecoder extends AbstractDecoder {
|
public class SatelliteDecoder {
|
||||||
|
|
||||||
|
private IUFStatusHandler statusHandler = UFStatus.getHandler(getClass());
|
||||||
|
|
||||||
private String traceId = "";
|
private String traceId = "";
|
||||||
|
|
||||||
|
@ -125,11 +126,12 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
try {
|
try {
|
||||||
removeWmoHeader(byteBuffer);
|
removeWmoHeader(byteBuffer);
|
||||||
} catch (DecoderException e) {
|
} catch (DecoderException e) {
|
||||||
logger.error(e);
|
statusHandler.error("Error removing WMO header", e);
|
||||||
byteBuffer = null;
|
byteBuffer = null;
|
||||||
}
|
}
|
||||||
if (byteBuffer != null) {
|
if (byteBuffer != null) {
|
||||||
int offsetOfDataInFile = byteBuffer.position() + GINI_HEADER_SIZE;
|
int offsetOfDataInFile = byteBuffer.position()
|
||||||
|
+ GINI_HEADER_SIZE;
|
||||||
Calendar calendar = Calendar.getInstance(TimeZone
|
Calendar calendar = Calendar.getInstance(TimeZone
|
||||||
.getTimeZone("GMT"));
|
.getTimeZone("GMT"));
|
||||||
int intValue = 0;
|
int intValue = 0;
|
||||||
|
@ -140,20 +142,23 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
record = new SatelliteRecord();
|
record = new SatelliteRecord();
|
||||||
|
|
||||||
if (isCompressed(byteBuffer)) {
|
if (isCompressed(byteBuffer)) {
|
||||||
/* If the data is compressed, we assume it came from the SBN
|
/*
|
||||||
|
* If the data is compressed, we assume it came from the SBN
|
||||||
* and will have a reasonable size such that we can have two
|
* and will have a reasonable size such that we can have two
|
||||||
* copies of the data in memory at the same time. Ideally,
|
* copies of the data in memory at the same time. Ideally,
|
||||||
* SBN decompression should be performed upstream from EDEX
|
* SBN decompression should be performed upstream from EDEX
|
||||||
* and this code would be removed.
|
* and this code would be removed.
|
||||||
*/
|
*/
|
||||||
byte[] data = new byte[(int) file.length() - byteBuffer.position()];
|
byte[] data = new byte[(int) file.length()
|
||||||
|
- byteBuffer.position()];
|
||||||
f.seek(byteBuffer.position());
|
f.seek(byteBuffer.position());
|
||||||
f.readFully(data);
|
f.readFully(data);
|
||||||
byte[][] retVal = decompressSatellite(data);
|
byte[][] retVal = decompressSatellite(data);
|
||||||
byteBuffer = ByteBuffer.wrap(retVal[0]);
|
byteBuffer = ByteBuffer.wrap(retVal[0]);
|
||||||
tempBytes = retVal[1];
|
tempBytes = retVal[1];
|
||||||
} else {
|
} else {
|
||||||
/* The code bellow performs absolute gets on the buffer, so
|
/*
|
||||||
|
* The code bellow performs absolute gets on the buffer, so
|
||||||
* it needs to be compacted.
|
* it needs to be compacted.
|
||||||
*/
|
*/
|
||||||
byteBuffer.compact();
|
byteBuffer.compact();
|
||||||
|
@ -268,9 +273,10 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
SatellitePosition position = dao
|
SatellitePosition position = dao
|
||||||
.getSatellitePosition(record.getCreatingEntity());
|
.getSatellitePosition(record.getCreatingEntity());
|
||||||
if (position == null) {
|
if (position == null) {
|
||||||
logger.info("Unable to determine geostationary location of ["
|
statusHandler
|
||||||
+ record.getCreatingEntity()
|
.info("Unable to determine geostationary location of ["
|
||||||
+ "]. Zeroing out fields.");
|
+ record.getCreatingEntity()
|
||||||
|
+ "]. Zeroing out fields.");
|
||||||
} else {
|
} else {
|
||||||
record.setSatSubPointLat(position.getLatitude());
|
record.setSatSubPointLat(position.getLatitude());
|
||||||
record.setSatSubPointLon(position.getLongitude());
|
record.setSatSubPointLon(position.getLongitude());
|
||||||
|
@ -279,7 +285,8 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (navCalIndicator != 0) {
|
if (navCalIndicator != 0) {
|
||||||
logger.info("Nav/Cal info provided. Currently unused.");
|
statusHandler
|
||||||
|
.info("Nav/Cal info provided. Currently unused.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// get number of points along x-axis
|
// get number of points along x-axis
|
||||||
|
@ -287,8 +294,9 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
// get number of points along y-axis
|
// get number of points along y-axis
|
||||||
int ny = byteBuffer.getShort(18);
|
int ny = byteBuffer.getShort(18);
|
||||||
|
|
||||||
/* If input was SBN-compressed, we already have the data
|
/*
|
||||||
* loaded. If not, load it now.
|
* If input was SBN-compressed, we already have the data loaded.
|
||||||
|
* If not, load it now.
|
||||||
*/
|
*/
|
||||||
if (tempBytes == null) {
|
if (tempBytes == null) {
|
||||||
tempBytes = new byte[nx * ny];
|
tempBytes = new byte[nx * ny];
|
||||||
|
@ -431,10 +439,6 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
if (record != null) {
|
if (record != null) {
|
||||||
record.setTraceId(traceId);
|
record.setTraceId(traceId);
|
||||||
record.setCoverage(mapCoverage);
|
record.setCoverage(mapCoverage);
|
||||||
record.setPersistenceTime(TimeTools.getSystemCalendar()
|
|
||||||
.getTime());
|
|
||||||
record.setPluginName("satellite");
|
|
||||||
record.constructDataURI();
|
|
||||||
// Create the data record.
|
// Create the data record.
|
||||||
IDataRecord dataRec = messageData.getStorageRecord(record,
|
IDataRecord dataRec = messageData.getStorageRecord(record,
|
||||||
SatelliteRecord.SAT_DATASET_NAME);
|
SatelliteRecord.SAT_DATASET_NAME);
|
||||||
|
@ -466,10 +470,11 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
* @throws DecoderException
|
* @throws DecoderException
|
||||||
* If WMO header is not found, or is incorrect.
|
* If WMO header is not found, or is incorrect.
|
||||||
* @param messageData
|
* @param messageData
|
||||||
* Contains the start of the satellite data file. On return,
|
* Contains the start of the satellite data file. On return, the
|
||||||
* the position is set the beginning of the GINI header.
|
* position is set the beginning of the GINI header.
|
||||||
*/
|
*/
|
||||||
private void removeWmoHeader(ByteBuffer messageData) throws DecoderException {
|
private void removeWmoHeader(ByteBuffer messageData)
|
||||||
|
throws DecoderException {
|
||||||
|
|
||||||
// Copy to a char [], carefully, as creating a string from
|
// Copy to a char [], carefully, as creating a string from
|
||||||
// a byte [] with binary data can create erroneous data
|
// a byte [] with binary data can create erroneous data
|
||||||
|
@ -478,8 +483,7 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
message[i] = (char) (messageData.get() & 0xFF);
|
message[i] = (char) (messageData.get() & 0xFF);
|
||||||
}
|
}
|
||||||
String msgStr = new String(message);
|
String msgStr = new String(message);
|
||||||
Matcher matcher = null;
|
Matcher matcher = WMOHeaderFinder.WMO_PATTERN.matcher(msgStr);
|
||||||
matcher = Pattern.compile(WMOHeader.WMO_HEADER).matcher(msgStr);
|
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
int headerStart = matcher.start();
|
int headerStart = matcher.start();
|
||||||
if (SAT_HDR_TT.equals(msgStr
|
if (SAT_HDR_TT.equals(msgStr
|
||||||
|
@ -500,7 +504,7 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
* Checks to see if the current satellite product is compressed.
|
* Checks to see if the current satellite product is compressed.
|
||||||
*
|
*
|
||||||
* Assumes messageData is a byte[]-backed ByteBuffer.
|
* Assumes messageData is a byte[]-backed ByteBuffer.
|
||||||
*
|
*
|
||||||
* @return A boolean indicating if the file is compressed or not
|
* @return A boolean indicating if the file is compressed or not
|
||||||
*/
|
*/
|
||||||
private boolean isCompressed(ByteBuffer messageData) {
|
private boolean isCompressed(ByteBuffer messageData) {
|
||||||
|
@ -508,8 +512,8 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
byte[] placeholder = new byte[10];
|
byte[] placeholder = new byte[10];
|
||||||
Inflater decompressor = new Inflater();
|
Inflater decompressor = new Inflater();
|
||||||
try {
|
try {
|
||||||
decompressor.setInput(messageData.array(),
|
decompressor.setInput(messageData.array(), messageData.position(),
|
||||||
messageData.position(), messageData.remaining());
|
messageData.remaining());
|
||||||
decompressor.inflate(placeholder);
|
decompressor.inflate(placeholder);
|
||||||
} catch (DataFormatException e) {
|
} catch (DataFormatException e) {
|
||||||
compressed = false;
|
compressed = false;
|
||||||
|
|
|
@ -33,9 +33,9 @@ import com.raytheon.uf.common.geospatial.SpatialQueryFactory;
|
||||||
import com.raytheon.uf.common.menus.xml.CommonIncludeMenuContribution;
|
import com.raytheon.uf.common.menus.xml.CommonIncludeMenuContribution;
|
||||||
import com.raytheon.uf.common.menus.xml.MenuTemplateFile;
|
import com.raytheon.uf.common.menus.xml.MenuTemplateFile;
|
||||||
import com.raytheon.uf.common.menus.xml.VariableSubstitution;
|
import com.raytheon.uf.common.menus.xml.VariableSubstitution;
|
||||||
|
import com.raytheon.uf.common.serialization.comm.RequestRouter;
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
import com.raytheon.uf.edex.awipstools.GetWfoCenterHandler;
|
|
||||||
import com.raytheon.uf.edex.menus.AbstractMenuUtil;
|
import com.raytheon.uf.edex.menus.AbstractMenuUtil;
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
import com.vividsolutions.jts.geom.Coordinate;
|
||||||
|
|
||||||
|
@ -90,12 +90,13 @@ public class SatelliteMenuUtil extends AbstractMenuUtil {
|
||||||
Coordinate coord = null;
|
Coordinate coord = null;
|
||||||
ISpatialQuery sp = null;
|
ISpatialQuery sp = null;
|
||||||
try {
|
try {
|
||||||
coord = new GetWfoCenterHandler().handleRequest(centerPointRequest);
|
coord = (Coordinate) RequestRouter.route(centerPointRequest);
|
||||||
sp = SpatialQueryFactory.create();
|
sp = SpatialQueryFactory.create();
|
||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
statusHandler.error("Unable to send request for lat/lon values");
|
statusHandler.error("Unable to send request for lat/lon values");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
lat = coord.y;
|
lat = coord.y;
|
||||||
lon = coord.x;
|
lon = coord.x;
|
||||||
|
|
|
@ -3,17 +3,14 @@ Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Acars Plug-in
|
Bundle-Name: Acars Plug-in
|
||||||
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.acars
|
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.acars
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.edex.common, com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Require-Bundle: org.apache.commons.logging,
|
Require-Bundle: com.raytheon.uf.common.dataplugin,
|
||||||
com.raytheon.uf.common.pointdata,
|
com.raytheon.uf.common.pointdata,
|
||||||
org.geotools,
|
|
||||||
javax.persistence,
|
|
||||||
javax.measure,
|
|
||||||
com.raytheon.uf.common.serialization,
|
com.raytheon.uf.common.serialization,
|
||||||
com.raytheon.uf.common.dataplugin,
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
org.hibernate;bundle-version="1.0.0"
|
javax.persistence,
|
||||||
|
org.hibernate;bundle-version="1.0.0",
|
||||||
|
javax.measure;bundle-version="1.0.0"
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.acars
|
Export-Package: com.raytheon.uf.common.dataplugin.acars
|
||||||
Import-Package: com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.common.time
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.acars">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex" />
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex" />
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -6,18 +6,16 @@ Bundle-Version: 1.12.1174.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Require-Bundle: org.apache.commons.logging,
|
Require-Bundle: com.raytheon.uf.common.serialization,
|
||||||
com.raytheon.uf.common.pointdata,
|
com.raytheon.uf.common.pointdata,
|
||||||
com.raytheon.uf.common.localization;bundle-version="1.12.1151",
|
com.raytheon.uf.common.localization;bundle-version="1.12.1151",
|
||||||
com.raytheon.uf.edex.decodertools,
|
com.raytheon.uf.common.dataplugin,
|
||||||
org.geotools,
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataplugin.acars;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.edex.decodertools;bundle-version="1.12.1174",
|
||||||
javax.persistence,
|
javax.persistence,
|
||||||
javax.measure,
|
javax.measure,
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.serialization,
|
|
||||||
org.hibernate;bundle-version="1.0.0"
|
org.hibernate;bundle-version="1.0.0"
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.acarssounding,
|
Export-Package: com.raytheon.uf.common.dataplugin.acarssounding,
|
||||||
com.raytheon.uf.common.dataplugin.acarssounding.tools
|
com.raytheon.uf.common.dataplugin.acarssounding.tools
|
||||||
Import-Package: com.raytheon.uf.common.dataplugin.acars,
|
Import-Package: org.apache.commons.logging
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.common.time
|
|
||||||
|
|
|
@ -3,20 +3,18 @@ Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Bufrua Plug-in
|
Bundle-Name: Bufrua Plug-in
|
||||||
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.bufrua
|
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.bufrua
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.edex.common, com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.bufrua,
|
Export-Package: com.raytheon.uf.common.dataplugin.bufrua,
|
||||||
com.raytheon.uf.common.dataplugin.bufrua.dao
|
com.raytheon.uf.common.dataplugin.bufrua.dao
|
||||||
Require-Bundle: com.raytheon.edex.common,
|
Require-Bundle: com.raytheon.uf.common.sounding;bundle-version="1.0.0",
|
||||||
org.geotools,
|
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
org.apache.commons.logging,
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.edex.decodertools;bundle-version="1.12.1174",
|
||||||
javax.persistence,
|
javax.persistence,
|
||||||
javax.measure,
|
org.hibernate;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.sounding;bundle-version="1.0.0"
|
javax.measure
|
||||||
Import-Package: com.raytheon.uf.common.dataplugin.bufrua,
|
Import-Package: org.apache.commons.logging
|
||||||
com.raytheon.uf.common.pointdata,
|
|
||||||
com.raytheon.uf.common.pointdata.spatial,
|
|
||||||
com.raytheon.uf.edex.decodertools.time,
|
|
||||||
com.raytheon.uf.edex.decodertools.core,
|
|
||||||
com.raytheon.uf.edex.pointdata
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.bufrua">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -6,20 +6,10 @@ Bundle-Version: 1.0.0.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Import-Package: com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.dataplugin.annotations,
|
|
||||||
com.raytheon.uf.common.dataplugin.persist,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.common.pointdata,
|
|
||||||
com.raytheon.uf.common.pointdata.spatial,
|
|
||||||
com.raytheon.uf.common.serialization,
|
|
||||||
com.raytheon.uf.common.serialization.adapters,
|
|
||||||
com.raytheon.uf.common.serialization.annotations,
|
|
||||||
com.raytheon.uf.common.time,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
javax.measure.quantity,
|
|
||||||
javax.measure.unit,
|
|
||||||
javax.persistence
|
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.goessounding
|
Export-Package: com.raytheon.uf.common.dataplugin.goessounding
|
||||||
Require-Bundle: com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||||
|
javax.persistence;bundle-version="1.0.0",
|
||||||
org.hibernate;bundle-version="1.0.0"
|
org.hibernate;bundle-version="1.0.0"
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.goessounding">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -6,21 +6,6 @@ Bundle-Version: 1.0.0.qualifier
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Eclipse-BuddyPolicy: registered, ext, global
|
|
||||||
Import-Package: com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.dataplugin.annotations,
|
|
||||||
com.raytheon.uf.common.dataplugin.persist,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.common.localization,
|
|
||||||
com.raytheon.uf.common.serialization,
|
|
||||||
com.raytheon.uf.common.serialization.annotations,
|
|
||||||
com.raytheon.uf.common.serialization.comm,
|
|
||||||
com.raytheon.uf.common.status,
|
|
||||||
com.raytheon.uf.common.time,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
javax.persistence,
|
|
||||||
org.hibernate.annotations,
|
|
||||||
org.opengis.metadata.spatial
|
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.grid,
|
Export-Package: com.raytheon.uf.common.dataplugin.grid,
|
||||||
com.raytheon.uf.common.dataplugin.grid.dataquery,
|
com.raytheon.uf.common.dataplugin.grid.dataquery,
|
||||||
com.raytheon.uf.common.dataplugin.grid.dataset,
|
com.raytheon.uf.common.dataplugin.grid.dataset,
|
||||||
|
@ -29,15 +14,20 @@ Export-Package: com.raytheon.uf.common.dataplugin.grid,
|
||||||
com.raytheon.uf.common.dataplugin.grid.request,
|
com.raytheon.uf.common.dataplugin.grid.request,
|
||||||
com.raytheon.uf.common.dataplugin.grid.units,
|
com.raytheon.uf.common.dataplugin.grid.units,
|
||||||
com.raytheon.uf.common.dataplugin.grid.util
|
com.raytheon.uf.common.dataplugin.grid.util
|
||||||
Require-Bundle: javax.measure,
|
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.gridcoverage;bundle-version="1.0.0";visibility:=reexport,
|
||||||
|
com.raytheon.uf.common.parameter;bundle-version="1.0.0";visibility:=reexport,
|
||||||
|
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174";visibility:=reexport,
|
||||||
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.geospatial,
|
com.raytheon.uf.common.geospatial,
|
||||||
org.geotools,
|
|
||||||
com.raytheon.uf.common.localization,
|
com.raytheon.uf.common.localization,
|
||||||
com.raytheon.uf.common.datastorage,
|
com.raytheon.uf.common.datastorage,
|
||||||
com.raytheon.uf.common.gridcoverage;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.parameter;bundle-version="1.0.0",
|
|
||||||
com.raytheon.uf.common.comm;bundle-version="1.12.1174",
|
com.raytheon.uf.common.comm;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.dataquery;bundle-version="1.0.0",
|
com.raytheon.uf.common.dataquery;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.dataplugin.level;bundle-version="1.12.1174",
|
|
||||||
com.raytheon.uf.common.util;bundle-version="1.12.1174",
|
com.raytheon.uf.common.util;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.dataaccess;bundle-version="1.0.0"
|
com.raytheon.uf.common.dataaccess;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
|
javax.measure,
|
||||||
|
javax.persistence;bundle-version="1.0.0",
|
||||||
|
org.hibernate;bundle-version="1.0.0"
|
||||||
|
|
|
@ -6,19 +6,10 @@ Bundle-Version: 1.0.0.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Import-Package: com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.dataplugin.annotations,
|
|
||||||
com.raytheon.uf.common.dataplugin.persist,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.common.pointdata,
|
|
||||||
com.raytheon.uf.common.pointdata.spatial,
|
|
||||||
com.raytheon.uf.common.serialization,
|
|
||||||
com.raytheon.uf.common.serialization.annotations,
|
|
||||||
com.raytheon.uf.common.time,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
javax.measure.quantity,
|
|
||||||
javax.measure.unit,
|
|
||||||
javax.persistence
|
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.poessounding
|
Export-Package: com.raytheon.uf.common.dataplugin.poessounding
|
||||||
Require-Bundle: com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.pointdata;bundle-version="1.12.1174",
|
||||||
|
javax.persistence;bundle-version="1.0.0",
|
||||||
org.hibernate;bundle-version="1.0.0"
|
org.hibernate;bundle-version="1.0.0"
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.poessounding">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -4,18 +4,21 @@ Bundle-Name: Profiler Plug-in
|
||||||
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.profiler
|
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.profiler
|
||||||
Bundle-Version: 1.12.1174.qualifier
|
Bundle-Version: 1.12.1174.qualifier
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Eclipse-RegisterBuddy: com.raytheon.edex.common, com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.profiler,
|
Export-Package: com.raytheon.uf.common.dataplugin.profiler,
|
||||||
com.raytheon.uf.common.dataplugin.profiler.dao
|
com.raytheon.uf.common.dataplugin.profiler.dao
|
||||||
Require-Bundle: com.raytheon.edex.common,
|
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.pointdata;bundle-version="1.11.8",
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.edex.pointdata;bundle-version="1.11.8",
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
org.geotools,
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
org.apache.commons.logging,
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
javax.persistence,
|
com.raytheon.uf.edex.core;bundle-version="1.12.1174",
|
||||||
javax.measure,
|
com.raytheon.uf.edex.database;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.localization;bundle-version="1.11.16"
|
com.raytheon.uf.edex.pointdata;bundle-version="1.12.1174",
|
||||||
Import-Package: com.raytheon.uf.common.status,
|
com.raytheon.uf.edex.decodertools;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.edex.decodertools.core,
|
org.springframework;bundle-version="3.1.4",
|
||||||
com.raytheon.uf.edex.decodertools.time
|
javax.persistence;bundle-version="1.0.0",
|
||||||
|
org.hibernate;bundle-version="1.0.0",
|
||||||
|
javax.measure;bundle-version="1.0.0"
|
||||||
|
Import-Package: org.apache.commons.logging
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.profiler">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -3,62 +3,27 @@ Bundle-ManifestVersion: 2
|
||||||
Bundle-Name: Radar
|
Bundle-Name: Radar
|
||||||
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.radar
|
Bundle-SymbolicName: com.raytheon.uf.common.dataplugin.radar
|
||||||
Bundle-Version: 1.0.0.qualifier
|
Bundle-Version: 1.0.0.qualifier
|
||||||
Eclipse-RegisterBuddy: com.raytheon.edex.common, com.raytheon.uf.common.serialization, com.raytheon.viz.core, org.geotools
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization, org.geotools
|
||||||
Bundle-Activator: com.raytheon.uf.common.dataplugin.radar.Activator
|
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Require-Bundle: org.eclipse.core.runtime,
|
Require-Bundle: com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.datastorage,
|
|
||||||
org.geotools;bundle-version="2.6.4",
|
|
||||||
javax.measure,
|
|
||||||
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
|
|
||||||
com.raytheon.edex.common,
|
|
||||||
com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174",
|
com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.site;bundle-version="1.12.1174",
|
com.raytheon.uf.common.localization;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.datastorage;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.dataquery;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.dataaccess;bundle-version="1.0.0",
|
com.raytheon.uf.common.dataaccess;bundle-version="1.0.0",
|
||||||
com.raytheon.uf.common.units;bundle-version="1.0.0"
|
com.raytheon.uf.common.units;bundle-version="1.0.0",
|
||||||
|
com.raytheon.uf.common.util;bundle-version="1.12.1174",
|
||||||
|
javax.persistence;bundle-version="1.0.0",
|
||||||
|
org.hibernate;bundle-version="1.0.0"
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
Export-Package: com.raytheon.uf.common.dataplugin.radar;
|
Export-Package: com.raytheon.uf.common.dataplugin.radar,
|
||||||
uses:="com.raytheon.uf.common.dataplugin.persist,
|
com.raytheon.uf.common.dataplugin.radar.level3,
|
||||||
com.raytheon.uf.common.dataplugin.radar.level3,
|
com.raytheon.uf.common.dataplugin.radar.level3.generic,
|
||||||
com.raytheon.uf.common.dataplugin,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
javax.measure.unit,
|
|
||||||
org.osgi.framework,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
com.raytheon.uf.common.dataplugin.radar.util,
|
|
||||||
org.opengis.referencing.crs,
|
|
||||||
com.raytheon.uf.common.serialization,
|
|
||||||
com.raytheon.uf.common.time",
|
|
||||||
com.raytheon.uf.common.dataplugin.radar.level3;uses:="com.raytheon.uf.common.dataplugin.radar.level3.generic,com.raytheon.uf.common.serialization",
|
|
||||||
com.raytheon.uf.common.dataplugin.radar.level3.generic;uses:="com.raytheon.uf.common.serialization",
|
|
||||||
com.raytheon.uf.common.dataplugin.radar.projection,
|
com.raytheon.uf.common.dataplugin.radar.projection,
|
||||||
com.raytheon.uf.common.dataplugin.radar.request;uses:="com.raytheon.uf.common.serialization.comm",
|
com.raytheon.uf.common.dataplugin.radar.request,
|
||||||
com.raytheon.uf.common.dataplugin.radar.units,
|
com.raytheon.uf.common.dataplugin.radar.units,
|
||||||
com.raytheon.uf.common.dataplugin.radar.util;
|
com.raytheon.uf.common.dataplugin.radar.util
|
||||||
uses:="com.raytheon.uf.common.dataplugin.radar,
|
|
||||||
com.raytheon.uf.common.datastorage,
|
|
||||||
org.geotools.coverage.grid,
|
|
||||||
com.raytheon.uf.common.dataplugin.radar.level3,
|
|
||||||
javax.measure.converter,
|
|
||||||
com.raytheon.uf.common.dataplugin.radar.level3.generic,
|
|
||||||
com.vividsolutions.jts.geom,
|
|
||||||
com.raytheon.uf.edex.wmo.message,
|
|
||||||
org.opengis.referencing.crs"
|
|
||||||
Import-Package: com.raytheon.edex.exception,
|
|
||||||
com.raytheon.edex.util,
|
|
||||||
com.raytheon.uf.common.dataplugin.level,
|
|
||||||
com.raytheon.uf.common.dataplugin.text,
|
|
||||||
com.raytheon.uf.common.dataplugin.text.db,
|
|
||||||
com.raytheon.uf.common.derivparam.tree,
|
|
||||||
com.raytheon.uf.common.geospatial,
|
|
||||||
com.raytheon.uf.common.localization,
|
|
||||||
com.raytheon.uf.common.menus.xml,
|
|
||||||
com.raytheon.uf.common.status,
|
|
||||||
com.raytheon.uf.common.time,
|
|
||||||
com.raytheon.uf.edex.wmo.message,
|
|
||||||
javax.measure.converter,
|
|
||||||
javax.persistence,
|
|
||||||
org.apache.commons.logging,
|
|
||||||
org.opengis.referencing.crs
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.uf.common.dataplugin.radar">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex" />
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex" />
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
</project>
|
|
|
@ -1,30 +0,0 @@
|
||||||
package com.raytheon.uf.common.dataplugin.radar;
|
|
||||||
|
|
||||||
import org.osgi.framework.BundleActivator;
|
|
||||||
import org.osgi.framework.BundleContext;
|
|
||||||
|
|
||||||
public class Activator implements BundleActivator {
|
|
||||||
|
|
||||||
private static BundleContext context;
|
|
||||||
|
|
||||||
static BundleContext getContext() {
|
|
||||||
return context;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
|
|
||||||
*/
|
|
||||||
public void start(BundleContext bundleContext) throws Exception {
|
|
||||||
Activator.context = bundleContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* (non-Javadoc)
|
|
||||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
|
||||||
*/
|
|
||||||
public void stop(BundleContext bundleContext) throws Exception {
|
|
||||||
Activator.context = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -209,6 +209,25 @@ public class SatelliteRecord extends PersistablePluginDataObject implements
|
||||||
@DynamicSerializeElement
|
@DynamicSerializeElement
|
||||||
private SatMapCoverage coverage;
|
private SatMapCoverage coverage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No-arg constructor.
|
||||||
|
*/
|
||||||
|
public SatelliteRecord() {
|
||||||
|
setPluginName(PLUGIN_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a satellite record from a dataURI
|
||||||
|
*
|
||||||
|
* @param uri
|
||||||
|
* The dataURI
|
||||||
|
* @param tableDef
|
||||||
|
* The table definition associated with this class
|
||||||
|
*/
|
||||||
|
public SatelliteRecord(String uri) {
|
||||||
|
super(uri);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SatMapCoverage getSpatialObject() {
|
public SatMapCoverage getSpatialObject() {
|
||||||
return coverage;
|
return coverage;
|
||||||
|
@ -254,25 +273,6 @@ public class SatelliteRecord extends PersistablePluginDataObject implements
|
||||||
this.upperRightLon = upperRightLon;
|
this.upperRightLon = upperRightLon;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* No-arg constructor.
|
|
||||||
*/
|
|
||||||
public SatelliteRecord() {
|
|
||||||
setPluginName(PLUGIN_ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a satellite record from a dataURI
|
|
||||||
*
|
|
||||||
* @param uri
|
|
||||||
* The dataURI
|
|
||||||
* @param tableDef
|
|
||||||
* The table definition associated with this class
|
|
||||||
*/
|
|
||||||
public SatelliteRecord(String uri) {
|
|
||||||
super(uri);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getNumRecords() {
|
public Integer getNumRecords() {
|
||||||
return numRecords;
|
return numRecords;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,15 +6,13 @@ Bundle-Version: 1.12.1174.qualifier
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
Eclipse-RegisterBuddy: com.raytheon.uf.common.serialization
|
||||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
Require-Bundle: javax.measure;bundle-version="1.0.0",
|
Require-Bundle: com.raytheon.uf.common.pointdata;bundle-version="1.11.31",
|
||||||
org.geotools;bundle-version="2.5.8",
|
com.raytheon.uf.common.dataplugin;bundle-version="1.11.31",
|
||||||
com.raytheon.uf.common.time;bundle-version="1.11.31",
|
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.pointdata;bundle-version="1.11.31",
|
com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
|
||||||
com.raytheon.uf.common.dataplugin;bundle-version="1.11.31"
|
com.raytheon.uf.common.status;bundle-version="1.12.1174",
|
||||||
|
com.raytheon.uf.common.localization;bundle-version="1.12.1174",
|
||||||
|
javax.measure;bundle-version="1.0.0"
|
||||||
Export-Package: com.raytheon.uf.common.sounding,
|
Export-Package: com.raytheon.uf.common.sounding,
|
||||||
com.raytheon.uf.common.sounding.adapter,
|
com.raytheon.uf.common.sounding.adapter,
|
||||||
com.raytheon.uf.common.sounding.util
|
com.raytheon.uf.common.sounding.util
|
||||||
Import-Package: com.raytheon.uf.common.localization,
|
|
||||||
com.raytheon.uf.common.serialization,
|
|
||||||
com.raytheon.uf.common.status,
|
|
||||||
org.apache.commons.logging
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<project basedir="." default="deploy" name="com.raytheon.uf.common.topo">
|
|
||||||
<available file="../build.edex" property="build.dir.location" value="../build.edex"/>
|
|
||||||
<available file="../../../../../build.edex" property="build.dir.location" value="../../../../../build.edex"/>
|
|
||||||
|
|
||||||
<import file="${build.dir.location}/basebuilds/component_deploy_base.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -47,7 +47,7 @@ import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class WMOHeaderFinder {
|
public class WMOHeaderFinder {
|
||||||
|
|
||||||
private static Pattern WMOPATTERN = Pattern
|
public static Pattern WMO_PATTERN = Pattern
|
||||||
.compile("([A-Z]{3}[A-Z0-9](\\d{0,2}|[A-Z]{0,2}) [A-Z0-9 ]{4} "
|
.compile("([A-Z]{3}[A-Z0-9](\\d{0,2}|[A-Z]{0,2}) [A-Z0-9 ]{4} "
|
||||||
+ "\\d{6}[^\\r\\n]*)[\\r\\n]+");
|
+ "\\d{6}[^\\r\\n]*)[\\r\\n]+");
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ public class WMOHeaderFinder {
|
||||||
byte[] header = new byte[100];
|
byte[] header = new byte[100];
|
||||||
in.read(header);
|
in.read(header);
|
||||||
String sHeader = new String(header, "ISO-8859-1");
|
String sHeader = new String(header, "ISO-8859-1");
|
||||||
Matcher wmoSearch = WMOPATTERN.matcher(sHeader);
|
Matcher wmoSearch = WMO_PATTERN.matcher(sHeader);
|
||||||
String messageHeader = null;
|
String messageHeader = null;
|
||||||
if (wmoSearch.find()) {
|
if (wmoSearch.find()) {
|
||||||
messageHeader = wmoSearch.group();
|
messageHeader = wmoSearch.group();
|
||||||
|
|
Loading…
Add table
Reference in a new issue