diff --git a/cave/com.raytheon.uf.viz.acarssounding/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.acarssounding/META-INF/MANIFEST.MF index c2cebf8d9b..5d2f001e5d 100644 --- a/cave/com.raytheon.uf.viz.acarssounding/META-INF/MANIFEST.MF +++ b/cave/com.raytheon.uf.viz.acarssounding/META-INF/MANIFEST.MF @@ -2,8 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Acarssounding Plug-in Bundle-SymbolicName: com.raytheon.uf.viz.acarssounding;singleton:=true -Bundle-Version: 1.14.0.qualifier -Bundle-Activator: com.raytheon.uf.viz.acarssounding.Activator +Bundle-Version: 1.15.0.qualifier Bundle-Vendor: RAYTHEON Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy @@ -23,9 +22,10 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0", com.raytheon.uf.viz.d2d.nsharp;bundle-version="1.0.0", org.geotools;bundle-version="2.6.4", javax.measure;bundle-version="1.0.0", - com.raytheon.viz.volumebrowser;bundle-version="1.12.1174", + com.raytheon.viz.volumebrowser;bundle-version="1.15.0", com.raytheon.uf.common.comm;bundle-version="1.12.1174", - com.raytheon.uf.common.derivparam;bundle-version="1.14.0" + com.raytheon.uf.common.derivparam;bundle-version="1.14.0", + com.raytheon.uf.viz.volumebrowser.dataplugin;bundle-version="1.15.0" Import-Package: com.raytheon.uf.common.inventory.exception, com.raytheon.uf.viz.datacube Bundle-ClassPath: com.raytheon.uf.viz.acarssounding.jar diff --git a/cave/com.raytheon.uf.viz.acarssounding/build.properties b/cave/com.raytheon.uf.viz.acarssounding/build.properties index 16bd221c83..4c470c01e4 100644 --- a/cave/com.raytheon.uf.viz.acarssounding/build.properties +++ b/cave/com.raytheon.uf.viz.acarssounding/build.properties @@ -1,5 +1,6 @@ output.com.raytheon.uf.viz.acarssounding.jar = bin/ bin.includes = META-INF/,\ res/,\ - com.raytheon.uf.viz.acarssounding.jar + com.raytheon.uf.viz.acarssounding.jar,\ + plugin.xml source.com.raytheon.uf.viz.acarssounding.jar = src/ diff --git a/cave/com.raytheon.uf.viz.acarssounding/plugin.xml b/cave/com.raytheon.uf.viz.acarssounding/plugin.xml new file mode 100644 index 0000000000..5bbfd16786 --- /dev/null +++ b/cave/com.raytheon.uf.viz.acarssounding/plugin.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/AcarsSoundingProductCreator.java b/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/AcarsSoundingProductCreator.java new file mode 100644 index 0000000000..d35f151c85 --- /dev/null +++ b/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/AcarsSoundingProductCreator.java @@ -0,0 +1,53 @@ +/** + * 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.acarssounding; + +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData; +import com.raytheon.uf.viz.d2d.nsharp.vb.NSharpProductCreator; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; + +/** + * + * Creates {@link AcarsSndNSharpResourceData} for loading acars sounding data in + * nsharp. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class AcarsSoundingProductCreator extends NSharpProductCreator { + + @Override + protected D2DNSharpResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return new AcarsSndNSharpResourceData(); + } +} diff --git a/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/AcarsSoundingVbDataCatalog.java b/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/AcarsSoundingVbDataCatalog.java index fe42b77b41..d42e9451c3 100644 --- a/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/AcarsSoundingVbDataCatalog.java +++ b/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/AcarsSoundingVbDataCatalog.java @@ -19,10 +19,7 @@ **/ package com.raytheon.uf.viz.acarssounding; -import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; -import com.raytheon.uf.viz.core.rsc.ResourceType; -import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; -import com.raytheon.viz.volumebrowser.datacatalog.PointDataCatalog; +import com.raytheon.uf.viz.volumebrowser.dataplugin.point.PointDataCatalog; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; /** @@ -32,11 +29,12 @@ import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; * * SOFTWARE HISTORY * - * Date Ticket# Engineer Description - * ------------ ---------- ----------- -------------------------- - * Aug 19, 2013 2269 bsteffen Initial javadoc - * Aug 19, 2013 2269 bsteffen Fix MDCRS data and switch acars to use - * nsharp. + * Date Ticket# Engineer Description + * ------------- -------- --------- -------------------------- + * Aug 19, 2013 2269 bsteffen Initial javadoc + * Aug 19, 2013 2269 bsteffen Fix MDCRS data and switch acars to use + * nsharp. + * Aug 03, 2015 3861 bsteffen Move resource creation to product creator * * * @@ -50,15 +48,4 @@ public class AcarsSoundingVbDataCatalog extends PointDataCatalog { return new String[] { "acarssounding" }; } - @Override - protected AbstractRequestableResourceData getResourceData( - IDataCatalogEntry catalogEntry, ResourceType resourceType) { - if (resourceType == ResourceType.SOUNDING - && catalogEntry.getSelectedData().getSourcesKey() - .equals("acarssounding")) { - return new AcarsSndNSharpResourceData(); - } - return super.getResourceData(catalogEntry, resourceType); - } - } diff --git a/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/Activator.java b/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/Activator.java deleted file mode 100644 index e6d74e959f..0000000000 --- a/cave/com.raytheon.uf.viz.acarssounding/src/com/raytheon/uf/viz/acarssounding/Activator.java +++ /dev/null @@ -1,88 +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.acarssounding; - -import org.eclipse.core.runtime.Plugin; -import org.osgi.framework.BundleContext; - -import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogManager; - -/** - * The activator class controls the plug-in life cycle - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Aug 19, 2013 2269       bsteffen    Initial javadoc
- * Aug 19, 2013 2269       bsteffen    Fix MDCRS data and switch acars to use
- *                                     nsharp.
- * 
- * 
- * - * @author unknown - * @version 1.0 - */ -public class Activator extends Plugin { - - // The plug-in ID - public static final String PLUGIN_ID = "com.raytheon.uf.viz.acarssounding"; - - // The shared instance - private static Activator plugin; - - /** - * The constructor - */ - public Activator() { - } - - /* - * (non-Javadoc) - * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext) - */ - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - DataCatalogManager.getDataCatalogManager().addDataCatalog( - new AcarsSoundingVbDataCatalog()); - } - - /* - * (non-Javadoc) - * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext context) throws Exception { - plugin = null; - super.stop(context); - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static Activator getDefault() { - return plugin; - } - -} diff --git a/cave/com.raytheon.uf.viz.d2d.gfe/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.d2d.gfe/META-INF/MANIFEST.MF index 0ad69a7458..8b76352e51 100644 --- a/cave/com.raytheon.uf.viz.d2d.gfe/META-INF/MANIFEST.MF +++ b/cave/com.raytheon.uf.viz.d2d.gfe/META-INF/MANIFEST.MF @@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2 Bundle-Name: GFE in D2D Bundle-SymbolicName: com.raytheon.uf.viz.d2d.gfe;singleton:=true Bundle-Version: 1.15.0.qualifier -Bundle-Activator: com.raytheon.uf.viz.d2d.gfe.Activator Bundle-Vendor: RAYTHEON Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy @@ -19,11 +18,10 @@ Require-Bundle: org.eclipse.swt;bundle-version="3.8.1", com.raytheon.uf.viz.xy.timeseries;bundle-version="1.13.0", com.raytheon.uf.common.style, com.raytheon.uf.viz.productbrowser, - com.raytheon.viz.volumebrowser;bundle-version="1.13.0", - javax.measure -Export-Package: com.raytheon.uf.viz.d2d.gfe, - com.raytheon.uf.viz.d2d.gfe.browser, + com.raytheon.viz.volumebrowser;bundle-version="1.15.0", + javax.measure, + com.raytheon.uf.viz.core.maps;bundle-version="1.14.1" +Export-Package: com.raytheon.uf.viz.d2d.gfe.browser, com.raytheon.uf.viz.d2d.gfe.rsc, com.raytheon.uf.viz.d2d.gfe.xy -Import-Package: org.osgi.framework;version="1.7.0" Bundle-ClassPath: com.raytheon.uf.viz.d2d.gfe.jar diff --git a/cave/com.raytheon.uf.viz.d2d.gfe/plugin.xml b/cave/com.raytheon.uf.viz.d2d.gfe/plugin.xml index 2ed735a3d4..8c55b69ba2 100644 --- a/cave/com.raytheon.uf.viz.d2d.gfe/plugin.xml +++ b/cave/com.raytheon.uf.viz.d2d.gfe/plugin.xml @@ -24,4 +24,23 @@ name="GFE Time Series Adapter"> + + + + + + + + + + diff --git a/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/Activator.java b/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/Activator.java deleted file mode 100644 index ae7d2a56fe..0000000000 --- a/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/Activator.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.raytheon.uf.viz.d2d.gfe; - -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -import com.raytheon.uf.viz.d2d.gfe.browser.GFEVbDataCatalog; -import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogManager; - -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; - DataCatalogManager.getDataCatalogManager().addDataCatalog( - new GFEVbDataCatalog()); - } - - /* - * (non-Javadoc) - * - * @see - * org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) - */ - public void stop(BundleContext bundleContext) throws Exception { - Activator.context = null; - } - -} diff --git a/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/browser/GFEVbDataCatalog.java b/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/browser/GFEVbDataCatalog.java index d2f19bd619..32112c59aa 100644 --- a/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/browser/GFEVbDataCatalog.java +++ b/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/browser/GFEVbDataCatalog.java @@ -20,7 +20,6 @@ package com.raytheon.uf.viz.d2d.gfe.browser; import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,15 +40,10 @@ import com.raytheon.uf.common.style.StyleException; import com.raytheon.uf.common.style.StyleManager; import com.raytheon.uf.common.style.StyleManager.StyleType; import com.raytheon.uf.common.style.StyleRule; -import com.raytheon.uf.viz.core.drawables.ResourcePair; import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.requests.ThriftClient; -import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; -import com.raytheon.uf.viz.core.rsc.AbstractResourceData; import com.raytheon.uf.viz.core.rsc.DisplayType; -import com.raytheon.uf.viz.core.rsc.ResourceType; import com.raytheon.uf.viz.d2d.gfe.rsc.GFEGridResource; -import com.raytheon.uf.viz.d2d.gfe.rsc.GFEGridResourceData; import com.raytheon.viz.volumebrowser.datacatalog.AbstractDataCatalog; import com.raytheon.viz.volumebrowser.datacatalog.AvailableDataRequest; import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogEntry; @@ -67,12 +61,13 @@ import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; * * SOFTWARE HISTORY * - * Date Ticket# Engineer Description - * ------------ ---------- ----------- -------------------------- - * Mar 9, 2011 bsteffen Initial creation - * May 02, 2013 1949 bsteffen Update GFE data access in Product - * Browser, Volume Browser, and Data Access - * Framework. + * Date Ticket# Engineer Description + * ------------- -------- --------- -------------------------- + * Mar 09, 2011 bsteffen Initial creation + * May 02, 2013 1949 bsteffen Update GFE data access in Product Browser, + * Volume Browser, and Data Access Framework + * Aug 03, 2015 3861 bsteffen Move resource creation to product creator + * * * * @@ -250,31 +245,6 @@ public class GFEVbDataCatalog extends AbstractDataCatalog { .getSelectedData())); } - @Override - public Collection getResourcesToLoad( - IDataCatalogEntry catalogEntry, ResourceType resourceType, - DisplayType displayType) { - Collection rsc = super.getResourcesToLoad(catalogEntry, - resourceType, displayType); - for (ResourcePair pair : rsc) { - AbstractResourceData rd = pair.getResourceData(); - if (rd instanceof GFEGridResourceData) { - ((GFEGridResourceData) rd).setLegendString(getName( - catalogEntry, displayType)); - } - } - return rsc; - } - - @Override - protected AbstractRequestableResourceData getResourceData( - IDataCatalogEntry catalogEntry, ResourceType resourceType) { - if (resourceType == ResourceType.PLAN_VIEW) { - return new GFEGridResourceData(); - } - return super.getResourceData(catalogEntry, resourceType); - } - @Override protected String getDisplayUnit(IDataCatalogEntry catalogEntry, DisplayType displayType) { diff --git a/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/browser/GfeMapProductCreator.java b/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/browser/GfeMapProductCreator.java new file mode 100644 index 0000000000..b308e61f91 --- /dev/null +++ b/cave/com.raytheon.uf.viz.d2d.gfe/src/com/raytheon/uf/viz/d2d/gfe/browser/GfeMapProductCreator.java @@ -0,0 +1,55 @@ +/** + * 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.d2d.gfe.browser; + +import com.raytheon.uf.viz.core.maps.display.MapRenderableDisplay; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.d2d.gfe.rsc.GFEGridResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.AbstractMapProductCreator; + +/** + * + * Creates {@link GFEGridResourceData} for use on a {@link MapRenderableDisplay} + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class GfeMapProductCreator extends AbstractMapProductCreator { + + @Override + protected GFEGridResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + GFEGridResourceData data = new GFEGridResourceData(); + data.setLegendString(dataCatalog.getName(catalogEntry, displayType)); + return data; + } + +} diff --git a/cave/com.raytheon.uf.viz.d2d.nsharp/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.d2d.nsharp/META-INF/MANIFEST.MF index 76f2e0714c..2040d4c24e 100644 --- a/cave/com.raytheon.uf.viz.d2d.nsharp/META-INF/MANIFEST.MF +++ b/cave/com.raytheon.uf.viz.d2d.nsharp/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: D2D Nsharp Bundle-SymbolicName: com.raytheon.uf.viz.d2d.nsharp;singleton:=true -Bundle-Version: 1.14.1.qualifier +Bundle-Version: 1.15.0.qualifier Bundle-Vendor: RAYTHEON Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy @@ -22,8 +22,10 @@ Require-Bundle: com.raytheon.uf.viz.core;bundle-version="1.14.0", com.raytheon.uf.common.topo, com.raytheon.viz.pointdata, com.raytheon.uf.viz.image.export;bundle-version="1.14.0", - org.eclipse.core.runtime;bundle-version="3.8.0" + org.eclipse.core.runtime;bundle-version="3.8.0", + com.raytheon.viz.volumebrowser;bundle-version="1.15.0" Export-Package: com.raytheon.uf.viz.d2d.nsharp, com.raytheon.uf.viz.d2d.nsharp.display, - com.raytheon.uf.viz.d2d.nsharp.rsc + com.raytheon.uf.viz.d2d.nsharp.rsc, + com.raytheon.uf.viz.d2d.nsharp.vb Bundle-ClassPath: com.raytheon.uf.viz.d2d.nsharp.jar diff --git a/cave/com.raytheon.uf.viz.d2d.nsharp/plugin.xml b/cave/com.raytheon.uf.viz.d2d.nsharp/plugin.xml index 13600f1938..91b7e5973c 100644 --- a/cave/com.raytheon.uf.viz.d2d.nsharp/plugin.xml +++ b/cave/com.raytheon.uf.viz.d2d.nsharp/plugin.xml @@ -79,5 +79,13 @@ + + + + diff --git a/cave/com.raytheon.uf.viz.d2d.nsharp/src/com/raytheon/uf/viz/d2d/nsharp/rsc/GribNSharpResourceData.java b/cave/com.raytheon.uf.viz.d2d.nsharp/src/com/raytheon/uf/viz/d2d/nsharp/rsc/GribNSharpResourceData.java index b3cfa7d68c..f7c09f967c 100644 --- a/cave/com.raytheon.uf.viz.d2d.nsharp/src/com/raytheon/uf/viz/d2d/nsharp/rsc/GribNSharpResourceData.java +++ b/cave/com.raytheon.uf.viz.d2d.nsharp/src/com/raytheon/uf/viz/d2d/nsharp/rsc/GribNSharpResourceData.java @@ -32,6 +32,7 @@ import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; +import com.raytheon.uf.common.dataquery.requests.RequestConstraint; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.topo.TopoException; @@ -40,19 +41,23 @@ import com.raytheon.uf.viz.core.exception.VizException; /** * - * TODO Add Description + * {@link D2DNSharpResourceData} for loading gridded data into nsharp. + * + * TODO rename to GridNSharpResourceData, grib only remains for backward + * compatibility in xml. * *
  * 
  * SOFTWARE HISTORY
  * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Jul 26, 2011            bsteffen     Initial creation
- * Feb 15, 2013 1638       mschenke    Got rid of viz/edex topo classes 
- *                                     and moved into common
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Jul 26, 2011           bsteffen  Initial creation
+ * Feb 15, 2013  1638     mschenke  Got rid of viz/edex topo classes and moved
+ *                                  into common
  * 04/27/2015   RM#6674&7787 Chin Chen   support model sounding query data interpolation and nearest point option                       
- *
+ * Aug 03, 2015  3861     bsteffen  Automatically determine sounding type from
+ *                                  request constraints.
  * 
  * 
* @@ -77,8 +82,11 @@ public class GribNSharpResourceData extends D2DNSharpResourceData { @Override protected void preparePointInfo() throws VizException { - // everything should already be set - return; + /* Always keep the type in sync with what is in the metadata map. */ + RequestConstraint typeConstraint = metadataMap.get("info.datasetId"); + if (typeConstraint != null) { + this.setSoundingType(typeConstraint.getConstraintValue()); + } } @Override diff --git a/cave/com.raytheon.uf.viz.d2d.nsharp/src/com/raytheon/uf/viz/d2d/nsharp/vb/NSharpProductCreator.java b/cave/com.raytheon.uf.viz.d2d.nsharp/src/com/raytheon/uf/viz/d2d/nsharp/vb/NSharpProductCreator.java new file mode 100644 index 0000000000..a36ee84d20 --- /dev/null +++ b/cave/com.raytheon.uf.viz.d2d.nsharp/src/com/raytheon/uf/viz/d2d/nsharp/vb/NSharpProductCreator.java @@ -0,0 +1,92 @@ +/** + * 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.d2d.nsharp.vb; + +import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor; +import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDisplay; + +import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.d2d.nsharp.rsc.BufruaNSharpResourceData; +import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData; +import com.raytheon.uf.viz.d2d.nsharp.rsc.GoesSndNSharpResourceData; +import com.raytheon.uf.viz.d2d.nsharp.rsc.GribNSharpResourceData; +import com.raytheon.uf.viz.d2d.nsharp.rsc.MdlSndNSharpResourceData; +import com.raytheon.uf.viz.d2d.nsharp.rsc.PoesSndNSharpResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.AbstractProductCreator; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; + +/** + * + * Create various {@link D2DNSharpResourceData}s for using nsharp with the + * volume browser. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class NSharpProductCreator extends AbstractProductCreator { + + + @Override + protected D2DNSharpResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + String sourceKey = catalogEntry.getSelectedData().getSourcesKey(); + if (sourceKey.equals("bufrua")) { + return new BufruaNSharpResourceData(); + } else if (sourceKey.equals("modelsoundingETA")) { + return new MdlSndNSharpResourceData("NAMSND"); + } else if (sourceKey.equals("modelsoundingGFS")) { + return new MdlSndNSharpResourceData("GFSSND"); + } else if (sourceKey.equals("poessounding")) { + return new PoesSndNSharpResourceData(); + } else if (sourceKey.equals("goessounding")) { + return new GoesSndNSharpResourceData(); + } else { + D2DNSharpResourceData tmpData = new GribNSharpResourceData( + catalogEntry.getSelectedData().getSourcesKey()); + tmpData.setCoordinate(PointLineUtil + .getPointCoordinate(catalogEntry)); + String pointName = catalogEntry.getSelectedData().getPlanesKey(); + tmpData.setPointName(pointName); + return tmpData; + } + } + + @Override + protected AbstractRenderableDisplay createNewRenderableDisplay(VolumeBrowserDialogSettings dialogSettings, SelectedData selectedData) { + NsharpSkewTPaneDisplay display = new NsharpSkewTPaneDisplay(); + display.setDescriptor(new NsharpSkewTPaneDescriptor()); + return display; + } + +} diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/.classpath b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/.classpath new file mode 100644 index 0000000000..098194ca4b --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/.project b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/.project new file mode 100644 index 0000000000..047e744287 --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/.project @@ -0,0 +1,28 @@ + + + com.raytheon.uf.viz.volumebrowser.dataplugin + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..60ffa91338 --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/META-INF/MANIFEST.MF @@ -0,0 +1,30 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Volume Browser Data Plugins +Bundle-SymbolicName: com.raytheon.uf.viz.volumebrowser.dataplugin;singleton:=true +Bundle-Version: 1.15.0.qualifier +Bundle-Vendor: RAYTHEON +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Require-Bundle: com.raytheon.uf.viz.core;bundle-version="1.15.1", + com.raytheon.viz.volumebrowser;bundle-version="1.15.0", + org.eclipse.core.runtime;bundle-version="3.8.0", + com.raytheon.uf.common.time;bundle-version="1.14.0", + com.raytheon.uf.viz.xy.varheight;bundle-version="1.15.0", + com.raytheon.uf.viz.xy.timeseries;bundle-version="1.14.0", + com.raytheon.uf.viz.xy.timeheight;bundle-version="1.15.0", + com.raytheon.uf.viz.xy.crosssection;bundle-version="1.15.0", + com.raytheon.uf.common.geospatial;bundle-version="1.15.0", + com.raytheon.uf.common.pointdata;bundle-version="1.15.0", + com.raytheon.viz.pointdata;bundle-version="1.15.0", + com.raytheon.uf.common.dataplugin.level;bundle-version="1.14.1", + com.raytheon.uf.common.derivparam;bundle-version="1.14.1", + com.raytheon.uf.viz.points;bundle-version="1.0.0", + com.raytheon.uf.viz.core.maps;bundle-version="1.14.1", + com.raytheon.uf.common.dataplugin;bundle-version="1.14.0", + com.raytheon.viz.grid;bundle-version="1.15.0", + com.raytheon.uf.viz.objectiveanalysis;bundle-version="1.15.0", + com.raytheon.uf.common.inventory;bundle-version="1.14.0", + com.raytheon.viz.awipstools;bundle-version="1.14.0", + com.raytheon.uf.viz.datacube;bundle-version="1.14.0", + com.raytheon.uf.viz.core.grid;bundle-version="1.15.0" +Export-Package: com.raytheon.uf.viz.volumebrowser.dataplugin.point diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/build.properties b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/build.properties new file mode 100644 index 0000000000..e9863e281e --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/plugin.xml b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/plugin.xml new file mode 100644 index 0000000000..cfd7705b27 --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/plugin.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/AbstractInventoryDataCatalog.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/AbstractInventoryDataCatalog.java similarity index 92% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/AbstractInventoryDataCatalog.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/AbstractInventoryDataCatalog.java index bb0ab2c8b8..3d0b6f3e4f 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/AbstractInventoryDataCatalog.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/AbstractInventoryDataCatalog.java @@ -17,7 +17,7 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin; import java.util.ArrayList; import java.util.Arrays; @@ -45,6 +45,10 @@ import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.datacube.DataCubeContainer; +import com.raytheon.viz.volumebrowser.datacatalog.AbstractDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.AvailableDataRequest; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; import com.raytheon.viz.volumebrowser.vbui.DataListsProdTableComp.DataSelection; import com.raytheon.viz.volumebrowser.vbui.MenuItemManager; import com.raytheon.viz.volumebrowser.vbui.SelectedData; @@ -52,19 +56,21 @@ import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserAction; /** - * TODO Add Description + * Base {@link IDataCatalog} for plugin types that use an + * {@link AbstractInventory} to track parameter availability. * *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Apr 14, 2010            bsteffen    Initial creation
- * Jul 25, 2013 2112       bsteffen    Fix volume browser sounding errors.
- * Jan 30, 2014  #2725     ekladstrup  updated exception handling during move of derived
- *                                     parameters to common
- * Sep 09, 2014  3356      njensen     Remove CommunicationException
- * May 18, 2015  4412     bsteffen     Use all level mappings for plane names
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Apr 14, 2010           bsteffen  Initial creation
+ * Jul 25, 2013  2112     bsteffen  Fix volume browser sounding errors.
+ * Jan 30, 2014  2725     ekladstr  updated exception handling during move of derived
+ *                                  parameters to common
+ * Sep 09, 2014  3356     njensen   Remove CommunicationException
+ * May 18, 2015  4412     bsteffen  Use all level mappings for plane names
+ * Aug 03, 2015  3861     bsteffen  Move resource creation to ProductCreators
  * 
  * 
* @@ -223,13 +229,13 @@ public abstract class AbstractInventoryDataCatalog extends AbstractDataCatalog { protected Collection get3DPlanes(Collection sources) { Set results = new HashSet(); if (sources == null || sources.isEmpty()) { - results.addAll(getPointLineKeys()); + results.addAll(PointLineUtil.getPointLineKeys()); results.addAll(MenuItemManager.getInstance().getLatLonKeys()); } else { List allSources = getSupportedSourcesInternal(); for (String source : sources) { if (allSources.contains(source)) { - results.addAll(getPointLineKeys()); + results.addAll(PointLineUtil.getPointLineKeys()); results.addAll(MenuItemManager.getInstance() .getLatLonKeys()); } diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridCrossSectionProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridCrossSectionProductCreator.java new file mode 100644 index 0000000000..b1f51e318b --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridCrossSectionProductCreator.java @@ -0,0 +1,68 @@ +/** + * 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.volumebrowser.dataplugin.grid; + +import java.util.Collection; + +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.volumebrowser.dataplugin.grid.GridEnsembleHelper.GridProductCreator; +import com.raytheon.uf.viz.xy.crosssection.display.CrossSectionRenderableDisplay; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.CrossSectionProductCreator; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; + +/** + * + * {@link ProductCreator} for loading grid data on a + * {@link CrossSectionRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class GridCrossSectionProductCreator extends CrossSectionProductCreator + implements GridProductCreator { + + @Override + public Collection getResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return GridEnsembleHelper.getResourcesToLoad(this, dataCatalog, + catalogEntry, displayType); + } + + @Override + public Collection getBaseResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return super.getResourcesToLoad(dataCatalog, catalogEntry, displayType); + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/GridDataCatalog.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridDataCatalog.java similarity index 81% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/GridDataCatalog.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridDataCatalog.java index 05cd8c32d2..49d9e9793c 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/GridDataCatalog.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridDataCatalog.java @@ -17,7 +17,7 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin.grid; import java.util.ArrayList; import java.util.Collection; @@ -25,7 +25,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.NavigableSet; import java.util.Set; @@ -36,7 +35,6 @@ import org.geotools.geometry.jts.ReferencedEnvelope; import org.opengis.geometry.BoundingBox; import org.opengis.referencing.operation.MathTransform; -import com.raytheon.uf.common.dataplugin.grid.GridConstants; import com.raytheon.uf.common.dataplugin.level.Level; import com.raytheon.uf.common.dataplugin.level.mapping.LevelMappingFactory; import com.raytheon.uf.common.dataplugin.level.util.LevelUtilities; @@ -47,20 +45,15 @@ import com.raytheon.uf.common.gridcoverage.GridCoverage; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; -import com.raytheon.uf.viz.core.drawables.ResourcePair; -import com.raytheon.uf.viz.core.exception.VizException; -import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; import com.raytheon.uf.viz.core.rsc.DisplayType; -import com.raytheon.uf.viz.core.rsc.ResourceType; -import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData; -import com.raytheon.uf.viz.d2d.nsharp.rsc.GribNSharpResourceData; import com.raytheon.uf.viz.points.PointsDataManager; +import com.raytheon.uf.viz.volumebrowser.dataplugin.AbstractInventoryDataCatalog; import com.raytheon.viz.awipstools.ToolsDataManager; import com.raytheon.viz.grid.inv.GridInventory; -import com.raytheon.viz.grid.rsc.GridNameGenerator; -import com.raytheon.viz.grid.rsc.GridResourceData; import com.raytheon.viz.grid.util.CoverageUtils; import com.raytheon.viz.grid.xml.FieldDisplayTypesFactory; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; import com.raytheon.viz.volumebrowser.vbui.MenuItemManager; import com.raytheon.viz.volumebrowser.vbui.SelectedData; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.SpaceTimeMenu; @@ -70,24 +63,25 @@ import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.LineString; /** - * Implements the IDataCatalog interface for grib data. + * Implements the IDataCatalog interface for grid data. * *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * May 27, 2009 2161       lvenable    Initial creation
- * Oct 21, 2009 1711       bsteffen    Updated Baseline and Points to use new
- *                                     ToolsDataManager
- * Nov 17, 2009 3120       rjpeter     Updated to use LevelMappingFactory.
- * Jul 31, 2012 875        rferrel     Now uses points.
- * May 30, 2013 2055       bsteffen    Remove modelName from sounding pointName.
- * Dec 06, 2013 2271       mpduff      Added check for null coordinate.
- * Jan 30, 2014 #2725      ekladstrup  updated exception handling during move of derived
- *                                     parameters to common
- * Mar 11, 2014 #2718      randerso    Changes for GeoTools 10.5
- * Sep 09, 2014  3356      njensen     Remove CommunicationException
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * May 27, 2009  2161     lvenable  Initial creation
+ * Oct 21, 2009  1711     bsteffen  Updated Baseline and Points to use new
+ *                                  ToolsDataManager
+ * Nov 17, 2009  3120     rjpeter   Updated to use LevelMappingFactory.
+ * Jul 31, 2012  875      rferrel   Now uses points.
+ * May 30, 2013  2055     bsteffen  Remove modelName from sounding pointName.
+ * Dec 06, 2013  2271     mpduff    Added check for null coordinate.
+ * Jan 30, 2014  2725     ekladstr  updated exception handling during move of derived
+ *                                  parameters to common
+ * Mar 11, 2014  2718     randerso  Changes for GeoTools 10.5
+ * Sep 09, 2014  3356     njensen   Remove CommunicationException
+ * Aug 03, 2015  3861     bsteffen  Move resource creation to ProductCreators
  * 
  * 
* @@ -255,83 +249,6 @@ public class GridDataCatalog extends AbstractInventoryDataCatalog { return new String[] { GridInventory.PLUGIN_NAME }; } - @Override - protected AbstractRequestableResourceData getResourceData( - IDataCatalogEntry catalogEntry, ResourceType resourceType) { - - AbstractRequestableResourceData rscData = null; - - switch (resourceType) { - case PLAN_VIEW: - GridResourceData gRscData = new GridResourceData(); - - if (catalogEntry.getDialogSettings().getSpaceTimeSelection() == SpaceTimeMenu.SPACE) { - gRscData.setSpatial(true); - } else { - gRscData.setNameGenerator(new GridNameGenerator(catalogEntry - .getSelectedData().getPlanesText())); - } - rscData = gRscData; - - break; - - case SOUNDING: - D2DNSharpResourceData tmpData = new GribNSharpResourceData( - catalogEntry.getSelectedData().getSourcesKey()); - tmpData.setCoordinate(getPointCoordinate(catalogEntry)); - String pointName = catalogEntry.getSelectedData().getPlanesKey(); - tmpData.setPointName(pointName); - rscData = tmpData; - break; - default: - rscData = super.getResourceData(catalogEntry, resourceType); - } - - return rscData; - } - - @Override - public Collection getResourcesToLoad( - IDataCatalogEntry catalogEntry, ResourceType resourceType, - DisplayType displayType) { - Map metadataMap = getProductParameters(catalogEntry); - - List ensemebles = null; - try { - ensemebles = getGridInventory().getEnsembles(metadataMap); - } catch (VizException e) { - statusHandler.handle(Priority.PROBLEM, - "Error occured during perturbation query.", e); - } - if ((ensemebles != null) && (ensemebles.size() > 1)) { - Collections.sort(ensemebles); - Collection requests = new ArrayList(); - for (String ensemble : ensemebles) { - Collection origRequests = super - .getResourcesToLoad(catalogEntry, resourceType, - displayType); - for (ResourcePair request : origRequests) { - ((AbstractRequestableResourceData) request - .getResourceData()).getMetadataMap().put( - GridConstants.ENSEMBLE_ID, - new RequestConstraint(ensemble.toString())); - requests.add(request); - } - } - return requests; - } else { - return super.getResourcesToLoad(catalogEntry, resourceType, - displayType); - } - } - - /** - * @return - */ - private GridInventory getGridInventory() { - return (GridInventory) getInventory(); - } - /* * (non-Javadoc) * @@ -483,7 +400,7 @@ public class GridDataCatalog extends AbstractInventoryDataCatalog { || (viewSelection == ViewMenu.TIMESERIES)) { Set results = new HashSet(); results.addAll(MenuItemManager.getInstance().getLatLonKeys()); - results.addAll(getPointLineKeys()); + results.addAll(PointLineUtil.getPointLineKeys()); return results; } ToolsDataManager tdm = ToolsDataManager.getInstance(); @@ -497,7 +414,7 @@ public class GridDataCatalog extends AbstractInventoryDataCatalog { Set results = new HashSet(); results.addAll(MenuItemManager.getInstance() .getLatLonKeys()); - results.addAll(getPointLineKeys()); + results.addAll(PointLineUtil.getPointLineKeys()); return results; } for (GridCoverage coverage : coverages) { diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/GridDataCatalogEntry.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridDataCatalogEntry.java similarity index 84% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/GridDataCatalogEntry.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridDataCatalogEntry.java index 6f9f9bd8c9..c0238ad5c4 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/GridDataCatalogEntry.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridDataCatalogEntry.java @@ -17,12 +17,13 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin.grid; import java.util.HashMap; import java.util.Map; import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogEntry; import com.raytheon.viz.volumebrowser.vbui.SelectedData; /** @@ -33,9 +34,10 @@ import com.raytheon.viz.volumebrowser.vbui.SelectedData; * * SOFTWARE HISTORY * - * Date Ticket# Engineer Description - * ------------ ---------- ----------- -------------------------- - * Sep 25, 2012 bsteffen Initial javadoc + * Date Ticket# Engineer Description + * ------------- -------- --------- -------------------------- + * Sep 25, 2012 bsteffen Initial javadoc + * Aug 03, 2015 3861 bsteffen Move to new plugin * * * diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridEnsembleHelper.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridEnsembleHelper.java new file mode 100644 index 0000000000..a4daacd318 --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridEnsembleHelper.java @@ -0,0 +1,125 @@ +/** + * 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.volumebrowser.dataplugin.grid; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import com.raytheon.uf.common.dataplugin.grid.GridConstants; +import com.raytheon.uf.common.dataquery.requests.RequestConstraint; +import com.raytheon.uf.common.status.IUFStatusHandler; +import com.raytheon.uf.common.status.UFStatus; +import com.raytheon.uf.common.status.UFStatus.Priority; +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.exception.VizException; +import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.datacube.DataCubeContainer; +import com.raytheon.viz.grid.inv.GridInventory; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; + +/** + * + * Provides static methods to allow multiple {@link ProductCreator} to share the + * same logic for loading multiple resources when the selected source is an + * ensemble model. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class GridEnsembleHelper { + private static final transient IUFStatusHandler statusHandler = UFStatus + .getHandler(GridEnsembleHelper.class); + + public static interface GridProductCreator extends ProductCreator{ + public Collection getBaseResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType); + } + + public static Collection getResourcesToLoad( + GridProductCreator creator, IDataCatalog dataCatalog, + IDataCatalogEntry catalogEntry, DisplayType displayType) { + List ensembles = GridEnsembleHelper.getEnsembles(dataCatalog, + catalogEntry); + if (ensembles != null) { + Collection full = new ArrayList(); + for (String ensemble : ensembles) { + Collection single = creator + .getBaseResourcesToLoad(dataCatalog, catalogEntry, + displayType); + GridEnsembleHelper.addEnsemble(single, ensemble); + full.addAll(single); + } + return full; + } else { + return creator.getBaseResourcesToLoad(dataCatalog, catalogEntry, + displayType); + } + } + + private static List getEnsembles(IDataCatalog dataCatalog, + IDataCatalogEntry catalogEntry) { + Map metadataMap = dataCatalog + .getProductParameters(catalogEntry); + List ensembles = null; + try { + ensembles = getGridInventory().getEnsembles(metadataMap); + if (ensembles != null && ensembles.size() > 1) { + Collections.sort(ensembles); + } else { + ensembles = null; + } + } catch (VizException e) { + statusHandler.handle(Priority.PROBLEM, + "Error occured during perturbation query.", e); + } + return ensembles; + } + + private static void addEnsemble(Collection resources, + String ensemble) { + for (ResourcePair pair : resources) { + AbstractRequestableResourceData data = ((AbstractRequestableResourceData) pair + .getResourceData()); + data.getMetadataMap().put(GridConstants.ENSEMBLE_ID, + new RequestConstraint(ensemble.toString())); + } + } + + private static GridInventory getGridInventory() { + return (GridInventory) DataCubeContainer + .getInventory(GridConstants.GRID); + } +} diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridMapProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridMapProductCreator.java new file mode 100644 index 0000000000..97a99b13db --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridMapProductCreator.java @@ -0,0 +1,87 @@ +/** + * 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.volumebrowser.dataplugin.grid; + +import java.util.Collection; + +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.maps.display.MapRenderableDisplay; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.volumebrowser.dataplugin.grid.GridEnsembleHelper.GridProductCreator; +import com.raytheon.viz.grid.rsc.GridNameGenerator; +import com.raytheon.viz.grid.rsc.GridResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.AbstractMapProductCreator; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; +import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.SpaceTimeMenu; + +/** + * + * {@link ProductCreator} for loading grid data on a + * {@link MapRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class GridMapProductCreator extends AbstractMapProductCreator implements + GridProductCreator { + + @Override + public Collection getResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return GridEnsembleHelper.getResourcesToLoad(this, dataCatalog, + catalogEntry, displayType); + } + + @Override + public Collection getBaseResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return super.getResourcesToLoad(dataCatalog, catalogEntry, displayType); + } + + @Override + protected GridResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + GridResourceData gRscData = new GridResourceData(); + + if (catalogEntry.getDialogSettings().getSpaceTimeSelection() == SpaceTimeMenu.SPACE) { + System.out + .println("Loading a Plan View Space Grid Resource from the Volume Browser."); + gRscData.setSpatial(true); + } else { + gRscData.setNameGenerator(new GridNameGenerator(catalogEntry + .getSelectedData().getPlanesText())); + } + return gRscData; + } + +} diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridTimeHeightProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridTimeHeightProductCreator.java new file mode 100644 index 0000000000..12a3ba86ed --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridTimeHeightProductCreator.java @@ -0,0 +1,68 @@ +/** + * 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.volumebrowser.dataplugin.grid; + +import java.util.Collection; + +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.volumebrowser.dataplugin.grid.GridEnsembleHelper.GridProductCreator; +import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightRenderableDisplay; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; +import com.raytheon.viz.volumebrowser.loader.TimeHeightProductCreator; + +/** + * + * {@link ProductCreator} for loading grid data on a + * {@link TimeHeightRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class GridTimeHeightProductCreator extends TimeHeightProductCreator + implements GridProductCreator { + + @Override + public Collection getResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return GridEnsembleHelper.getResourcesToLoad(this, dataCatalog, + catalogEntry, displayType); + } + + @Override + public Collection getBaseResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return super.getResourcesToLoad(dataCatalog, catalogEntry, displayType); + } + +} diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridTimeSeriesProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridTimeSeriesProductCreator.java new file mode 100644 index 0000000000..8a4a9825c2 --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridTimeSeriesProductCreator.java @@ -0,0 +1,68 @@ +/** + * 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.volumebrowser.dataplugin.grid; + +import java.util.Collection; + +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.volumebrowser.dataplugin.grid.GridEnsembleHelper.GridProductCreator; +import com.raytheon.uf.viz.xy.timeseries.display.TimeSeriesRenderableDisplay; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; +import com.raytheon.viz.volumebrowser.loader.TimeSeriesProductCreator; + +/** + * + * {@link ProductCreator} for loading grid data on a + * {@link TimeSeriesRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class GridTimeSeriesProductCreator extends TimeSeriesProductCreator + implements GridProductCreator { + + @Override + public Collection getResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return GridEnsembleHelper.getResourcesToLoad(this, dataCatalog, + catalogEntry, displayType); + } + + @Override + public Collection getBaseResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return super.getResourcesToLoad(dataCatalog, catalogEntry, displayType); + } + +} diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridVarHeightProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridVarHeightProductCreator.java new file mode 100644 index 0000000000..c1d967480a --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/grid/GridVarHeightProductCreator.java @@ -0,0 +1,68 @@ +/** + * 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.volumebrowser.dataplugin.grid; + +import java.util.Collection; + +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.volumebrowser.dataplugin.grid.GridEnsembleHelper.GridProductCreator; +import com.raytheon.uf.viz.xy.varheight.display.VarHeightRenderableDisplay; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; +import com.raytheon.viz.volumebrowser.loader.VarHeightProductCreator; + +/** + * + * {@link ProductCreator} for loading grid data on a + * {@link VarHeightRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class GridVarHeightProductCreator extends VarHeightProductCreator + implements GridProductCreator { + + @Override + public Collection getResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return GridEnsembleHelper.getResourcesToLoad(this, dataCatalog, + catalogEntry, displayType); + } + + @Override + public Collection getBaseResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + return super.getResourcesToLoad(dataCatalog, catalogEntry, displayType); + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/DmdDataCatalog.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/DmdDataCatalog.java similarity index 77% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/DmdDataCatalog.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/DmdDataCatalog.java index 08030b6420..77e1469df2 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/DmdDataCatalog.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/DmdDataCatalog.java @@ -17,7 +17,7 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin.point; import java.util.Arrays; import java.util.Collection; @@ -28,19 +28,45 @@ import java.util.List; import java.util.Set; import com.raytheon.uf.common.dataquery.requests.RequestConstraint; +import com.raytheon.viz.volumebrowser.datacatalog.AbstractDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.AvailableDataRequest; +import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogEntry; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; import com.raytheon.viz.volumebrowser.vbui.SelectedData; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; +/** + * + * Implements the IDataCatalog interface for dmd data. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * Aug 3, 2015            bsteffen     Initial javadoc
+ * 
+ * 
+ * + * @author bsteffen + * @version 1.0 + */ public class DmdDataCatalog extends AbstractDataCatalog { private static final String[] fieldPlanePairs = { "LowLyr:ShrMag", "MaxShear:ShrMag", "LowLyr:wDiv", "MidLyr:wDiv", "LowLyr:g2gsh", "LowLyr:RRV", "MaxWind:RRV", "LowLyr:diam", "Layer:sRank", "LowLyr:GH", "MaxWind:GH", "MaxShear:GH", "HiLyr:GH", "LowLyr:P", - "MaxWind:P", "MaxShear:P", "HiLyr:P", POINT_LINE_KEY + ":ShrMag", - POINT_LINE_KEY + ":wDiv", POINT_LINE_KEY + ":g2gsh", - POINT_LINE_KEY + ":RRV", POINT_LINE_KEY + ":diam", - POINT_LINE_KEY + ":GH", POINT_LINE_KEY + ":P" }; + "MaxWind:P", "MaxShear:P", "HiLyr:P", + PointLineUtil.POINT_LINE_KEY + ":ShrMag", + PointLineUtil.POINT_LINE_KEY + ":wDiv", + PointLineUtil.POINT_LINE_KEY + ":g2gsh", + PointLineUtil.POINT_LINE_KEY + ":RRV", + PointLineUtil.POINT_LINE_KEY + ":diam", + PointLineUtil.POINT_LINE_KEY + ":GH", + PointLineUtil.POINT_LINE_KEY + ":P" }; @Override protected void addProductParameters(IDataCatalogEntry catalogEntry, @@ -72,7 +98,7 @@ public class DmdDataCatalog extends AbstractDataCatalog { if (!getAvailablePlanes(selectedSources, selectedFields).contains( selectedData.getPlanesKey()) - && !isPointLine(selectedData.getPlanesKey())) { + && !PointLineUtil.isPointLine(selectedData.getPlanesKey())) { return null; } @@ -107,13 +133,14 @@ public class DmdDataCatalog extends AbstractDataCatalog { List planes = Arrays.asList(selectedPlanes); boolean hasPointLine = false; for (String plane : planes) { - hasPointLine = hasPointLine || isPointLine(plane); + hasPointLine = hasPointLine || PointLineUtil.isPointLine(plane); } for (String fieldPlanePair : fieldPlanePairs) { String[] split = fieldPlanePair.split(":"); if (planes.isEmpty() || planes.contains(split[0])) { fields.add(split[1]); - } else if (hasPointLine && split[0].equals(POINT_LINE_KEY)) { + } else if (hasPointLine + && split[0].equals(PointLineUtil.POINT_LINE_KEY)) { fields.add(split[1]); } } @@ -131,8 +158,8 @@ public class DmdDataCatalog extends AbstractDataCatalog { for (String fieldPlanePair : fieldPlanePairs) { String[] split = fieldPlanePair.split(":"); if (fields.contains(split[1]) || fields.isEmpty()) { - if (split[0].equals(POINT_LINE_KEY)) { - for (String plane : getPointLineKeys()) { + if (split[0].equals(PointLineUtil.POINT_LINE_KEY)) { + for (String plane : PointLineUtil.getPointLineKeys()) { planes.add(plane); } } else { @@ -151,7 +178,7 @@ public class DmdDataCatalog extends AbstractDataCatalog { List planes = Arrays.asList(selectedPlanes); boolean hasPointLine = false; for (String plane : planes) { - hasPointLine = hasPointLine || isPointLine(plane); + hasPointLine = hasPointLine || PointLineUtil.isPointLine(plane); } for (String fieldPlanePair : fieldPlanePairs) { String[] split = fieldPlanePair.split(":"); @@ -159,7 +186,8 @@ public class DmdDataCatalog extends AbstractDataCatalog { if (planes.contains(split[0]) || planes.isEmpty()) { return Arrays.asList("radar149"); - } else if (hasPointLine && split[0].equals(POINT_LINE_KEY)) { + } else if (hasPointLine + && split[0].equals(PointLineUtil.POINT_LINE_KEY)) { return Arrays.asList("radar149"); } } diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/ModelSoundingCatalog.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/ModelSoundingCatalog.java similarity index 91% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/ModelSoundingCatalog.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/ModelSoundingCatalog.java index 6c68a9f184..2426b48286 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/ModelSoundingCatalog.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/ModelSoundingCatalog.java @@ -17,7 +17,7 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin.point; import java.util.ArrayList; import java.util.Arrays; @@ -36,6 +36,8 @@ import com.raytheon.uf.viz.core.exception.VizException; import com.raytheon.uf.viz.core.requests.ThriftClient; import com.raytheon.viz.pointdata.StaticPlotInfoPV; import com.raytheon.viz.pointdata.StaticPlotInfoPV.SPIEntry; +import com.raytheon.viz.volumebrowser.datacatalog.AvailableDataRequest; +import com.raytheon.viz.volumebrowser.datacatalog.DelegateAvailableRequest; import com.raytheon.viz.volumebrowser.vbui.SelectedData; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; import com.raytheon.viz.volumebrowser.xml.VbSource; @@ -48,15 +50,16 @@ import com.raytheon.viz.volumebrowser.xml.VbSourceList; * * SOFTWARE HISTORY * - * Date Ticket# Engineer Description - * ------------ ---------- ----------- -------------------------- - * Sep 28, 2011 mschenke Initial creation - * May 02, 2013 1949 bsteffen Force ModelSounding in Vb to play nicely - * with others. - * Jul 23, 2014 3410 bclement location changed to floats - * Aug 19, 2014 3506 mapeters Modified getTypeMap function to still get - * correct VB sources after splitting them - * into multiple files. + * Date Ticket# Engineer Description + * ------------- -------- --------- -------------------------- + * Sep 28, 2011 mschenke Initial creation + * May 02, 2013 1949 bsteffen Force ModelSounding in Vb to play nicely + * with others. + * Jul 23, 2014 3410 bclement location changed to floats + * Aug 19, 2014 3506 mapeters Modified getTypeMap function to still get + * correct VB sources after splitting them + * into multiple files. + * Aug 03, 2015 3861 bsteffen Move to volumebrowser.dataplugin plugin. * * * diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/OAMapProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/OAMapProductCreator.java new file mode 100644 index 0000000000..a9f0b40e3a --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/OAMapProductCreator.java @@ -0,0 +1,73 @@ +/** + * 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.volumebrowser.dataplugin.point; + +import com.raytheon.uf.common.time.BinOffset; +import com.raytheon.uf.viz.core.maps.display.MapRenderableDisplay; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.objectiveanalysis.rsc.OAResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.AbstractMapProductCreator; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; + +/** + * + * {@link ProductCreator} for loading objective analysis data on a + * {@link MapRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class OAMapProductCreator extends AbstractMapProductCreator { + + @Override + protected OAResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + String sourceText = catalogEntry.getSelectedData().getSourcesText(); + + OAResourceData rscData = new OAResourceData(); + if (sourceText.equals("RaobOA")) { + BinOffset binOffset = new BinOffset(3600, 3600); + rscData.setBinOffset(binOffset); + } else if (sourceText.equals("MetarOA")) { + BinOffset binOffset = new BinOffset(1800, 1800); + rscData.setBinOffset(binOffset); + } + rscData.setParameter(catalogEntry.getSelectedData().getFieldsKey()); + rscData.setParameterName(catalogEntry.getSelectedData().getFieldsText()); + rscData.setSource(sourceText); + String levelKey = catalogEntry.getSelectedData().getPlanesKey(); + rscData.setLevelKey(levelKey); + rscData.setRetrieveData(false); + rscData.setUpdatingOnMetadataOnly(true); + return rscData; + } + +} diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/OATimeSeriesProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/OATimeSeriesProductCreator.java new file mode 100644 index 0000000000..4f788a6c3e --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/OATimeSeriesProductCreator.java @@ -0,0 +1,66 @@ +/** + * 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.volumebrowser.dataplugin.point; + +import com.raytheon.uf.common.time.BinOffset; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.xy.timeseries.display.TimeSeriesRenderableDisplay; +import com.raytheon.uf.viz.xy.timeseries.rsc.TimeSeriesResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; +import com.raytheon.viz.volumebrowser.loader.TimeSeriesProductCreator; + +/** + * + * {@link ProductCreator} for loading objective analysis data on a + * {@link TimeSeriesRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class OATimeSeriesProductCreator extends TimeSeriesProductCreator { + + @Override + protected TimeSeriesResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + TimeSeriesResourceData resourceData = super.createNewResourceData( + dataCatalog, catalogEntry, displayType); + String sourceText = catalogEntry.getSelectedData().getSourcesText(); + if (sourceText.equals("RaobOA")) { + BinOffset binOffset = new BinOffset(3600, 3600); + resourceData.setBinOffset(binOffset); + } else if (sourceText.equals("MetarOA")) { + BinOffset binOffset = new BinOffset(1800, 1800); + resourceData.setBinOffset(binOffset); + } + return resourceData; + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/PointAvailableDataRequest.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointAvailableDataRequest.java similarity index 89% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/PointAvailableDataRequest.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointAvailableDataRequest.java index 525de3e2df..b999236cf7 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/PointAvailableDataRequest.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointAvailableDataRequest.java @@ -17,7 +17,10 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin.point; + +import com.raytheon.viz.volumebrowser.datacatalog.AvailableDataRequest; +import com.raytheon.viz.volumebrowser.datacatalog.DelegateAvailableRequest; /** * @@ -31,6 +34,7 @@ package com.raytheon.viz.volumebrowser.datacatalog; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * May 25, 2011 bsteffen Initial creation + * Aug 03, 2015 3861 bsteffen Move to volumebrowser.dataplugin plugin. * * * diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointCrossSectionProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointCrossSectionProductCreator.java new file mode 100644 index 0000000000..334ee27dae --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointCrossSectionProductCreator.java @@ -0,0 +1,88 @@ +/** + * 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.volumebrowser.dataplugin.point; + +import java.util.ArrayList; +import java.util.List; + +import com.raytheon.uf.common.pointdata.spatial.SurfaceObsLocation; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.xy.crosssection.display.CrossSectionRenderableDisplay; +import com.raytheon.uf.viz.xy.crosssection.rsc.CrossSectionResourceData; +import com.raytheon.viz.awipstools.ToolsDataManager; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.CrossSectionProductCreator; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.LineString; + +/** + * + * {@link ProductCreator} for loading point data on a + * {@link CrossSectionRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class PointCrossSectionProductCreator extends CrossSectionProductCreator { + + @Override + protected CrossSectionResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + CrossSectionResourceData resourceData = super.createNewResourceData( + dataCatalog, catalogEntry, displayType); + if (!(dataCatalog instanceof PointDataCatalog)) { + return resourceData; + } + PointDataCatalog pointCatalog = (PointDataCatalog) dataCatalog; + String sourceKey = catalogEntry.getSelectedData().getSourcesKey(); + List closest = new ArrayList(); + String letter = catalogEntry.getSelectedData().getPlanesKey() + .replace("Line", ""); + LineString line = ToolsDataManager.getInstance().getBaseline(letter); + Coordinate[] newLine = new Coordinate[line.getNumPoints()]; + for (int i = 0; i < line.getNumPoints(); i++) { + SurfaceObsLocation loc = pointCatalog.getClosestStation( + line.getCoordinateN(i), + sourceKey, closest); + if (loc == null) { + break; + } + closest.add(loc.getStationId()); + newLine[i] = new Coordinate(loc.getLongitude(), loc.getLatitude()); + } + ToolsDataManager.getInstance().setBaseline(letter, + line.getFactory().createLineString(newLine)); + resourceData.setStationIDs(closest); + return resourceData; + } + + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/PointDataCatalog.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointDataCatalog.java similarity index 76% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/PointDataCatalog.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointDataCatalog.java index 39e0a13fd7..2c6ea1cd17 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/PointDataCatalog.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointDataCatalog.java @@ -17,7 +17,7 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin.point; import java.util.ArrayList; import java.util.Arrays; @@ -40,22 +40,16 @@ import com.raytheon.uf.common.pointdata.spatial.SurfaceObsLocation; 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.BinOffset; import com.raytheon.uf.viz.core.catalog.DbQuery; import com.raytheon.uf.viz.core.exception.VizException; -import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; -import com.raytheon.uf.viz.core.rsc.ResourceType; -import com.raytheon.uf.viz.d2d.nsharp.rsc.BufruaNSharpResourceData; -import com.raytheon.uf.viz.d2d.nsharp.rsc.GoesSndNSharpResourceData; -import com.raytheon.uf.viz.d2d.nsharp.rsc.MdlSndNSharpResourceData; -import com.raytheon.uf.viz.d2d.nsharp.rsc.PoesSndNSharpResourceData; -import com.raytheon.uf.viz.objectiveanalysis.rsc.OAResourceData; import com.raytheon.uf.viz.points.PointsDataManager; -import com.raytheon.uf.viz.xy.crosssection.rsc.CrossSectionResourceData; -import com.raytheon.uf.viz.xy.timeheight.rsc.TimeHeightResourceData; -import com.raytheon.uf.viz.xy.varheight.rsc.VarHeightResourceData; +import com.raytheon.uf.viz.volumebrowser.dataplugin.AbstractInventoryDataCatalog; import com.raytheon.viz.awipstools.ToolsDataManager; import com.raytheon.viz.pointdata.util.AbstractPointDataInventory; +import com.raytheon.viz.volumebrowser.datacatalog.AvailableDataRequest; +import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogEntry; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; import com.raytheon.viz.volumebrowser.vbui.SelectedData; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserAction; @@ -69,17 +63,18 @@ import com.vividsolutions.jts.geom.LineString; *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Dec 01, 2009            bsteffen    Initial creation
- * May 08, 2013 DR14824 mgamazaychikov Added alterProductParameters method
- * May 09, 2013 1869       bsteffen    Modified D2D time series of point data to
- *                                     work without dataURI.
- * Aug 15, 2013 2258       bsteffen    Convert profiler sounding to var height
- *                                     with hodo.
- * Aug 15, 2013 2260       bsteffen    Switch poessounding to NSharp.
- * Jul 23, 2014 3410       bclement    location changed to floats
- * Sep 09, 2014 3356       njensen     Remove CommunicationException
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Dec 01, 2009           bsteffen  Initial creation
+ * May 08, 2013  14824    mgamazay  Added alterProductParameters method
+ * May 09, 2013  1869     bsteffen  Modified D2D time series of point data to
+ *                                  work without dataURI.
+ * Aug 15, 2013  2258     bsteffen  Convert profiler sounding to var height
+ *                                  with hodo.
+ * Aug 15, 2013  2260     bsteffen  Switch poessounding to NSharp.
+ * Jul 23, 2014  3410     bclement  location changed to floats
+ * Sep 09, 2014  3356     njensen   Remove CommunicationException
+ * Aug 03, 2015  3861     bsteffen  Move resource creation to ProductCreators
  * 
  * 
* @@ -182,12 +177,12 @@ public class PointDataCatalog extends AbstractInventoryDataCatalog { } } - protected SurfaceObsLocation getClosestStation(Coordinate coordinate, + public SurfaceObsLocation getClosestStation(Coordinate coordinate, String sourceKey) { return getClosestStation(coordinate, sourceKey, null); } - protected SurfaceObsLocation getClosestStation(Coordinate coordinate, + public SurfaceObsLocation getClosestStation(Coordinate coordinate, String sourceKey, Collection ignore) { SurfaceObsLocation[] availableStations = getStationLocations(sourceKey); if ((availableStations == null) || (availableStations.length == 0) @@ -253,12 +248,13 @@ public class PointDataCatalog extends AbstractInventoryDataCatalog { IDataCatalogEntry catalogEntry, HashMap productParameters, String constraintKey) { - if (!isPointLine(catalogEntry.getSelectedData().getPlanesKey()) + if (!PointLineUtil.isPointLine(catalogEntry.getSelectedData() + .getPlanesKey()) && (catalogEntry.getDialogSettings().getViewSelection() != ViewMenu.TIMESERIES)) { return; } if (catalogEntry.getSelectedData().getSourcesKey().endsWith("OA")) { - Coordinate current = getPointCoordinate(catalogEntry); + Coordinate current = PointLineUtil.getPointCoordinate(catalogEntry); double lon0 = current.x - 5; double lon1 = current.y + 5; double lat0 = current.y - 5; @@ -301,7 +297,8 @@ public class PointDataCatalog extends AbstractInventoryDataCatalog { } productParameters.put(constraintKey, stationRC); } else { - Coordinate coordinate = getPointCoordinate(catalogEntry); + Coordinate coordinate = PointLineUtil + .getPointCoordinate(catalogEntry); if (coordinate != null) { String sourceKey = catalogEntry.getSelectedData() @@ -406,108 +403,6 @@ public class PointDataCatalog extends AbstractInventoryDataCatalog { .getLevelMappingForKey("Station").getLevels(); } - @Override - protected AbstractRequestableResourceData getResourceData( - IDataCatalogEntry catalogEntry, ResourceType resourceType) { - String sourceKey = catalogEntry.getSelectedData().getSourcesKey(); - String sourceText = catalogEntry.getSelectedData().getSourcesText(); - - switch (resourceType) { - case PLAN_VIEW: - OAResourceData rscData = new OAResourceData(); - // TODO this should be configurable - if (sourceText.equals("RaobOA")) { - BinOffset binOffset = new BinOffset(3600, 3600); - rscData.setBinOffset(binOffset); - } else if (sourceText.equals("MetarOA")) { - BinOffset binOffset = new BinOffset(1800, 1800); - rscData.setBinOffset(binOffset); - } - rscData.setParameter(catalogEntry.getSelectedData().getFieldsKey()); - rscData.setParameterName(catalogEntry.getSelectedData() - .getFieldsText()); - rscData.setSource(sourceText); - String levelKey = catalogEntry.getSelectedData().getPlanesKey(); - rscData.setLevelKey(levelKey); - rscData.setRetrieveData(false); - rscData.setUpdatingOnMetadataOnly(true); - return rscData; - case TIME_SERIES: - AbstractRequestableResourceData resourceData = super - .getResourceData(catalogEntry, resourceType); - // TODO this should be configurable, and shared with PLAN_VIEW - if (sourceText.equals("RaobOA")) { - BinOffset binOffset = new BinOffset(3600, 3600); - resourceData.setBinOffset(binOffset); - } else if (sourceText.equals("MetarOA")) { - BinOffset binOffset = new BinOffset(1800, 1800); - resourceData.setBinOffset(binOffset); - } - return resourceData; - case TIME_HEIGHT: - resourceData = getResourceData(catalogEntry, resourceType, - new TimeHeightResourceData()); - - Coordinate coordinate = getPointCoordinate(catalogEntry); - SurfaceObsLocation closestLoc = getClosestStation(coordinate, - sourceKey); - Coordinate closestCoord = new Coordinate(closestLoc.getLongitude(), - closestLoc.getLatitude()); - ((TimeHeightResourceData) resourceData) - .setPointCoordinate(closestCoord); - - String pointLetter = getPointLetter(catalogEntry); - PointsDataManager.getInstance().setCoordinate(pointLetter, - closestCoord); - return resourceData; - case CROSS_SECTION: - resourceData = super.getResourceData(catalogEntry, resourceType); - List closest = new ArrayList(); - String letter = catalogEntry.getSelectedData().getPlanesKey() - .replace("Line", ""); - LineString line = ToolsDataManager.getInstance() - .getBaseline(letter); - Coordinate[] newLine = new Coordinate[line.getNumPoints()]; - for (int i = 0; i < line.getNumPoints(); i++) { - SurfaceObsLocation loc = getClosestStation( - line.getCoordinateN(i), sourceKey, closest); - if (loc == null) { - break; - } - closest.add(loc.getStationId()); - newLine[i] = new Coordinate(loc.getLongitude(), - loc.getLatitude()); - } - ToolsDataManager.getInstance().setBaseline(letter, - line.getFactory().createLineString(newLine)); - ((CrossSectionResourceData) resourceData).setStationIDs(closest); - return resourceData; - case SOUNDING: - if (getPlugin(sourceKey).equals("bufrua")) { - return new BufruaNSharpResourceData(); - } else if (sourceKey.equals("modelsoundingETA")) { - return new MdlSndNSharpResourceData("NAMSND"); - } else if (sourceKey.equals("modelsoundingGFS")) { - return new MdlSndNSharpResourceData("GFSSND"); - } else if (sourceKey.equals("poessounding")) { - return new PoesSndNSharpResourceData(); - } else if (sourceKey.equals("goessounding")) { - return new GoesSndNSharpResourceData(); - } else if (sourceKey.equals("profiler")) { - VarHeightResourceData vhData = new VarHeightResourceData(); - vhData.setPoint(getPointCoordinate(catalogEntry)); - vhData.setParameter("Wind"); - vhData.setParameterName("Wind"); - vhData.setPointLetter(getPointLetter(catalogEntry)); - vhData.setSource(sourceText); - return vhData; - } - default: - return super.getResourceData(catalogEntry, resourceType); - } - - } - @Override protected boolean isValidSelection(SelectedData selData) { try { @@ -619,7 +514,7 @@ public class PointDataCatalog extends AbstractInventoryDataCatalog { || (viewSelection == ViewMenu.PLANVIEW) || (viewSelection == ViewMenu.TIMESERIES)) { Set results = new HashSet(); - results.addAll(getPointLineKeys()); + results.addAll(PointLineUtil.getPointLineKeys()); return results; } ToolsDataManager tdm = ToolsDataManager.getInstance(); diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointTimeHeightProductCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointTimeHeightProductCreator.java new file mode 100644 index 0000000000..c610f851e3 --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/PointTimeHeightProductCreator.java @@ -0,0 +1,76 @@ +/** + * 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.volumebrowser.dataplugin.point; + +import com.raytheon.uf.common.pointdata.spatial.SurfaceObsLocation; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.points.PointsDataManager; +import com.raytheon.uf.viz.xy.timeheight.display.TimeHeightRenderableDisplay; +import com.raytheon.uf.viz.xy.timeheight.rsc.TimeHeightResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; +import com.raytheon.viz.volumebrowser.loader.TimeHeightProductCreator; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; +import com.vividsolutions.jts.geom.Coordinate; + +/** + * + * {@link ProductCreator} for loading point data on a + * {@link TimeHeightRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class PointTimeHeightProductCreator extends TimeHeightProductCreator { + + @Override + protected TimeHeightResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + TimeHeightResourceData resourceData = super.createNewResourceData( + dataCatalog, catalogEntry, displayType); + if (!(dataCatalog instanceof PointDataCatalog)) { + return resourceData; + } + PointDataCatalog pointCatalog = (PointDataCatalog) dataCatalog; + String sourceKey = catalogEntry.getSelectedData().getSourcesKey(); + Coordinate coordinate = PointLineUtil.getPointCoordinate(catalogEntry); + SurfaceObsLocation closestLoc = pointCatalog.getClosestStation( + coordinate, sourceKey); + Coordinate closestCoord = new Coordinate(closestLoc.getLongitude(), + closestLoc.getLatitude()); + resourceData.setPointCoordinate(closestCoord); + + String pointLetter = PointLineUtil.getPointLetter(catalogEntry); + PointsDataManager.getInstance() + .setCoordinate(pointLetter, closestCoord); + return resourceData; + } + +} diff --git a/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/VwpCrossSectionCreator.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/VwpCrossSectionCreator.java new file mode 100644 index 0000000000..402e2ff932 --- /dev/null +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/VwpCrossSectionCreator.java @@ -0,0 +1,58 @@ +/** + * 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.volumebrowser.dataplugin.point; + +import com.raytheon.uf.common.time.BinOffset; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.xy.crosssection.display.CrossSectionRenderableDisplay; +import com.raytheon.uf.viz.xy.crosssection.rsc.CrossSectionResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.loader.ProductCreator; + +/** + * + * {@link ProductCreator} for loading vwp data on a + * {@link CrossSectionRenderableDisplay}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class VwpCrossSectionCreator extends PointCrossSectionProductCreator { + + @Override + protected CrossSectionResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + CrossSectionResourceData data = super + .createNewResourceData(dataCatalog, catalogEntry, displayType); + data.setBinOffset(new BinOffset(120, 120)); + return data; + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/VwpDataCatalog.java b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/VwpDataCatalog.java similarity index 68% rename from cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/VwpDataCatalog.java rename to cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/VwpDataCatalog.java index 8b4f338104..a8fb7e963c 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/VwpDataCatalog.java +++ b/cave/com.raytheon.uf.viz.volumebrowser.dataplugin/src/com/raytheon/uf/viz/volumebrowser/dataplugin/point/VwpDataCatalog.java @@ -17,31 +17,30 @@ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ -package com.raytheon.viz.volumebrowser.datacatalog; +package com.raytheon.uf.viz.volumebrowser.dataplugin.point; import java.util.HashMap; import java.util.List; import com.raytheon.uf.common.dataquery.requests.RequestConstraint; import com.raytheon.uf.common.pointdata.spatial.SurfaceObsLocation; -import com.raytheon.uf.common.time.BinOffset; import com.raytheon.uf.viz.core.catalog.DbQuery; import com.raytheon.uf.viz.core.exception.VizException; -import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; -import com.raytheon.uf.viz.core.rsc.ResourceType; -import com.raytheon.uf.viz.xy.varheight.rsc.VarHeightResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; /** * - * Catalog for radar point data(VWP, DMD). + * Catalog for radar VWP data. * *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Dec 1, 2009            bsteffen     Initial creation
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Dec 01, 2009           bsteffen  Initial creation
+ * Aug 03, 2015  3861     bsteffen  Move resource creation to ProductCreators
+ * 
  * 
  * 
* @@ -92,29 +91,5 @@ public class VwpDataCatalog extends PointDataCatalog { productParameters.put("productCode", new RequestConstraint("48")); } - protected AbstractRequestableResourceData getResourceData( - IDataCatalogEntry catalogEntry, ResourceType resourceType) { - - AbstractRequestableResourceData resourceData = super.getResourceData( - catalogEntry, resourceType); - ; - - switch (resourceType) { - - case CROSS_SECTION: - resourceData.setBinOffset(new BinOffset(120, 120)); - break; - case SOUNDING: - VarHeightResourceData vhData = new VarHeightResourceData(); - vhData.setPoint(getPointCoordinate(catalogEntry)); - vhData.setParameter("Wind"); - vhData.setParameterName("Wind"); - vhData.setPointLetter(getPointLetter(catalogEntry)); - vhData.setSource(catalogEntry.getSelectedData().getSourcesText()); - resourceData = vhData; - break; - } - return resourceData; - } } diff --git a/cave/com.raytheon.viz.volumebrowser.feature/feature.xml b/cave/com.raytheon.viz.volumebrowser.feature/feature.xml index 59af733309..d9a994b800 100644 --- a/cave/com.raytheon.viz.volumebrowser.feature/feature.xml +++ b/cave/com.raytheon.viz.volumebrowser.feature/feature.xml @@ -38,4 +38,11 @@ install-size="0" version="0.0.0"/> + + diff --git a/cave/com.raytheon.viz.volumebrowser/META-INF/MANIFEST.MF b/cave/com.raytheon.viz.volumebrowser/META-INF/MANIFEST.MF index 0ed6298526..8b6561ff46 100644 --- a/cave/com.raytheon.viz.volumebrowser/META-INF/MANIFEST.MF +++ b/cave/com.raytheon.viz.volumebrowser/META-INF/MANIFEST.MF @@ -2,12 +2,11 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Volume Browser Plug-in Bundle-SymbolicName: com.raytheon.viz.volumebrowser;singleton:=true -Bundle-Version: 1.13.0.qualifier +Bundle-Version: 1.15.0.qualifier Bundle-Vendor: Raytheon Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy -Require-Bundle: org.eclipse.ui, - org.eclipse.core.runtime, +Require-Bundle: org.eclipse.core.runtime, net.sf.swtaddons, com.raytheon.uf.viz.core, com.raytheon.viz.ui, @@ -27,20 +26,14 @@ Require-Bundle: org.eclipse.ui, com.raytheon.uf.viz.xy.timeheight, com.raytheon.uf.viz.xy.varheight, com.raytheon.uf.viz.xy.timeseries, - com.raytheon.uf.viz.d2d.nsharp, - gov.noaa.nws.ncep.ui.nsharp, com.raytheon.uf.common.dataplugin, com.raytheon.viz.grid, - com.raytheon.uf.common.dataplugin.grid, - com.raytheon.uf.viz.objectiveanalysis, - com.raytheon.viz.pointdata, - com.raytheon.uf.common.pointdata, - com.raytheon.uf.common.comm, - com.raytheon.uf.common.derivparam;bundle-version="1.14.0", com.raytheon.uf.viz.datacube, com.raytheon.uf.viz.core.grid;bundle-version="1.15.0" Export-Package: com.raytheon.viz.volumebrowser, com.raytheon.viz.volumebrowser.datacatalog, + com.raytheon.viz.volumebrowser.loader, + com.raytheon.viz.volumebrowser.util, com.raytheon.viz.volumebrowser.vbui, com.raytheon.viz.volumebrowser.xml Import-Package: com.raytheon.uf.common.inventory.exception, diff --git a/cave/com.raytheon.viz.volumebrowser/build.properties b/cave/com.raytheon.viz.volumebrowser/build.properties index bb2be12e64..c1d5d29e87 100644 --- a/cave/com.raytheon.viz.volumebrowser/build.properties +++ b/cave/com.raytheon.viz.volumebrowser/build.properties @@ -2,5 +2,6 @@ output.com.raytheon.viz.volumebrowser.jar = bin/ bin.includes = META-INF/,\ plugin.xml,\ localization/,\ - com.raytheon.viz.volumebrowser.jar + com.raytheon.viz.volumebrowser.jar,\ + schema/ source.com.raytheon.viz.volumebrowser.jar = src/ diff --git a/cave/com.raytheon.viz.volumebrowser/plugin.xml b/cave/com.raytheon.viz.volumebrowser/plugin.xml index bc0375d068..35c066a194 100644 --- a/cave/com.raytheon.viz.volumebrowser/plugin.xml +++ b/cave/com.raytheon.viz.volumebrowser/plugin.xml @@ -20,6 +20,8 @@ --> + + + + + + + + + + Provides a way for plugins to register a data catalog with the volume browser so that new datatypes may be laoded. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.15.0 + + + + + + + + diff --git a/cave/com.raytheon.viz.volumebrowser/schema/com.raytheon.viz.volumebrowser.productcreator.exsd b/cave/com.raytheon.viz.volumebrowser/schema/com.raytheon.viz.volumebrowser.productcreator.exsd new file mode 100644 index 0000000000..1d78df2fe5 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/schema/com.raytheon.viz.volumebrowser.productcreator.exsd @@ -0,0 +1,92 @@ + + + + + + + + + Provides a way for plugins to register a product creator with the volume browser so that new datatypes may be laoded. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.15.0 + + + + + + + + diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/GridAlterBundleContributor.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/GridAlterBundleContributor.java index ee74ac29f8..08b9002136 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/GridAlterBundleContributor.java +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/GridAlterBundleContributor.java @@ -35,8 +35,6 @@ import com.raytheon.uf.viz.core.procedures.Bundle; import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; import com.raytheon.uf.viz.core.rsc.AbstractResourceData; import com.raytheon.uf.viz.core.rsc.ResourceList; -import com.raytheon.uf.viz.d2d.nsharp.rsc.D2DNSharpResourceData; -import com.raytheon.uf.viz.d2d.nsharp.rsc.GribNSharpResourceData; import com.raytheon.uf.viz.xy.crosssection.rsc.CrossSectionResourceData; import com.raytheon.uf.viz.xy.timeseries.rsc.TimeSeriesResourceData; import com.raytheon.uf.viz.xy.varheight.rsc.VarHeightResourceData; @@ -50,14 +48,16 @@ import com.raytheon.viz.volumebrowser.xml.VbSourceList; *
  * 
  * SOFTWARE HISTORY
- * Date          Ticket#  Engineer    Description
- * ------------- -------- ----------- -----------------------------------------
- * Jan 04, 2010           mschenke    Initial creation
- * Oct 03, 2012  1248     rferrel     Change to use adapter.
- * Dec 11, 2013  2602     bsteffen    Remove dead catch block.
- * Aug 19, 2014  3506     mapeters    Modified getModelTitleToNameMap function 
- *                                    to still get correct VB sources after 
- *                                    splitting them into multiple files.
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- -----------------------------------------
+ * Jan 04, 2010           mschenke  Initial creation
+ * Oct 03, 2012  1248     rferrel   Change to use adapter.
+ * Dec 11, 2013  2602     bsteffen  Remove dead catch block.
+ * Aug 19, 2014  3506     mapeters  Modified getModelTitleToNameMap function 
+ *                                  to still get correct VB sources after 
+ *                                  splitting them into multiple files.
+ * Aug 03, 2015  3861     bsteffen  Remove nsharp dependency.
+ * 
  * 
* * @author mschenke @@ -74,11 +74,9 @@ public class GridAlterBundleContributor extends AlterBundleContributorAdapter { if (modelTitleToNameMap == null) { modelTitleToNameMap = new HashMap(); - for (VbSource source : VbSourceList.getInstance() - .getAllSources()) { + for (VbSource source : VbSourceList.getInstance().getAllSources()) { if (!source.getRemove()) { - modelTitleToNameMap.put(source.getName(), - source.getKey()); + modelTitleToNameMap.put(source.getName(), source.getKey()); } } } @@ -114,8 +112,6 @@ public class GridAlterBundleContributor extends AlterBundleContributorAdapter { } else if (data instanceof TimeSeriesResourceData) { ((TimeSeriesResourceData) data).setSource(lookup.getInfo( selectedString).getTitle()); - } else if (data instanceof GribNSharpResourceData) { - ((D2DNSharpResourceData) data).setSoundingType(selectedString); } else if (data instanceof CrossSectionResourceData) { ((CrossSectionResourceData) data).setSource(lookup.getInfo( selectedString).getTitle()); diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/AbstractDataCatalog.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/AbstractDataCatalog.java index fd0730996f..f139e8641d 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/AbstractDataCatalog.java +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/AbstractDataCatalog.java @@ -24,10 +24,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import java.util.regex.Pattern; import com.raytheon.uf.common.dataplugin.grid.util.GridLevelTranslator; import com.raytheon.uf.common.dataplugin.level.Level; @@ -43,23 +40,9 @@ import com.raytheon.uf.common.style.ParamLevelMatchCriteria; import com.raytheon.uf.common.style.StyleException; import com.raytheon.uf.common.style.StyleManager; import com.raytheon.uf.common.style.StyleRule; -import com.raytheon.uf.viz.core.drawables.ResourcePair; -import com.raytheon.uf.viz.core.grid.rsc.GridLoadProperties; -import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; import com.raytheon.uf.viz.core.rsc.DisplayType; -import com.raytheon.uf.viz.core.rsc.LoadProperties; -import com.raytheon.uf.viz.core.rsc.ResourceProperties; -import com.raytheon.uf.viz.core.rsc.ResourceType; -import com.raytheon.uf.viz.points.PointsDataManager; -import com.raytheon.uf.viz.xy.crosssection.rsc.CrossSectionResourceData; -import com.raytheon.uf.viz.xy.timeheight.rsc.TimeHeightResourceData; -import com.raytheon.uf.viz.xy.timeseries.rsc.TimeSeriesResourceData; -import com.raytheon.uf.viz.xy.timeseries.rsc.TimeSeriesResourceData.AxisParameter; -import com.raytheon.uf.viz.xy.varheight.rsc.VarHeightResourceData; -import com.raytheon.viz.awipstools.ToolsDataManager; import com.raytheon.viz.core.graphing.util.GraphPrefsFactory; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; -import com.vividsolutions.jts.geom.Coordinate; /** * Abstract data catalog implementation for shared functionality between data @@ -68,22 +51,23 @@ import com.vividsolutions.jts.geom.Coordinate; *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Oct 06, 2009 2987       jelkins     Initial creation
- * Oct 21, 2009 1711       bsteffen    Updated Baseline and Points to use new
- *                                     ToolsDataManager
- * Jan 30, 2012 14308      D.Friedman  Use correct style for arrow types.
- * Jul 31, 2012 875        rferrel     Now uses points.
- * Feb 21, 2013 1617       bsteffen    fixed vb sounding point selection for
- *                                     points which contain the word Point
- * May 03, 2013 DR14824 mgamazaychikov Added alterProductParameters method
- * Aug 20, 2013 2259       bsteffen    Delete old skewt plugin.
- * Sep 06, 2013 2251       mnash       Move graph prefs style type to
- *                                      graph plugin
- * Jan 30, 2014  #2725     ekladstrup  updated exception handling during move of derived
- *                                     parameters to common
- * Sep 09, 2014  3356      njensen     Remove CommunicationException
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- -------------------------------------------
+ * Oct 06, 2009  2987     jelkins   Initial creation
+ * Oct 21, 2009  1711     bsteffen  Updated Baseline and Points to use new
+ *                                  ToolsDataManager
+ * Jan 30, 2012  14308    dfriedma  Use correct style for arrow types.
+ * Jul 31, 2012  875      rferrel   Now uses points.
+ * Feb 21, 2013  1617     bsteffen  fixed vb sounding point selection for
+ *                                  points which contain the word Point
+ * May 03, 2013  14824    mgamazay  Added alterProductParameters method
+ * Aug 20, 2013  2259     bsteffen  Delete old skewt plugin.
+ * Sep 06, 2013  2251     mnash     Move graph prefs style type to graph plugin
+ * Jan 30, 2014  2725     ekladstr  updated exception handling during move of
+ *                                  derived parameters to common
+ * Sep 09, 2014  3356     njensen   Remove CommunicationException
+ * Aug 03, 2015  3861     bsteffen  Extract point/line methods to PointLineUtil
+ *                                  Move resource creation to ProductCreators
  * 
  * 
* @@ -95,14 +79,6 @@ public abstract class AbstractDataCatalog implements IDataCatalog { private static final transient IUFStatusHandler statusHandler = UFStatus .getHandler(AbstractDataCatalog.class); - /** key representing all latitude and longitude planes **/ - public static final String LAT_LON_KEY = "LatLon"; - - /** key representing all point and line planes **/ - public static final String POINT_LINE_KEY = "PointLine"; - - public static final Pattern POINT_PATTERN = Pattern.compile("^Point"); - /** * * @return a list of plugin Names used for the given setting @@ -117,175 +93,6 @@ public abstract class AbstractDataCatalog implements IDataCatalog { return getPlugins(null)[0]; } - @Override - public Collection getResourcesToLoad( - IDataCatalogEntry catalogEntry, ResourceType resourceType, - DisplayType displayType) { - - ResourcePair jobRequest = new ResourcePair(); - - AbstractRequestableResourceData resourceData = getResourceData( - catalogEntry, resourceType); - - resourceData.setMetadataMap(getProductParameters(catalogEntry)); - - LoadProperties loadProperties; - loadProperties = getLoadProperties(catalogEntry, resourceType, - displayType); - loadProperties.setResourceType(resourceType); - - jobRequest.setResourceData(resourceData); - jobRequest.setLoadProperties(loadProperties); - jobRequest.setProperties(new ResourceProperties()); - - return Arrays.asList(jobRequest); - } - - /** - * - * @param catalogEntry - * @param resourceType - * @param inputResourceData - * @return - */ - protected AbstractRequestableResourceData getResourceData( - IDataCatalogEntry catalogEntry, ResourceType resourceType, - AbstractRequestableResourceData inputResourceData) { - - AbstractRequestableResourceData resourceData; - - switch (resourceType) { - - case CROSS_SECTION: - CrossSectionResourceData csData = (CrossSectionResourceData) inputResourceData; - csData.setParameter(catalogEntry.getSelectedData().getFieldsKey()); - csData.setParameterName(catalogEntry.getSelectedData() - .getFieldsText()); - csData.setSource(catalogEntry.getSelectedData().getSourcesText()); - resourceData = csData; - break; - case VAR_HEIGHT: - VarHeightResourceData vhData = (VarHeightResourceData) inputResourceData; - vhData.setPoint(getPointCoordinate(catalogEntry)); - vhData.setParameter(catalogEntry.getSelectedData().getFieldsKey()); - vhData.setParameterName(catalogEntry.getSelectedData() - .getFieldsText()); - vhData.setPointLetter(getPointLetter(catalogEntry)); - vhData.setSource(catalogEntry.getSelectedData().getSourcesText()); - resourceData = vhData; - break; - case TIME_SERIES: - TimeSeriesResourceData tsData = (TimeSeriesResourceData) inputResourceData; - tsData.setCoordinate(getPointCoordinate(catalogEntry)); - tsData.setPointLetter(getPointLetter(catalogEntry)); - tsData.setSource(catalogEntry.getSelectedData().getSourcesText()); - - AxisParameter yParameter = new AxisParameter(); - yParameter.code = catalogEntry.getSelectedData().getFieldsKey(); - yParameter.name = catalogEntry.getSelectedData().getFieldsText(); - - tsData.setYParameter(yParameter); - tsData.setLevelKey(catalogEntry.getSelectedData().getPlanesKey()); - resourceData = tsData; - break; - case TIME_HEIGHT: - TimeHeightResourceData thData = (TimeHeightResourceData) inputResourceData; - thData.setPoint(getPointCoordinate(catalogEntry)); - thData.setParameter(catalogEntry.getSelectedData().getFieldsKey()); - thData.setParameterName(catalogEntry.getSelectedData() - .getFieldsText()); - thData.setPointLetter(getPointLetter(catalogEntry)); - thData.setSource(catalogEntry.getSelectedData().getSourcesText()); - resourceData = thData; - break; - default: // PLAN_VIEW - resourceData = null; - break; - } - return resourceData; - } - - /** - * Get the resource data - * - * Override this method to provide an implementation for PLAN_VIEW if - * needed. - * - * @param catalogEntry - * @param resourceType - * @return the resource data for the given catalogEntry - */ - protected AbstractRequestableResourceData getResourceData( - IDataCatalogEntry catalogEntry, ResourceType resourceType) { - - AbstractRequestableResourceData resourceData; - - switch (resourceType) { - - case CROSS_SECTION: - resourceData = getResourceData(catalogEntry, resourceType, - new CrossSectionResourceData()); - break; - case VAR_HEIGHT: - resourceData = getResourceData(catalogEntry, resourceType, - new VarHeightResourceData()); - break; - case TIME_SERIES: - resourceData = getResourceData(catalogEntry, resourceType, - new TimeSeriesResourceData()); - break; - case TIME_HEIGHT: - resourceData = getResourceData(catalogEntry, resourceType, - new TimeHeightResourceData()); - break; - default: // PLAN_VIEW - resourceData = null; - break; - } - return resourceData; - } - - /** - * Obtain the point from the given catalog entry or from directly from the - * volume browser if in time series. - * - * @param catalogEntry - * the catalogEntry for which to obtain a point - * @return the coordinates belonging to the point. Null if there is no point - * associated with this catalog Entry. - */ - protected Coordinate getPointCoordinate(IDataCatalogEntry catalogEntry) { - - String pointLetter = getPointLetter(catalogEntry); - - Coordinate c = PointsDataManager.getInstance().getCoordinate( - pointLetter); - if (c == null) { - c = PointsDataManager.getInstance().getCoordinate("A"); - } - return c; - - } - - protected String getPointLetter(IDataCatalogEntry catalogEntry) { - String pointLetter = null; - switch (catalogEntry.getDialogSettings().getViewSelection()) { - case TIMEHEIGHT: - case VARVSHGT: - case CROSSSECTION: - case SOUNDING: - pointLetter = POINT_PATTERN.matcher( - catalogEntry.getSelectedData().getPlanesKey()) - .replaceFirst(""); - break; - case TIMESERIES: - pointLetter = catalogEntry.getDialogSettings().getPointsSelection() - .getName(); - break; - } - return pointLetter; - } - /* * (non-Javadoc) * @@ -443,51 +250,6 @@ public abstract class AbstractDataCatalog implements IDataCatalog { IDataCatalogEntry catalogEntry, HashMap productParameters); - /** - * - * @param dataCatalogEntry - * @param resourceType - * @param displayType - * @return the load properties to use, override this method if needed - */ - protected LoadProperties getLoadProperties( - IDataCatalogEntry dataCatalogEntry, ResourceType resourceType, - DisplayType displayType) { - - // we should really add the displayType attribute to LoadProperties - return new GridLoadProperties(displayType); - } - - public static Set getPointLineKeys() { - Set keySet = new HashSet(); - for (String letter : PointsDataManager.getInstance().getPointNames()) { - keySet.add("Point" + letter); - } - for (String letter : ToolsDataManager.getInstance().getBaselineNames()) { - keySet.add("Line" + letter); - } - return keySet; - } - - /** - * @param plane - * @return true if the given plane is a line or point - */ - protected boolean isLineOrPoint(String plane) { - return (isLatLon(plane) || isPointLine(plane)); - } - - protected boolean isLatLon(String plane) { - return ((plane != null) && (plane.startsWith("Lat") - || plane.startsWith("Lon") || plane.equals("LATS") || plane - .equals("LONS"))); - } - - protected boolean isPointLine(String plane) { - return ((plane != null) && (plane.startsWith("Line") || plane - .startsWith("Point"))); - } - /** * Alter product parameters * diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/DataCatalogManager.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/DataCatalogManager.java index ca0b08de36..778fa325b1 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/DataCatalogManager.java +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/DataCatalogManager.java @@ -22,8 +22,14 @@ package com.raytheon.viz.volumebrowser.datacatalog; import java.util.ArrayList; import java.util.List; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.ui.progress.UIJob; @@ -42,11 +48,12 @@ import com.raytheon.viz.volumebrowser.vbui.VbUtil; *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * May 27, 2009 2161       lvenable    Initial creation
- * Aug 19, 2013 2269       bsteffen    Fix MDCRS data and switch acars to use
- *                                     nsharp.
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * May 27, 2009  2161     lvenable  Initial creation
+ * Aug 19, 2013  2269     bsteffen  Fix MDCRS data and switch acars to use
+ *                                  nsharp.
+ * Aug 03, 2015  3861     bsteffen  Load catalogs from extension point
  * 
  * 
* @@ -57,6 +64,8 @@ public class DataCatalogManager { private static final transient IUFStatusHandler statusHandler = UFStatus .getHandler(DataCatalogManager.class); + private static final String EXTENSION_POINT_ID = "com.raytheon.viz.volumebrowser.datacatalog"; + private static DataCatalogManager dataCatalogManager; /** @@ -96,7 +105,7 @@ public class DataCatalogManager { request.cancel(); } - }; + } private static class MenuUpdateJob extends UIJob { @@ -168,13 +177,33 @@ public class DataCatalogManager { * Volume Browser's product table. */ private DataCatalogManager() { - // TODO these should be read from an extension point. catalogs = new ArrayList(); - catalogs.add(new GridDataCatalog()); - catalogs.add(new DmdDataCatalog()); - catalogs.add(new PointDataCatalog()); - catalogs.add(new ModelSoundingCatalog()); - catalogs.add(new VwpDataCatalog()); + loadFromExtensionPoint(); + + } + + private void loadFromExtensionPoint() { + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint point = registry.getExtensionPoint(EXTENSION_POINT_ID); + IExtension[] extensions = point.getExtensions(); + + for (IExtension ext : extensions) { + IConfigurationElement[] config = ext.getConfigurationElements(); + + for (IConfigurationElement cfg : config) { + try { + IDataCatalog catalog = (IDataCatalog) cfg + .createExecutableExtension("catalogClass"); + catalogs.add(catalog); + + } catch (CoreException e) { + statusHandler + .handle(Priority.PROBLEM, + "Unable to load a Volume Browser data catalog, some products will not load.", + e); + } + } + } } public void addDataCatalog(IDataCatalog catalog) { diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/IDataCatalog.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/IDataCatalog.java index 9c62e3c539..0d7acfc496 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/IDataCatalog.java +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/datacatalog/IDataCatalog.java @@ -19,14 +19,11 @@ **/ package com.raytheon.viz.volumebrowser.datacatalog; -import java.util.Collection; import java.util.HashMap; import java.util.List; import com.raytheon.uf.common.dataquery.requests.RequestConstraint; -import com.raytheon.uf.viz.core.drawables.ResourcePair; import com.raytheon.uf.viz.core.rsc.DisplayType; -import com.raytheon.uf.viz.core.rsc.ResourceType; import com.raytheon.viz.volumebrowser.vbui.SelectedData; /** @@ -37,9 +34,10 @@ import com.raytheon.viz.volumebrowser.vbui.SelectedData; *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * May 27, 2009 #2161      lvenable     Initial creation
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * May 27, 2009  2161     lvenable  Initial creation
+ * Aug 03, 2015  3861     bsteffen  Move resource creation to ProductCreators
  * 
  * 
* @@ -90,22 +88,6 @@ public interface IDataCatalog { */ void getAvailableData(AvailableDataRequest request); - /** - * Get the Request object for a single catalog Entry - * - * @param catalogEntry - * the catalog entry for which to obtain a request - * @param resourceType - * the type of request - * @param displayType - * display an image, or contour, etc - * @return a request that can be used along with the editor returned from - * the getEditor() method to request a catalogEntry to be fetched, - * loaded, and displayed on the display. - */ - Collection getResourcesToLoad(IDataCatalogEntry catalogEntry, - ResourceType resourceType, DisplayType displayType); - /** * Get all possible sources for which this catalog can provide data * diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/AbstractMapProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/AbstractMapProductCreator.java new file mode 100644 index 0000000000..22ffe24451 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/AbstractMapProductCreator.java @@ -0,0 +1,84 @@ +/** + * 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.volumebrowser.loader; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.ui.IEditorPart; + +import com.raytheon.uf.viz.core.DescriptorMap; +import com.raytheon.uf.viz.core.exception.VizException; +import com.raytheon.uf.viz.core.grid.rsc.GridLoadProperties; +import com.raytheon.uf.viz.core.map.MapDescriptor; +import com.raytheon.uf.viz.core.maps.actions.NewMapEditor; +import com.raytheon.uf.viz.core.maps.display.MapRenderableDisplay; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.core.rsc.LoadProperties; +import com.raytheon.viz.ui.EditorUtil; +import com.raytheon.viz.ui.editor.AbstractEditor; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; + +/** + * + * Contains logic for creating a {@link MapRenderableDisplay} appropriate for + * the current perspective. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Extracted from ProductTableComp
+ * 
+ * 
+ * + * @author bsteffen + */ +public abstract class AbstractMapProductCreator extends AbstractProductCreator { + + @Override + protected MapRenderableDisplay createNewRenderableDisplay(VolumeBrowserDialogSettings dialogSettings, SelectedData selectedData) { + String editorId = DescriptorMap.getEditorId(MapDescriptor.class + .getName()); + + IEditorPart editorPart = EditorUtil.findEditor(editorId); + try { + if (editorPart == null) { + new NewMapEditor().execute(null); + editorPart = EditorUtil.findEditor(editorId); + } + AbstractEditor editor = (AbstractEditor) editorPart; + MapRenderableDisplay display = (MapRenderableDisplay) editor + .getActiveDisplayPane().getRenderableDisplay() + .createNewDisplay(); + display.setDescriptor(new MapDescriptor()); + return display; + } catch (ExecutionException | VizException e) { + throw new RuntimeException(e); + } + } + + @Override + protected LoadProperties createNewLoadProperties(DisplayType displayType) { + return new GridLoadProperties(displayType); + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/AbstractProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/AbstractProductCreator.java new file mode 100644 index 0000000000..e65e85bbf5 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/AbstractProductCreator.java @@ -0,0 +1,94 @@ +/** + * 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.volumebrowser.loader; + +import java.util.Arrays; +import java.util.Collection; + +import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay; +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.core.rsc.LoadProperties; +import com.raytheon.uf.viz.core.rsc.ResourceProperties; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; + +/** + * + * Base implementation of {@link ProductCreator} that breaks the creation into + * distinct tasks that can be easily implemented or overridden. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public abstract class AbstractProductCreator implements ProductCreator { + + @Override + public AbstractRenderableDisplay loadProduct(IDataCatalog dataCatalog, + IDataCatalogEntry catalogEntry, DisplayType displayType) { + AbstractRenderableDisplay display = createNewRenderableDisplay( + catalogEntry.getDialogSettings(), + catalogEntry.getSelectedData()); + Collection resources = getResourcesToLoad(dataCatalog, + catalogEntry, displayType); + display.getDescriptor().getResourceList().addAll(resources); + return display; + } + + protected Collection getResourcesToLoad( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + AbstractRequestableResourceData resourceData = createNewResourceData( + dataCatalog, catalogEntry, displayType); + resourceData.setMetadataMap(dataCatalog + .getProductParameters(catalogEntry)); + + ResourcePair pair = new ResourcePair(); + pair.setResourceData(resourceData); + pair.setLoadProperties(createNewLoadProperties(displayType)); + pair.setProperties(new ResourceProperties()); + return Arrays.asList(pair); + } + + protected LoadProperties createNewLoadProperties(DisplayType displayType) { + return new LoadProperties(); + } + + protected abstract AbstractRenderableDisplay createNewRenderableDisplay( + VolumeBrowserDialogSettings dialogSettings, + SelectedData selectedData); + + protected abstract AbstractRequestableResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType); + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/CrossSectionProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/CrossSectionProductCreator.java new file mode 100644 index 0000000000..7d1eff6a54 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/CrossSectionProductCreator.java @@ -0,0 +1,143 @@ +/** + * 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.volumebrowser.loader; + +import java.awt.Rectangle; +import java.util.Arrays; + +import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay; +import com.raytheon.uf.viz.core.grid.rsc.GridLoadProperties; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.core.rsc.LoadProperties; +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.rsc.CrossSectionResourceData; +import com.raytheon.viz.awipstools.ToolsDataManager; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.CrossSectionUtil; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.SpaceTimeMenu; +import com.raytheon.viz.volumebrowser.vbui.VbUtil; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; + +/** + * + * Creates a {@link CrossSectionRenderableDisplay} containing a + * {@link CrossSectionResourceData}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class CrossSectionProductCreator extends AbstractProductCreator { + + @Override + protected AbstractRenderableDisplay createNewRenderableDisplay( + VolumeBrowserDialogSettings dialogSettings, + SelectedData selectedData) { + CrossSectionRenderableDisplay display = new CrossSectionRenderableDisplay(); + CrossSectionDescriptor descriptor = display.getDescriptor(); + descriptor.setRenderableDisplay(display); + + SpaceTimeMenu currentSpaceTime = dialogSettings.getSpaceTimeSelection(); + String planesKey = selectedData.getPlanesKey(); + if (currentSpaceTime == SpaceTimeMenu.TIME) { + /* + * The Selected Plane in Time setting will be either a Baseline or a + * Lat/Lon Line + */ + Rectangle coverageRectangle = VbUtil.getMapCoverageRectangle(); + LineString line = null; + + if (planesKey.startsWith("Lon")) { + double x = Double.parseDouble(planesKey.substring(3)); + Coordinate start = new Coordinate(x, + coverageRectangle.getMaxY()); + Coordinate end = new Coordinate(x, coverageRectangle.getMinY()); + line = new GeometryFactory().createLineString(new Coordinate[] { + start, end }); + } else if (planesKey.startsWith("Lat")) { + double y = Double.parseDouble(planesKey.substring(3)); + Coordinate start = new Coordinate(coverageRectangle.getMinX(), + y); + Coordinate end = new Coordinate(coverageRectangle.getMaxX(), y); + line = new GeometryFactory().createLineString(new Coordinate[] { + start, end }); + + } else if (planesKey.startsWith("Line")) { + ToolsDataManager dataManager = ToolsDataManager.getInstance(); + line = dataManager.getBaseline(planesKey.substring(4)); + /* default to Baseline A if all else fails */ + if (line == null) { + line = dataManager.getBaseline("A"); + } + } else { + throw new RuntimeException("Invalid line has been selected: " + + planesKey); + } + + /* set the line at which the results are displayed */ + descriptor.setLines(Arrays.asList(line)); + descriptor.setLineID(selectedData.getPlanesText()); + } else if (currentSpaceTime == SpaceTimeMenu.SPACE) { + System.out + .println("Loading a Cross Section Space Resource from the Volume Browser."); + if (planesKey.equals("LATS")) { + descriptor.setLines(CrossSectionUtil.getAllLats()); + descriptor.setLineID("AllLAT"); + } else if (planesKey.equals("LONS")) { + descriptor.setLines(CrossSectionUtil.getAllLons()); + descriptor.setLineID("AllLON"); + } + } + descriptor.setHeightScale(dialogSettings.getHeightScaleSelection()); + return display; + } + + @Override + protected CrossSectionResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, + DisplayType displayType) { + SelectedData selectedData = catalogEntry.getSelectedData(); + CrossSectionResourceData resourceData = new CrossSectionResourceData(); + resourceData.setParameter(selectedData.getFieldsKey()); + resourceData.setParameterName(selectedData.getFieldsText()); + resourceData.setSource(selectedData.getSourcesText()); + return resourceData; + } + + @Override + protected LoadProperties createNewLoadProperties(DisplayType displayType) { + return new GridLoadProperties(displayType); + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductCreator.java new file mode 100644 index 0000000000..5faea18762 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductCreator.java @@ -0,0 +1,49 @@ +/** + * 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.volumebrowser.loader; + +import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; + +/** + * + * Interface for classes which know how to load a specific product from the + * volume browser. Instances of this class should be registered with the + * {@link ProductCreatorManager} so they will be used to create products. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public interface ProductCreator { + + public AbstractRenderableDisplay loadProduct(IDataCatalog dataCatalog, + IDataCatalogEntry catalogEntry, DisplayType displayType); +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductCreatorManager.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductCreatorManager.java new file mode 100644 index 0000000000..4eadf40209 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductCreatorManager.java @@ -0,0 +1,167 @@ +/** + * 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.volumebrowser.loader; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.Platform; + +import com.raytheon.uf.common.status.IUFStatusHandler; +import com.raytheon.uf.common.status.UFStatus; +import com.raytheon.uf.common.status.UFStatus.Priority; + +/** + * + * Class for managing registered {@link ProductCreator}s. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class ProductCreatorManager { + + private static final transient IUFStatusHandler statusHandler = UFStatus + .getHandler(ProductCreatorManager.class); + + private static final String EXTENSION_POINT_ID = "com.raytheon.viz.volumebrowser.productcreator"; + + private static final ProductCreatorManager instance = new ProductCreatorManager(); + + private final Map creators = new HashMap<>(); + + private ProductCreatorManager() { + loadFromExtensionPoint(); + } + + private void loadFromExtensionPoint() { + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint point = registry.getExtensionPoint(EXTENSION_POINT_ID); + IExtension[] extensions = point.getExtensions(); + + for (IExtension ext : extensions) { + IConfigurationElement[] config = ext.getConfigurationElements(); + + for (IConfigurationElement cfg : config) { + String resourceType = cfg.getAttribute("resourceType"); + String plugins = cfg.getAttribute("plugins"); + try { + ProductCreator creator = (ProductCreator) cfg + .createExecutableExtension("creatorClass"); + for (String plugin : plugins.split(",")) { + addCreator(plugin, resourceType, creator); + } + } catch (CoreException e) { + statusHandler + .handle(Priority.PROBLEM, + "Unable to load a Volume Browser product creator, some products will not load.", + e); + } + } + } + } + + public void addCreator(String pluginName, String resourceType, + ProductCreator creator) { + Key key = new Key(pluginName, resourceType); + synchronized (creators) { + creators.put(key, creator); + } + } + + public ProductCreator getCreator(String pluginName, String resourceType) { + Key key = new Key(pluginName, resourceType); + synchronized (creators) { + return creators.get(key); + } + } + + public static ProductCreatorManager getInstance() { + return instance; + } + + private static class Key { + + public final String pluginName; + + public final String resourceType; + + private final int hashCode; + + public Key(String pluginName, String resourceType) { + this.pluginName = pluginName; + this.resourceType = resourceType; + + int prime = 31; + int hashCode = 1; + hashCode = prime * hashCode + + ((pluginName == null) ? 0 : pluginName.hashCode()); + hashCode = prime * hashCode + + ((resourceType == null) ? 0 : resourceType.hashCode()); + this.hashCode = hashCode; + } + + @Override + public int hashCode() { + return hashCode; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Key other = (Key) obj; + if (pluginName == null) { + if (other.pluginName != null) + return false; + } else if (!pluginName.equals(other.pluginName)) + return false; + if (resourceType == null) { + if (other.resourceType != null) + return false; + } else if (!resourceType.equals(other.resourceType)) + return false; + return true; + } + + @Override + public String toString() { + return "Key [pluginName=" + pluginName + ", resourceType=" + + resourceType + "]"; + } + } +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductLoader.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductLoader.java new file mode 100644 index 0000000000..8072739f15 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/ProductLoader.java @@ -0,0 +1,198 @@ +/** + * 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.volumebrowser.loader; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.ui.IEditorPart; + +import com.raytheon.uf.common.dataplugin.PluginDataObject; +import com.raytheon.uf.common.dataquery.requests.RequestConstraint; +import com.raytheon.uf.viz.core.DescriptorMap; +import com.raytheon.uf.viz.core.IDisplayPane; +import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay; +import com.raytheon.uf.viz.core.drawables.ResourcePair; +import com.raytheon.uf.viz.core.procedures.Bundle; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.core.rsc.ResourceType; +import com.raytheon.viz.core.rsc.ICombinedResourceData; +import com.raytheon.viz.core.rsc.ICombinedResourceData.CombineOperation; +import com.raytheon.viz.ui.BundleProductLoader; +import com.raytheon.viz.ui.EditorUtil; +import com.raytheon.viz.ui.UiUtil; +import com.raytheon.viz.ui.editor.AbstractEditor; +import com.raytheon.viz.ui.editor.IMultiPaneEditor; +import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogManager; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.vbui.ProductTableComp; + +/** + * + * This class can be used to accumulate multiple products from the + * {@link ProductTableComp} for loading. Each product is added using + * {@link #addProduct(IDataCatalogEntry, DisplayType)} and when all products + * have beens elected then they can be loaded with either {@link #load()} or + * {@link #loadDifference()}. Instances of this class are not intended for + * reuse. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class ProductLoader { + + private List displaysToLoad = new ArrayList<>(); + + public void addProduct(IDataCatalogEntry catalogEntry, + DisplayType displayType) { + IDataCatalog catalog = DataCatalogManager.getDataCatalogManager() + .getDataCatalog(catalogEntry.getSelectedData()); + ResourceType resourceType = catalogEntry.getDialogSettings() + .getViewSelection().getResourceType(); + HashMap metadataMap = catalog + .getProductParameters(catalogEntry); + String pluginName = metadataMap.get(PluginDataObject.PLUGIN_NAME_ID) + .getConstraintValue(); + ProductCreator loader = ProductCreatorManager.getInstance().getCreator( + pluginName, resourceType.toString().toLowerCase()); + if (loader == null) { + throw new RuntimeException("Unable to load product for plugin " + + pluginName + " of type " + resourceType); + } + AbstractRenderableDisplay display = loader.loadProduct(catalog, + catalogEntry, displayType); + if (display != null) { + displaysToLoad.add(display); + } + } + + public void loadDifference() { + if (displaysToLoad.size() < 2) { + throw new RuntimeException( + "Not enough resources selected to difference"); + } else if (displaysToLoad.size() > 2) { + throw new RuntimeException( + "Too many resources selected to difference"); + } + AbstractRenderableDisplay display1 = displaysToLoad.get(0); + AbstractRenderableDisplay display2 = displaysToLoad.get(1); + displaysToLoad.clear(); + if (!display1.getDescriptor().isCompatible(display2.getDescriptor())) { + throw new RuntimeException( + "Difference failed because of incompatible resources."); + } + Iterator it1 = display1.getDescriptor().getResourceList() + .iterator(); + Iterator it2 = display2.getDescriptor().getResourceList() + .iterator(); + while (it1.hasNext() && it2.hasNext()) { + ResourcePair pair1 = it1.next(); + ResourcePair pair2 = it2.next(); + if (pair1.getResourceData() instanceof ICombinedResourceData) { + ICombinedResourceData first = (ICombinedResourceData) pair1 + .getResourceData(); + first.setSecondaryData(pair2.getResourceData()); + first.setCombineOperation(CombineOperation.DIFFERENCE); + } + } + System.out + .println("Loading a Difference Product from the Volume Browser."); + load(display1); + } + + public void load() { + if (displaysToLoad.isEmpty()) { + return; + } + while (!displaysToLoad.isEmpty()) { + AbstractRenderableDisplay display = displaysToLoad.get(0); + displaysToLoad.remove(0); + Iterator it = displaysToLoad.iterator(); + while (it.hasNext()) { + AbstractRenderableDisplay next = it.next(); + if (display.getDescriptor().isCompatible(next.getDescriptor())) { + display.getDescriptor().getResourceList() + .addAll(next.getDescriptor().getResourceList()); + it.remove(); + } + } + load(display); + } + } + + protected void load(AbstractRenderableDisplay display) { + String editorId = DescriptorMap.getEditorId(display.getDescriptor() + .getClass().getName()); + + IEditorPart activeEditor = EditorUtil.getActiveEditor(); + AbstractEditor editor = UiUtil.createOrOpenEditor(editorId, + display.cloneDisplay()); + + if (editor != null) { + if (activeEditor != null && editor != activeEditor + && activeEditor instanceof IMultiPaneEditor + && editor instanceof IMultiPaneEditor) { + IMultiPaneEditor activeMpe = (IMultiPaneEditor) activeEditor; + IMultiPaneEditor mpe = (IMultiPaneEditor) editor; + + if (mpe.getNumberofPanes() < activeMpe.getNumberofPanes()) { + for (int i = mpe.getNumberofPanes(); i < activeMpe + .getNumberofPanes(); ++i) { + mpe.addPane(display.createNewDisplay()); + } + + IDisplayPane selectedPane = activeMpe + .getSelectedPane(IMultiPaneEditor.LOAD_ACTION); + if (selectedPane != null) { + IDisplayPane[] allPanes = activeMpe.getDisplayPanes(); + for (int i = 0; i < allPanes.length; ++i) { + if (selectedPane == allPanes[i]) { + IDisplayPane newSelectedPane = mpe + .getDisplayPanes()[i]; + mpe.setSelectedPane( + IMultiPaneEditor.LOAD_ACTION, + newSelectedPane); + break; + } + } + } + } + } + Bundle b = new Bundle(); + b.setDisplays(new AbstractRenderableDisplay[] { display }); + Job j = new BundleProductLoader(editor, b); + j.schedule(); + } + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/TimeHeightProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/TimeHeightProductCreator.java new file mode 100644 index 0000000000..28e0b3f4ee --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/TimeHeightProductCreator.java @@ -0,0 +1,91 @@ +/** + * 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.volumebrowser.loader; + +import com.raytheon.uf.viz.core.grid.rsc.GridLoadProperties; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.core.rsc.LoadProperties; +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.rsc.TimeHeightResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.LeftRightMenu; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; + +/** + * + * Creates a {@link TimeHeightRenderableDisplay} containing a + * {@link TimeHeightResourceData}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class TimeHeightProductCreator extends AbstractProductCreator { + + @Override + protected TimeHeightRenderableDisplay createNewRenderableDisplay( + VolumeBrowserDialogSettings dialogSettings, + SelectedData selectedData) { + TimeHeightRenderableDisplay display = new TimeHeightRenderableDisplay(); + TimeHeightDescriptor descriptor = display.getDescriptor(); + descriptor.setRenderableDisplay(display); + descriptor.setHeightScale(dialogSettings.getHeightScaleSelection()); + LeftRightMenu leftRightMenu = dialogSettings + .getTimeDirectionSelection(); + if (leftRightMenu == LeftRightMenu.LEFT) { + descriptor.setTimeDirection(TimeDirection.RIGHT_TO_LEFT); + } else { + descriptor.setTimeDirection(TimeDirection.LEFT_TO_RIGHT); + } + return display; + } + + @Override + protected TimeHeightResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + SelectedData selectedData = catalogEntry.getSelectedData(); + TimeHeightResourceData resourceData = new TimeHeightResourceData(); + resourceData.setPoint(PointLineUtil.getPointCoordinate(catalogEntry)); + resourceData.setParameter(selectedData.getFieldsKey()); + resourceData.setParameterName(selectedData.getFieldsText()); + resourceData.setPointLetter(PointLineUtil.getPointLetter(catalogEntry)); + resourceData.setSource(selectedData.getSourcesText()); + return resourceData; + } + + @Override + protected LoadProperties createNewLoadProperties(DisplayType displayType) { + return new GridLoadProperties(displayType); + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/TimeSeriesProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/TimeSeriesProductCreator.java new file mode 100644 index 0000000000..da65365ea7 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/TimeSeriesProductCreator.java @@ -0,0 +1,74 @@ +/** + * 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.volumebrowser.loader; + +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.xy.timeseries.display.TimeSeriesRenderableDisplay; +import com.raytheon.uf.viz.xy.timeseries.rsc.TimeSeriesResourceData; +import com.raytheon.uf.viz.xy.timeseries.rsc.TimeSeriesResourceData.AxisParameter; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; + +/** + * + * Creates a {@link TimeSeriesRenderableDisplay} containing a + * {@link TimeSeriesResourceData}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class TimeSeriesProductCreator extends AbstractProductCreator{ + + @Override + protected TimeSeriesRenderableDisplay createNewRenderableDisplay(VolumeBrowserDialogSettings dialogSettings, SelectedData selectedData) { + return new TimeSeriesRenderableDisplay(); + } + + @Override + protected TimeSeriesResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + SelectedData selectedData = catalogEntry.getSelectedData(); + TimeSeriesResourceData resourceData = new TimeSeriesResourceData(); + resourceData.setCoordinate(PointLineUtil.getPointCoordinate(catalogEntry)); + resourceData.setPointLetter(PointLineUtil.getPointLetter(catalogEntry)); + resourceData.setSource(selectedData.getSourcesText()); + + AxisParameter yParameter = new AxisParameter(); + yParameter.code = selectedData.getFieldsKey(); + yParameter.name = selectedData.getFieldsText(); + + resourceData.setYParameter(yParameter); + resourceData.setLevelKey(selectedData.getPlanesKey()); + return resourceData; + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/VarHeightHodoProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/VarHeightHodoProductCreator.java new file mode 100644 index 0000000000..11561bf2fa --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/VarHeightHodoProductCreator.java @@ -0,0 +1,76 @@ +/** + * 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.volumebrowser.loader; + +import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData; +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.xy.varheight.display.VarHeightRenderableDisplay; +import com.raytheon.uf.viz.xy.varheight.hodo.VarHeightHodoDescriptor; +import com.raytheon.uf.viz.xy.varheight.rsc.VarHeightResourceData; +import com.raytheon.viz.core.slice.request.HeightScales; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; + +/** + * + * Creates a {@link VarHeightRenderableDisplay} containing a + * {@link VarHeightHodoDescriptor} with a {@link VarHeightResourceData}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class VarHeightHodoProductCreator extends AbstractProductCreator { + + @Override + protected VarHeightRenderableDisplay createNewRenderableDisplay( + VolumeBrowserDialogSettings dialogSettings, SelectedData selectedData) { + VarHeightRenderableDisplay display = new VarHeightRenderableDisplay(); + VarHeightHodoDescriptor descriptor = new VarHeightHodoDescriptor(); + display.setDescriptor(descriptor); + descriptor.setRenderableDisplay(display); + descriptor.setHeightScale(HeightScales.fromName("Log 1050-150")); + return display; + } + + @Override + protected AbstractRequestableResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + VarHeightResourceData resourceData = new VarHeightResourceData(); + resourceData.setPoint(PointLineUtil.getPointCoordinate(catalogEntry)); + resourceData.setParameter("Wind"); + resourceData.setParameterName("Wind"); + resourceData.setPointLetter(PointLineUtil.getPointLetter(catalogEntry)); + resourceData.setSource(catalogEntry.getSelectedData().getSourcesText()); + return resourceData; + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/VarHeightProductCreator.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/VarHeightProductCreator.java new file mode 100644 index 0000000000..3b29dc9c1b --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/loader/VarHeightProductCreator.java @@ -0,0 +1,72 @@ +/** + * 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.volumebrowser.loader; + +import com.raytheon.uf.viz.core.rsc.DisplayType; +import com.raytheon.uf.viz.xy.varheight.display.VarHeightDescriptor; +import com.raytheon.uf.viz.xy.varheight.display.VarHeightRenderableDisplay; +import com.raytheon.uf.viz.xy.varheight.rsc.VarHeightResourceData; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.raytheon.viz.volumebrowser.util.PointLineUtil; +import com.raytheon.viz.volumebrowser.vbui.SelectedData; +import com.raytheon.viz.volumebrowser.vbui.VolumeBrowserDialogSettings; + +/** + * + * Creates a {@link VarHeightRenderableDisplay} containing a + * {@link VarHeightDescriptor} with a {@link VarHeightResourceData}. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Initial Creation
+ * 
+ * 
+ * + * @author bsteffen + */ +public class VarHeightProductCreator extends AbstractProductCreator { + + @Override + protected VarHeightRenderableDisplay createNewRenderableDisplay(VolumeBrowserDialogSettings dialogSettings, SelectedData selectedData) { + VarHeightRenderableDisplay display = new VarHeightRenderableDisplay(); + VarHeightDescriptor descriptor = display.getDescriptor(); + descriptor.setRenderableDisplay(display); + descriptor.setHeightScale(dialogSettings.getHeightScaleSelection()); + return display; + } + + @Override + protected VarHeightResourceData createNewResourceData( + IDataCatalog dataCatalog, IDataCatalogEntry catalogEntry, DisplayType displayType) { + VarHeightResourceData resourceDaata = new VarHeightResourceData(); + resourceDaata.setPoint(PointLineUtil.getPointCoordinate(catalogEntry)); + resourceDaata.setParameter(catalogEntry.getSelectedData().getFieldsKey()); + resourceDaata.setParameterName(catalogEntry.getSelectedData().getFieldsText()); + resourceDaata.setPointLetter(PointLineUtil.getPointLetter(catalogEntry)); + resourceDaata.setSource(catalogEntry.getSelectedData().getSourcesText()); + return resourceDaata; + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/util/PointLineUtil.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/util/PointLineUtil.java new file mode 100644 index 0000000000..8341835757 --- /dev/null +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/util/PointLineUtil.java @@ -0,0 +1,121 @@ +/** + * 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.volumebrowser.util; + +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Pattern; + +import com.raytheon.uf.viz.points.PointsDataManager; +import com.raytheon.viz.awipstools.ToolsDataManager; +import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; +import com.vividsolutions.jts.geom.Coordinate; + +/** + * + * Static convenience methods for dealing with the points and lines when loading + * data from the volume browser. + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Aug 03, 2015  3861     bsteffen  Extracted from AbstractDataCatalog
+ * 
+ * 
+ * + * @author bsteffen + */ +public class PointLineUtil { + + /** key representing all latitude and longitude planes **/ + public static final String LAT_LON_KEY = "LatLon"; + + /** key representing all point and line planes **/ + public static final String POINT_LINE_KEY = "PointLine"; + + public static final Pattern POINT_PATTERN = Pattern.compile("^Point"); + + public static Set getPointLineKeys() { + Set keySet = new HashSet(); + for (String letter : PointsDataManager.getInstance().getPointNames()) { + keySet.add("Point" + letter); + } + for (String letter : ToolsDataManager.getInstance().getBaselineNames()) { + keySet.add("Line" + letter); + } + return keySet; + } + + public static boolean isLatLon(String plane) { + return ((plane != null) && (plane.startsWith("Lat") + || plane.startsWith("Lon") || plane.equals("LATS") || plane + .equals("LONS"))); + } + + public static boolean isPointLine(String plane) { + return ((plane != null) && (plane.startsWith("Line") || plane + .startsWith("Point"))); + } + + /** + * Obtain the point from the given catalog entry or from directly from the + * volume browser if in time series. + * + * @param catalogEntry + * the catalogEntry for which to obtain a point + * @return the coordinates belonging to the point. Null if there is no point + * associated with this catalog Entry. + */ + public static Coordinate getPointCoordinate(IDataCatalogEntry catalogEntry) { + + String pointLetter = getPointLetter(catalogEntry); + + Coordinate c = PointsDataManager.getInstance().getCoordinate( + pointLetter); + if (c == null) { + c = PointsDataManager.getInstance().getCoordinate("A"); + } + return c; + + } + + public static String getPointLetter(IDataCatalogEntry catalogEntry) { + String pointLetter = null; + switch (catalogEntry.getDialogSettings().getViewSelection()) { + case TIMEHEIGHT: + case VARVSHGT: + case CROSSSECTION: + case SOUNDING: + pointLetter = POINT_PATTERN.matcher( + catalogEntry.getSelectedData().getPlanesKey()) + .replaceFirst(""); + break; + case TIMESERIES: + pointLetter = catalogEntry.getDialogSettings().getPointsSelection() + .getName(); + break; + } + return pointLetter; + } + +} diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableComp.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableComp.java index 2703595f6c..762e8e26d9 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableComp.java +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableComp.java @@ -19,9 +19,6 @@ **/ package com.raytheon.viz.volumebrowser.vbui; -import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDescriptor; -import gov.noaa.nws.ncep.ui.nsharp.display.NsharpSkewTPaneDisplay; - import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -30,7 +27,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; @@ -59,49 +55,14 @@ import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; -import org.eclipse.ui.IEditorPart; -import com.raytheon.uf.viz.core.DescriptorMap; -import com.raytheon.uf.viz.core.IDisplayPane; import com.raytheon.uf.viz.core.VizApp; -import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay; -import com.raytheon.uf.viz.core.drawables.ResourcePair; -import com.raytheon.uf.viz.core.exception.VizException; -import com.raytheon.uf.viz.core.map.MapDescriptor; -import com.raytheon.uf.viz.core.maps.actions.NewMapEditor; -import com.raytheon.uf.viz.core.procedures.Bundle; import com.raytheon.uf.viz.core.rsc.DisplayType; -import com.raytheon.uf.viz.core.rsc.ResourceType; -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.CrossSectionRenderableDisplay; -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.timeseries.display.TimeSeriesRenderableDisplay; -import com.raytheon.uf.viz.xy.varheight.display.VarHeightDescriptor; -import com.raytheon.uf.viz.xy.varheight.display.VarHeightRenderableDisplay; -import com.raytheon.uf.viz.xy.varheight.hodo.VarHeightHodoDescriptor; -import com.raytheon.uf.viz.xy.varheight.rsc.VarHeightResourceData; -import com.raytheon.viz.awipstools.ToolsDataManager; -import com.raytheon.viz.core.rsc.ICombinedResourceData; -import com.raytheon.viz.core.rsc.ICombinedResourceData.CombineOperation; -import com.raytheon.viz.core.slice.request.HeightScales; -import com.raytheon.viz.ui.BundleProductLoader; -import com.raytheon.viz.ui.EditorUtil; -import com.raytheon.viz.ui.UiUtil; import com.raytheon.viz.ui.dialogs.ICloseCallback; -import com.raytheon.viz.ui.editor.AbstractEditor; -import com.raytheon.viz.ui.editor.IMultiPaneEditor; import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogManager; import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; -import com.raytheon.viz.volumebrowser.util.CrossSectionUtil; -import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.LeftRightMenu; -import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.SpaceTimeMenu; +import com.raytheon.viz.volumebrowser.loader.ProductLoader; import com.raytheon.viz.volumebrowser.vbui.VBMenuBarItemsMgr.ViewMenu; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.GeometryFactory; -import com.vividsolutions.jts.geom.LineString; /** * @@ -110,17 +71,20 @@ import com.vividsolutions.jts.geom.LineString; *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Jun 08, 2009 2161       lvenable    Initial creation
- * Mar 27, 2012 14506      Qinglu Lin  For cross section plot along a line of
- *                                     latitude, swap xStart and xEnd.
- * Jan 16, 2013 1492       rferrel     Changes for non-blocking InventoryDlg.
- * Jan 25, 2013 15529      kshresth    Fixed cross section "Unhandled event loop
- *                                     exception"  when loading contours and
- *                                     Image combo
- * Aug 20, 2013 2259       bsteffen    Delete old skewt plugin.
- * Feb 12, 2015 4105       rferrel     Remove duplicate update of table item in addProduct.
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Jun 08, 2009  2161     lvenable  Initial creation
+ * Mar 27, 2012  14506    qlin      For cross section plot along a line of
+ *                                  latitude, swap xStart and xEnd.
+ * Jan 16, 2013  1492     rferrel   Changes for non-blocking InventoryDlg.
+ * Jan 25, 2013  15529    kshresth  Fixed cross section "Unhandled event loop
+ *                                  exception"  when loading contours and Image
+ *                                  combo
+ * Aug 20, 2013  2259     bsteffen  Delete old skewt plugin.
+ * Feb 12, 2015  4105     rferrel   Remove duplicate update of table item in
+ *                                  addProduct.
+ * Aug 03, 2015  3861     bsteffen  Move product loading to ProductLoader
+ * 
  * 
* * @author lvenable @@ -691,28 +655,18 @@ public class ProductTableComp extends Composite { ProductTableData productTableData = tableDataArray .get(indexOf); - DisplayType currentDisplayType = productTableData - .getDisplayTypeSet().iterator().next(); - - productTableData.getDisplayTypeSet().clear(); + ProductLoader loader = new ProductLoader(); for (DisplayType displayType : productTableData .getSelectedData().getDisplayTypes()) { - - productTableData.getDisplayTypeSet().add( + loader.addProduct( + productTableData.getCatalogEntry(), displayType); } - List resources = productTableData - .getResourcesToLoad(); - loadResources(false, resources); + loader.load(); unselectProduct(indexOf); - - productTableData.getDisplayTypeSet().clear(); - productTableData.getDisplayTypeSet().add( - currentDisplayType); - updateLoadButtonAndProductLabels(); } @@ -859,244 +813,25 @@ public class ProductTableComp extends Composite { */ private void loadProducts(boolean difference) { int[] prodIndexes = prodSelTable.getSelectionIndices(); + ProductLoader loader = new ProductLoader(); - List resources = new ArrayList( - prodIndexes.length); for (int i = 0; i < prodIndexes.length; i++) { ProductTableData productData = tableDataArray.get(prodIndexes[i]); - resources.addAll(productData.getResourcesToLoad()); + for (DisplayType displayType : productData.getDisplayTypeSet()) { + loader.addProduct(productData.getCatalogEntry(), displayType); + } + } + if (difference) { + loader.loadDifference(); + } else { + loader.load(); } - - loadResources(difference, resources); unselectProduct(prodIndexes); updateLoadButtonAndProductLabels(); } - private void loadResources(boolean difference, - List resourceList) { - if (difference) { - try { - ((ICombinedResourceData) resourceList.get(0).getResourceData()) - .setSecondaryData(resourceList.get(1).getResourceData()); - ((ICombinedResourceData) resourceList.get(0).getResourceData()) - .setCombineOperation(CombineOperation.DIFFERENCE); - resourceList.remove(1); - } catch (Exception e) { - resourceList.clear(); - throw new RuntimeException( - "Unable to obtain a difference request", e); - } - } - VolumeBrowserDialogSettings dialogSettings = VolumeBrowserAction - .getVolumeBrowserDlg().getDialogSettings(); - - ResourceType resourceType = dialogSettings.getViewSelection() - .getResourceType(); - - AbstractRenderableDisplay display = null; - - switch (resourceType) { - case PLAN_VIEW: - String editorId = DescriptorMap.getEditorId(MapDescriptor.class - .getName()); - - IEditorPart editorPart = EditorUtil.findEditor(editorId); - if (editorPart == null) { - try { - new NewMapEditor().execute(null); - } catch (ExecutionException e) { - throw new RuntimeException(e); - } - editorPart = EditorUtil.findEditor(editorId); - } - AbstractEditor editor = (AbstractEditor) editorPart; - display = (AbstractRenderableDisplay) editor.getActiveDisplayPane() - .getRenderableDisplay().createNewDisplay(); - try { - display.setDescriptor(new MapDescriptor()); - } catch (VizException e) { - throw new RuntimeException(e); - } - break; - case CROSS_SECTION: - CrossSectionRenderableDisplay csDisplay = new CrossSectionRenderableDisplay(); - CrossSectionDescriptor csDesc = csDisplay.getDescriptor(); - csDesc.setRenderableDisplay(csDisplay); - - selectNewTableItem(); - - IDataCatalogEntry catalogEntry = getSelectedData().get(0) - .getCatalogEntry(); - VBMenuBarItemsMgr.SpaceTimeMenu currentSpaceTime = dialogSettings - .getSpaceTimeSelection(); - String selectedPlaneKey = catalogEntry.getSelectedData() - .getPlanesKey(); - - // the selected Plane in Time setting will be either a Baseline or a - // Lat/Lon Line - if (currentSpaceTime == SpaceTimeMenu.TIME) { - java.awt.Rectangle coverageRectangle = VbUtil - .getMapCoverageRectangle(); - LineString line = null; - - if (selectedPlaneKey.startsWith("Lon")) { - double yEnd, yStart, xEnd, xStart; - yEnd = coverageRectangle.getMinY(); - yStart = coverageRectangle.getMaxY(); - xEnd = Double.parseDouble(selectedPlaneKey.replace("Lon", - "")); - xStart = xEnd; - line = (new GeometryFactory()) - .createLineString(new Coordinate[] { - new Coordinate(xStart, yStart), - new Coordinate(xEnd, yEnd) }); - } else if (selectedPlaneKey.startsWith("Lat")) { - double yEnd, yStart, xEnd, xStart; - xStart = coverageRectangle.getMinX(); - xEnd = coverageRectangle.getMaxX(); - yEnd = Double.parseDouble(selectedPlaneKey.replace("Lat", - "")); - yStart = yEnd; - line = (new GeometryFactory()) - .createLineString(new Coordinate[] { - new Coordinate(xStart, yStart), - new Coordinate(xEnd, yEnd) }); - - } - // assume we have selected a baseline - else { - ToolsDataManager dataManager = ToolsDataManager - .getInstance(); - - line = dataManager.getBaseline(selectedPlaneKey.replace( - "Line", "")); - // default to Baseline A if all else fails - - if (line == null) { - line = dataManager.getBaseline("A"); - } - - } - - // set the line at which the results are displayed - csDesc.setLines(Arrays.asList(line)); - csDesc.setLineID(catalogEntry.getSelectedData().getPlanesText()); - } else if (currentSpaceTime == SpaceTimeMenu.SPACE) { - if (selectedPlaneKey.equals("LATS")) { - csDesc.setLines(CrossSectionUtil.getAllLats()); - csDesc.setLineID("AllLAT"); - } else if (selectedPlaneKey.equals("LONS")) { - csDesc.setLines(CrossSectionUtil.getAllLons()); - csDesc.setLineID("AllLON"); - } - } - csDesc.setHeightScale(dialogSettings.getHeightScaleSelection()); - display = csDisplay; - break; - case VAR_HEIGHT: - VarHeightRenderableDisplay vhDisplay = new VarHeightRenderableDisplay(); - VarHeightDescriptor vhDesc = vhDisplay.getDescriptor(); - vhDesc.setRenderableDisplay(vhDisplay); - vhDesc.setHeightScale(dialogSettings.getHeightScaleSelection()); - display = vhDisplay; - break; - case TIME_SERIES: - display = new TimeSeriesRenderableDisplay(); - break; - case TIME_HEIGHT: - TimeHeightRenderableDisplay thDisplay = new TimeHeightRenderableDisplay(); - TimeHeightDescriptor thDesc = thDisplay.getDescriptor(); - thDesc.setRenderableDisplay(thDisplay); - thDesc.setHeightScale(dialogSettings.getHeightScaleSelection()); - LeftRightMenu leftRightMenu = dialogSettings - .getTimeDirectionSelection(); - if (leftRightMenu == LeftRightMenu.LEFT) { - thDesc.timeDirection = TimeDirection.RIGHT_TO_LEFT; - } else { - thDesc.timeDirection = TimeDirection.LEFT_TO_RIGHT; - } - display = thDisplay; - break; - case SOUNDING: - // need to handle both legacy skeqwT and nsharp skewT at the same - // time. - List varheightSkewtResources = new ArrayList(); - List nsharpSkewtResources = new ArrayList(); - for (ResourcePair pair : resourceList) { - if (pair.getResourceData() instanceof D2DNSharpResourceData) { - nsharpSkewtResources.add(pair); - } else if (pair.getResourceData() instanceof VarHeightResourceData) { - varheightSkewtResources.add(pair); - } - } - if (!nsharpSkewtResources.isEmpty()) { - display = new NsharpSkewTPaneDisplay(); - display.setDescriptor(new NsharpSkewTPaneDescriptor()); - if (!varheightSkewtResources.isEmpty()) { - resourceList.removeAll(varheightSkewtResources); - loadResources(difference, varheightSkewtResources); - } - } else { - VarHeightRenderableDisplay vhhDisplay = new VarHeightRenderableDisplay(); - VarHeightHodoDescriptor vhhDesc = new VarHeightHodoDescriptor(); - vhhDisplay.setDescriptor(vhhDesc); - vhhDesc.setRenderableDisplay(vhhDisplay); - vhhDesc.setHeightScale(HeightScales.fromName("Log 1050-150")); - display = vhhDisplay; - } - break; - } - - String editorId = DescriptorMap.getEditorId(display.getDescriptor() - .getClass().getName()); - - IEditorPart activeEditor = EditorUtil.getActiveEditor(); - AbstractEditor editor = UiUtil.createOrOpenEditor(editorId, - display.cloneDisplay()); - - if (editor != null) { - if (activeEditor != null && editor != activeEditor - && activeEditor instanceof IMultiPaneEditor - && editor instanceof IMultiPaneEditor) { - IMultiPaneEditor activeMpe = (IMultiPaneEditor) activeEditor; - IMultiPaneEditor mpe = (IMultiPaneEditor) editor; - - if (mpe.getNumberofPanes() < activeMpe.getNumberofPanes()) { - for (int i = mpe.getNumberofPanes(); i < activeMpe - .getNumberofPanes(); ++i) { - mpe.addPane(display.createNewDisplay()); - } - - IDisplayPane selectedPane = activeMpe - .getSelectedPane(IMultiPaneEditor.LOAD_ACTION); - if (selectedPane != null) { - IDisplayPane[] allPanes = activeMpe.getDisplayPanes(); - for (int i = 0; i < allPanes.length; ++i) { - if (selectedPane == allPanes[i]) { - IDisplayPane newSelectedPane = mpe - .getDisplayPanes()[i]; - mpe.setSelectedPane( - IMultiPaneEditor.LOAD_ACTION, - newSelectedPane); - break; - } - } - } - } - } - for (ResourcePair pair : resourceList) { - display.getDescriptor().getResourceList().add(pair); - } - - Bundle b = new Bundle(); - b.setDisplays(new AbstractRenderableDisplay[] { display }); - Job j = new BundleProductLoader(editor, b); - j.schedule(); - } - } - /** * @param prodIndexes * @return @@ -1118,8 +853,11 @@ public class ProductTableComp extends Composite { */ private void loadSingleProduct(int selectedItemIndex) { ProductTableData productData = tableDataArray.get(selectedItemIndex); - List resources = productData.getResourcesToLoad(); - loadResources(false, resources); + ProductLoader loader = new ProductLoader(); + for (DisplayType displayType : productData.getDisplayTypeSet()) { + loader.addProduct(productData.getCatalogEntry(), displayType); + } + loader.load(); unselectProduct(selectedItemIndex); updateLoadButtonAndProductLabels(); } diff --git a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableData.java b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableData.java index 26aa830389..89576ffcb9 100644 --- a/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableData.java +++ b/cave/com.raytheon.viz.volumebrowser/src/com/raytheon/viz/volumebrowser/vbui/ProductTableData.java @@ -19,16 +19,12 @@ **/ package com.raytheon.viz.volumebrowser.vbui; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Set; import com.raytheon.uf.common.dataquery.requests.RequestConstraint; -import com.raytheon.uf.viz.core.drawables.ResourcePair; import com.raytheon.uf.viz.core.rsc.DisplayType; -import com.raytheon.uf.viz.core.rsc.ResourceType; import com.raytheon.viz.volumebrowser.datacatalog.DataCatalogManager; import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalog; import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; @@ -40,9 +36,10 @@ import com.raytheon.viz.volumebrowser.datacatalog.IDataCatalogEntry; *
  * 
  * SOFTWARE HISTORY
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Jun 9, 2009  #2161      lvenable     Initial creation
+ * Date          Ticket#  Engineer  Description
+ * ------------- -------- --------- --------------------------
+ * Jun 09, 2009  2161     lvenable  Initial creation
+ * Aug 03, 2015  3861     bsteffen  Move resource creation to ProductCreators
  * 
  * 
* @@ -172,21 +169,6 @@ public class ProductTableData { catalogEntry.getSelectedData()); } - public List getResourcesToLoad() { - - ResourceType currentSetting = catalogEntry.getDialogSettings() - .getViewSelection().getResourceType(); - - List resourceList = new ArrayList(); - - for (DisplayType displayType : displayTypeSet) { - resourceList.addAll(getDataCatalog().getResourcesToLoad( - catalogEntry, currentSetting, displayType)); - } - - return resourceList; - } - /** * Get the name of the product. Returns either the simple name or the image * name depending on if the displayTypeSet contains the IMAGE DisplayType.