Merge branch 'omaha_14.4.1' into ncep_14.4.1
Former-commit-id: 339e27276d6332393dabd6f94b9ea63508b87b65
This commit is contained in:
commit
752d081ba6
869 changed files with 4279 additions and 132614 deletions
11
build/build.core/.project
Normal file
11
build/build.core/.project
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>build.core</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
</natures>
|
||||
</projectDescription>
|
108
build/build.core/Feature.groovy
Normal file
108
build/build.core/Feature.groovy
Normal file
|
@ -0,0 +1,108 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* POJO-based representation of the contents of an Eclipse feature file.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
class Feature
|
||||
{
|
||||
private String feature
|
||||
private String featureDirectory
|
||||
/*
|
||||
* The first iteration of the build will assume that when includes
|
||||
* are present, there will not be any plugins or dependencies
|
||||
* because we will be working with the product feature
|
||||
*/
|
||||
private List includesList
|
||||
private List dependenciesList
|
||||
private List pluginsList
|
||||
|
||||
public Feature(String feature, String featureDirectory)
|
||||
{
|
||||
this.feature = feature
|
||||
this.featureDirectory = featureDirectory
|
||||
this.includesList = []
|
||||
this.dependenciesList = []
|
||||
this.pluginsList = []
|
||||
}
|
||||
|
||||
public String getFeature()
|
||||
{
|
||||
return this.feature
|
||||
}
|
||||
|
||||
public String getFeatureDirectory()
|
||||
{
|
||||
return this.featureDirectory
|
||||
}
|
||||
|
||||
public void addInclude(String includedFeature)
|
||||
{
|
||||
this.includesList.add(includedFeature)
|
||||
}
|
||||
|
||||
public List getIncludes()
|
||||
{
|
||||
return this.includesList
|
||||
}
|
||||
|
||||
public boolean hasIncludes()
|
||||
{
|
||||
return this.includesList.size() > 0
|
||||
}
|
||||
|
||||
public void addDependency(String dependency)
|
||||
{
|
||||
this.dependenciesList.add(dependency)
|
||||
}
|
||||
|
||||
public List getDependencies()
|
||||
{
|
||||
return this.dependenciesList
|
||||
}
|
||||
|
||||
public boolean hasDependencies()
|
||||
{
|
||||
return this.dependenciesList.size() > 0
|
||||
}
|
||||
|
||||
public void addPlugin(String plugin)
|
||||
{
|
||||
this.pluginsList.add(plugin)
|
||||
}
|
||||
|
||||
public List getPlugins()
|
||||
{
|
||||
return this.pluginsList
|
||||
}
|
||||
}
|
52
build/build.core/FeatureParser.groovy
Normal file
52
build/build.core/FeatureParser.groovy
Normal file
|
@ -0,0 +1,52 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Parses an Eclipse feature file (feature.xml) and returns a POJO representation
|
||||
* of the contents of the feature file.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
class FeatureParser
|
||||
{
|
||||
public static Feature parseFeature(String featureFile, String featureDirectory)
|
||||
{
|
||||
Feature feature = new Feature(featureFile, featureDirectory)
|
||||
|
||||
def featureXML = new XmlSlurper().parse(new File(featureFile))
|
||||
featureXML.includes.each {feature.addInclude(it.attributes().id)}
|
||||
featureXML.requires.import.each {feature.addDependency(it.attributes().feature)}
|
||||
featureXML.plugin.each {feature.addPlugin(it.attributes().id)}
|
||||
|
||||
return feature
|
||||
}
|
||||
}
|
11
build/deploy.edex/.project
Normal file
11
build/deploy.edex/.project
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>deploy.edex</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Abstraction of a customized plugin deployer that provides access
|
||||
* to a pre-configured groovy Ant Builder.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
abstract class AbstractAntBasedPluginCustomDeployer
|
||||
implements IPluginCustomDeployer
|
||||
{
|
||||
protected AntBuilder ant
|
||||
|
||||
protected AbstractAntBasedPluginCustomDeployer()
|
||||
{
|
||||
this.ant = new AntBuilder()
|
||||
// disable ant logging - based on:
|
||||
// http://stackoverflow.com/questions/15143221/enable-verbose-output-from-groovys-antbuilder
|
||||
this.ant.project.getBuildListeners().firstElement().setMessageOutputLevel(0)
|
||||
}
|
||||
}
|
72
build/deploy.edex/AbstractExternalPluginFilesDeployer.groovy
Normal file
72
build/deploy.edex/AbstractExternalPluginFilesDeployer.groovy
Normal file
|
@ -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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Abstraction of a customized plugin deployer that deploys
|
||||
* plugin-specific files and directories that exist outside
|
||||
* of the Java src directory. Files are deployed from
|
||||
* the specified externalDirectory in the plugin (if it exists) to the
|
||||
* specified destinationDirectoryTree located beneath the root edex directory.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
abstract class AbstractExternalPluginFilesDeployer
|
||||
extends AbstractAntBasedPluginCustomDeployer {
|
||||
private String externalDirectory
|
||||
private String destinationDirectoryTree
|
||||
|
||||
protected AbstractExternalPluginFilesDeployer(String externalDirectory, String destinationDirectoryTree) {
|
||||
super()
|
||||
this.externalDirectory = externalDirectory
|
||||
this.destinationDirectoryTree = destinationDirectoryTree
|
||||
}
|
||||
|
||||
// Add plugin name if we want to add logging to this capability
|
||||
protected void deployExternalFilesystem(String edexRootDirectory, String pluginFullPath)
|
||||
{
|
||||
String fullPluginExternalPath = pluginFullPath + File.separator + this.externalDirectory
|
||||
// ensure that this plugin has an external directory
|
||||
if (new File(fullPluginExternalPath).exists() == false)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
String fullDestinationPath = edexRootDirectory + File.separator +
|
||||
this.destinationDirectoryTree + File.separator + this.externalDirectory
|
||||
// ensure that the destination directory exists
|
||||
new File(fullDestinationPath).mkdirs()
|
||||
|
||||
// copy the files
|
||||
ant.copy( todir : fullDestinationPath, overwrite : true )
|
||||
{ fileset( dir : fullPluginExternalPath ) }
|
||||
}
|
||||
}
|
61
build/deploy.edex/CustomDeploymentRunner.groovy
Normal file
61
build/deploy.edex/CustomDeploymentRunner.groovy
Normal file
|
@ -0,0 +1,61 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Searches for and runs custom plugin-specific groovy scripts named plugin-deploy.groovy
|
||||
* located directly within the plugin directory. The requirement is that the custom
|
||||
* plugin deployments must only deploy files to a location relative to the EDEX root directory.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
class CustomDeploymentRunner
|
||||
implements IPluginCustomDeployer {
|
||||
private static final String PLUGIN_GROOVY_SCRIPT = "plugin-deploy.groovy"
|
||||
private static final String BINDING_EDEX_ROOT = "__EDEX_ROOT__"
|
||||
private static final String BINDING_PLUGIN = "__PLUGIN__"
|
||||
private static final String BINDING_PLUGIN_PATH = "__PLUGIN_PATH__"
|
||||
|
||||
public void deploy(String edexRootDirectory, String plugin, String pluginFullPath) {
|
||||
File groovyScript = new File(pluginFullPath + File.separator + PLUGIN_GROOVY_SCRIPT)
|
||||
if (groovyScript.exists() == false) {
|
||||
return
|
||||
}
|
||||
|
||||
Binding binding = new Binding()
|
||||
binding.setVariable(BINDING_EDEX_ROOT, edexRootDirectory)
|
||||
binding.setVariable(BINDING_PLUGIN, plugin)
|
||||
binding.setVariable(BINDING_PLUGIN_PATH, pluginFullPath)
|
||||
|
||||
def groovyShell = new GroovyShell(binding)
|
||||
groovyShell.run(groovyScript)
|
||||
}
|
||||
}
|
120
build/deploy.edex/DeployESB.groovy
Normal file
120
build/deploy.edex/DeployESB.groovy
Normal file
|
@ -0,0 +1,120 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
import groovy.util.logging.*
|
||||
|
||||
/**
|
||||
* Deploys the EDEX esb scripts, libraries, and other files.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
@Log
|
||||
class DeployESB
|
||||
{
|
||||
private static final String SETUP_ENV = "setup.env"
|
||||
|
||||
private DeployESB()
|
||||
{
|
||||
}
|
||||
|
||||
public static void deploy(String edexRootDirectory, String esbDirectory, String overrideArchitecture)
|
||||
{
|
||||
if (new File(esbDirectory).exists() == false)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"The specified esb directory does not exist - " + esbDirectory)
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
new File(edexRootDirectory).mkdirs()
|
||||
|
||||
// deploy the ESB directory structure.
|
||||
AntBuilder ant = new AntBuilder()
|
||||
ant.project.getBuildListeners().firstElement().setMessageOutputLevel(0)
|
||||
|
||||
log.info "Deploying ESB ..."
|
||||
ant.copy( todir : edexRootDirectory,
|
||||
overwrite : true )
|
||||
{
|
||||
fileset( dir : esbDirectory )
|
||||
}
|
||||
|
||||
// remove setup.env
|
||||
new File(edexRootDirectory + File.separator + "bin" + File.separator + SETUP_ENV).delete()
|
||||
// remove lib_illusion
|
||||
new File(edexRootDirectory + File.separator + "lib" + File.separator + "lib_illusion").deleteDir()
|
||||
|
||||
// copy the correct lib_illusion based on architecture
|
||||
// determine architecture?
|
||||
|
||||
// since this is only a temporary consideration since we will eventually be switching to a 64-bit
|
||||
// EDEX, we will just look at the OS architecture since the JDK does not provide a simple way
|
||||
// to retrieve the required information about the JVM process, itself. The -Darchitecture argument
|
||||
// can be used to override the dynamically determined architecture
|
||||
String architecture = overrideArchitecture
|
||||
if (architecture == "")
|
||||
{
|
||||
architecture =
|
||||
(System.getProperty("os.arch") == "amd64") ? "x86_64" : "x86"
|
||||
}
|
||||
String esbLibIllusionPath = esbDirectory + File.separator + "lib" + File.separator +
|
||||
"lib_illusion" + File.separator + architecture
|
||||
if (new File(esbLibIllusionPath).exists() == false)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Unable to find the illusion lib associated with architecture - " + architecture)
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
String libIllusionDestination = edexRootDirectory + File.separator +
|
||||
"lib" + File.separator + "lib_illusion"
|
||||
new File(libIllusionDestination).mkdirs()
|
||||
ant.copy( todir : libIllusionDestination, overwrite : true )
|
||||
{
|
||||
fileset( dir : esbLibIllusionPath )
|
||||
}
|
||||
}
|
||||
|
||||
public static void deployEdexConfiguration(String edexRootDirectory, String esbDirectory)
|
||||
{
|
||||
final String setupEnvSrc = esbDirectory + File.separator + "bin" + File.separator + SETUP_ENV
|
||||
final String destinationDirectory = edexRootDirectory + File.separator + "bin"
|
||||
|
||||
AntBuilder ant = new AntBuilder()
|
||||
ant.project.getBuildListeners().firstElement().setMessageOutputLevel(0)
|
||||
|
||||
ant.copy( todir : destinationDirectory,
|
||||
overwrite : true )
|
||||
{
|
||||
fileset( file : setupEnvSrc )
|
||||
}
|
||||
}
|
||||
}
|
53
build/deploy.edex/DeployEdexLocalization.groovy
Normal file
53
build/deploy.edex/DeployEdexLocalization.groovy
Normal file
|
@ -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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Deploys plugin-provided localization files.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
class DeployEdexLocalization
|
||||
extends AbstractExternalPluginFilesDeployer
|
||||
{
|
||||
private static final String destinationDirectory = "utility"
|
||||
private static final String destinationDirectoryTree = "data"
|
||||
|
||||
public DeployEdexLocalization()
|
||||
{
|
||||
super(destinationDirectory, destinationDirectoryTree)
|
||||
}
|
||||
|
||||
public void deploy(String edexRootDirectory, String plugin, String pluginFullPath)
|
||||
{
|
||||
super.deployExternalFilesystem(edexRootDirectory, pluginFullPath)
|
||||
}
|
||||
}
|
53
build/deploy.edex/DeployEdexResources.groovy
Normal file
53
build/deploy.edex/DeployEdexResources.groovy
Normal file
|
@ -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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Deploys plugin-provided resource (properties) files.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
class DeployEdexResources
|
||||
extends AbstractExternalPluginFilesDeployer
|
||||
{
|
||||
private static final String destinationDirectory = "resources"
|
||||
private static final String destinationDirectoryTree = "conf"
|
||||
|
||||
public DeployEdexResources()
|
||||
{
|
||||
super(destinationDirectory, destinationDirectoryTree)
|
||||
}
|
||||
|
||||
public void deploy(String edexRootDirectory, String plugin, String pluginFullPath)
|
||||
{
|
||||
super.deployExternalFilesystem(edexRootDirectory, pluginFullPath)
|
||||
}
|
||||
}
|
73
build/deploy.edex/DeployEdexSiteLocalization.groovy
Normal file
73
build/deploy.edex/DeployEdexSiteLocalization.groovy
Normal file
|
@ -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.
|
||||
**/
|
||||
|
||||
import groovy.util.logging.*
|
||||
import ProjectInformation
|
||||
|
||||
/**
|
||||
* Deploys the sample EDEX localization files when requested.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
@Log
|
||||
class DeployEdexSiteLocalization
|
||||
{
|
||||
private static final String EDEX_LOCALIZATION_DIRECTORY = "data" + File.separator +
|
||||
"utility"
|
||||
|
||||
private DeployEdexSiteLocalization()
|
||||
{
|
||||
}
|
||||
|
||||
public static void deploy(String edexRootDirectory, ProjectInformation projectInformation, String site)
|
||||
{
|
||||
if (projectInformation == null)
|
||||
{
|
||||
log.log(java.util.logging.Level.WARNING,
|
||||
"Unable to find the localization project associated with site " + site +
|
||||
"; skipping localization deployment")
|
||||
return
|
||||
}
|
||||
|
||||
String localizationDestination = edexRootDirectory + File.separator + EDEX_LOCALIZATION_DIRECTORY
|
||||
new File(localizationDestination).mkdirs()
|
||||
|
||||
AntBuilder ant = new AntBuilder()
|
||||
ant.project.getBuildListeners().firstElement().setMessageOutputLevel(0)
|
||||
|
||||
log.info "Deploying localization for site ... " + site
|
||||
ant.copy( todir : localizationDestination, overwrite : true )
|
||||
{
|
||||
fileset( dir : projectInformation.projectFullLocation + File.separator + "utility" )
|
||||
}
|
||||
}
|
||||
}
|
55
build/deploy.edex/DeployModes.groovy
Normal file
55
build/deploy.edex/DeployModes.groovy
Normal file
|
@ -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.
|
||||
**/
|
||||
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* Deploys plugin-provided EDEX mode files.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
class DeployModes
|
||||
extends AbstractExternalPluginFilesDeployer
|
||||
{
|
||||
private static final String destinationDirectory = 'modes'
|
||||
private static final String destinationDirectoryTree = 'conf'
|
||||
|
||||
public DeployModes()
|
||||
{
|
||||
super(destinationDirectory, destinationDirectoryTree)
|
||||
}
|
||||
|
||||
public void deploy(String edexRootDirectory, String plugin, String pluginFullPath)
|
||||
{
|
||||
super.deployExternalFilesystem(edexRootDirectory, pluginFullPath)
|
||||
}
|
||||
}
|
118
build/deploy.edex/DeployPythonPackages.groovy
Normal file
118
build/deploy.edex/DeployPythonPackages.groovy
Normal file
|
@ -0,0 +1,118 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
import groovy.util.logging.*
|
||||
import java.util.regex.Pattern
|
||||
import java.util.regex.Matcher
|
||||
import ProjectInformation
|
||||
|
||||
/**
|
||||
* Deploys the Raytheon-maintained Python Packages when requested.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
@Log
|
||||
class DeployPythonPackages {
|
||||
private static final String PYTHON_VERSION_PATTERN_STRING = "python([0-9].+)"
|
||||
private static final Pattern pythonVersionPattern =
|
||||
Pattern.compile(PYTHON_VERSION_PATTERN_STRING)
|
||||
|
||||
private DeployPythonPackages() {
|
||||
}
|
||||
|
||||
public static deploy(String pythonRootDirectory, ProjectInformation projectInformation,
|
||||
String[] pythonPackagesToDeploy) {
|
||||
if (projectInformation == null) {
|
||||
log.log(java.util.logging.Level.WARNING,
|
||||
"Unable to find pythonPackages in the workspace; skipping python deployment")
|
||||
return
|
||||
}
|
||||
if (pythonPackagesToDeploy.length == 0) {
|
||||
log.info "No python packages have been specified for deployment; skipping python deployment."
|
||||
return
|
||||
}
|
||||
|
||||
// determine what the python version directory is
|
||||
// loop through all directories in the python lib directory; attempt to find
|
||||
// the one that matches our pattern
|
||||
final String pythonLibDirectory = pythonRootDirectory + File.separator + "lib"
|
||||
String pythonVersion = null
|
||||
for (String libFile : new File(pythonLibDirectory).list())
|
||||
{
|
||||
Matcher matcher = pythonVersionPattern.matcher(libFile)
|
||||
if (matcher.matches())
|
||||
{
|
||||
pythonVersion = matcher.group(1)
|
||||
}
|
||||
}
|
||||
|
||||
if (pythonVersion == null)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Unable to find the python version directory in " + pythonLibDirectory)
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
AntBuilder ant = new AntBuilder()
|
||||
ant.project.getBuildListeners().firstElement().setMessageOutputLevel(0)
|
||||
|
||||
log.info "Deploying pythonPackages ..."
|
||||
final String pythonSitePackagesDirectory = pythonLibDirectory + File.separator +
|
||||
"python" + pythonVersion + File.separator + "site-packages"
|
||||
for (String pythonPackage : pythonPackagesToDeploy)
|
||||
{
|
||||
String pythonPackageDirectory = projectInformation.projectFullLocation + File.separator + pythonPackage
|
||||
if (pythonPackage == "pypies")
|
||||
{
|
||||
// special case for pypies
|
||||
pythonPackageDirectory += File.separator + "pypies"
|
||||
}
|
||||
if (new File(pythonPackageDirectory).exists() == false)
|
||||
{
|
||||
log.log(java.util.logging.Level.WARNING,
|
||||
"Unable to find the " + pythonPackage + " python package in the workspace")
|
||||
continue
|
||||
}
|
||||
|
||||
String pythonPackageDestination = pythonSitePackagesDirectory + File.separator +
|
||||
pythonPackage
|
||||
log.info "Deploying pythonPackage ... " + pythonPackage
|
||||
|
||||
// Remove the existing deployment
|
||||
new File(pythonPackageDestination).deleteDir()
|
||||
// Create an empty destination directory
|
||||
new File(pythonPackageDestination).mkdirs()
|
||||
ant.copy( todir : pythonPackageDestination )
|
||||
{ fileset( dir : pythonPackageDirectory ) }
|
||||
}
|
||||
}
|
||||
}
|
119
build/deploy.edex/DeployWeb.groovy
Normal file
119
build/deploy.edex/DeployWeb.groovy
Normal file
|
@ -0,0 +1,119 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
import groovy.util.logging.*
|
||||
|
||||
import IPluginCustomDeployer
|
||||
|
||||
/**
|
||||
* Deploys plugin-provided web applications as war files.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
@Log
|
||||
class DeployWeb
|
||||
extends AbstractAntBasedPluginCustomDeployer
|
||||
{
|
||||
private final String WEB_XML_PATH = "web" + File.separator + "WEB-INF" + File.separator + "web.xml"
|
||||
|
||||
public DeployWeb()
|
||||
{
|
||||
super()
|
||||
}
|
||||
|
||||
public void deploy(String edexRootDirectory, String plugin, String pluginFullPath)
|
||||
{
|
||||
final String edexWebappsDirectory = edexRootDirectory + File.separator + "webapps"
|
||||
|
||||
// determine if the plugin encapsulates a web application
|
||||
final String expectedWebXMLPath = pluginFullPath + File.separator + WEB_XML_PATH
|
||||
if (new File(expectedWebXMLPath).exists() == false)
|
||||
{
|
||||
// no web application
|
||||
return
|
||||
}
|
||||
|
||||
String webAppRootKey = this.getWebAppRootKey(expectedWebXMLPath)
|
||||
if (webAppRootKey == null)
|
||||
{
|
||||
log.log(java.util.logging.Level.WARNING,
|
||||
"webAppRootKey not specified in web.xml for plugin - " + plugin + "; skipping web app deployment")
|
||||
return
|
||||
}
|
||||
log.info "Deploying Web Application associated with plugin ... " + plugin
|
||||
|
||||
final String warFile = edexWebappsDirectory + File.separator + webAppRootKey + ".war"
|
||||
final String unwarDirectory = edexWebappsDirectory + File.separator + webAppRootKey
|
||||
this.cleanup(edexWebappsDirectory, warFile, unwarDirectory)
|
||||
|
||||
// produce the war file
|
||||
this.ant.war( destfile : warFile,
|
||||
webxml : expectedWebXMLPath )
|
||||
{
|
||||
fileset( dir : pluginFullPath + File.separator + "web",
|
||||
excludes : "WEB-INF" + File.separator )
|
||||
classes( dir : pluginFullPath + File.separator + "web" + File.separator +
|
||||
"WEB-INF" + File.separator + "classes" )
|
||||
webinf ( file : pluginFullPath + File.separator + "web" + File.separator +
|
||||
"WEB-INF" + File.separator + "dwr.xml" )
|
||||
}
|
||||
|
||||
// finally, unwar the war file
|
||||
this.ant.unzip( src : warFile,
|
||||
dest : unwarDirectory )
|
||||
new File(warFile).delete()
|
||||
}
|
||||
|
||||
private String getWebAppRootKey(String webXMLFile)
|
||||
{
|
||||
String webAppRootKey = null
|
||||
def webXML = new XmlSlurper().parse(new File(webXMLFile))
|
||||
|
||||
webXML.'context-param'.each
|
||||
{
|
||||
String paramName = it.'param-name'.toString()
|
||||
if (paramName == "webAppRootKey")
|
||||
{
|
||||
webAppRootKey = it.'param-value'.toString()
|
||||
}
|
||||
}
|
||||
|
||||
return webAppRootKey
|
||||
}
|
||||
|
||||
private void cleanup(String edexWebappsDirectory, String warFile, String webAppDirectory)
|
||||
{
|
||||
// cleanup any previous deployments
|
||||
new File(warFile).delete()
|
||||
new File(webAppDirectory).deleteDir()
|
||||
}
|
||||
}
|
42
build/deploy.edex/IPluginCustomDeployer.groovy
Normal file
42
build/deploy.edex/IPluginCustomDeployer.groovy
Normal file
|
@ -0,0 +1,42 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Defines a customized plugin deployer. Customized Plugin deployers are
|
||||
* used to deploy additional plugin-specific files that exist outside
|
||||
* of a standard Java build.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
interface IPluginCustomDeployer {
|
||||
void deploy(String edexRootDirectory, String plugin, String pluginFullPath)
|
||||
}
|
54
build/deploy.edex/ProjectInformation.groovy
Normal file
54
build/deploy.edex/ProjectInformation.groovy
Normal file
|
@ -0,0 +1,54 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
/**
|
||||
* POJO representation of projects discovered in the Eclipse workspace.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
class ProjectInformation
|
||||
{
|
||||
// the name of the project as it is known to Eclipse
|
||||
public String project
|
||||
// the name of the project directory
|
||||
// in most cases (not all) this will be the same as the project name
|
||||
public String projectDirectory
|
||||
// the full path to the plugin
|
||||
public String projectFullLocation
|
||||
|
||||
public ProjectInformation()
|
||||
{
|
||||
this.project = null
|
||||
this.projectDirectory = null
|
||||
this.projectFullLocation = null
|
||||
}
|
||||
}
|
15
build/deploy.edex/ReadMe.txt
Normal file
15
build/deploy.edex/ReadMe.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
Run deploy-install.xml to execute the new groovy-based deployment mechanism.
|
||||
The mechanism will need to remain ant-wrapped until the Groovy plugins are added
|
||||
to the uframe Eclipse distribution.
|
||||
|
||||
One argument is required to run the script: -Dworkspace_loc=${workspace_loc}
|
||||
|
||||
Note: ENTER THE ARGUMENT EXACTLY AS IT IS WRITTEN ABOVE. ${workspace_loc} is
|
||||
an Eclipse variable that references the actual location of the workspace.
|
||||
|
||||
deploy-install will deploy any EDEX features it finds in the workspace excluding:
|
||||
com.raytheon.edex.wa.feature and com.raytheon.edex.feature.uframe
|
||||
|
||||
Currently, an EDEX feature is defined as a feature project that includes edex in
|
||||
the name. Feature deployment options will most likely be more customizable when
|
||||
the pure groovy version of this deployment can be used.
|
563
build/deploy.edex/RunDeployInstall.groovy
Normal file
563
build/deploy.edex/RunDeployInstall.groovy
Normal file
|
@ -0,0 +1,563 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
||||
import groovy.util.logging.*
|
||||
import ProjectInformation
|
||||
import Feature
|
||||
import FeatureParser
|
||||
import java.util.Properties
|
||||
import java.util.List
|
||||
import java.util.ArrayList
|
||||
import java.util.regex.Matcher
|
||||
import java.util.regex.Pattern
|
||||
import DeployESB
|
||||
import DeployPythonPackages
|
||||
import DeployEdexSiteLocalization
|
||||
import IPluginCustomDeployer
|
||||
|
||||
/**
|
||||
* Initial version of the deploy-install driver. Temporarily
|
||||
* wrapped by and executed by an ant script until the Groovy
|
||||
* plugins become a standard part of the uframe Eclipse distribution.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3836 bkowal Initial Commit
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bkowal
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
@Log
|
||||
class DeployInstall
|
||||
{
|
||||
private static final String edexFeatureRegex = '^.*\\.edex\\..*\\.feature$'
|
||||
|
||||
private static final Pattern EDEX_FEATURE_PATTERN =
|
||||
Pattern.compile(edexFeatureRegex)
|
||||
|
||||
// temporarily have to declare and add this feature to the list of deployed features
|
||||
// manually. there are improvements that can be made in 15.1.
|
||||
private static final String COMMON_BASE_FEATURE = "com.raytheon.uf.common.base.feature"
|
||||
|
||||
// temporary. maintain backwards compatibility until baseline cleanup
|
||||
private final List<String> blacklistedEdexFeatures
|
||||
|
||||
private projectInformationMap = [:]
|
||||
private List<String> edexFeaturesToDeploy
|
||||
private String edexRootDirectory
|
||||
private String[] localizationSitesToDeploy = []
|
||||
private boolean deployPythonPackages
|
||||
private String pythonRootDirectory
|
||||
private String[] pythonPackagesToDeploy = []
|
||||
private String architecture
|
||||
private List<IPluginCustomDeployer> customPluginDeployers
|
||||
|
||||
// a list of features that have been deployed to ensure that a feature is not deployed
|
||||
// more than once.
|
||||
private List featuresDeployed = []
|
||||
// a list of the plugins that we will be deploying.
|
||||
private List pluginsToDeploy = []
|
||||
// used to track which feature a plugin was discovered in; will be used to
|
||||
// verify that a plugin is not listed in more than one feature.
|
||||
private pluginToFeatureMap = [:]
|
||||
|
||||
public DeployInstall(final String workspaceDirectory,
|
||||
final String localizationSites, final boolean deployPythonPackages,
|
||||
final String edexRootDirectory, final String pythonRootDirectory, final String pythonPackages,
|
||||
final String architecture)
|
||||
{
|
||||
blacklistedEdexFeatures = new ArrayList<String>()
|
||||
// never deploy these features
|
||||
blacklistedEdexFeatures.add("com.raytheon.edex.wa.feature")
|
||||
blacklistedEdexFeatures.add("com.raytheon.edex.feature.uframe")
|
||||
|
||||
this.init(workspaceDirectory.trim())
|
||||
if (localizationSites.trim() != "")
|
||||
{
|
||||
this.localizationSitesToDeploy = localizationSites.trim().split(":")
|
||||
}
|
||||
this.deployPythonPackages = deployPythonPackages
|
||||
this.edexRootDirectory = edexRootDirectory.trim()
|
||||
this.pythonRootDirectory = pythonRootDirectory.trim()
|
||||
if (pythonPackages.trim() != "")
|
||||
{
|
||||
this.pythonPackagesToDeploy = pythonPackages.trim().split(":")
|
||||
}
|
||||
this.architecture = architecture.trim()
|
||||
}
|
||||
|
||||
public void deploy()
|
||||
{
|
||||
// recursively build the list of plugins that will be deployed.
|
||||
for (String featureToDeploy : edexFeaturesToDeploy)
|
||||
{
|
||||
this.buildPluginList(featureToDeploy)
|
||||
}
|
||||
log.info "Found " + this.pluginsToDeploy.size() + " Plugins To Deploy."
|
||||
this.cleanup()
|
||||
this.deployPlugins()
|
||||
|
||||
// complete the esb deployment
|
||||
|
||||
// we need to determine the location of the build.edex project
|
||||
ProjectInformation projectInformation = this.projectInformationMap["build.edex"]
|
||||
if (projectInformation == null)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Unable to find project - build.edex")
|
||||
System.exit(-1)
|
||||
}
|
||||
final String esbDirectory = projectInformation.projectFullLocation + File.separator + "esb"
|
||||
|
||||
DeployESB.deploy(this.edexRootDirectory, esbDirectory, this.architecture)
|
||||
DeployESB.deployEdexConfiguration(this.edexRootDirectory, esbDirectory)
|
||||
if (this.deployPythonPackages)
|
||||
{
|
||||
DeployPythonPackages.deploy(this.pythonRootDirectory,
|
||||
this.projectInformationMap["pythonPackages"], this.pythonPackagesToDeploy)
|
||||
}
|
||||
if (this.localizationSitesToDeploy.length > 0)
|
||||
{
|
||||
for (String localizationSite : this.localizationSitesToDeploy)
|
||||
{
|
||||
String localizationProject = "localization." + localizationSite
|
||||
DeployEdexSiteLocalization.deploy(this.edexRootDirectory,
|
||||
this.projectInformationMap[localizationProject], localizationSite)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// remove the existing deployment
|
||||
private void cleanup()
|
||||
{
|
||||
// remove the contents of the edex lib directory (execluding native)
|
||||
log.info "Cleaning EDEX lib directory ..."
|
||||
final String EDEX_LIB_DIRECTORY = this.edexRootDirectory + File.separator + "lib"
|
||||
for (File file : new File(EDEX_LIB_DIRECTORY).listFiles())
|
||||
{
|
||||
if (file.getName() == "native")
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
file.deleteDir()
|
||||
}
|
||||
|
||||
// remove the shell scripts and the yajsw sub-directory from the edex bin directory
|
||||
log.info "Cleaning EDEX bin directory ..."
|
||||
final String EDEX_BIN_DIRECTORY = this.edexRootDirectory + File.separator + "bin"
|
||||
for (File file : new File(EDEX_BIN_DIRECTORY).listFiles())
|
||||
{
|
||||
if (file.getName() == "yajsw")
|
||||
{
|
||||
file.deleteDir()
|
||||
}
|
||||
|
||||
// we really should be checking the file extension here instead of just doing a
|
||||
// basic String comparison
|
||||
if (file.getName().endsWith(".sh") || file.getName() == "setup.env")
|
||||
{
|
||||
file.delete()
|
||||
}
|
||||
}
|
||||
|
||||
// remove the contents of the edex conf directory
|
||||
log.info "Cleaning EDEX conf directory ..."
|
||||
final String EDEX_CONF_DIRECTORY = this.edexRootDirectory + File.separator + "conf"
|
||||
for (File file : new File(EDEX_CONF_DIRECTORY).listFiles())
|
||||
{
|
||||
if (file.isDirectory())
|
||||
{
|
||||
file.deleteDir()
|
||||
}
|
||||
else
|
||||
{
|
||||
file.delete()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void deployPlugins()
|
||||
{
|
||||
// we will need ant to complete this
|
||||
AntBuilder ant = new AntBuilder()
|
||||
ant.project.getBuildListeners().firstElement().setMessageOutputLevel(0)
|
||||
|
||||
log.info "Deploying plugins ..."
|
||||
for (String plugin : this.pluginsToDeploy)
|
||||
{
|
||||
this.deployPlugin(plugin, ant)
|
||||
}
|
||||
}
|
||||
|
||||
// FOSS plugins are plugins that include jar files.
|
||||
private boolean isFOSSPlugin(ProjectInformation projectInformation)
|
||||
{
|
||||
final String jarSuffix = ".jar"
|
||||
// loop through the files in the plugin directory; true if a single
|
||||
// jar file is found.
|
||||
for (String pluginFile : new File(projectInformation.projectFullLocation).listFiles())
|
||||
{
|
||||
if (pluginFile.endsWith(".jar"))
|
||||
{
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
private void deployPlugin(String plugin, AntBuilder ant)
|
||||
{
|
||||
// first, attempt to find the plugin in the plugin map
|
||||
ProjectInformation projectInformation = this.projectInformationMap[plugin]
|
||||
if (projectInformation == null)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Unable to find plugin - " + plugin)
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
// next, attempt to access the build.properties file for the plugin
|
||||
final String PLUGIN_BUILD_PROPERTIES = projectInformation.projectFullLocation + File.separator +
|
||||
"build.properties"
|
||||
if (new File(PLUGIN_BUILD_PROPERTIES).exists() == false)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Unable to find the build.properties file for plugin - " + plugin)
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
log.info "Deploying plugin ... " + plugin
|
||||
|
||||
// read the plugin build.properties file
|
||||
BufferedReader br =
|
||||
new BufferedReader(new FileReader(PLUGIN_BUILD_PROPERTIES))
|
||||
Properties properties = new Properties()
|
||||
properties.load(br)
|
||||
|
||||
final String output = properties.getProperty("output..")
|
||||
final String binIncludes = properties.getProperty("bin.includes")
|
||||
|
||||
if (output == null)
|
||||
{
|
||||
// we will not be producing a jar file and are most likely deploying a FOSS plugin
|
||||
this.deployFOSSPlugin(projectInformation, binIncludes, ant)
|
||||
return
|
||||
}
|
||||
|
||||
// jar the plugin
|
||||
final String pluginJarName = plugin + ".jar"
|
||||
final String edexLibPlugins = this.edexRootDirectory + File.separator + "lib" + File.separator +
|
||||
"plugins"
|
||||
new File(edexLibPlugins).mkdirs()
|
||||
final String fullJarPath = edexLibPlugins + File.separator + pluginJarName
|
||||
|
||||
ant.jar( destfile : fullJarPath,
|
||||
manifest : projectInformation.projectFullLocation + File.separator + "META-INF" +
|
||||
File.separator + "MANIFEST.MF" )
|
||||
{
|
||||
fileset( dir : projectInformation.projectFullLocation + File.separator + output )
|
||||
}
|
||||
|
||||
// is the plugin FOSS?
|
||||
if (this.isFOSSPlugin(projectInformation))
|
||||
{
|
||||
this.deployFOSSPlugin(projectInformation, binIncludes, ant)
|
||||
return
|
||||
}
|
||||
|
||||
// finish the plugin based on build.properties
|
||||
for (String binInclude : binIncludes.split(","))
|
||||
{
|
||||
binInclude = binInclude.trim()
|
||||
if (binInclude == ".")
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
// ensure that the artifact exists
|
||||
final String artifact = projectInformation.projectFullLocation + File.separator + binInclude
|
||||
if (new File(artifact).exists() == false)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
artifact + " specified in build.properties for plugin " + projectInformation.project + " was not found")
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
// add the artifact to the jar
|
||||
if (new File(artifact).isDirectory())
|
||||
{
|
||||
ant.jar( destfile : fullJarPath,
|
||||
update : true )
|
||||
{
|
||||
fileset( dir : projectInformation.projectFullLocation,
|
||||
includes : binInclude )
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ant.jar( destfile : fullJarPath,
|
||||
update : true )
|
||||
{
|
||||
fileset( file : artifact )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// run "custom" deployment steps
|
||||
for (IPluginCustomDeployer pluginCustomDeployer : this.customPluginDeployers)
|
||||
{
|
||||
pluginCustomDeployer.deploy(this.edexRootDirectory, projectInformation.project,
|
||||
projectInformation.projectFullLocation)
|
||||
}
|
||||
}
|
||||
|
||||
private void deployFOSSPlugin(ProjectInformation projectInformation, String binIncludes, AntBuilder ant)
|
||||
{
|
||||
final String edexLibDependencies = this.edexRootDirectory + File.separator + "lib" + File.separator +
|
||||
"dependencies" + File.separator + projectInformation.project
|
||||
// create the destination directory
|
||||
new File(edexLibDependencies).mkdirs()
|
||||
|
||||
for (String binInclude : binIncludes.split(","))
|
||||
{
|
||||
binInclude = binInclude.trim()
|
||||
if (binInclude == ".")
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
// ensure that the artifact exists
|
||||
final String artifact = projectInformation.projectFullLocation + File.separator + binInclude
|
||||
if (new File(artifact).exists() == false)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
artifact + " specified in build.properties for plugin " + projectInformation.project + " was not found")
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
if (new File(artifact).isDirectory())
|
||||
{
|
||||
ant.copy( todir : edexLibDependencies )
|
||||
{
|
||||
fileset( dir : artifact )
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ant.copy( todir : edexLibDependencies, file : artifact )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void buildPluginList(String featureName)
|
||||
{
|
||||
if (this.featuresDeployed.contains(featureName))
|
||||
{
|
||||
log.log(java.util.logging.Level.WARNING,
|
||||
"Feature " + featureName + " has been included more than once; skipping the duplicate.")
|
||||
return
|
||||
}
|
||||
log.info "Analyzing feature ... " + featureName
|
||||
|
||||
// first, attempt to find the feature in the project map
|
||||
ProjectInformation projectInformation = this.projectInformationMap[featureName]
|
||||
// verify that the feature exists
|
||||
if (projectInformation == null)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Unable to find the specified feature - " + featureName)
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
final String featureFullPath = projectInformation.projectFullLocation + File.separator + "feature.xml"
|
||||
// verify that the feature exists
|
||||
if (new File(featureFullPath).exists() == false)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Unable to find the specified feature - " + featureName + "; '" + featureFullPath + "' does not exist")
|
||||
System.exit(-1)
|
||||
}
|
||||
|
||||
Feature feature = FeatureParser.parseFeature(featureFullPath, featureName)
|
||||
// first, process any features that the feature includes
|
||||
for (String featureInclude : feature.getIncludes())
|
||||
{
|
||||
this.buildPluginList(featureInclude)
|
||||
}
|
||||
|
||||
// should we also check dependencies?
|
||||
|
||||
// complete an initial analysis of the plugins that we will be deploying
|
||||
for (String plugin : feature.getPlugins())
|
||||
{
|
||||
final String featureWithPlugin = this.pluginToFeatureMap[plugin]
|
||||
if (featureWithPlugin == null)
|
||||
{
|
||||
// we have not seen this plugin yet
|
||||
this.pluginToFeatureMap[plugin] = featureName
|
||||
}
|
||||
else
|
||||
{
|
||||
// we have seen this plugin before, verify that the plugin
|
||||
// is not in more than one feature
|
||||
if (featureWithPlugin != featureName)
|
||||
{
|
||||
log.log(java.util.logging.Level.SEVERE,
|
||||
"Plugin is listed in more than one feature - " + featureWithPlugin + " AND " + featureName)
|
||||
}
|
||||
}
|
||||
|
||||
if (this.pluginsToDeploy.contains(plugin) == false)
|
||||
{
|
||||
this.pluginsToDeploy.add(plugin)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void init(final String workspaceDirectory)
|
||||
{
|
||||
this.edexFeaturesToDeploy = new ArrayList<String>()
|
||||
final String metadataProjectsDirectory = workspaceDirectory + File.separator +
|
||||
".metadata" + File.separator + ".plugins" + File.separator + "org.eclipse.core.resources" +
|
||||
File.separator + ".projects"
|
||||
|
||||
for (String project : new File(metadataProjectsDirectory).list())
|
||||
{
|
||||
// determine if the project is an EDEX feature.
|
||||
Matcher matcher = EDEX_FEATURE_PATTERN.matcher(project)
|
||||
if (matcher.matches() || project == COMMON_BASE_FEATURE)
|
||||
{
|
||||
// this is an EDEX feature.
|
||||
if (blacklistedEdexFeatures.contains(project) == false)
|
||||
{
|
||||
this.edexFeaturesToDeploy.add(project)
|
||||
log.log(java.util.logging.Level.INFO, 'Found EDEX Feature: ' + project)
|
||||
}
|
||||
}
|
||||
|
||||
final String expectedLocationFile = metadataProjectsDirectory +
|
||||
File.separator + project + File.separator + ".location"
|
||||
if (new File(expectedLocationFile).exists())
|
||||
{
|
||||
this.catalogProject(expectedLocationFile)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* previously this was dynamically loaded via spring. However, spring
|
||||
* was removed from groovy.
|
||||
*/
|
||||
this.customPluginDeployers = new ArrayList<IPluginCustomDeployer>()
|
||||
this.customPluginDeployers.add(new DeployWeb())
|
||||
this.customPluginDeployers.add(new DeployEdexLocalization())
|
||||
this.customPluginDeployers.add(new DeployEdexResources())
|
||||
this.customPluginDeployers.add(new CustomDeploymentRunner())
|
||||
this.customPluginDeployers.add(new DeployModes())
|
||||
}
|
||||
|
||||
private void catalogProject(String locationFile)
|
||||
{
|
||||
byte[] contents = new File(locationFile).getBytes()
|
||||
final String FILE_ = "file:"
|
||||
|
||||
StringBuilder stringBuilder = new StringBuilder()
|
||||
boolean buildLocationString = false
|
||||
|
||||
for (int i = 0; i < contents.length; i++)
|
||||
{
|
||||
if (contents[i] < 0 || contents[i] > 127)
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
if (buildLocationString)
|
||||
{
|
||||
if (contents[i] == 0)
|
||||
{
|
||||
// the end of the file path (ideally).
|
||||
break
|
||||
}
|
||||
char c = (char) contents[i]
|
||||
stringBuilder.append(c)
|
||||
}
|
||||
else
|
||||
{
|
||||
// first: we want to find the letter 'f'
|
||||
char c = (char) contents[i]
|
||||
if ( c == 'f')
|
||||
{
|
||||
stringBuilder.append(c)
|
||||
// we have found 'f'; determine if we have found "file:"
|
||||
int counter = 0
|
||||
while (counter < 4)
|
||||
{
|
||||
++i
|
||||
c = (char) contents[i]
|
||||
stringBuilder.append(c)
|
||||
++counter
|
||||
}
|
||||
|
||||
if (FILE_ == stringBuilder.toString())
|
||||
{
|
||||
buildLocationString = true
|
||||
}
|
||||
|
||||
stringBuilder = new StringBuilder()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String projectLocationString = stringBuilder.toString()
|
||||
// get the .project file
|
||||
File projectMetadataFile =
|
||||
new File(projectLocationString + File.separator + ".project")
|
||||
// ensure that the project metadata file actually exists
|
||||
if (projectMetadataFile.exists() == false)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
// read the file
|
||||
def projectMetadataXML = new XmlSlurper().parse(projectMetadataFile)
|
||||
// extract the plugin name (as Eclipse sees it)
|
||||
final String projectName = projectMetadataXML.name
|
||||
|
||||
ProjectInformation projectInformation = new ProjectInformation()
|
||||
projectInformation.project = projectName
|
||||
projectInformation.projectDirectory = new File(projectLocationString).getName()
|
||||
projectInformation.projectFullLocation = projectLocationString
|
||||
|
||||
this.projectInformationMap[projectName] = projectInformation
|
||||
}
|
||||
}
|
||||
|
||||
DeployInstall deployInstall =
|
||||
new DeployInstall(args[0], args[1], Boolean.parseBoolean(args[2]),
|
||||
args[3], args[4], args[5], args[6])
|
||||
deployInstall.deploy()
|
79
build/deploy.edex/deploy-install.xml
Normal file
79
build/deploy.edex/deploy-install.xml
Normal file
|
@ -0,0 +1,79 @@
|
|||
<project default="main" basedir=".">
|
||||
<property name="localization.sites" value="" />
|
||||
<property name="deploy.python" value="true" />
|
||||
<!--
|
||||
The python packages to deploy - provided that
|
||||
deploy.python is true
|
||||
-->
|
||||
<property name="python.packages"
|
||||
value="pypies:ufpy:dynamicserialize" />
|
||||
<!-- EDEX root directory - defaults to /awips2/edex -->
|
||||
<property name="edex.root" value="/awips2/edex" />
|
||||
<!-- Python root directory - defaults to /awips2/python -->
|
||||
<property name="python.root" value="/awips2/python" />
|
||||
<!--
|
||||
if groovy.path is not manually set, groovy must be
|
||||
on the PATH.
|
||||
-->
|
||||
<property name="groovy.path" value="" />
|
||||
<property name="architecture" value="x86_64" />
|
||||
|
||||
<condition property="requiredPropertiesSet">
|
||||
<and>
|
||||
<isset property="workspace_loc" />
|
||||
</and>
|
||||
</condition>
|
||||
|
||||
<available property="groovyPathSet"
|
||||
file="${groovy.path}/groovy" type="file" />
|
||||
|
||||
<target name="main">
|
||||
<antcall target="usage" />
|
||||
<antcall target="deploy-using-specific-groovy" />
|
||||
<antcall target="deploy-using-environment-groovy" />
|
||||
</target>
|
||||
|
||||
<target name="usage" unless="${requiredPropertiesSet}">
|
||||
<echo message="Usage: the following parameters are available when running deploy-install.xml." />
|
||||
<echo message="REQUIRED PARAMETERS:" />
|
||||
<echo message=" -Dworkspace_loc the location of the Eclipse workspace; use the 'workspace_loc' variable provided by Eclipse" />
|
||||
<echo message="OPTIONAL PARAMETERS:" />
|
||||
<echo message=" -Dlocalization.sites a colon delimited list of sites to deploy localization for" />
|
||||
<echo message=" -Dedex.root the root of the EDEX installation; defaults to /awips2/edex" />
|
||||
<echo message=" -Ddeploy.python a boolean value {true, false} indicating if python should be deployed" />
|
||||
<echo message=" -Dpython.root the root of the python installation; defaults to /awips2/python" />
|
||||
<echo message=" -Dpython.packages a colon delimited list of python packages to deploy; defaults to pypies:ufpy:dynamicserialize" />
|
||||
<echo message=" -Darchitecture used to override the deployment architecture; use one of: {x86_64, x86}." />
|
||||
|
||||
<fail message="All required parameters have not been specified. Refer to the usage message above." />
|
||||
</target>
|
||||
|
||||
<target name="deploy-using-specific-groovy" if="${groovyPathSet}">
|
||||
<deploy
|
||||
groovy.executable="${groovy.path}/groovy" />
|
||||
</target>
|
||||
|
||||
<target name="deploy-using-environment-groovy" unless="${groovyPathSet}">
|
||||
<deploy
|
||||
groovy.executable="groovy" />
|
||||
</target>
|
||||
|
||||
<macrodef name="deploy">
|
||||
<attribute name="groovy.executable" />
|
||||
|
||||
<sequential>
|
||||
<exec executable="@{groovy.executable}">
|
||||
<arg value="-cp" />
|
||||
<arg value="${basedir}${path.separator}${basedir}/../build.core" />
|
||||
<arg value="${basedir}/RunDeployInstall.groovy" />
|
||||
<arg value="${workspace_loc}" />
|
||||
<arg value="${localization.sites}" />
|
||||
<arg value="${deploy.python}" />
|
||||
<arg value="${edex.root}" />
|
||||
<arg value="${python.root}" />
|
||||
<arg value="${python.packages}" />
|
||||
<arg value="${architecture}" />
|
||||
</exec>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
</project>
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||
|
||||
<bean id="customPluginDeployersList" class="java.util.ArrayList">
|
||||
<constructor-arg>
|
||||
<list>
|
||||
<ref bean="customLocalizationDeploy" />
|
||||
<ref bean="customResourcesDeploy" />
|
||||
<ref bean="customWebDeploy" />
|
||||
<ref bean="customDeploymentRunner" />
|
||||
</list>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<bean id="customWebDeploy" class="DeployWeb" />
|
||||
<bean id="customLocalizationDeploy" class="DeployEdexLocalization" />
|
||||
<bean id="customResourcesDeploy" class="DeployEdexResources" />
|
||||
<bean id="customDeploymentRunner" class="CustomDeploymentRunner" />
|
||||
</beans>
|
|
@ -3,8 +3,6 @@ package com.raytheon.uf.viz.collaboration.ui;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.swing.plaf.synth.ColorType;
|
||||
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
|
||||
import com.raytheon.uf.common.localization.IPathManager;
|
||||
|
@ -19,7 +17,7 @@ import com.raytheon.uf.common.serialization.SingleTypeJAXBManager;
|
|||
import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
||||
|
||||
/**
|
||||
* Abstract class collaboration chat coloring configuration managers
|
||||
* Abstract class for collaboration chat coloring configuration managers
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -28,6 +26,7 @@ import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 13, 2014 3709 mapeters Initial creation.
|
||||
* Dec 09, 2014 3709 mapeters setColors() sets foreground and background together.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -40,19 +39,16 @@ public abstract class AbstractColorConfigManager {
|
|||
.createWithoutException(ColorInfoMap.class);
|
||||
|
||||
/**
|
||||
* Set and store the color type of the given user/site to be the given rgb
|
||||
* at the given file location. If creating new {@link ColorInfo} and setting
|
||||
* background, set foreground to defaultForeground to prevent it from
|
||||
* incorrectly defaulting.
|
||||
* Set and store the given foreground and background colors for the given
|
||||
* user/site at the given file location.
|
||||
*
|
||||
* @param key
|
||||
* @param type
|
||||
* @param rgb
|
||||
* @param defaultForeground
|
||||
* @param foreground
|
||||
* @param background
|
||||
* @param filePath
|
||||
*/
|
||||
protected void setColor(String key, ColorType type, RGB rgb,
|
||||
RGB defaultForeground, String filePath) {
|
||||
protected void setColors(String key, RGB foreground, RGB background,
|
||||
String filePath) {
|
||||
ColorInfoMap colorInfoMap = this.getColorInfoMap();
|
||||
if (colorInfoMap == null) {
|
||||
colorInfoMap = new ColorInfoMap();
|
||||
|
@ -66,11 +62,11 @@ public abstract class AbstractColorConfigManager {
|
|||
|
||||
ColorInfo colorInfo = colors.get(key);
|
||||
if (colorInfo != null) {
|
||||
colorInfo.setColor(type, rgb, defaultForeground);
|
||||
colorInfo.setColors(foreground, background);
|
||||
} else {
|
||||
ColorInfo color = new ColorInfo();
|
||||
color.setColor(type, rgb, defaultForeground);
|
||||
colors.put(key, color);
|
||||
ColorInfo newColorInfo = new ColorInfo();
|
||||
newColorInfo.setColors(foreground, background);
|
||||
colors.put(key, newColorInfo);
|
||||
}
|
||||
|
||||
IPathManager pathMgr = PathManagerFactory.getPathManager();
|
||||
|
@ -124,8 +120,7 @@ public abstract class AbstractColorConfigManager {
|
|||
return null;
|
||||
}
|
||||
|
||||
public abstract void setColor(String key, ColorType type, RGB rgb,
|
||||
RGB defaultForeground);
|
||||
public abstract void setColors(String key, RGB foreground, RGB background);
|
||||
|
||||
public abstract ColorInfo getColor(String key);
|
||||
|
||||
|
|
|
@ -104,6 +104,7 @@ import com.raytheon.uf.viz.collaboration.ui.actions.ChangeRoleAction;
|
|||
import com.raytheon.uf.viz.collaboration.ui.actions.ChangeSiteAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.ChangeStatusAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.ChangeStatusMessageAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.ChangeTextColorAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.CreateSessionAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.DeleteGroupAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.DisplayFeedAction;
|
||||
|
@ -162,6 +163,7 @@ import com.raytheon.viz.ui.views.CaveWorkbenchPageManager;
|
|||
* Oct 08, 2014 3705 bclement added room search and bookmarking
|
||||
* Oct 14, 2014 3709 mapeters Added change background/foreground color actions to menu.
|
||||
* Nov 14, 2014 3709 mapeters Removed change background/foreground color actions from menu.
|
||||
* Dec 08, 2014 3709 mapeters Added MB3 change user text color actions to contacts list.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -363,7 +365,7 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
|||
mgr.add(roomSearchAction);
|
||||
mgr.add(new Separator());
|
||||
mgr.add(new ChangeFontAction());
|
||||
mgr.add(new Separator());
|
||||
mgr.add(new Separator("afterFont"));
|
||||
mgr.add(new ChangeStatusAction());
|
||||
mgr.add(new ChangeStatusMessageAction());
|
||||
mgr.add(new ChangePasswordAction());
|
||||
|
@ -461,6 +463,9 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
|||
manager.add(new SendSubReqAction(entry));
|
||||
}
|
||||
manager.add(new AddNotifierAction(this));
|
||||
manager.add(new Separator());
|
||||
manager.add(new ChangeTextColorAction(user.getName(), false, false,
|
||||
null, new UserColorConfigManager()));
|
||||
} else if (o instanceof UserId) {
|
||||
// the user
|
||||
UserId user = (UserId) o;
|
||||
|
@ -469,6 +474,9 @@ public class CollaborationGroupView extends CaveFloatingView implements
|
|||
UserId me = connection.getUser();
|
||||
if (me.isSameUser(user)) {
|
||||
createMenu(manager);
|
||||
manager.insertBefore("afterFont", new ChangeTextColorAction(
|
||||
user.getName(), true, true, null,
|
||||
new UserColorConfigManager()));
|
||||
}
|
||||
} else if (o instanceof RosterGroup || o instanceof SharedGroup) {
|
||||
Action inviteAction = new InviteAction(getSelectedUsers());
|
||||
|
|
|
@ -21,13 +21,13 @@ package com.raytheon.uf.viz.collaboration.ui;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.swing.plaf.synth.ColorType;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
|
||||
/**
|
||||
|
@ -37,10 +37,12 @@ import org.eclipse.swt.graphics.RGB;
|
|||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 13, 2014 3709 mapeters Initial creation.
|
||||
* Nov 26, 2014 3709 mapeters Renamed from UserColorInformation, added fgSet getter.
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 13, 2014 3709 mapeters Initial creation.
|
||||
* Nov 26, 2014 3709 mapeters Renamed from UserColorInformation, added fgSet getter.
|
||||
* Dec 08, 2014 3709 mapeters Removed fgSet and individual colors' getters/setters,
|
||||
* set foreground and background together.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -72,12 +74,6 @@ public class ColorInfoMap {
|
|||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public static class ColorInfo {
|
||||
|
||||
/**
|
||||
* tells {@link #setColor()} when to use defaultForeground
|
||||
*/
|
||||
@XmlAttribute
|
||||
private boolean fgSet;
|
||||
|
||||
@XmlAttribute
|
||||
private int fgRed;
|
||||
|
||||
|
@ -87,90 +83,24 @@ public class ColorInfoMap {
|
|||
@XmlAttribute
|
||||
private int fgBlue;
|
||||
|
||||
/**
|
||||
* background should default to white
|
||||
*/
|
||||
@XmlAttribute
|
||||
private int bgRed = 255;
|
||||
private int bgRed;
|
||||
|
||||
@XmlAttribute
|
||||
private int bgGreen = 255;
|
||||
private int bgGreen;
|
||||
|
||||
@XmlAttribute
|
||||
private int bgBlue = 255;
|
||||
private int bgBlue;
|
||||
|
||||
public ColorInfo() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type
|
||||
* @return the red
|
||||
*/
|
||||
public int getRed(ColorType type) {
|
||||
return type == ColorType.FOREGROUND ? fgRed : bgRed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type
|
||||
* @param red
|
||||
* the red to set
|
||||
*/
|
||||
public void setRed(ColorType type, int red) {
|
||||
if (type == ColorType.FOREGROUND) {
|
||||
this.fgRed = red;
|
||||
} else {
|
||||
this.bgRed = red;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type
|
||||
* @return the green
|
||||
*/
|
||||
public int getGreen(ColorType type) {
|
||||
return type == ColorType.FOREGROUND ? fgGreen : bgGreen;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type
|
||||
* @param green
|
||||
* the green to set
|
||||
*/
|
||||
public void setGreen(ColorType type, int green) {
|
||||
if (type == ColorType.FOREGROUND) {
|
||||
this.fgGreen = green;
|
||||
} else {
|
||||
this.bgGreen = green;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type
|
||||
* @return the blue
|
||||
*/
|
||||
public int getBlue(ColorType type) {
|
||||
return type == ColorType.FOREGROUND ? fgBlue : bgBlue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type
|
||||
* @param blue
|
||||
* the blue to set
|
||||
*/
|
||||
public void setBlue(ColorType type, int blue) {
|
||||
if (type == ColorType.FOREGROUND) {
|
||||
this.fgBlue = blue;
|
||||
} else {
|
||||
this.bgBlue = blue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param type
|
||||
* @return the RGB color of the given type
|
||||
*/
|
||||
public RGB getColor(ColorType type) {
|
||||
if (type == ColorType.FOREGROUND) {
|
||||
public RGB getColor(int type) {
|
||||
if (type == SWT.FOREGROUND) {
|
||||
return new RGB(fgRed, fgGreen, fgBlue);
|
||||
} else {
|
||||
return new RGB(bgRed, bgGreen, bgBlue);
|
||||
|
@ -178,38 +108,17 @@ public class ColorInfoMap {
|
|||
}
|
||||
|
||||
/**
|
||||
* Set the color of the given type to the given rgb
|
||||
*
|
||||
* @param type
|
||||
* @param rgb
|
||||
* @param defaultForeground
|
||||
* @param fg
|
||||
* @param bg
|
||||
*/
|
||||
public void setColor(ColorType type, RGB rgb, RGB defaultForeground) {
|
||||
if (type == ColorType.FOREGROUND) {
|
||||
fgRed = rgb.red;
|
||||
fgGreen = rgb.green;
|
||||
fgBlue = rgb.blue;
|
||||
fgSet = true;
|
||||
} else {
|
||||
bgRed = rgb.red;
|
||||
bgGreen = rgb.green;
|
||||
bgBlue = rgb.blue;
|
||||
if (!fgSet) {
|
||||
/*
|
||||
* if creating new UserColor, set fgColor to default
|
||||
* foreground color, otherwise it defaults to black
|
||||
*/
|
||||
setColor(ColorType.FOREGROUND, defaultForeground, null);
|
||||
fgSet = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
public void setColors(RGB fg, RGB bg) {
|
||||
fgRed = fg.red;
|
||||
fgGreen = fg.green;
|
||||
fgBlue = fg.blue;
|
||||
bgRed = bg.red;
|
||||
bgGreen = bg.green;
|
||||
bgBlue = bg.blue;
|
||||
|
||||
/**
|
||||
* @return whether the foreground has been set
|
||||
*/
|
||||
public boolean isForegroundSet() {
|
||||
return fgSet;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.collaboration.ui;
|
||||
|
||||
import javax.swing.plaf.synth.ColorType;
|
||||
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
|
||||
import com.raytheon.uf.common.localization.IPathManager;
|
||||
|
@ -39,6 +37,7 @@ import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
|||
* Oct 10, 2014 3708 bclement Moved color methods from SiteConfigurationManager
|
||||
* Nov 26, 2014 3709 mapeters Abstracted out code to {@link AbstractColorConfigManager},
|
||||
* renamed from SiteColorConfigManager.
|
||||
* Dec 08, 2014 3709 mapeters Set foreground and background colors together.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -53,17 +52,16 @@ public class FeedColorConfigManager extends AbstractColorConfigManager {
|
|||
private static ColorInfoMap colorInfoMap;
|
||||
|
||||
/**
|
||||
* Set and store the color type of the given site to be the given rgb.
|
||||
* Set and store the given colors for the given site.
|
||||
*
|
||||
* @param site
|
||||
* @param type
|
||||
* @param rgb
|
||||
* @param defaultForeground
|
||||
* @param foreground
|
||||
* @param background
|
||||
*/
|
||||
@Override
|
||||
public synchronized void setColor(String site,
|
||||
ColorType type, RGB rgb, RGB defaultForeground) {
|
||||
super.setColor(site, type, rgb, defaultForeground, FILE_PATH);
|
||||
public synchronized void setColors(String site, RGB foreground,
|
||||
RGB background) {
|
||||
super.setColors(site, foreground, background, FILE_PATH);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,291 @@
|
|||
/**
|
||||
* 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.collaboration.ui;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
import org.eclipse.swt.events.SelectionEvent;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.Font;
|
||||
import org.eclipse.swt.graphics.FontData;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.layout.GridData;
|
||||
import org.eclipse.swt.layout.GridLayout;
|
||||
import org.eclipse.swt.widgets.Button;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
import org.eclipse.swt.widgets.Layout;
|
||||
import org.eclipse.swt.widgets.Shell;
|
||||
|
||||
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||
import com.raytheon.viz.ui.dialogs.colordialog.ColorWheelComp;
|
||||
import com.raytheon.viz.ui.dialogs.colordialog.IColorWheelChange;
|
||||
|
||||
/**
|
||||
* A dialog that displays a label with settable foreground and background colors
|
||||
* using a color control.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 4, 2014 3709 lvenable Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
* @version 1.0
|
||||
*/
|
||||
public class ForegroundBackgroundColorDlg extends CaveSWTDialog implements
|
||||
IColorWheelChange {
|
||||
|
||||
/** Color wheel composite. */
|
||||
private ColorWheelComp colorWheelComp;
|
||||
|
||||
/** Foreground color. */
|
||||
private Color foregroundClr = null;
|
||||
|
||||
/** Background color. */
|
||||
private Color backgroundClr = null;
|
||||
|
||||
/** Foreground/Background label control. */
|
||||
private Label fgbgLabel = null;
|
||||
|
||||
/** Fond for the foreground/background label. */
|
||||
private Font labelFont = null;
|
||||
|
||||
private Button foregroundRdo;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param parentShell
|
||||
* Parent shell.
|
||||
*/
|
||||
public ForegroundBackgroundColorDlg(Shell parentShell) {
|
||||
this(parentShell, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param parentShell
|
||||
* Parent shell.
|
||||
* @param fgRGB
|
||||
* Foreground RGB.
|
||||
* @param bgRGB
|
||||
* Background RGB.
|
||||
*/
|
||||
public ForegroundBackgroundColorDlg(Shell parentShell, RGB fgRGB, RGB bgRGB) {
|
||||
super(parentShell, SWT.DIALOG_TRIM | SWT.MIN, CAVE.DO_NOT_BLOCK
|
||||
| CAVE.PERSPECTIVE_INDEPENDENT);
|
||||
setText("Foreground/Background Color Chooser");
|
||||
|
||||
/*
|
||||
* If the foreground RGB is null then set it to a blue color.
|
||||
*/
|
||||
if (fgRGB == null) {
|
||||
foregroundClr = new Color(parentShell.getDisplay(), new RGB(0, 0,
|
||||
255));
|
||||
} else {
|
||||
foregroundClr = new Color(parentShell.getDisplay(), fgRGB);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the background RGB is null then set it to a white color.
|
||||
*/
|
||||
if (bgRGB == null) {
|
||||
backgroundClr = new Color(parentShell.getDisplay(), new RGB(255,
|
||||
255, 255));
|
||||
} else {
|
||||
backgroundClr = new Color(parentShell.getDisplay(), bgRGB);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Layout constructShellLayout() {
|
||||
GridLayout mainLayout = new GridLayout(1, false);
|
||||
mainLayout.verticalSpacing = 3;
|
||||
return mainLayout;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object constructShellLayoutData() {
|
||||
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||
return gd;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void disposed() {
|
||||
if (foregroundClr != null) {
|
||||
foregroundClr.dispose();
|
||||
}
|
||||
|
||||
if (backgroundClr != null) {
|
||||
backgroundClr.dispose();
|
||||
}
|
||||
|
||||
if (labelFont != null) {
|
||||
labelFont.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initializeComponents(Shell shell) {
|
||||
createColorWheelControl();
|
||||
createColorControls();
|
||||
addSeparator();
|
||||
createBottomButtons();
|
||||
|
||||
colorWheelComp.setColor(foregroundClr.getRGB());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the color wheel controls.
|
||||
*/
|
||||
private void createColorWheelControl() {
|
||||
colorWheelComp = new ColorWheelComp(shell, this, " Color Chooser: ",
|
||||
true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the color controls.
|
||||
*/
|
||||
private void createColorControls() {
|
||||
Composite colorControlComp = new Composite(shell, SWT.NONE);
|
||||
colorControlComp.setLayout(new GridLayout(3, false));
|
||||
colorControlComp.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT,
|
||||
true, false));
|
||||
|
||||
/*
|
||||
* Foreground/background radio buttons.
|
||||
*/
|
||||
foregroundRdo = new Button(colorControlComp, SWT.RADIO);
|
||||
foregroundRdo.setText("Foreground Color");
|
||||
foregroundRdo.setSelection(true);
|
||||
foregroundRdo.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
colorWheelComp.setColor(foregroundClr.getRGB());
|
||||
}
|
||||
});
|
||||
|
||||
GridData gd = new GridData();
|
||||
gd.horizontalIndent = 13;
|
||||
Button backgroundRdo = new Button(colorControlComp, SWT.RADIO);
|
||||
backgroundRdo.setText("Background Color");
|
||||
backgroundRdo.setLayoutData(gd);
|
||||
backgroundRdo.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
colorWheelComp.setColor(backgroundClr.getRGB());
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Label displaying the foreground/background colors.
|
||||
*/
|
||||
gd = new GridData();
|
||||
gd.horizontalIndent = 13;
|
||||
fgbgLabel = new Label(colorControlComp, SWT.BORDER);
|
||||
FontData fd = fgbgLabel.getFont().getFontData()[0];
|
||||
fd.setHeight(16);
|
||||
fd.setStyle(SWT.BOLD);
|
||||
labelFont = new Font(getDisplay(), fd);
|
||||
fgbgLabel.setFont(labelFont);
|
||||
fgbgLabel.setText(" Sample Text ");
|
||||
fgbgLabel.setLayoutData(gd);
|
||||
|
||||
fgbgLabel.setForeground(foregroundClr);
|
||||
fgbgLabel.setBackground(backgroundClr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the bottom OK/Cancel buttons.
|
||||
*/
|
||||
private void createBottomButtons() {
|
||||
Composite buttonComp = new Composite(shell, SWT.NONE);
|
||||
buttonComp.setLayout(new GridLayout(2, false));
|
||||
buttonComp.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true,
|
||||
false));
|
||||
|
||||
int buttonWidth = 70;
|
||||
|
||||
GridData gd = new GridData(SWT.RIGHT, SWT.DEFAULT, true, false);
|
||||
gd.widthHint = buttonWidth;
|
||||
Button okBtn = new Button(buttonComp, SWT.PUSH);
|
||||
okBtn.setText(" OK ");
|
||||
okBtn.setLayoutData(gd);
|
||||
okBtn.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
RGB[] rgbArray = new RGB[] { foregroundClr.getRGB(),
|
||||
backgroundClr.getRGB() };
|
||||
setReturnValue(rgbArray);
|
||||
close();
|
||||
}
|
||||
});
|
||||
|
||||
gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
|
||||
gd.widthHint = buttonWidth;
|
||||
Button cancelBtn = new Button(buttonComp, SWT.PUSH);
|
||||
cancelBtn.setText(" Cancel ");
|
||||
cancelBtn.setLayoutData(gd);
|
||||
cancelBtn.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
setReturnValue(null);
|
||||
close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a separator line to the dialog.
|
||||
*/
|
||||
private void addSeparator() {
|
||||
GridData gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
|
||||
Label sepLbl = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
|
||||
sepLbl.setLayoutData(gd);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.ui.dialogs.colordialog.IColorWheelChange#colorChange
|
||||
* (org.eclipse.swt.graphics.RGB, java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void colorChange(RGB rgb, String colorWheelTitle) {
|
||||
if (foregroundRdo.getSelection()) {
|
||||
foregroundClr.dispose();
|
||||
foregroundClr = new Color(getDisplay(), rgb);
|
||||
fgbgLabel.setForeground(foregroundClr);
|
||||
} else {
|
||||
backgroundClr.dispose();
|
||||
backgroundClr = new Color(getDisplay(), rgb);
|
||||
fgbgLabel.setBackground(backgroundClr);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -19,8 +19,6 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.collaboration.ui;
|
||||
|
||||
import javax.swing.plaf.synth.ColorType;
|
||||
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
|
||||
import com.raytheon.uf.common.localization.IPathManager;
|
||||
|
@ -37,6 +35,7 @@ import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 13, 2014 3709 mapeters Initial creation.
|
||||
* Nov 26, 2014 3709 mapeters Abstracted out code to {@link AbstractColorConfigManager}.
|
||||
* Dec 08, 2014 3709 mapeters Set foreground and background colors together.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -51,17 +50,16 @@ public class UserColorConfigManager extends AbstractColorConfigManager {
|
|||
private static ColorInfoMap colorInfoMap;
|
||||
|
||||
/**
|
||||
* Set and store the color type of the given user to be the given rgb.
|
||||
* Set and store the given colors for the given user.
|
||||
*
|
||||
* @param user
|
||||
* @param type
|
||||
* @param rgb
|
||||
* @param defaultForeground
|
||||
* @param foreground
|
||||
* @param background
|
||||
*/
|
||||
@Override
|
||||
public synchronized void setColor(String user,
|
||||
ColorType type, RGB rgb, RGB defaultForeground) {
|
||||
super.setColor(user, type, rgb, defaultForeground, FILE_PATH);
|
||||
public synchronized void setColors(String user, RGB foreground,
|
||||
RGB background) {
|
||||
super.setColors(user, foreground, background, FILE_PATH);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,137 @@
|
|||
package com.raytheon.uf.viz.collaboration.ui.actions;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
**/
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
|
||||
import com.raytheon.uf.viz.collaboration.ui.AbstractColorConfigManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||
import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
||||
import com.raytheon.uf.viz.collaboration.ui.FeedColorConfigManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.ForegroundBackgroundColorDlg;
|
||||
import com.raytheon.uf.viz.collaboration.ui.UserColorConfigManager;
|
||||
import com.raytheon.uf.viz.core.icon.IconUtil;
|
||||
import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
||||
|
||||
/**
|
||||
* Action to change the foreground and background chat colors of a selected
|
||||
* user/site.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 12/02/14 3709 mapeters Initial creation.
|
||||
* 12/09/14 3709 mapeters Uses {@link ForegroundBackgroundColorDlg}, renamed from
|
||||
* ChangeUserColorAction, support both user and site colors.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mapeters
|
||||
* @version 1.0
|
||||
*/
|
||||
public class ChangeTextColorAction extends Action {
|
||||
|
||||
private final String key;
|
||||
|
||||
private RGB defaultForeground;
|
||||
|
||||
private AbstractColorConfigManager colorConfigManager;
|
||||
|
||||
/**
|
||||
* Constructor for changing user colors.
|
||||
*
|
||||
* @param user
|
||||
* @param me
|
||||
* @param displayName
|
||||
* @param defaultForeground
|
||||
* @param colorConfigManager
|
||||
*/
|
||||
public ChangeTextColorAction(String user, boolean me, boolean displayName,
|
||||
RGB defaultForeground, UserColorConfigManager colorConfigManager) {
|
||||
this("Change " + (displayName ? (me ? "Your" : (user + "'s")) : "User")
|
||||
+ " Text Colors...", user, defaultForeground,
|
||||
colorConfigManager);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for changing site colors.
|
||||
*
|
||||
* @param site
|
||||
* @param defaultForeground
|
||||
* @param colorConfigManager
|
||||
*/
|
||||
public ChangeTextColorAction(String site, RGB defaultForeground,
|
||||
FeedColorConfigManager colorConfigManager) {
|
||||
this("Change Site Text Colors...", site, defaultForeground,
|
||||
colorConfigManager);
|
||||
}
|
||||
|
||||
private ChangeTextColorAction(String text, String key,
|
||||
RGB defaultForeground, AbstractColorConfigManager colorConfigManager) {
|
||||
super(text, IconUtil.getImageDescriptor(Activator.getDefault()
|
||||
.getBundle(), "change_color.gif"));
|
||||
this.key = key;
|
||||
this.defaultForeground = defaultForeground;
|
||||
this.colorConfigManager = colorConfigManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
ColorInfo colorInfo = colorConfigManager.getColor(key);
|
||||
RGB background;
|
||||
RGB foreground;
|
||||
if (colorInfo != null) {
|
||||
background = colorInfo.getColor(SWT.BACKGROUND);
|
||||
foreground = colorInfo.getColor(SWT.FOREGROUND);
|
||||
} else {
|
||||
/*
|
||||
* Set dialog to display default colors (if defaultForeground is
|
||||
* null, ForegroundBackgroundColorDlg uses blue)
|
||||
*/
|
||||
background = new RGB(255, 255, 255);
|
||||
foreground = defaultForeground;
|
||||
}
|
||||
|
||||
ForegroundBackgroundColorDlg dialog = new ForegroundBackgroundColorDlg(
|
||||
Display.getCurrent().getActiveShell(), foreground, background);
|
||||
|
||||
dialog.setCloseCallback(new ICloseCallback() {
|
||||
|
||||
@Override
|
||||
public void dialogClosed(Object returnValue) {
|
||||
if (returnValue == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (returnValue instanceof RGB[]) {
|
||||
RGB[] colors = (RGB[]) returnValue;
|
||||
colorConfigManager.setColors(key, colors[0], colors[1]);
|
||||
}
|
||||
}
|
||||
});
|
||||
dialog.open();
|
||||
}
|
||||
}
|
|
@ -142,10 +142,9 @@ public class PeerToPeerChatAction extends Action {
|
|||
if (p2pView.getPeer() == null) {
|
||||
p2pView.setPeer(user);
|
||||
/*
|
||||
* add color change actions to P2P right click menu upon first
|
||||
* creation of P2P chat.
|
||||
* once peer is set, add action to change peer text colors
|
||||
*/
|
||||
p2pView.addChangeUserColorActions();
|
||||
p2pView.addChangePeerColorAction();
|
||||
}
|
||||
return p2pView;
|
||||
} catch (PartInitException e) {
|
||||
|
|
|
@ -98,6 +98,7 @@ import com.raytheon.viz.ui.views.CaveFloatingView;
|
|||
* Nov 14, 2014 3709 mapeters Changing foreground/background colors no longer
|
||||
* implemented here, added messagesTextMenuMgr.
|
||||
* Nov 26, 2014 3709 mapeters Added {@link #getColorFromRGB()}.
|
||||
* Dec 08, 2014 3709 mapeters Removed messagesTextMenuMgr.
|
||||
* </pre>
|
||||
*
|
||||
* @author rferrel
|
||||
|
@ -127,8 +128,6 @@ public abstract class AbstractSessionView<T extends IUser> extends
|
|||
/** Font used with the messagesText control. */
|
||||
private Font messagesTextFont;
|
||||
|
||||
protected MenuManager messagesTextMenuMgr;
|
||||
|
||||
private StyledText composeText;
|
||||
|
||||
protected SessionMsgArchive msgArchive;
|
||||
|
@ -230,9 +229,9 @@ public abstract class AbstractSessionView<T extends IUser> extends
|
|||
|
||||
// adding a menu item so that Paste can be found when clicking on the
|
||||
// composeText styledtext
|
||||
messagesTextMenuMgr = new MenuManager();
|
||||
messagesTextMenuMgr.add(new CopyTextAction(messagesText));
|
||||
Menu menu = messagesTextMenuMgr.createContextMenu(messagesText);
|
||||
MenuManager menuMgr = new MenuManager();
|
||||
menuMgr.add(new CopyTextAction(messagesText));
|
||||
Menu menu = menuMgr.createContextMenu(messagesText);
|
||||
messagesText.setMenu(menu);
|
||||
}
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@ import com.raytheon.viz.ui.input.EditableManager;
|
|||
* Apr 15, 2014 2822 bclement only allow transfer leader if participant is using shared display
|
||||
* May 05, 2014 3076 bclement added clear all action
|
||||
* Jun 30, 2014 1798 bclement added disableCurrentLayer()
|
||||
* Dev 02, 2014 3709 mapeters added {@link #initComponents()} override
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -234,6 +235,19 @@ public class CollaborationSessionView extends SessionView implements
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.collaboration.ui.session.SessionView#initComponents
|
||||
* (org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
@Override
|
||||
protected void initComponents(Composite parent) {
|
||||
enableUserColors = false;
|
||||
super.initComponents(parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createActions() {
|
||||
super.createActions();
|
||||
|
|
|
@ -24,10 +24,8 @@ import java.text.DateFormat;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.plaf.synth.ColorType;
|
||||
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.jface.action.IContributionItem;
|
||||
import org.eclipse.jface.action.IMenuManager;
|
||||
import org.eclipse.jface.action.ToolBarManager;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.custom.SashForm;
|
||||
|
@ -35,7 +33,6 @@ import org.eclipse.swt.custom.StyleRange;
|
|||
import org.eclipse.swt.custom.StyledText;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.ColorDialog;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.jivesoftware.smack.packet.Presence.Type;
|
||||
|
@ -52,13 +49,12 @@ import com.raytheon.uf.viz.collaboration.comm.provider.connection.CollaborationC
|
|||
import com.raytheon.uf.viz.collaboration.comm.provider.user.RosterItem;
|
||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
||||
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
|
||||
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||
import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
||||
import com.raytheon.uf.viz.collaboration.ui.UserColorConfigManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.ChangeTextColorAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.PrintLogActionContributionItem;
|
||||
import com.raytheon.uf.viz.collaboration.ui.notifier.NotifierTask;
|
||||
import com.raytheon.uf.viz.collaboration.ui.notifier.NotifierTools;
|
||||
import com.raytheon.uf.viz.core.icon.IconUtil;
|
||||
import com.raytheon.uf.viz.core.sounds.SoundUtil;
|
||||
|
||||
/**
|
||||
|
@ -78,6 +74,7 @@ import com.raytheon.uf.viz.core.sounds.SoundUtil;
|
|||
* Nov 14, 2014 3709 mapeters support foregound/background color
|
||||
* settings for each user
|
||||
* Nov 26, 2014 3709 mapeters add colorConfigManager, use parent's colors map
|
||||
* Dec 08, 2014 3709 mapeters move color change actions to menu bar.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -236,10 +233,8 @@ public class PeerToPeerView extends AbstractSessionView<IUser> implements
|
|||
ColorInfo userColor = colorConfigManager.getColor(userId
|
||||
.getName());
|
||||
if (userColor != null) {
|
||||
fgColor = getColorFromRGB(userColor
|
||||
.getColor(ColorType.FOREGROUND));
|
||||
bgColor = getColorFromRGB(userColor
|
||||
.getColor(ColorType.BACKGROUND));
|
||||
fgColor = getColorFromRGB(userColor.getColor(SWT.FOREGROUND));
|
||||
bgColor = getColorFromRGB(userColor.getColor(SWT.BACKGROUND));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -382,67 +377,32 @@ public class PeerToPeerView extends AbstractSessionView<IUser> implements
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createPartControl(Composite parent) {
|
||||
super.createPartControl(parent);
|
||||
createDropDownMenu();
|
||||
}
|
||||
|
||||
/**
|
||||
* add right-click menu options for changing foreground/background colors
|
||||
* for each user
|
||||
* Initialize drop-down menu with action to change user text colors.
|
||||
*/
|
||||
public void addChangeUserColorActions() {
|
||||
private void createDropDownMenu() {
|
||||
IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
|
||||
String myName = CollaborationConnection.getConnection().getUser()
|
||||
.getName();
|
||||
String peerName = peer.getName();
|
||||
messagesTextMenuMgr.add(new ChangeUserColorAction(ColorType.BACKGROUND,
|
||||
myName, true));
|
||||
messagesTextMenuMgr.add(new ChangeUserColorAction(ColorType.FOREGROUND,
|
||||
myName, true));
|
||||
messagesTextMenuMgr.add(new ChangeUserColorAction(ColorType.BACKGROUND,
|
||||
peerName, false));
|
||||
messagesTextMenuMgr.add(new ChangeUserColorAction(ColorType.FOREGROUND,
|
||||
peerName, false));
|
||||
RGB defaultUserForeground = DEFAULT_USER_FOREGROUND_COLOR.getRGB();
|
||||
mgr.add(new ChangeTextColorAction(myName, true, true,
|
||||
defaultUserForeground, colorConfigManager));
|
||||
}
|
||||
|
||||
/*
|
||||
* action for changing foreground/background color for a given user
|
||||
/**
|
||||
* Add action to change peer text colors to drop-down menu once peer is set.
|
||||
*/
|
||||
private class ChangeUserColorAction extends Action {
|
||||
|
||||
private ColorType type;
|
||||
|
||||
private String user;
|
||||
|
||||
private boolean me;
|
||||
|
||||
private ChangeUserColorAction(ColorType type, String user,
|
||||
boolean me) {
|
||||
super("Change " + (me ? "Your " : (user + "'s "))
|
||||
+ type.toString() + " Color...", IconUtil
|
||||
.getImageDescriptor(Activator.getDefault().getBundle(),
|
||||
"change_color.gif"));
|
||||
this.type = type;
|
||||
this.user = user;
|
||||
this.me = me;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
ColorDialog dialog = new ColorDialog(Display.getCurrent()
|
||||
.getActiveShell());
|
||||
RGB defaultForeground = me ? DEFAULT_USER_FOREGROUND_COLOR.getRGB()
|
||||
: DEFAULT_PEER_FOREGROUND_COLOR.getRGB();
|
||||
ColorInfo colorInfo = colorConfigManager.getColor(user);
|
||||
if (colorInfo != null) {
|
||||
dialog.setRGB(colorInfo.getColor(type));
|
||||
} else if (type == ColorType.FOREGROUND) {
|
||||
/*
|
||||
* set the dialog to display default foreground color as
|
||||
* currently selected
|
||||
*/
|
||||
dialog.setRGB(defaultForeground);
|
||||
}
|
||||
RGB rgb = dialog.open();
|
||||
if (rgb != null) {
|
||||
colorConfigManager.setColor(user, type, rgb,
|
||||
defaultForeground);
|
||||
}
|
||||
}
|
||||
public void addChangePeerColorAction() {
|
||||
IMenuManager mgr = getViewSite().getActionBars().getMenuManager();
|
||||
String peerName = peer.getName();
|
||||
RGB defaultPeerForeground = DEFAULT_PEER_FOREGROUND_COLOR.getRGB();
|
||||
mgr.add(new ChangeTextColorAction(peerName, false, true,
|
||||
defaultPeerForeground, colorConfigManager));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,8 +22,6 @@ package com.raytheon.uf.viz.collaboration.ui.session;
|
|||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import javax.swing.plaf.synth.ColorType;
|
||||
|
||||
import org.eclipse.jface.action.Action;
|
||||
import org.eclipse.jface.action.IMenuManager;
|
||||
import org.eclipse.jface.action.MenuManager;
|
||||
|
@ -34,9 +32,7 @@ import org.eclipse.swt.SWT;
|
|||
import org.eclipse.swt.custom.StyleRange;
|
||||
import org.eclipse.swt.graphics.Color;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.ColorDialog;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Display;
|
||||
import org.jivesoftware.smack.packet.Presence;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
|
@ -48,8 +44,8 @@ import com.raytheon.uf.viz.collaboration.ui.Activator;
|
|||
import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
||||
import com.raytheon.uf.viz.collaboration.ui.FeedColorConfigManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.SiteConfigurationManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.ChangeTextColorAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
|
||||
import com.raytheon.uf.viz.core.icon.IconUtil;
|
||||
|
||||
/**
|
||||
* Built for the session in which everyone joins
|
||||
|
@ -78,6 +74,7 @@ import com.raytheon.uf.viz.core.icon.IconUtil;
|
|||
* Apr 22, 2014 3038 bclement added initialized flag to differentiate between roster population and new joins
|
||||
* Oct 10, 2014 3708 bclement SiteConfigurationManager refactor
|
||||
* Nov 26, 2014 3709 mapeters support foreground/background color preferences for each site
|
||||
* Dec 08, 2014 3709 mapeters Removed ChangeSiteColorAction, uses {@link ChangeTextColorAction}.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -95,10 +92,6 @@ public class SessionFeedView extends SessionView {
|
|||
|
||||
private Action userRemoveSiteAction;
|
||||
|
||||
private Action bgColorChangeAction;
|
||||
|
||||
private Action fgColorChangeAction;
|
||||
|
||||
private static FeedColorConfigManager colorConfigManager;
|
||||
|
||||
private String actingSite;
|
||||
|
@ -129,6 +122,7 @@ public class SessionFeedView extends SessionView {
|
|||
*/
|
||||
@Override
|
||||
protected void initComponents(Composite parent) {
|
||||
enableUserColors = false;
|
||||
super.initComponents(parent);
|
||||
|
||||
colorConfigManager = new FeedColorConfigManager();
|
||||
|
@ -150,10 +144,6 @@ public class SessionFeedView extends SessionView {
|
|||
protected void createActions() {
|
||||
super.createActions();
|
||||
|
||||
bgColorChangeAction = new ChangeSiteColorAction(ColorType.BACKGROUND);
|
||||
|
||||
fgColorChangeAction = new ChangeSiteColorAction(ColorType.FOREGROUND);
|
||||
|
||||
autoJoinAction = new Action(CollabPrefConstants.AUTO_JOIN, SWT.TOGGLE) {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -208,9 +198,11 @@ public class SessionFeedView extends SessionView {
|
|||
@Override
|
||||
protected void fillContextMenu(IMenuManager manager) {
|
||||
super.fillContextMenu(manager);
|
||||
manager.add(bgColorChangeAction);
|
||||
manager.add(fgColorChangeAction);
|
||||
String site = getSelectedSite();
|
||||
RGB defaultForeground = colorManager
|
||||
.getColorForUser(getSelectedParticipant());
|
||||
manager.add(new ChangeTextColorAction(site, defaultForeground,
|
||||
colorConfigManager));
|
||||
if (!SiteConfigurationManager.isVisible(actingSite, site)) {
|
||||
userAddSiteAction
|
||||
.setText("Show Messages from " + getSelectedSite());
|
||||
|
@ -300,12 +292,8 @@ public class SessionFeedView extends SessionView {
|
|||
if (site != null) {
|
||||
ColorInfo siteColor = colorConfigManager.getColor(site);
|
||||
if (siteColor != null) {
|
||||
if (siteColor.isForegroundSet()) {
|
||||
fgColor = getColorFromRGB(siteColor
|
||||
.getColor(ColorType.FOREGROUND));
|
||||
}
|
||||
bgColor = getColorFromRGB(siteColor
|
||||
.getColor(ColorType.BACKGROUND));
|
||||
fgColor = getColorFromRGB(siteColor.getColor(SWT.FOREGROUND));
|
||||
bgColor = getColorFromRGB(siteColor.getColor(SWT.BACKGROUND));
|
||||
}
|
||||
}
|
||||
super.styleAndAppendText(sb, offset, name, userId, ranges, fgColor,
|
||||
|
@ -483,46 +471,4 @@ public class SessionFeedView extends SessionView {
|
|||
super.participantDeparted(participant, description);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* action for changing foreground/background color for a selected site
|
||||
*/
|
||||
private class ChangeSiteColorAction extends Action {
|
||||
|
||||
private ColorType type;
|
||||
|
||||
private ChangeSiteColorAction(ColorType type) {
|
||||
super("Change Site " + type.toString() + " Color...", IconUtil
|
||||
.getImageDescriptor(Activator.getDefault().getBundle(),
|
||||
"change_color.gif"));
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
ColorDialog dialog = new ColorDialog(Display.getCurrent()
|
||||
.getActiveShell());
|
||||
RGB defaultForeground = colorManager
|
||||
.getColorForUser(getSelectedParticipant());
|
||||
String site = getSelectedSite();
|
||||
ColorInfo colorInfo = colorConfigManager.getColor(site);
|
||||
if (colorInfo != null
|
||||
&& (type != ColorType.FOREGROUND || colorInfo.isForegroundSet())) {
|
||||
/*
|
||||
* don't set dialog from colorInfo if null or type is foreground
|
||||
* and foreground hasn't been set (use default)
|
||||
*/
|
||||
dialog.setRGB(colorInfo.getColor(type));
|
||||
} else if (type == ColorType.FOREGROUND) {
|
||||
dialog.setRGB(defaultForeground);
|
||||
}
|
||||
RGB rgb = dialog.open();
|
||||
if (rgb != null) {
|
||||
colorConfigManager.setColor(site, type, rgb,
|
||||
defaultForeground);
|
||||
}
|
||||
|
||||
usersTable.refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,6 +81,9 @@ import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
|
|||
import com.raytheon.uf.viz.collaboration.comm.provider.user.VenueParticipant;
|
||||
import com.raytheon.uf.viz.collaboration.display.data.SessionColorManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||
import com.raytheon.uf.viz.collaboration.ui.ColorInfoMap.ColorInfo;
|
||||
import com.raytheon.uf.viz.collaboration.ui.UserColorConfigManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.ChangeTextColorAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.PeerToPeerChatAction;
|
||||
import com.raytheon.uf.viz.collaboration.ui.actions.PrintLogActionContributionItem;
|
||||
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
|
||||
|
@ -115,6 +118,7 @@ import com.raytheon.uf.viz.core.sounds.SoundUtil;
|
|||
* Jul 03, 2014 3342 bclement added count to participants label
|
||||
* Nov 26, 2014 3709 mapeters added styleAndAppendText() taking fg and bg colors,
|
||||
* use parent's colors map.
|
||||
* Dec 02, 2014 3709 mapeters added color actions for group chats without shared display.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -148,6 +152,10 @@ public class SessionView extends AbstractSessionView<VenueParticipant>
|
|||
|
||||
protected SessionColorManager colorManager;
|
||||
|
||||
private static UserColorConfigManager colorConfigManager;
|
||||
|
||||
protected boolean enableUserColors = true;
|
||||
|
||||
public SessionView() {
|
||||
super();
|
||||
}
|
||||
|
@ -169,6 +177,9 @@ public class SessionView extends AbstractSessionView<VenueParticipant>
|
|||
protected void initComponents(Composite parent) {
|
||||
initColorManager();
|
||||
super.initComponents(parent);
|
||||
if (enableUserColors) {
|
||||
colorConfigManager = new UserColorConfigManager();
|
||||
}
|
||||
|
||||
// unfortunately this code cannot be a part of createToolbarButton
|
||||
// because I cannot instantiate the ACI until after the messagesText
|
||||
|
@ -218,9 +229,17 @@ public class SessionView extends AbstractSessionView<VenueParticipant>
|
|||
IStructuredSelection selection = (IStructuredSelection) usersTable
|
||||
.getSelection();
|
||||
VenueParticipant entry = (VenueParticipant) selection.getFirstElement();
|
||||
if (!entry.isSameUser(session.getUserID())) {
|
||||
boolean me = entry.isSameUser(session.getUserID());
|
||||
if (!me) {
|
||||
manager.add(new PeerToPeerChatAction(entry));
|
||||
}
|
||||
if (enableUserColors) {
|
||||
// add color actions if in group chat room without shared display
|
||||
String user = entry.getName();
|
||||
RGB defaultForeground = colorManager.getColorForUser(entry);
|
||||
manager.add(new ChangeTextColorAction(user, me, me,
|
||||
defaultForeground, colorConfigManager));
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
@ -484,6 +503,14 @@ public class SessionView extends AbstractSessionView<VenueParticipant>
|
|||
protected void styleAndAppendText(StringBuilder sb, int offset,
|
||||
String name, VenueParticipant userId, List<StyleRange> ranges,
|
||||
Color fgColor, Color bgColor, String subject) {
|
||||
if (enableUserColors && name != null) {
|
||||
// Color text by user if in group chat room without shared display
|
||||
ColorInfo userColor = colorConfigManager.getColor(name);
|
||||
if (userColor != null) {
|
||||
fgColor = getColorFromRGB(userColor.getColor(SWT.FOREGROUND));
|
||||
bgColor = getColorFromRGB(userColor.getColor(SWT.BACKGROUND));
|
||||
}
|
||||
}
|
||||
StyleRange range = new StyleRange(messagesText.getCharCount(),
|
||||
sb.length(), fgColor, null, SWT.NORMAL);
|
||||
ranges.add(range);
|
||||
|
|
|
@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: Tcs Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.tcs
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.tcs.Activator
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
com.raytheon.uf.viz.core,
|
||||
|
@ -35,5 +34,4 @@ Import-Package: com.raytheon.uf.common.dataplugin,
|
|||
org.eclipse.swt.graphics,
|
||||
org.eclipse.ui.plugin,
|
||||
org.osgi.framework
|
||||
Export-Package: com.raytheon.uf.viz.tcs,
|
||||
com.raytheon.uf.viz.tcs.rsc
|
||||
Export-Package: com.raytheon.uf.viz.tcs.rsc
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.viz.tcs;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.uf.viz.tcs";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -34,8 +34,6 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
|||
import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.core.status.StatusConstants;
|
||||
import com.raytheon.uf.viz.tcs.Activator;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -55,7 +53,9 @@ import com.raytheon.uf.viz.tcs.Activator;
|
|||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
@XmlType(name = "tcsResourceData")
|
||||
public class TCSResourceData extends AbstractRequestableResourceData {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(TCSResourceData.class);
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(TCSResourceData.class);
|
||||
|
||||
@XmlAttribute
|
||||
protected String plotSource = null;
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Thinclient Alertviz
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.thinclient.alertviz;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.thinclient.alertviz.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Require-Bundle: com.raytheon.uf.viz.core,
|
||||
com.raytheon.uf.viz.application;bundle-version="1.0.0",
|
||||
|
@ -15,5 +14,5 @@ Require-Bundle: com.raytheon.uf.viz.core,
|
|||
com.raytheon.uf.viz.alertviz;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.message;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.comm
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Bundle-ActivationPolicy: lazy
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
package com.raytheon.uf.viz.thinclient.alertviz;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.uf.viz.thinclient.alertviz"; //$NON-NLS-1$
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: True Color GL
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.truecolor.gl;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.truecolor.gl.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
|
||||
|
@ -12,5 +11,5 @@ Require-Bundle: org.eclipse.core.runtime,
|
|||
javax.media.opengl;bundle-version="1.1.0",
|
||||
com.raytheon.uf.common.util;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.colormap;bundle-version="1.12.1174"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Bundle-ActivationPolicy: lazy
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
package com.raytheon.uf.viz.truecolor.gl;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
|
||||
private static BundleContext context;
|
||||
|
||||
static BundleContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = bundleContext;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void stop(BundleContext bundleContext) throws Exception {
|
||||
Activator.context = null;
|
||||
}
|
||||
|
||||
}
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Useradmin
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.useradmin;singleton:=true
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.useradmin.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
@ -13,6 +12,6 @@ Require-Bundle: org.eclipse.ui,
|
|||
com.raytheon.uf.common.auth;bundle-version="1.12.1174",
|
||||
com.raytheon.uf.common.useradmin;bundle-version="1.0.0",
|
||||
com.raytheon.uf.viz.plugin.nwsauth;bundle-version="1.12.1174"
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: com.raytheon.uf.common.plugin.nwsauth.xml
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
package com.raytheon.uf.viz.useradmin;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.uf.viz.useradmin"; //$NON-NLS-1$
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -54,20 +54,25 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
|
||||
/**
|
||||
* Main User Administration Dialog.
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* May 23, 2012 mpduff Initial creation.
|
||||
* Nov 26, 2012 1347 mpduff Make resizable.
|
||||
* Jan 09, 2013 1412 djohnson Listen for user authentication data changes.
|
||||
* Aug 12, 2013 2247 mpduff Dialog cleanup and consistency.
|
||||
*
|
||||
* Dec 05, 2014 3801 nabowle Check if widgets are disposed in populate
|
||||
* lists. Hide Description menu when nothing
|
||||
* is selected. Better enable/disable edit
|
||||
* and delete buttons. Give delete dialogs
|
||||
* a title.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @author mpduff
|
||||
* @version 1.0
|
||||
*/
|
||||
|
@ -104,7 +109,7 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
*
|
||||
* @param parent
|
||||
* The parent shell
|
||||
*/
|
||||
|
@ -227,7 +232,7 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
*
|
||||
* @see com.raytheon.viz.ui.dialogs.CaveSWTDialog#preOpened()
|
||||
*/
|
||||
@Override
|
||||
|
@ -473,6 +478,11 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
|
||||
private void populateLists() {
|
||||
NwsRoleDataManager man = NwsRoleDataManager.getInstance();
|
||||
if (appCombo.isDisposed() || userList.isDisposed()
|
||||
|| userTab.isDisposed() || roleTab.isDisposed()
|
||||
|| roleList.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
String app = appCombo.getItem(appCombo.getSelectionIndex());
|
||||
|
||||
userTab.setText(app + " Users");
|
||||
|
@ -486,6 +496,11 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
userList.setItems(man.getRoleData(app).getUsers());
|
||||
if (selection < userList.getItemCount()) {
|
||||
userList.select(selection);
|
||||
editUserBtn.setEnabled(true);
|
||||
deleteUserBtn.setEnabled(true);
|
||||
} else {
|
||||
editUserBtn.setEnabled(false);
|
||||
deleteUserBtn.setEnabled(false);
|
||||
}
|
||||
populateUserRoleList();
|
||||
|
||||
|
@ -498,12 +513,21 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
roleList.setItems(man.getRoleData(app).getRoles());
|
||||
if (selection < roleList.getItemCount()) {
|
||||
roleList.select(selection);
|
||||
editRoleBtn.setEnabled(true);
|
||||
deleteRoleBtn.setEnabled(true);
|
||||
} else {
|
||||
editRoleBtn.setEnabled(false);
|
||||
deleteRoleBtn.setEnabled(false);
|
||||
}
|
||||
populatePermissionList();
|
||||
}
|
||||
|
||||
private void populateUserRoleList() {
|
||||
NwsRoleDataManager man = NwsRoleDataManager.getInstance();
|
||||
if (appCombo.isDisposed() || userList.isDisposed()
|
||||
|| userPermList.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
String app = appCombo.getItem(appCombo.getSelectionIndex());
|
||||
|
||||
if (userList.getSelectionIndex() != -1) {
|
||||
|
@ -547,7 +571,7 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
String user = userList.getItem(userList.getSelectionIndex());
|
||||
|
||||
MessageBox messageDialog = new MessageBox(this.shell, SWT.YES | SWT.NO);
|
||||
messageDialog.setText("Title");
|
||||
messageDialog.setText("Delete user - " + user);
|
||||
messageDialog
|
||||
.setMessage("Are you sure you wish to delete user " + user);
|
||||
int response = messageDialog.open();
|
||||
|
@ -576,7 +600,7 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
String role = roleList.getItem(roleList.getSelectionIndex());
|
||||
|
||||
MessageBox messageDialog = new MessageBox(this.shell, SWT.YES | SWT.NO);
|
||||
messageDialog.setText("Title");
|
||||
messageDialog.setText("Delete role - " + role);
|
||||
messageDialog
|
||||
.setMessage("Are you sure you wish to delete role " + role);
|
||||
int response = messageDialog.open();
|
||||
|
@ -615,51 +639,53 @@ public class UserAdminSelectDlg extends CaveSWTDialog implements
|
|||
}
|
||||
|
||||
private void showPermissionMenu(final List list) {
|
||||
Menu menu = new Menu(shell, SWT.POP_UP);
|
||||
MenuItem item1 = new MenuItem(menu, SWT.PUSH);
|
||||
item1.setText("Description...");
|
||||
item1.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent arg0) {
|
||||
String selection = list.getItem(list.getSelectionIndex());
|
||||
StringBuilder messageText = new StringBuilder();
|
||||
boolean roleFlag = false;
|
||||
NwsRoleDataManager man = NwsRoleDataManager.getInstance();
|
||||
for (RoleXML role : man.getRoleData(selectedApplication)
|
||||
.getRoleList()) {
|
||||
if (selection.equals(role.getRoleId())) {
|
||||
messageText.append(getRoleDetails(role));
|
||||
roleFlag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!roleFlag) {
|
||||
for (PermissionXML perm : man.getRoleData(
|
||||
selectedApplication).getPermissionList()) {
|
||||
if (perm.getId().equals(selection)) {
|
||||
messageText.append(getPermissionDetails(perm));
|
||||
if (list.getSelectionCount() > 0) {
|
||||
Menu menu = new Menu(shell, SWT.POP_UP);
|
||||
MenuItem item1 = new MenuItem(menu, SWT.PUSH);
|
||||
item1.setText("Description...");
|
||||
item1.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent arg0) {
|
||||
String selection = list.getItem(list.getSelectionIndex());
|
||||
StringBuilder messageText = new StringBuilder();
|
||||
boolean roleFlag = false;
|
||||
NwsRoleDataManager man = NwsRoleDataManager.getInstance();
|
||||
for (RoleXML role : man.getRoleData(selectedApplication)
|
||||
.getRoleList()) {
|
||||
if (selection.equals(role.getRoleId())) {
|
||||
messageText.append(getRoleDetails(role));
|
||||
roleFlag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (messageText.length() == 0) {
|
||||
messageText.append("No Description");
|
||||
}
|
||||
MessageBox messageDialog = new MessageBox(shell,
|
||||
SWT.ICON_INFORMATION);
|
||||
if (roleFlag) {
|
||||
messageDialog.setText("Role Description");
|
||||
} else {
|
||||
messageDialog.setText("Permission Description");
|
||||
}
|
||||
messageDialog.setMessage(messageText.toString());
|
||||
messageDialog.open();
|
||||
}
|
||||
});
|
||||
|
||||
shell.setMenu(menu);
|
||||
menu.setVisible(true);
|
||||
if (!roleFlag) {
|
||||
for (PermissionXML perm : man.getRoleData(
|
||||
selectedApplication).getPermissionList()) {
|
||||
if (perm.getId().equals(selection)) {
|
||||
messageText.append(getPermissionDetails(perm));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (messageText.length() == 0) {
|
||||
messageText.append("No Description");
|
||||
}
|
||||
MessageBox messageDialog = new MessageBox(shell,
|
||||
SWT.ICON_INFORMATION);
|
||||
if (roleFlag) {
|
||||
messageDialog.setText("Role Description");
|
||||
} else {
|
||||
messageDialog.setText("Permission Description");
|
||||
}
|
||||
messageDialog.setMessage(messageText.toString());
|
||||
messageDialog.open();
|
||||
}
|
||||
});
|
||||
|
||||
shell.setMenu(menu);
|
||||
menu.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
private String getRoleDetails(RoleXML role) {
|
||||
|
|
|
@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: VAA Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.vaa;singleton:=true
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.vaa.Activator
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Bundle-ActivationPolicy: lazy
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.viz.vaa;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.uf.viz.vaa";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -32,8 +32,6 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
|||
import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.core.status.StatusConstants;
|
||||
import com.raytheon.uf.viz.vaa.Activator;
|
||||
|
||||
/**
|
||||
* ResourceData for VAA Forecast Ash Clouds data
|
||||
|
@ -52,13 +50,15 @@ import com.raytheon.uf.viz.vaa.Activator;
|
|||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
@XmlType(name = "forecastAshCloudsResourceData")
|
||||
public class ForecastAshCloudsResourceData extends AbstractRequestableResourceData {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(ForecastAshCloudsResourceData.class);
|
||||
|
||||
public class ForecastAshCloudsResourceData extends
|
||||
AbstractRequestableResourceData {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(ForecastAshCloudsResourceData.class);
|
||||
|
||||
public ForecastAshCloudsResourceData() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (!super.equals(obj)) {
|
||||
|
@ -68,7 +68,7 @@ public class ForecastAshCloudsResourceData extends AbstractRequestableResourceDa
|
|||
if (obj instanceof ForecastAshCloudsResourceData == false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,8 +32,6 @@ import com.raytheon.uf.viz.core.exception.VizException;
|
|||
import com.raytheon.uf.viz.core.rsc.AbstractRequestableResourceData;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.core.status.StatusConstants;
|
||||
import com.raytheon.uf.viz.vaa.Activator;
|
||||
|
||||
/**
|
||||
* ResourceData for Volcanic Ash Advisories data
|
||||
|
@ -53,12 +51,13 @@ import com.raytheon.uf.viz.vaa.Activator;
|
|||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
@XmlType(name = "vaaResourceData")
|
||||
public class VAAResourceData extends AbstractRequestableResourceData {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(VAAResourceData.class);
|
||||
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(VAAResourceData.class);
|
||||
|
||||
public VAAResourceData() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (!super.equals(obj)) {
|
||||
|
@ -68,7 +67,7 @@ public class VAAResourceData extends AbstractRequestableResourceData {
|
|||
if (obj instanceof VAAResourceData == false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -90,6 +89,6 @@ public class VAAResourceData extends AbstractRequestableResourceData {
|
|||
}
|
||||
}
|
||||
return rsc;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: Vil Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.uf.viz.vil;singleton:=true
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Activator: com.raytheon.uf.viz.vil.Activator
|
||||
Bundle-Vendor: RAYTHEON
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.viz.vil;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.uf.viz.vil";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: BCD Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.bcd;singleton:=true
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.bcd.Activator
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.viz.bcd;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.bcd";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: Graphing Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.core.graphing;singleton:=true
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.core.graphing.Activator
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.viz.core.graphing;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.core.graphing";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,27 +1,25 @@
|
|||
/**
|
||||
* 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.geotiff.ui;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.eclipse.core.commands.ExecutionEvent;
|
||||
import org.eclipse.core.commands.ExecutionException;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
|
@ -44,15 +42,16 @@ import com.raytheon.viz.ui.EditorUtil;
|
|||
|
||||
/**
|
||||
* Open an GeoTIFF image
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 7/1/06 chammack Initial Creation.
|
||||
*
|
||||
* Dec 04, 2014 3848 nabowle Fix file dialog being cancelled.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @author chammack
|
||||
* @version 1
|
||||
*/
|
||||
|
@ -70,43 +69,44 @@ public class OpenImageAction extends AbstractMapHandler {
|
|||
|
||||
FileDialog fd = new FileDialog(shell, SWT.OPEN);
|
||||
fd.setFilterExtensions(new String[] { "*.tif;*.tiff" });
|
||||
fd.open();
|
||||
|
||||
final String fileName = fd.getFilterPath() + File.separator
|
||||
+ fd.getFileName();
|
||||
final String fileName = fd.open();
|
||||
|
||||
VizApp.runAsync(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
IDescriptor mapDesc = container.getActiveDisplayPane()
|
||||
.getRenderableDisplay().getDescriptor();
|
||||
if (fileName != null) {
|
||||
VizApp.runAsync(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
IDescriptor mapDesc = container.getActiveDisplayPane()
|
||||
.getRenderableDisplay().getDescriptor();
|
||||
|
||||
if (mapDesc == null) {
|
||||
Activator
|
||||
.getDefault()
|
||||
.getLog()
|
||||
.log(new Status(Status.ERROR,
|
||||
Activator.PLUGIN_ID,
|
||||
"Map does not support GeoTIFFs", null));
|
||||
if (mapDesc == null) {
|
||||
Activator
|
||||
.getDefault()
|
||||
.getLog()
|
||||
.log(new Status(Status.ERROR,
|
||||
Activator.PLUGIN_ID,
|
||||
"Map does not support GeoTIFFs",
|
||||
null));
|
||||
}
|
||||
GeoTiffResourceData data = new GeoTiffResourceData(
|
||||
fileName);
|
||||
LoadProperties lProps = new LoadProperties();
|
||||
GeoTiffResource gtiff = data.construct(lProps, mapDesc);
|
||||
|
||||
ResourceProperties rProps = new ResourceProperties();
|
||||
|
||||
rProps.setMapLayer(true);
|
||||
rProps.setVisible(true);
|
||||
rProps.setPdProps(new ProgressiveDisclosureProperties());
|
||||
|
||||
mapDesc.getResourceList().add(gtiff);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
GeoTiffResourceData data = new GeoTiffResourceData(fileName);
|
||||
LoadProperties lProps = new LoadProperties();
|
||||
GeoTiffResource gtiff = data.construct(lProps, mapDesc);
|
||||
|
||||
ResourceProperties rProps = new ResourceProperties();
|
||||
|
||||
rProps.setMapLayer(true);
|
||||
rProps.setVisible(true);
|
||||
rProps.setPdProps(new ProgressiveDisclosureProperties());
|
||||
|
||||
mapDesc.getResourceList().add(gtiff);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.events.SelectionAdapter;
|
||||
|
@ -38,7 +39,6 @@ import org.eclipse.swt.widgets.ProgressBar;
|
|||
import org.eclipse.swt.widgets.Shell;
|
||||
import org.eclipse.swt.widgets.Text;
|
||||
|
||||
import com.raytheon.uf.common.activetable.PracticeProductOfftimeRequest;
|
||||
import com.raytheon.uf.common.activetable.SendPracticeProductRequest;
|
||||
import com.raytheon.uf.common.activetable.response.GetNextEtnResponse;
|
||||
import com.raytheon.uf.common.dissemination.OUPRequest;
|
||||
|
@ -84,6 +84,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
|||
* Dec 18, 2013 2641 dgilling Support changes to GFEVtecUtil.getVtecLinesThatNeedEtn().
|
||||
* Jan 06, 2014 2649 dgilling Make ETN assignment process optional.
|
||||
* Feb 17, 2014 2774 dgilling Merge changes from 14.1 baseline to 14.2.
|
||||
* Nov 14, 2014 4953 randerso Cleaned up practice product requests
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -541,26 +542,27 @@ public class StoreTransmitDlg extends CaveSWTDialog implements
|
|||
|
||||
/**
|
||||
* Method to transmit the product.
|
||||
*
|
||||
* @param practice
|
||||
* true if we are transmitting a practice product
|
||||
*/
|
||||
private void transmitProduct(boolean decode) {
|
||||
private void transmitProduct(boolean practice) {
|
||||
IServerRequest req = null;
|
||||
if (decode) {
|
||||
if (SimulatedTime.getSystemTime().isRealTime()) {
|
||||
req = new SendPracticeProductRequest();
|
||||
((SendPracticeProductRequest) req).setProductText(productText);
|
||||
} else {
|
||||
req = new PracticeProductOfftimeRequest();
|
||||
((PracticeProductOfftimeRequest) req)
|
||||
.setProductText(productText);
|
||||
((PracticeProductOfftimeRequest) req).setNotifyGFE(true);
|
||||
if (practice) {
|
||||
SendPracticeProductRequest practiceReq = new SendPracticeProductRequest();
|
||||
practiceReq.setNotifyGFE(true);
|
||||
practiceReq.setProductText(productText);
|
||||
|
||||
if (!SimulatedTime.getSystemTime().isRealTime()) {
|
||||
SimpleDateFormat dateFormatter = new SimpleDateFormat(
|
||||
"yyyyMMdd_HHmm");
|
||||
((PracticeProductOfftimeRequest) req)
|
||||
.setDrtString(dateFormatter.format(SimulatedTime
|
||||
.getSystemTime().getTime()));
|
||||
dateFormatter.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
practiceReq.setDrtString(dateFormatter.format(SimulatedTime
|
||||
.getSystemTime().getTime()));
|
||||
}
|
||||
req = practiceReq;
|
||||
} else {
|
||||
req = new OUPRequest();
|
||||
OUPRequest oupReq = new OUPRequest();
|
||||
OfficialUserProduct oup = new OfficialUserProduct();
|
||||
// make sure the awipsWanPil is exactly 10 characters space-padded
|
||||
// long
|
||||
|
@ -580,8 +582,10 @@ public class StoreTransmitDlg extends CaveSWTDialog implements
|
|||
// oup.setAddress(parentEditor.getAutoSendAddress());
|
||||
oup.setNeedsWmoHeader(false);
|
||||
oup.setSource("GFE");
|
||||
((OUPRequest) req).setProduct(oup);
|
||||
((OUPRequest) req).setUser(UserController.getUserObject());
|
||||
oupReq.setProduct(oup);
|
||||
oupReq.setUser(UserController.getUserObject());
|
||||
|
||||
req = oupReq;
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Hydrobase Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.hydrobase;singleton:=true
|
||||
Bundle-Version: 1.12.1174.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.hydrobase.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
@ -16,5 +15,5 @@ Require-Bundle: org.eclipse.ui,
|
|||
com.raytheon.uf.common.serialization.comm,
|
||||
com.raytheon.uf.viz.localization;bundle-version="1.12.1174"
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Import-Package: com.raytheon.uf.common.ohd
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.viz.hydrobase;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.hydrobase";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,19 +1,19 @@
|
|||
/**
|
||||
* 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.
|
||||
**/
|
||||
|
@ -62,8 +62,9 @@ import com.raytheon.viz.ui.dialogs.CaveJFACEDialog;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 08/04/2009 2191 rjpeter Initial implementation.
|
||||
* 04/14/2010 4734 mhuang Corrected StdTextProduct import
|
||||
* 04/14/2010 4734 mhuang Corrected StdTextProduct import
|
||||
* 09/11/2014 3580 mapeters Removed IQueryTransport usage (no longer exists).
|
||||
* 12/08/2014 1231 nabowle Fix selecting an AWIPS ID.
|
||||
* </pre>
|
||||
*
|
||||
* @author rjpeter
|
||||
|
@ -71,7 +72,7 @@ import com.raytheon.viz.ui.dialogs.CaveJFACEDialog;
|
|||
public class AwipsBrowserDlg extends CaveJFACEDialog {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus.getHandler(AwipsBrowserDlg.class);
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
private Composite top;
|
||||
|
||||
|
@ -122,7 +123,7 @@ public class AwipsBrowserDlg extends CaveJFACEDialog {
|
|||
private StdTextProduct currentProduct = null;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param parent
|
||||
* @param browserHdr
|
||||
* @param cbClient
|
||||
|
@ -215,7 +216,7 @@ public class AwipsBrowserDlg extends CaveJFACEDialog {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
protected Control createDialogArea(Composite parent) {
|
||||
|
@ -239,7 +240,7 @@ public class AwipsBrowserDlg extends CaveJFACEDialog {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
protected void configureShell(Shell shell) {
|
||||
|
@ -248,7 +249,7 @@ public class AwipsBrowserDlg extends CaveJFACEDialog {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
protected void buttonPressed(int buttonId) {
|
||||
|
@ -282,7 +283,7 @@ public class AwipsBrowserDlg extends CaveJFACEDialog {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
protected void createButtonsForButtonBar(Composite parent) {
|
||||
|
@ -334,7 +335,7 @@ public class AwipsBrowserDlg extends CaveJFACEDialog {
|
|||
awipsIdList.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
loadInitialLists();
|
||||
loadSelectedAwipsId();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -406,11 +407,24 @@ public class AwipsBrowserDlg extends CaveJFACEDialog {
|
|||
awipsIdList.add(id);
|
||||
}
|
||||
|
||||
Map<String, String> timesToLoad = new HashMap<String, String>();
|
||||
awipsIdList.select(0);
|
||||
|
||||
for (Entry<String, TreeMap<String, TreeMap<String, StdTextProduct>>> ttaaiiCCCCEntry : availableProducts
|
||||
.firstEntry().getValue().entrySet()) {
|
||||
loadSelectedAwipsId();
|
||||
}
|
||||
|
||||
private void loadSelectedAwipsId() {
|
||||
ttaaiiCcccList.removeAll();
|
||||
ddhhmmList.removeAll();
|
||||
bbbList.removeAll();
|
||||
setLoadBtnEnabled(false);
|
||||
|
||||
Map<String, String> timesToLoad = new HashMap<String, String>();
|
||||
String awipsId = awipsIdList.getItem(awipsIdList.getSelectionIndex());
|
||||
Map<String, TreeMap<String, TreeMap<String, StdTextProduct>>> selectedMap = availableProducts
|
||||
.get(awipsId);
|
||||
|
||||
for (Entry<String, TreeMap<String, TreeMap<String, StdTextProduct>>> ttaaiiCCCCEntry : selectedMap
|
||||
.entrySet()) {
|
||||
String ttaaiiCccc = ttaaiiCCCCEntry.getKey();
|
||||
ttaaiiCcccList.add(ttaaiiCccc);
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Textworkstation Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.textworkstation;singleton:=true
|
||||
Bundle-Version: 1.12.1174.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.textworkstation.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
com.raytheon.viz.core,
|
||||
|
@ -14,4 +13,4 @@ Require-Bundle: org.eclipse.ui,
|
|||
com.raytheon.uf.viz.application;bundle-version="1.0.0"
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.raytheon.viz.textworkstation
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
|
||||
package com.raytheon.viz.textworkstation;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 10/11/2007 482 grichard Initial creation.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author grichard
|
||||
*
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.textworkstation";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Looping Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.ui.tools.looping;singleton:=true
|
||||
Bundle-Version: 1.12.1174.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.ui.tools.looping.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
@ -11,4 +10,4 @@ Require-Bundle: org.eclipse.ui,
|
|||
com.raytheon.viz.core,
|
||||
org.geotools
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.viz.ui.tools.looping;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.ui.tools.looping";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Map Tools Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.ui.tools.map;singleton:=true
|
||||
Bundle-Version: 1.12.1174.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.ui.tools.map.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
@ -11,4 +10,4 @@ Require-Bundle: org.eclipse.ui,
|
|||
com.raytheon.viz.core
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Export-Package: com.raytheon.viz.ui.tools.map
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
|
||||
package com.raytheon.viz.ui.tools.map;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.ui.tools.map";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,7 +3,6 @@ Bundle-ManifestVersion: 2
|
|||
Bundle-Name: Warnings Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.warnings;singleton:=true
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.warnings.Activator
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.viz.warnings;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.warnings";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -2,8 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Xdat Plug-in
|
||||
Bundle-SymbolicName: com.raytheon.viz.xdat;singleton:=true
|
||||
Bundle-Version: 1.12.1174.qualifier
|
||||
Bundle-Activator: com.raytheon.viz.xdat.Activator
|
||||
Bundle-Version: 1.14.0.qualifier
|
||||
Bundle-Vendor: Raytheon
|
||||
Require-Bundle: org.eclipse.ui,
|
||||
org.eclipse.core.runtime,
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.viz.xdat;
|
||||
|
||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
/**
|
||||
* The activator class controls the plug-in life cycle
|
||||
*/
|
||||
public class Activator extends AbstractUIPlugin {
|
||||
|
||||
// The plug-in ID
|
||||
public static final String PLUGIN_ID = "com.raytheon.viz.xdat";
|
||||
|
||||
// The shared instance
|
||||
private static Activator plugin;
|
||||
|
||||
/**
|
||||
* The constructor
|
||||
*/
|
||||
public Activator() {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
|
||||
* )
|
||||
*/
|
||||
public void start(BundleContext context) throws Exception {
|
||||
super.start(context);
|
||||
plugin = this;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.eclipse.ui.plugin.AbstractUIPlugin#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;
|
||||
}
|
||||
|
||||
}
|
|
@ -108,7 +108,6 @@
|
|||
|
||||
<!-- set executable permissions - start.sh. -->
|
||||
<chmod file="${edex.root.directory}/bin/start.sh" perm="ugo+rx" />
|
||||
<chmod file="${edex.root.directory}/bin/yajsw/scripts/wrapperCapture.sh" perm="ugo+rx" />
|
||||
</target>
|
||||
|
||||
<target name="deploy.esb-data">
|
||||
|
|
|
@ -45,6 +45,13 @@ if [ -z "${SKIP_RPM_CHECK}" ]; then
|
|||
echo "Unable To Continue ... Terminating."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rpm -q awips2-yajsw > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: awips2-yajsw Must Be Installed."
|
||||
echo "Unable To Continue ... Terminating."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
path_to_script=`readlink -f $0`
|
||||
|
@ -58,6 +65,7 @@ awips_home=$(dirname $EDEX_HOME)
|
|||
if [ -z "$PYTHON_INSTALL" ]; then PYTHON_INSTALL="$awips_home/python"; fi
|
||||
if [ -z "$JAVA_INSTALL" ]; then JAVA_INSTALL="$awips_home/java"; fi
|
||||
if [ -z "$PSQL_INSTALL" ]; then PSQL_INSTALL="$awips_home/psql"; fi
|
||||
if [ -z "$YAJSW_HOME" ]; then YAJSW_HOME="$awips_home/yajsw"; fi
|
||||
|
||||
# Source The File With The Localization Information
|
||||
source ${dir}/setup.env
|
||||
|
@ -150,4 +158,4 @@ if [ $DEBUG_FLAG == "on" ]; then
|
|||
echo "To Debug ... Connect to Port: ${EDEX_DEBUG_PORT}."
|
||||
fi
|
||||
|
||||
java -Xmx32m -XX:MaxPermSize=12m -XX:ReservedCodeCacheSize=4m -jar ${EDEX_HOME}/bin/yajsw/wrapper.jar -c ${EDEX_HOME}/conf/${CONF_FILE} ${WRAPPER_ARGS}
|
||||
java -Xmx32m -XX:MaxPermSize=12m -XX:ReservedCodeCacheSize=4m -jar ${YAJSW_HOME}/wrapper.jar -c ${EDEX_HOME}/conf/${CONF_FILE} ${WRAPPER_ARGS}
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,180 +0,0 @@
|
|||
#!/bin/sh
|
||||
#####################################################################
|
||||
# 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.
|
||||
#####################################################################
|
||||
#####################################################################
|
||||
# Script for capturing data from a wrapper java process when the
|
||||
# wrapper restarts the process
|
||||
#
|
||||
# SOFTWARE HISTORY
|
||||
#
|
||||
# Date Ticket# Engineer Description
|
||||
# ------------- -------- ----------- --------------------------
|
||||
# Aug 07, 2014 3470 rjpeter Initial creation
|
||||
#
|
||||
#####################################################################
|
||||
# NOTE: Script must be located at /awips2/qpid/bin/yajsw/scripts for it to work
|
||||
|
||||
# base path to save capture data to, will create subdirectory for each server
|
||||
basePath="/data/fxa/cave"
|
||||
|
||||
state=$1
|
||||
string_state=$2
|
||||
pid=$4
|
||||
|
||||
path_to_script=`readlink -f $0`
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: Wrapper running $path_to_script due to state transition for pid $pid. New State $state|$string_state"
|
||||
|
||||
# ensure directory is created and has write permissions
|
||||
checkDir() {
|
||||
dir="$1"
|
||||
if [ ! -d "$dir" ]; then
|
||||
mkdir -p $dir
|
||||
if [ ! -d "$dir" ]; then
|
||||
message="Unable to create qpid capture data directory\n$dir"
|
||||
echo -e "Capture failed: $message"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -w "$dir" ]; then
|
||||
message="Do not have write permissions to qpid capture data directory\n$dir"
|
||||
echo -e "Capture failed: $message"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# gets top output of local server
|
||||
runTop() {
|
||||
local curTime=`date "+%Y%m%d_%H:%M:%S"`
|
||||
echo "$curTime: Capturing top"
|
||||
echo "$curTime: Capturing top" >> $processFile
|
||||
local out_file="${dataPath}/top.log"
|
||||
export COLUMNS=160
|
||||
top -b -c -n1 >> $out_file 2>&1
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: top captured"
|
||||
}
|
||||
|
||||
# runs jstack 10 times, if it fails will run again with -F
|
||||
runJstack() {
|
||||
local curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: Capturing jstacks"
|
||||
local pid="$1"
|
||||
local count=1
|
||||
local cmd="/awips2/java/bin/jstack"
|
||||
local prePath="${dataPath}/pid_${pid}_"
|
||||
local log=""
|
||||
|
||||
while [ "$count" -le "10" ]; do
|
||||
curTime=`date "+%Y%m%d_%H:%M:%S"`
|
||||
log="${prePath}jstack_${count}.log"
|
||||
|
||||
echo "${curTime}: Running command: ${cmd} ${pid} >> ${log} 2>&1" >> $processFile
|
||||
echo "Running for $curTime" >> $log
|
||||
${cmd} ${pid} >> ${log} 2>&1
|
||||
|
||||
if [[ "$?" != "0" && $FORCE != "y" ]]; then
|
||||
curTime=`date "+%Y%m%d_%H:%M:%S"`
|
||||
echo "${curTime}: jstack for $pid failed to connect, rerunning with -F" >> $processFile
|
||||
${cmd} -F ${pid} >> ${log} 2>&1
|
||||
fi
|
||||
let "count+=1"
|
||||
done
|
||||
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: jstacks captured"
|
||||
}
|
||||
|
||||
# runs jmap -heap
|
||||
runJmapHeap() {
|
||||
local curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: Capturing jmap -heap"
|
||||
local pid=$1
|
||||
local prePath="${dataPath}/pid_${pid}_"
|
||||
|
||||
local log="${prePath}jmapHeap.log"
|
||||
local cmd="/awips2/java/bin/jmap -heap"
|
||||
echo "${curTime}: Running command: $cmd $pid >> $log 2>&1" >> $processFile
|
||||
$cmd $pid >> $log 2>&1
|
||||
|
||||
if [[ "$?" != "0" && $FORCE != "y" ]]; then
|
||||
curTime=`date "+%Y%m%d_%H:%M:%S"`
|
||||
echo "${curTime}: jmap for $pid failed to connect, rerunning with -F" >> $processFile
|
||||
$cmd -F $pid >> $log 2>&1
|
||||
fi
|
||||
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: jmap -heap captured"
|
||||
}
|
||||
|
||||
# runs jmap, if it fails will run again with -F
|
||||
runJmap() {
|
||||
local curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: Capturing jmap -dump"
|
||||
local pid=$1
|
||||
local prePath="${dataPath}/pid_${pid}_jmap"
|
||||
|
||||
local log="${prePath}.log"
|
||||
local dumpPath="${prePath}.hprof"
|
||||
local cmd="/awips2/java/bin/jmap -dump:format=b,file=${dumpPath}"
|
||||
echo "${curTime}: Running command: $cmd $pid >> $log 2>&1" >> $processFile
|
||||
$cmd $pid >> $log 2>&1
|
||||
|
||||
if [[ "$?" != "0" && $FORCE != "y" ]]; then
|
||||
curTime=`date "+%Y%m%d_%H:%M:%S"`
|
||||
echo "${curTime}: jmap for $pid failed to connect, rerunning with -F" >> $processFile
|
||||
$cmd -F $pid >> $log 2>&1
|
||||
fi
|
||||
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: jmap -dump captured"
|
||||
}
|
||||
|
||||
|
||||
|
||||
if [[ "$pid" != "-1" ]]; then
|
||||
process=`ps -ef | grep $pid | grep java`
|
||||
|
||||
if [[ "$process" != "" ]]; then
|
||||
hostName=`hostname -s`
|
||||
dataPath="${basePath}/${hostName}/wrapperCaptureData_${curTime}_pid_$pid"
|
||||
checkDir $dataPath
|
||||
processFile=${dataPath}/capture_info.log
|
||||
echo "Wrapper running $0 due to state transition for pid $pid. New State $state|$string_state" >> $processFile
|
||||
echo "Process information:" >> $processFile
|
||||
ps -ef | grep $pid >> $processFile
|
||||
runTop &
|
||||
runJstack $pid &
|
||||
runJmapHeap $pid &
|
||||
# TODO: Double check if jvm already dumped one
|
||||
runJmap $pid &
|
||||
wait
|
||||
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: Data captured to $dataPath"
|
||||
else
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: PID $pid is no longer running, nothing to capture"
|
||||
fi
|
||||
else
|
||||
curTime=`date +%Y%m%d_%H%M%S`
|
||||
echo "$curTime: PID was -1, process no longer running, nothing to capture"
|
||||
fi
|
Binary file not shown.
Binary file not shown.
|
@ -42,13 +42,11 @@ wrapper.pidfile=${EDEX_HOME}/bin/${EDEX_RUN_MODE}.pid
|
|||
# use system java instead of awips2 java
|
||||
wrapper.app.env.use.system.java=${WRAPPER_USE_SYSTEM_JAVA}
|
||||
|
||||
# Java Classpath (include wrapper.jar) Add class path elements as
|
||||
# needed starting from 1
|
||||
wrapper.java.classpath.1=${EDEX_HOME}/bin/yajsw/wrapper.jar
|
||||
wrapper.java.classpath.2=${EDEX_HOME}/conf/
|
||||
wrapper.java.classpath.3=${EDEX_HOME}/conf/cache/
|
||||
wrapper.java.classpath.4=${EDEX_HOME}/conf/spring/
|
||||
wrapper.java.classpath.5=${EDEX_HOME}/conf/resources/
|
||||
# Java Classpath. Add class path elements as needed starting from 1.
|
||||
wrapper.java.classpath.1=${EDEX_HOME}/conf/
|
||||
wrapper.java.classpath.2=${EDEX_HOME}/conf/cache/
|
||||
wrapper.java.classpath.3=${EDEX_HOME}/conf/spring/
|
||||
wrapper.java.classpath.4=${EDEX_HOME}/conf/resources/
|
||||
|
||||
# include ANY jar files that are found in the locations denoted by
|
||||
# wrapper.search.java.classpath.#
|
||||
|
|
Binary file not shown.
|
@ -1,5 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<aliasList caseSensitive="true" namespace="gfeParamInfo">
|
||||
<alias base="GFS217">gfs20km</alias>
|
||||
<alias base="GFS215">gfs20km</alias>
|
||||
<alias base="GFS20-PAC">gfs20km</alias>
|
||||
<alias base="GFS20-PRICO">gfs20km</alias>
|
||||
<alias base="estofsUS">ESTOFS</alias>
|
||||
<alias base="estofsPR">ESTOFS</alias>
|
||||
<alias base="GLERL">glerl</alias>
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#
|
||||
# 05/29/2014 #3224 randerso Added "SPC":8 to D2DDBVERSIONS
|
||||
# 07/09/2014 #3146 randerso Removed unused import
|
||||
# 12/03/2014 #3866 rferrel Added GFS20
|
||||
########################################################################
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
@ -1082,6 +1083,7 @@ if SID in ALASKA_SITES:
|
|||
'AKHwave10',
|
||||
'AKHwave4',
|
||||
'GLOBHwave',
|
||||
('GFS217', 'GFS20'),
|
||||
]
|
||||
|
||||
# Hawaii OCONUS
|
||||
|
@ -1104,6 +1106,7 @@ elif SID == "HFO":
|
|||
'WPHwave10',
|
||||
'NPHwave4',
|
||||
'GLOBHwave',
|
||||
('GFS20-PAC', 'GFS20'),
|
||||
]
|
||||
|
||||
# San Juan OCONUS
|
||||
|
@ -1132,6 +1135,7 @@ elif SID == "SJU":
|
|||
'NAHwave10',
|
||||
'NAHwave4',
|
||||
'GLOBHwave',
|
||||
('GFS20-PRICO', 'GFS20'),
|
||||
]
|
||||
|
||||
# Guam OCONUS
|
||||
|
@ -1144,6 +1148,7 @@ elif SID == "GUM":
|
|||
'RTOFS-Guam',
|
||||
'WPHwave10',
|
||||
'GLOBHwave',
|
||||
('GFS20-PAC', 'GFS20'),
|
||||
]
|
||||
|
||||
#CONUS sites
|
||||
|
@ -1204,6 +1209,7 @@ elif SID in CONUS_EAST_SITES:
|
|||
'WPHwave10',
|
||||
'GLOBHwave',
|
||||
'URMA25',
|
||||
('GFS215', 'GFS20'),
|
||||
]
|
||||
|
||||
else: #######DCS3501 WEST_CONUS
|
||||
|
@ -1264,6 +1270,7 @@ else: #######DCS3501 WEST_CONUS
|
|||
'WPHwave10',
|
||||
'GLOBHwave',
|
||||
'URMA25',
|
||||
('GFS215', 'GFS20'),
|
||||
]
|
||||
|
||||
if SID in GreatLake_SITES:
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -46,8 +46,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -82,8 +82,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -82,8 +82,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -46,8 +46,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
|
@ -0,0 +1,667 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gridParamInfo xmlns:ns2="group">
|
||||
<valtimeMINUSreftime>
|
||||
<!-- Every 3 hours 000-084 -->
|
||||
<fcst>0</fcst>
|
||||
<fcst>10800</fcst>
|
||||
<fcst>21600</fcst>
|
||||
<fcst>32400</fcst>
|
||||
<fcst>43200</fcst>
|
||||
<fcst>54000</fcst>
|
||||
<fcst>64800</fcst>
|
||||
<fcst>75600</fcst>
|
||||
<fcst>86400</fcst>
|
||||
<fcst>97200</fcst>
|
||||
<fcst>108000</fcst>
|
||||
<fcst>118800</fcst>
|
||||
<fcst>129600</fcst>
|
||||
<fcst>140400</fcst>
|
||||
<fcst>151200</fcst>
|
||||
<fcst>162000</fcst>
|
||||
<fcst>172800</fcst>
|
||||
<fcst>183600</fcst>
|
||||
<fcst>194400</fcst>
|
||||
<fcst>205200</fcst>
|
||||
<fcst>216000</fcst>
|
||||
<fcst>226800</fcst>
|
||||
<fcst>237600</fcst>
|
||||
<fcst>248400</fcst>
|
||||
<fcst>259200</fcst>
|
||||
<fcst>270000</fcst>
|
||||
<fcst>280800</fcst>
|
||||
<fcst>291600</fcst>
|
||||
<fcst>302400</fcst>
|
||||
<!-- Every 6 hours 090 - 240 -->
|
||||
<fcst>324000</fcst>
|
||||
<fcst>345600</fcst>
|
||||
<fcst>367200</fcst>
|
||||
<fcst>388800</fcst>
|
||||
<fcst>410400</fcst>
|
||||
<fcst>432000</fcst>
|
||||
<fcst>453600</fcst>
|
||||
<fcst>475200</fcst>
|
||||
<fcst>496800</fcst>
|
||||
<fcst>518400</fcst>
|
||||
<fcst>540000</fcst>
|
||||
<fcst>561600</fcst>
|
||||
<fcst>583200</fcst>
|
||||
<fcst>604800</fcst>
|
||||
<fcst>626400</fcst>
|
||||
<fcst>648000</fcst>
|
||||
<fcst>669600</fcst>
|
||||
<fcst>691200</fcst>
|
||||
<fcst>712800</fcst>
|
||||
<fcst>734400</fcst>
|
||||
<fcst>756000</fcst>
|
||||
<fcst>777600</fcst>
|
||||
<fcst>799200</fcst>
|
||||
<fcst>820800</fcst>
|
||||
<fcst>842400</fcst>
|
||||
<fcst>864000</fcst>
|
||||
</valtimeMINUSreftime>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>crain</short_name>
|
||||
<long_name>Categorical rain</long_name>
|
||||
<units>yn</units>
|
||||
<udunits/>
|
||||
<uiname>CategoricalRain</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>1.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>cfrzr</short_name>
|
||||
<long_name>Categorical freezing rain</long_name>
|
||||
<units>yn</units>
|
||||
<udunits/>
|
||||
<uiname>CategoricalFrzRain</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>1.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>TROP</levelsDesc>
|
||||
<levels>
|
||||
<level>TROP</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pvv</short_name>
|
||||
<long_name>Pressure vertical velocity</long_name>
|
||||
<units>Pa/s</units>
|
||||
<udunits>pascal/second</udunits>
|
||||
<uiname>Pvv</uiname>
|
||||
<valid_range>-2.5</valid_range>
|
||||
<valid_range>2.5</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>29</n3D>
|
||||
<levelsDesc>MB 1000-500 by 25 MB 450-100 by 50</levelsDesc>
|
||||
<levels>
|
||||
<level>MB1000</level>
|
||||
<level>MB975</level>
|
||||
<level>MB950</level>
|
||||
<level>MB925</level>
|
||||
<level>MB900</level>
|
||||
<level>MB875</level>
|
||||
<level>MB850</level>
|
||||
<level>MB825</level>
|
||||
<level>MB800</level>
|
||||
<level>MB775</level>
|
||||
<level>MB750</level>
|
||||
<level>MB725</level>
|
||||
<level>MB700</level>
|
||||
<level>MB675</level>
|
||||
<level>MB650</level>
|
||||
<level>MB625</level>
|
||||
<level>MB600</level>
|
||||
<level>MB575</level>
|
||||
<level>MB550</level>
|
||||
<level>MB525</level>
|
||||
<level>MB500</level>
|
||||
<level>MB450</level>
|
||||
<level>MB400</level>
|
||||
<level>MB350</level>
|
||||
<level>MB300</level>
|
||||
<level>MB250</level>
|
||||
<level>MB200</level>
|
||||
<level>MB150</level>
|
||||
<level>MB100</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vw</short_name>
|
||||
<long_name>v-component wind</long_name>
|
||||
<units>m/s</units>
|
||||
<udunits>meter/sec</udunits>
|
||||
<uiname>vWind</uiname>
|
||||
<valid_range>-150.0</valid_range>
|
||||
<valid_range>150.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>30</n3D>
|
||||
<levelsDesc>10 FHAG MB 1000-500 by 25 450-100 by 50 BL 0>30 30>60 60>90
|
||||
90>120 120>150 150>180 TROP MAXW PV 5 10 15 20</levelsDesc>
|
||||
<levels>
|
||||
<level>FHAG10</level>
|
||||
<level>MB1000</level>
|
||||
<level>MB975</level>
|
||||
<level>MB950</level>
|
||||
<level>MB925</level>
|
||||
<level>MB900</level>
|
||||
<level>MB875</level>
|
||||
<level>MB850</level>
|
||||
<level>MB825</level>
|
||||
<level>MB800</level>
|
||||
<level>MB775</level>
|
||||
<level>MB750</level>
|
||||
<level>MB725</level>
|
||||
<level>MB700</level>
|
||||
<level>MB675</level>
|
||||
<level>MB650</level>
|
||||
<level>MB625</level>
|
||||
<level>MB600</level>
|
||||
<level>MB575</level>
|
||||
<level>MB550</level>
|
||||
<level>MB525</level>
|
||||
<level>MB500</level>
|
||||
<level>MB450</level>
|
||||
<level>MB400</level>
|
||||
<level>MB350</level>
|
||||
<level>MB300</level>
|
||||
<level>MB250</level>
|
||||
<level>MB200</level>
|
||||
<level>MB150</level>
|
||||
<level>MB100</level>
|
||||
<level>BL030</level>
|
||||
<level>BL3060</level>
|
||||
<level>BL6090</level>
|
||||
<level>BL90120</level>
|
||||
<level>BL120150</level>
|
||||
<level>BL150180</level>
|
||||
<level>TROP</level>
|
||||
<level>MAXW</level>
|
||||
<level>PV5</level>
|
||||
<level>PV10</level>
|
||||
<level>PV15</level>
|
||||
<level>PV20</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>weasd</short_name>
|
||||
<long_name>water equivalent of accumulated snow depth</long_name>
|
||||
<units>mm</units>
|
||||
<udunits>millimeter</udunits>
|
||||
<uiname>waterEqvAccSnowDepth</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>1000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>staticSpacing</short_name>
|
||||
<long_name>Grid spacing</long_name>
|
||||
<units>meters</units>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>av</short_name>
|
||||
<long_name>absolute vorticity</long_name>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>absVort</uiname>
|
||||
<valid_range>-0.00999999977648</valid_range>
|
||||
<valid_range>0.00999999977648</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>4</n3D>
|
||||
<levelsDesc>MB 850 700 500 250</levelsDesc>
|
||||
<levels>
|
||||
<level>MB850</level>
|
||||
<level>MB700</level>
|
||||
<level>MB500</level>
|
||||
<level>MB250</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>cp</short_name>
|
||||
<long_name>convective precipitation</long_name>
|
||||
<units>mm</units>
|
||||
<udunits>millimeter</udunits>
|
||||
<uiname>convPrecip</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>1000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>staticTopo</short_name>
|
||||
<long_name>Topography</long_name>
|
||||
<units>meters</units>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>gh</short_name>
|
||||
<long_name>geopotential height</long_name>
|
||||
<units>m</units>
|
||||
<udunits>meters</udunits>
|
||||
<uiname>geoPotHt</uiname>
|
||||
<valid_range>-2000.0</valid_range>
|
||||
<valid_range>20000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>29</n3D>
|
||||
<levelsDesc>MB 1000-500 by 25 450-100 by 50 BL 0>30 30>60 60>90 90>120
|
||||
120>150 150>180 FRZ PV 5 10 15 20</levelsDesc>
|
||||
<levels>
|
||||
<level>MB1000</level>
|
||||
<level>MB975</level>
|
||||
<level>MB950</level>
|
||||
<level>MB925</level>
|
||||
<level>MB900</level>
|
||||
<level>MB875</level>
|
||||
<level>MB850</level>
|
||||
<level>MB825</level>
|
||||
<level>MB800</level>
|
||||
<level>MB775</level>
|
||||
<level>MB750</level>
|
||||
<level>MB725</level>
|
||||
<level>MB700</level>
|
||||
<level>MB675</level>
|
||||
<level>MB650</level>
|
||||
<level>MB625</level>
|
||||
<level>MB600</level>
|
||||
<level>MB575</level>
|
||||
<level>MB550</level>
|
||||
<level>MB525</level>
|
||||
<level>MB500</level>
|
||||
<level>MB450</level>
|
||||
<level>MB400</level>
|
||||
<level>MB350</level>
|
||||
<level>MB300</level>
|
||||
<level>MB250</level>
|
||||
<level>MB200</level>
|
||||
<level>MB150</level>
|
||||
<level>MB100</level>
|
||||
<level>BL030</level>
|
||||
<level>BL3060</level>
|
||||
<level>BL6090</level>
|
||||
<level>BL90120</level>
|
||||
<level>BL120150</level>
|
||||
<level>BL150180</level>
|
||||
<level>FRZ</level>
|
||||
<level>PV5</level>
|
||||
<level>PV10</level>
|
||||
<level>PV15</level>
|
||||
<level>PV20</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pw</short_name>
|
||||
<long_name>precipitable water</long_name>
|
||||
<units>mm</units>
|
||||
<udunits>millimeter</udunits>
|
||||
<uiname>precipH2O</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>300.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>EA</levelsDesc>
|
||||
<levels>
|
||||
<level>EA</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>wgh</short_name>
|
||||
<long_name>Five-wave height</long_name>
|
||||
<units>m</units>
|
||||
<udunits>meters</udunits>
|
||||
<uiname>fiveWaveHt</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>20000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>1</n3D>
|
||||
<levelsDesc>MB 500</levelsDesc>
|
||||
<levels>
|
||||
<level>MB500</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>tp</short_name>
|
||||
<long_name>total precipitation</long_name>
|
||||
<units>mm</units>
|
||||
<udunits>millimeter</udunits>
|
||||
<uiname>totPrecip</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>1000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>bli</short_name>
|
||||
<long_name>Best lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<uiname>bestLftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>50.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>staticCoriolis</short_name>
|
||||
<long_name>Coriolis parameter</long_name>
|
||||
<units>/s</units>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>csnow</short_name>
|
||||
<long_name>Categorical snow</long_name>
|
||||
<units>yn</units>
|
||||
<udunits/>
|
||||
<uiname>CategoricalSnow</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>1.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>rh</short_name>
|
||||
<long_name>relative humidity</long_name>
|
||||
<units>%</units>
|
||||
<udunits>percent</udunits>
|
||||
<uiname>rh</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>100.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>29</n3D>
|
||||
<levelsDesc>2 FHAG MB 1000-500 by 25 450-100 by 50 BL 0>30 30>60 60>90 90>120 120>150 150>180 FRZ</levelsDesc>
|
||||
<levels>
|
||||
<level>FHAG2</level>
|
||||
<level>MB1000</level>
|
||||
<level>MB975</level>
|
||||
<level>MB950</level>
|
||||
<level>MB925</level>
|
||||
<level>MB900</level>
|
||||
<level>MB875</level>
|
||||
<level>MB850</level>
|
||||
<level>MB825</level>
|
||||
<level>MB800</level>
|
||||
<level>MB775</level>
|
||||
<level>MB750</level>
|
||||
<level>MB725</level>
|
||||
<level>MB700</level>
|
||||
<level>MB675</level>
|
||||
<level>MB650</level>
|
||||
<level>MB625</level>
|
||||
<level>MB600</level>
|
||||
<level>MB575</level>
|
||||
<level>MB550</level>
|
||||
<level>MB525</level>
|
||||
<level>MB500</level>
|
||||
<level>MB450</level>
|
||||
<level>MB400</level>
|
||||
<level>MB350</level>
|
||||
<level>MB300</level>
|
||||
<level>MB250</level>
|
||||
<level>MB200</level>
|
||||
<level>MB150</level>
|
||||
<level>MB100</level>
|
||||
<level>BL030</level>
|
||||
<level>BL3060</level>
|
||||
<level>BL6090</level>
|
||||
<level>BL90120</level>
|
||||
<level>BL120150</level>
|
||||
<level>BL150180</level>
|
||||
<level>FRZ</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>sli</short_name>
|
||||
<long_name>Surface lifted index</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<uiname>LftInd</uiname>
|
||||
<valid_range>-20.0</valid_range>
|
||||
<valid_range>20.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>MB 0>500</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>cicep</short_name>
|
||||
<long_name>Categorical ice pellets</long_name>
|
||||
<units>yn</units>
|
||||
<udunits/>
|
||||
<uiname>CategoricalIcePlt</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>1.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>cape</short_name>
|
||||
<long_name>Convective Available Potential Energy</long_name>
|
||||
<units>J/kg</units>
|
||||
<udunits>joule/Kilogram</udunits>
|
||||
<uiname>CAPE</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>6000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC BL 0>180</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
<level>BL0180</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>pmsl</short_name>
|
||||
<long_name>pressure at mean sea level</long_name>
|
||||
<units>Pa</units>
|
||||
<udunits>pascal</udunits>
|
||||
<uiname>PMSL</uiname>
|
||||
<valid_range>80000.0</valid_range>
|
||||
<valid_range>110000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>MSL</levelsDesc>
|
||||
<levels>
|
||||
<level>MSL</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>uw</short_name>
|
||||
<long_name>u-component wind</long_name>
|
||||
<units>m/s</units>
|
||||
<udunits>meter/sec</udunits>
|
||||
<uiname>uWind</uiname>
|
||||
<valid_range>-150.0</valid_range>
|
||||
<valid_range>150.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>30</n3D>
|
||||
<levelsDesc>10 FHAG MB 1000-500 by 25 450-100 by 50 BL 0>30 30>60 60>90
|
||||
90>120 120>150 150>180 TROP MAXW PV 5 10 15 20</levelsDesc>
|
||||
<levels>
|
||||
<level>FHAG10</level>
|
||||
<level>MB1000</level>
|
||||
<level>MB975</level>
|
||||
<level>MB950</level>
|
||||
<level>MB925</level>
|
||||
<level>MB900</level>
|
||||
<level>MB875</level>
|
||||
<level>MB850</level>
|
||||
<level>MB825</level>
|
||||
<level>MB800</level>
|
||||
<level>MB775</level>
|
||||
<level>MB750</level>
|
||||
<level>MB725</level>
|
||||
<level>MB700</level>
|
||||
<level>MB675</level>
|
||||
<level>MB650</level>
|
||||
<level>MB625</level>
|
||||
<level>MB600</level>
|
||||
<level>MB575</level>
|
||||
<level>MB550</level>
|
||||
<level>MB525</level>
|
||||
<level>MB500</level>
|
||||
<level>MB450</level>
|
||||
<level>MB400</level>
|
||||
<level>MB350</level>
|
||||
<level>MB300</level>
|
||||
<level>MB250</level>
|
||||
<level>MB200</level>
|
||||
<level>MB150</level>
|
||||
<level>MB100</level>
|
||||
<level>BL030</level>
|
||||
<level>BL3060</level>
|
||||
<level>BL6090</level>
|
||||
<level>BL90120</level>
|
||||
<level>BL120150</level>
|
||||
<level>BL150180</level>
|
||||
<level>TROP</level>
|
||||
<level>MAXW</level>
|
||||
<level>PV5</level>
|
||||
<level>PV10</level>
|
||||
<level>PV15</level>
|
||||
<level>PV20</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>cin</short_name>
|
||||
<long_name>Convective Inhibition</long_name>
|
||||
<units>J/kg</units>
|
||||
<udunits>joule/Kilogram</udunits>
|
||||
<uiname>convInhib</uiname>
|
||||
<valid_range>-1000.0</valid_range>
|
||||
<valid_range>1000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>0</n3D>
|
||||
<levelsDesc>SFC BL 0>180</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
<level>BL0180</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>p</short_name>
|
||||
<long_name>pressure</long_name>
|
||||
<units>Pa</units>
|
||||
<udunits>pascal</udunits>
|
||||
<uiname>atmP</uiname>
|
||||
<valid_range>0.0</valid_range>
|
||||
<valid_range>110000.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>1</n3D>
|
||||
<levelsDesc>SFC, TROP, MAXW, PV 5 10 15 20, LCB, MCB, HCB</levelsDesc>
|
||||
<levels>
|
||||
<level>SFC</level>
|
||||
<level>TROP</level>
|
||||
<level>MAXW</level>
|
||||
<level>PV5</level>
|
||||
<level>PV10</level>
|
||||
<level>PV15</level>
|
||||
<level>PV20</level>
|
||||
<level>LCBL</level>
|
||||
<level>MCBL</level>
|
||||
<level>HCBL</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>t</short_name>
|
||||
<long_name>temperature</long_name>
|
||||
<units>K</units>
|
||||
<udunits>degree_Kelvin</udunits>
|
||||
<uiname>T</uiname>
|
||||
<valid_range>180.0</valid_range>
|
||||
<valid_range>330.0</valid_range>
|
||||
<fillValue>-99999.0</fillValue>
|
||||
<n3D>30</n3D>
|
||||
<levelsDesc>2 FHAG MB 1000-500 by 25 450-100 by 50 BL 0>30 30>60 60>90
|
||||
90>120 120>150 150>180 PV 5 10 15 20</levelsDesc>
|
||||
<levels>
|
||||
<level>FHAG2</level>
|
||||
<level>MB1000</level>
|
||||
<level>MB975</level>
|
||||
<level>MB950</level>
|
||||
<level>MB925</level>
|
||||
<level>MB900</level>
|
||||
<level>MB875</level>
|
||||
<level>MB850</level>
|
||||
<level>MB825</level>
|
||||
<level>MB800</level>
|
||||
<level>MB775</level>
|
||||
<level>MB750</level>
|
||||
<level>MB725</level>
|
||||
<level>MB700</level>
|
||||
<level>MB675</level>
|
||||
<level>MB650</level>
|
||||
<level>MB625</level>
|
||||
<level>MB600</level>
|
||||
<level>MB575</level>
|
||||
<level>MB550</level>
|
||||
<level>MB525</level>
|
||||
<level>MB500</level>
|
||||
<level>MB450</level>
|
||||
<level>MB400</level>
|
||||
<level>MB350</level>
|
||||
<level>MB300</level>
|
||||
<level>MB250</level>
|
||||
<level>MB200</level>
|
||||
<level>MB150</level>
|
||||
<level>MB100</level>
|
||||
<level>BL030</level>
|
||||
<level>BL3060</level>
|
||||
<level>BL6090</level>
|
||||
<level>BL90120</level>
|
||||
<level>BL120150</level>
|
||||
<level>BL150180</level>
|
||||
<level>PV5</level>
|
||||
<level>PV10</level>
|
||||
<level>PV15</level>
|
||||
<level>PV20</level>
|
||||
</levels>
|
||||
</gridParameterInfo>
|
||||
</gridParamInfo>
|
|
@ -76,8 +76,8 @@
|
|||
<gridParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||
<short_name>vss</short_name>
|
||||
<long_name>vertical speed shear</long_name>
|
||||
<units>l/s</units>
|
||||
<udunits>l/second</udunits>
|
||||
<units>/s</units>
|
||||
<udunits>1/second</udunits>
|
||||
<uiname>vertSpeedShear</uiname>
|
||||
<valid_range>-0.10000000149</valid_range>
|
||||
<valid_range>0.10000000149</valid_range>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue