merge origin/master_18.1.1 into unidata_17.1.1 for unidata_18.1.1

This commit is contained in:
mjames-upc 2018-07-05 11:49:57 -06:00
commit a5bf9dc37b
5177 changed files with 294715 additions and 249159 deletions

View file

@ -10,7 +10,7 @@ We create and use the Docker image unidata/awips-ade to build the two RHEL binar
where **${os_version}** is either *el6* or *el7*.
ADE Docker images will be named with the latest major release (17.1.1) and OS version
ADE Docker images will be named with the latest major release and OS version
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

View file

@ -1,7 +1,7 @@
#!/bin/bash
# Version
export AWIPSII_VERSION="17.1.1"
export AWIPSII_RELEASE="6"
export AWIPSII_VERSION="18.1.1"
export AWIPSII_RELEASE="1"
# Author
export AWIPSII_BUILD_VENDOR="UCAR"
export AWIPSII_BUILD_SITE="Unidata"

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -35,8 +35,12 @@
<property name="connection.url">
jdbc:postgresql://${db.addr}:${db.port}/${dc.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.username">awipsadmin</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awipsadmin.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awipsadmin.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -36,7 +36,11 @@
jdbc:postgresql://${db.addr}:${db.port}/${dc.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awips.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awips.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -35,8 +35,12 @@
<property name="connection.url">
jdbc:postgresql://${db.addr}:${db.port}/${fxa.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.username">awipsadmin</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awipsadmin.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awipsadmin.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -36,7 +36,11 @@
jdbc:postgresql://${db.addr}:${db.port}/${fxa.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awips.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awips.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -35,8 +35,12 @@
<property name="connection.url">
jdbc:postgresql://${db.addr}:${db.port}/${hm.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.username">awipsadmin</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awipsadmin.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awipsadmin.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -36,7 +36,11 @@
jdbc:postgresql://${db.addr}:${db.port}/${hm.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awips.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awips.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -35,8 +35,12 @@
<property name="connection.url">
jdbc:postgresql://${db.addr}:${db.port}/${ih.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.username">awipsadmin</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awipsadmin.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awipsadmin.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -36,7 +36,11 @@
jdbc:postgresql://${db.addr}:${db.port}/${ih.db.name}
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awips.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awips.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -35,8 +35,12 @@
<property name="connection.url">
jdbc:postgresql://${db.addr}:${db.port}/maps
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.username">awipsadmin</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awipsadmin.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awipsadmin.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -36,7 +36,11 @@
jdbc:postgresql://${db.addr}:${db.port}/maps
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awips.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awips.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -34,8 +34,12 @@
<property name="connection.url">
jdbc:postgresql://${db.addr}:${db.port}/metadata
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.username">awipsadmin</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awipsadmin.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awipsadmin.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">after_transaction</property>
<property name="jdbc.batch_size">100</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -36,7 +36,11 @@
jdbc:postgresql://${db.addr}:${db.port}/metadata
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awips.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awips.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -35,8 +35,12 @@
<property name="connection.url">
jdbc:postgresql://${db.addr}:${db.port}/ncep
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.username">awipsadmin</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awipsadmin.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awipsadmin.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
@ -36,7 +36,11 @@
jdbc:postgresql://${db.addr}:${db.port}/ncep
</property>
<property name="connection.username">awips</property>
<property name="connection.password">awips</property>
<property name="connection.sslmode">${db.auth.sslmode}</property>
<property name="connection.sslfactory">org.postgresql.ssl.jdbc4.LibPQFactory</property>
<property name="connection.sslcert">${db.auth.dir}/awips.crt</property>
<property name="connection.sslkey">${db.auth.dir}/awips.pk8</property>
<property name="connection.sslrootcert">${db.auth.dir}/root.crt</property>
<property name="connection.release_mode">
after_transaction
</property>

View file

@ -1,648 +0,0 @@
#
# This is the "master security properties file".
#
# An alternate java.security properties file may be specified
# from the command line via the system property
#
# -Djava.security.properties=<URL>
#
# This properties file appends to the master security properties file.
# If both properties files specify values for the same key, the value
# from the command-line properties file is selected, as it is the last
# one loaded.
#
# Also, if you specify
#
# -Djava.security.properties==<URL> (2 equals),
#
# then that properties file completely overrides the master security
# properties file.
#
# To disable the ability to specify an additional properties file from
# the command line, set the key security.overridePropertiesFile
# to false in the master security properties file. It is set to true
# by default.
# In this file, various security properties are set for use by
# java.security classes. This is where users can statically register
# Cryptography Package Providers ("providers" for short). The term
# "provider" refers to a package or set of packages that supply a
# concrete implementation of a subset of the cryptography aspects of
# the Java Security API. A provider may, for example, implement one or
# more digital signature algorithms or message digest algorithms.
#
# Each provider must implement a subclass of the Provider class.
# To register a provider in this master security properties file,
# specify the Provider subclass name and priority in the format
#
# security.provider.<n>=<className>
#
# This declares a provider, and specifies its preference
# order n. The preference order is the order in which providers are
# searched for requested algorithms (when no specific provider is
# requested). The order is 1-based; 1 is the most preferred, followed
# by 2, and so on.
#
# <className> must specify the subclass of the Provider class whose
# constructor sets the values of various properties that are required
# for the Java Security API to look up the algorithms or other
# facilities implemented by the provider.
#
# There must be at least one provider specification in java.security.
# There is a default provider that comes standard with the JDK. It
# is called the "SUN" provider, and its Provider subclass
# named Sun appears in the sun.security.provider package. Thus, the
# "SUN" provider is registered via the following:
#
# security.provider.1=sun.security.provider.Sun
#
# (The number 1 is used for the default provider.)
#
# Note: Providers can be dynamically registered instead by calls to
# either the addProvider or insertProviderAt method in the Security
# class.
#
# List of providers and their preference orders (see above):
#
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
#
# Sun Provider SecureRandom seed source.
#
# Select the primary source of seed data for the "SHA1PRNG" and
# "NativePRNG" SecureRandom implementations in the "Sun" provider.
# (Other SecureRandom implementations might also use this property.)
#
# On Unix-like systems (for example, Solaris/Linux/MacOS), the
# "NativePRNG" and "SHA1PRNG" implementations obtains seed data from
# special device files such as file:/dev/random.
#
# On Windows systems, specifying the URLs "file:/dev/random" or
# "file:/dev/urandom" will enable the native Microsoft CryptoAPI seeding
# mechanism for SHA1PRNG.
#
# By default, an attempt is made to use the entropy gathering device
# specified by the "securerandom.source" Security property. If an
# exception occurs while accessing the specified URL:
#
# SHA1PRNG:
# the traditional system/thread activity algorithm will be used.
#
# NativePRNG:
# a default value of /dev/random will be used. If neither
# are available, the implementation will be disabled.
# "file" is the only currently supported protocol type.
#
# The entropy gathering device can also be specified with the System
# property "java.security.egd". For example:
#
# % java -Djava.security.egd=file:/dev/random MainClass
#
# Specifying this System property will override the
# "securerandom.source" Security property.
#
# In addition, if "file:/dev/random" or "file:/dev/urandom" is
# specified, the "NativePRNG" implementation will be more preferred than
# SHA1PRNG in the Sun provider.
#
securerandom.source=file:/dev/random
#
# A list of known strong SecureRandom implementations.
#
# To help guide applications in selecting a suitable strong
# java.security.SecureRandom implementation, Java distributions should
# indicate a list of known strong implementations using the property.
#
# This is a comma-separated list of algorithm and/or algorithm:provider
# entries.
#
securerandom.strongAlgorithms=NativePRNGBlocking:SUN
#
# Class to instantiate as the javax.security.auth.login.Configuration
# provider.
#
login.configuration.provider=sun.security.provider.ConfigFile
#
# Default login configuration file
#
#login.config.url.1=file:${user.home}/.java.login.config
#
# Class to instantiate as the system Policy. This is the name of the class
# that will be used as the Policy object.
#
policy.provider=sun.security.provider.PolicyFile
# The default is to have a single system-wide policy file,
# and a policy file in the user's home directory.
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
# whether or not we expand properties in the policy file
# if this is set to false, properties (${...}) will not be expanded in policy
# files.
policy.expandProperties=true
# whether or not we allow an extra policy to be passed on the command line
# with -Djava.security.policy=somefile. Comment out this line to disable
# this feature.
policy.allowSystemProperty=true
# whether or not we look into the IdentityScope for trusted Identities
# when encountering a 1.1 signed JAR file. If the identity is found
# and is trusted, we grant it AllPermission.
policy.ignoreIdentityScope=false
#
# Default keystore type.
#
keystore.type=jks
#
# Controls compatibility mode for the JKS keystore type.
#
# When set to 'true', the JKS keystore type supports loading
# keystore files in either JKS or PKCS12 format. When set to 'false'
# it supports loading only JKS keystore files.
#
keystore.type.compat=true
#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageAccess unless the
# corresponding RuntimePermission ("accessClassInPackage."+package) has
# been granted.
package.access=sun.,\
com.sun.xml.internal.,\
com.sun.imageio.,\
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
com.sun.org.apache.regexp.internal.,\
com.sun.org.apache.xerces.internal.,\
com.sun.org.apache.xpath.internal.,\
com.sun.org.apache.xalan.internal.extensions.,\
com.sun.org.apache.xalan.internal.lib.,\
com.sun.org.apache.xalan.internal.res.,\
com.sun.org.apache.xalan.internal.templates.,\
com.sun.org.apache.xalan.internal.utils.,\
com.sun.org.apache.xalan.internal.xslt.,\
com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
com.sun.org.apache.xalan.internal.xsltc.compiler.,\
com.sun.org.apache.xalan.internal.xsltc.trax.,\
com.sun.org.apache.xalan.internal.xsltc.util.,\
com.sun.org.apache.xml.internal.res.,\
com.sun.org.apache.xml.internal.security.,\
com.sun.org.apache.xml.internal.serializer.utils.,\
com.sun.org.apache.xml.internal.utils.,\
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
jdk.nashorn.tools.,\
com.sun.activation.registries.,\
com.sun.browser.,\
com.sun.glass.,\
com.sun.javafx.,\
com.sun.media.,\
com.sun.openpisces.,\
com.sun.prism.,\
com.sun.scenario.,\
com.sun.t2k.,\
com.sun.pisces.,\
com.sun.webkit.,\
jdk.management.resource.internal.
#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageDefinition unless the
# corresponding RuntimePermission ("defineClassInPackage."+package) has
# been granted.
#
# by default, none of the class loaders supplied with the JDK call
# checkPackageDefinition.
#
package.definition=sun.,\
com.sun.xml.internal.,\
com.sun.imageio.,\
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
com.sun.org.apache.regexp.internal.,\
com.sun.org.apache.xerces.internal.,\
com.sun.org.apache.xpath.internal.,\
com.sun.org.apache.xalan.internal.extensions.,\
com.sun.org.apache.xalan.internal.lib.,\
com.sun.org.apache.xalan.internal.res.,\
com.sun.org.apache.xalan.internal.templates.,\
com.sun.org.apache.xalan.internal.utils.,\
com.sun.org.apache.xalan.internal.xslt.,\
com.sun.org.apache.xalan.internal.xsltc.cmdline.,\
com.sun.org.apache.xalan.internal.xsltc.compiler.,\
com.sun.org.apache.xalan.internal.xsltc.trax.,\
com.sun.org.apache.xalan.internal.xsltc.util.,\
com.sun.org.apache.xml.internal.res.,\
com.sun.org.apache.xml.internal.security.,\
com.sun.org.apache.xml.internal.serializer.utils.,\
com.sun.org.apache.xml.internal.utils.,\
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
jdk.nashorn.tools.,\
com.sun.activation.registries.,\
com.sun.browser.,\
com.sun.glass.,\
com.sun.javafx.,\
com.sun.media.,\
com.sun.openpisces.,\
com.sun.prism.,\
com.sun.scenario.,\
com.sun.t2k.,\
com.sun.pisces.,\
com.sun.webkit.,\
jdk.management.resource.internal.
#
# Determines whether this properties file can be appended to
# or overridden on the command line via -Djava.security.properties
#
security.overridePropertiesFile=true
#
# Determines the default key and trust manager factory algorithms for
# the javax.net.ssl package.
#
ssl.KeyManagerFactory.algorithm=SunX509
ssl.TrustManagerFactory.algorithm=PKIX
#
# The Java-level namelookup cache policy for successful lookups:
#
# any negative value: caching forever
# any positive value: the number of seconds to cache an address for
# zero: do not cache
#
# default value is forever (FOREVER). For security reasons, this
# caching is made forever when a security manager is set. When a security
# manager is not set, the default behavior in this implementation
# is to cache for 30 seconds.
#
# NOTE: setting this to anything other than the default value can have
# serious security implications. Do not set it unless
# you are sure you are not exposed to DNS spoofing attack.
#
#networkaddress.cache.ttl=-1
# The Java-level namelookup cache policy for failed lookups:
#
# any negative value: cache forever
# any positive value: the number of seconds to cache negative lookup results
# zero: do not cache
#
# In some Microsoft Windows networking environments that employ
# the WINS name service in addition to DNS, name service lookups
# that fail may take a noticeably long time to return (approx. 5 seconds).
# For this reason the default caching policy is to maintain these
# results for 10 seconds.
#
#
networkaddress.cache.negative.ttl=10
#
# Properties to configure OCSP for certificate revocation checking
#
# Enable OCSP
#
# By default, OCSP is not used for certificate revocation checking.
# This property enables the use of OCSP when set to the value "true".
#
# NOTE: SocketPermission is required to connect to an OCSP responder.
#
# Example,
# ocsp.enable=true
#
# Location of the OCSP responder
#
# By default, the location of the OCSP responder is determined implicitly
# from the certificate being validated. This property explicitly specifies
# the location of the OCSP responder. The property is used when the
# Authority Information Access extension (defined in RFC 3280) is absent
# from the certificate or when it requires overriding.
#
# Example,
# ocsp.responderURL=http://ocsp.example.net:80
#
# Subject name of the OCSP responder's certificate
#
# By default, the certificate of the OCSP responder is that of the issuer
# of the certificate being validated. This property identifies the certificate
# of the OCSP responder when the default does not apply. Its value is a string
# distinguished name (defined in RFC 2253) which identifies a certificate in
# the set of certificates supplied during cert path validation. In cases where
# the subject name alone is not sufficient to uniquely identify the certificate
# then both the "ocsp.responderCertIssuerName" and
# "ocsp.responderCertSerialNumber" properties must be used instead. When this
# property is set then those two properties are ignored.
#
# Example,
# ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"
#
# Issuer name of the OCSP responder's certificate
#
# By default, the certificate of the OCSP responder is that of the issuer
# of the certificate being validated. This property identifies the certificate
# of the OCSP responder when the default does not apply. Its value is a string
# distinguished name (defined in RFC 2253) which identifies a certificate in
# the set of certificates supplied during cert path validation. When this
# property is set then the "ocsp.responderCertSerialNumber" property must also
# be set. When the "ocsp.responderCertSubjectName" property is set then this
# property is ignored.
#
# Example,
# ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
#
# Serial number of the OCSP responder's certificate
#
# By default, the certificate of the OCSP responder is that of the issuer
# of the certificate being validated. This property identifies the certificate
# of the OCSP responder when the default does not apply. Its value is a string
# of hexadecimal digits (colon or space separators may be present) which
# identifies a certificate in the set of certificates supplied during cert path
# validation. When this property is set then the "ocsp.responderCertIssuerName"
# property must also be set. When the "ocsp.responderCertSubjectName" property
# is set then this property is ignored.
#
# Example,
# ocsp.responderCertSerialNumber=2A:FF:00
#
# Policy for failed Kerberos KDC lookups:
#
# When a KDC is unavailable (network error, service failure, etc), it is
# put inside a blacklist and accessed less often for future requests. The
# value (case-insensitive) for this policy can be:
#
# tryLast
# KDCs in the blacklist are always tried after those not on the list.
#
# tryLess[:max_retries,timeout]
# KDCs in the blacklist are still tried by their order in the configuration,
# but with smaller max_retries and timeout values. max_retries and timeout
# are optional numerical parameters (default 1 and 5000, which means once
# and 5 seconds). Please notes that if any of the values defined here is
# more than what is defined in krb5.conf, it will be ignored.
#
# Whenever a KDC is detected as available, it is removed from the blacklist.
# The blacklist is reset when krb5.conf is reloaded. You can add
# refreshKrb5Config=true to a JAAS configuration file so that krb5.conf is
# reloaded whenever a JAAS authentication is attempted.
#
# Example,
# krb5.kdc.bad.policy = tryLast
# krb5.kdc.bad.policy = tryLess:2,2000
krb5.kdc.bad.policy = tryLast
# Algorithm restrictions for certification path (CertPath) processing
#
# In some environments, certain algorithms or key lengths may be undesirable
# for certification path building and validation. For example, "MD2" is
# generally no longer considered to be a secure hash algorithm. This section
# describes the mechanism for disabling algorithms based on algorithm name
# and/or key length. This includes algorithms used in certificates, as well
# as revocation information such as CRLs and signed OCSP Responses.
#
# The syntax of the disabled algorithm string is described as this Java
# BNF-style:
# DisabledAlgorithms:
# " DisabledAlgorithm { , DisabledAlgorithm } "
#
# DisabledAlgorithm:
# AlgorithmName [Constraint]
#
# AlgorithmName:
# (see below)
#
# Constraint:
# KeySizeConstraint
#
# KeySizeConstraint:
# keySize Operator DecimalInteger
#
# Operator:
# <= | < | == | != | >= | >
#
# DecimalInteger:
# DecimalDigits
#
# DecimalDigits:
# DecimalDigit {DecimalDigit}
#
# DecimalDigit: one of
# 1 2 3 4 5 6 7 8 9 0
#
# The "AlgorithmName" is the standard algorithm name of the disabled
# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
# Documentation" for information about Standard Algorithm Names. Matching
# is performed using a case-insensitive sub-element matching rule. (For
# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
# "ECDSA" for signatures.) If the assertion "AlgorithmName" is a
# sub-element of the certificate algorithm name, the algorithm will be
# rejected during certification path building and validation. For example,
# the assertion algorithm name "DSA" will disable all certificate algorithms
# that rely on DSA, such as NONEwithDSA, SHA1withDSA. However, the assertion
# will not disable algorithms related to "ECDSA".
#
# A "Constraint" provides further guidance for the algorithm being specified.
# The "KeySizeConstraint" requires a key of a valid size range if the
# "AlgorithmName" is of a key algorithm. The "DecimalInteger" indicates the
# key size specified in number of bits. For example, "RSA keySize <= 1024"
# indicates that any RSA key with key size less than or equal to 1024 bits
# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
# that any RSA key with key size less than 1024 or greater than 2048 should
# be disabled. Note that the "KeySizeConstraint" only makes sense to key
# algorithms.
#
# Note: This property is currently used by Oracle's PKIX implementation. It
# is not guaranteed to be examined and used by other implementations.
#
# Example:
# jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
#
# In some environments, certain algorithms or key lengths may be undesirable
# when using SSL/TLS. This section describes the mechanism for disabling
# algorithms during SSL/TLS security parameters negotiation, including
# protocol version negotiation, cipher suites selection, peer authentication
# and key exchange mechanisms.
#
# Disabled algorithms will not be negotiated for SSL/TLS connections, even
# if they are enabled explicitly in an application.
#
# For PKI-based peer authentication and key exchange mechanisms, this list
# of disabled algorithms will also be checked during certification path
# building and validation, including algorithms used in certificates, as
# well as revocation information such as CRLs and signed OCSP Responses.
# This is in addition to the jdk.certpath.disabledAlgorithms property above.
#
# See the specification of "jdk.certpath.disabledAlgorithms" for the
# syntax of the disabled algorithm string.
#
# Note: This property is currently used by Oracle's JSSE implementation.
# It is not guaranteed to be examined and used by other implementations.
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048
jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768
# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
# processing in JSSE implementation.
#
# In some environments, a certain algorithm may be undesirable but it
# cannot be disabled because of its use in legacy applications. Legacy
# algorithms may still be supported, but applications should not use them
# as the security strength of legacy algorithms are usually not strong enough
# in practice.
#
# During SSL/TLS security parameters negotiation, legacy algorithms will
# not be negotiated unless there are no other candidates.
#
# The syntax of the disabled algorithm string is described as this Java
# BNF-style:
# LegacyAlgorithms:
# " LegacyAlgorithm { , LegacyAlgorithm } "
#
# LegacyAlgorithm:
# AlgorithmName (standard JSSE algorithm name)
#
# See the specification of security property "jdk.certpath.disabledAlgorithms"
# for the syntax and description of the "AlgorithmName" notation.
#
# Per SSL/TLS specifications, cipher suites have the form:
# SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
# or
# TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
#
# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
# algorithm for HMAC.
#
# The LegacyAlgorithm can be one of the following standard algorithm names:
# 1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
# 2. JSSE key exchange algorithm name, e.g., RSA
# 3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
# 4. JSSE message digest algorithm name, e.g., SHA
#
# See SSL/TLS specifications and "Java Cryptography Architecture Standard
# Algorithm Name Documentation" for information about the algorithm names.
#
# Note: This property is currently used by Oracle's JSSE implementation.
# It is not guaranteed to be examined and used by other implementations.
# There is no guarantee the property will continue to exist or be of the
# same syntax in future releases.
#
# Example:
# jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
#
jdk.tls.legacyAlgorithms= \
K_NULL, C_NULL, M_NULL, \
DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_anon_EXPORT, DH_DSS_EXPORT, \
DH_RSA_EXPORT, RSA_EXPORT, \
DH_anon, ECDH_anon, \
RC4_128, RC4_40, DES_CBC, DES40_CBC
# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
#
# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
# negotiation mechanism is not used, the server offers the client group
# parameters, base generator g and prime modulus p, for DHE key exchange.
# It is recommended to use dynamic group parameters. This property defines
# a mechanism that allows you to specify custom group parameters.
#
# The syntax of this property string is described as this Java BNF-style:
# DefaultDHEParameters:
# DefinedDHEParameters { , DefinedDHEParameters }
#
# DefinedDHEParameters:
# "{" DHEPrimeModulus , DHEBaseGenerator "}"
#
# DHEPrimeModulus:
# HexadecimalDigits
#
# DHEBaseGenerator:
# HexadecimalDigits
#
# HexadecimalDigits:
# HexadecimalDigit { HexadecimalDigit }
#
# HexadecimalDigit: one of
# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
#
# Whitespace characters are ignored.
#
# The "DefinedDHEParameters" defines the custom group parameters, prime
# modulus p and base generator g, for a particular size of prime modulus p.
# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
# parameter. It is recommended to use safe primes for the custom group
# parameters.
#
# If this property is not defined or the value is empty, the underlying JSSE
# provider's default group parameter is used for each connection.
#
# If the property value does not follow the grammar, or a particular group
# parameter is not valid, the connection will fall back and use the
# underlying JSSE provider's default group parameter.
#
# Note: This property is currently used by OpenJDK's JSSE implementation. It
# is not guaranteed to be examined and used by other implementations.
#
# Example:
# jdk.tls.server.defaultDHEParameters=
# { \
# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
# FFFFFFFF FFFFFFFF, 2}

View file

@ -1,18 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIC4TCCAckCCQCIm5v8zLBtjTANBgkqhkiG9w0BAQUFADAzMQ4wDAYDVQQKDAVB
V0lQUzEQMA4GA1UECwwHVGVzdGluZzEPMA0GA1UEAwwGY2Fyb290MB4XDTE3MDEz
MTIzMDE0NFoXDTIyMDEzMDIzMDE0NFowMjEOMAwGA1UECgwFQVdJUFMxEDAOBgNV
BAsMB1Rlc3RpbmcxDjAMBgNVBAMMBWd1ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAquAPNSusMUr4hewdfLpqGCFGVeVdLjfJr4sRdQ/JsIrR/0WT
EmD62cg5vC6SoH+evN9D+ZS477XniBBxb0PNc7mqsQU0btDudJEKw2LPfUMgU/uD
/QcNIC0ZGe3Fv9q265fufH8JkIJCZRJkUtsESL9U8io6cluVWWVkzRqYOrMo/86y
Y9Enfm6akKbcM8dued0gqU5j01Senb9jpQNCVDJ7ZZekw2uD4FMSXH40JXsD5QQt
5HYfNkGX3J2K5wsbW43DNCP+uHTNaBToiQ10syJ7gUA2bFXEXDGW8uTdofW/vWGZ
MM74XMe4EG8fyZpH6lKm+gvZ/oakcVJwJ4mVuQIDAQABMA0GCSqGSIb3DQEBBQUA
A4IBAQCDtYQfnDqXoyUqOEwR5D/Y8lyqU3EBCAGMdu3L/nrNiQ/noq1B/nkZC3Cg
BCmBWriI7/C6avIJC4bmR+GOTC2bPSA4xEOqTg8makUN1pJWA6cjw5K6wxIDn9L3
CdwT4tz1SK6rBXsWLG/yIwNm60ahg9C/qs2z0+HfZy7kNizRxS2AR049GT5KPpGt
Z+YTPq5ZyKkVoyIzo5ffWT9ZlC259bVq+L5MiDbhdK/KFP9xIyce2icIdpMy7MI2
mJr2fIN7JzQJP/j0ls+KjUU+euwI5ZGLoNWkt5OlmYel+uJsc0oSDvdGMPAD334c
M7ZuFuR9lYhdK5SkDgZ9VH8PZqhJ
-----END CERTIFICATE-----

View file

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCq4A81K6wxSviF
7B18umoYIUZV5V0uN8mvixF1D8mwitH/RZMSYPrZyDm8LpKgf56830P5lLjvteeI
EHFvQ81zuaqxBTRu0O50kQrDYs99QyBT+4P9Bw0gLRkZ7cW/2rbrl+58fwmQgkJl
EmRS2wRIv1TyKjpyW5VZZWTNGpg6syj/zrJj0Sd+bpqQptwzx2553SCpTmPTVJ6d
v2OlA0JUMntll6TDa4PgUxJcfjQlewPlBC3kdh82QZfcnYrnCxtbjcM0I/64dM1o
FOiJDXSzInuBQDZsVcRcMZby5N2h9b+9YZkwzvhcx7gQbx/JmkfqUqb6C9n+hqRx
UnAniZW5AgMBAAECggEBAJ9n2ogNr9tkRygYNwHunZ7ZG9Zx3FWLcbkzkRuVmN/7
ASCU9TjGA/46zbGB+QOFSr6DwdQJK+Vj2xSR0mCr7fQxls0BQALJIkrYLCRN/6ap
gnUWQ/E+LL6Bk9Mef8YU8WQjHjZCBNgszGehmrm42+xJoaMwRcn9Kfx1nG3Ci5Tl
m+1PG/T5LZv4e6I++RzsqBNdGhvRic44j8vYfVrr16ciSofFo1HJ4NmVCbIalPjU
K+wxNRUD3jATeU70B582VXXSJf1r26cG3vZHaMCUWLPPNjKDD8Dsr9Q53iJ4QZYA
DpgtLON6KxZSoRJeYS3Gdru0iquBJRMYV2T2dIjMkgECgYEA07++DbqCAnLI5ZjW
Du303ZWzfwdz0iQLXksVPR2NC1u8lMJwbLgF1fbcss+YET91jfrrW3Cd0nOxFqX4
kwrQtuRCs2qW6MAusqX+tAYC6//cMIjzNikGHC+4b/1MmPfvqtVXVM8uhxlny3Dm
gzcdFa9YN7PlDr5jpnVbWj1zzFkCgYEAzpWhm9wDEX6e0PxtbKPNVgsoYJ3+n3QR
i0XgJxFNDTpcFXEujwywsgauddSEOb8iPZgsQyfTXLr8qfhobTLSEYqDqmpzcm3O
xr+uhCL7Jy26EfuNnha5Ntzqs1KosLxoQwPx5JMKSzDPRApV/VsLAgA+GVn7rfsM
ri/DFygtaGECgYEAiuc6FillxZNko/BpYyvHuF/OeqL54DzS1E0upoOvFWddQrx2
IWtqMJya1BWH7LCTPcr+/2HVtcs8vN2tPVAX8BG2i5l9WztOptRrS86xtfyGhbQg
z0OEBZNsStJ/n8ztBESk4DZ0kB0jUHpETIkn5CS9GvVAajaMihJsFbtALikCgYB+
0ltBHKMBlXMYJy9h93kyLm1eSwAqkY3Hq2D9euCLk10+iJollYvP7swhaBK4hL8X
gxkBLSzTi7NbATXSe9V8kUVdVDaFdCXx23Dei78VgTvumDiLabXQmXS4G7GVtkRn
h79zLFWwbUmAorvBaqfqVY3J8HTSjQFu2cFxsOeXYQKBgQCOTiPntXCWWEsCBJp5
QOaHW1MZXYz8diVpNiZ/tJGhT4Van8ja7DJ0r+zWNrX5lMRct9E5jbbSgywsaY4W
1sMVmAraKrbnIlJvv+nyBoU0uLTiBVNsBhMy7UkqrgH03o+aq1zSqCrIvumxuOAe
cbq1B0DdERrn7goOytsviSDs1Q==
-----END PRIVATE KEY-----

View file

@ -1,20 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDOTCCAiGgAwIBAgIJAIsJUossJEAhMA0GCSqGSIb3DQEBBQUAMDMxDjAMBgNV
BAoMBUFXSVBTMRAwDgYDVQQLDAdUZXN0aW5nMQ8wDQYDVQQDDAZjYXJvb3QwHhcN
MTYxMTIwMDAyNzQ0WhcNNDYxMTEzMDAyNzQ0WjAzMQ4wDAYDVQQKDAVBV0lQUzEQ
MA4GA1UECwwHVGVzdGluZzEPMA0GA1UEAwwGY2Fyb290MIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA1aBCQLlOpbC7/ikudAmYdTgI16FecS8yItRzMMgX
Po589JRydYe+3Wv4gaVZAktoCFCuoik9DRnewzqPxGzAOrq+QfPKRQhY0AdDZP4v
c82r8C0ga/SZTImST/Y+WA7dJ6eRGfDiOIS/auQ0zcfrGFv4//I5+Sa+5dQNe0me
pyAKaYTzrZWKrSsZbjxs1nHd+0ahIzgwWGb3UDY9MNMtP9/EvhRZkxgjeTnVZD8X
aOLiwCIBALoGayId5wbXjyUIRzelPQPCXAADQcewlnlvbLadTXVCA3rP7TvNyx0W
blpluNBg0o6sjlo2bzInBswHsFHUOZPcJT6pLhGRC52eNwIDAQABo1AwTjAdBgNV
HQ4EFgQUjRTZ3Toe0L+XZodTnOTtpR39eJUwHwYDVR0jBBgwFoAUjRTZ3Toe0L+X
ZodTnOTtpR39eJUwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAuvXD
Hm5cJxtP3phZYAOdrSxJkJg/gMmRBLsS2GksPks07pelSxPySRjVZCJSDd8zbSc5
DGdFBMI0Xdk7+V5KxP6ATfyc37GoxGG7ygbUjLvmlzsg2i+a0wIDjILyzisicA0q
DyCLZGxNahFUrhci0mpKAr/RaGr4Hx4R+JMItP3sxysVbIhc4wdm4mRTA3n8Eru3
hcPpLQlqLheVuCIECxMG+eVKVevZWN0gqiEA7C+pByMxASqeHc6SRCXHx8/GJPmw
ocaHpJ7Iib2kMLeBT24R+RNHEpPknf/PkgwvM0BLPqlk8cNqAR7TZ/OtX1ffmPbv
t+nP8jegKGo4lVr3Fg==
-----END CERTIFICATE-----

View file

@ -209,9 +209,9 @@ javacVerbose=true
compilerArg=-g:lines,source -nowarn
# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties
javacSource=1.7
javacSource=1.8
# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
javacTarget=1.7
javacTarget=1.8

View file

@ -18,9 +18,9 @@ basearch=x86_64
logExtension=.log
javacDebugInfo=false
javacFailOnError=true
javacVerbose=true
javacSource=1.7
javacTarget=1.7
javacVerbose=false
javacSource=1.8
javacTarget=1.8
compilerArg=-g:lines,source -nowarn
generate.p2.metadata=true

View file

@ -127,6 +127,6 @@
</if>
</target>
<taskdef resource="net/sf/antcontrib/antlib.xml"
classpath="${basedir}/lib/ant/ant-contrib-1.0b3.jar" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
</project>

View file

@ -174,15 +174,15 @@ javacDebugInfo=false
javacFailOnError=true
# Enable or disable verbose mode of the compiler
javacVerbose=true
javacVerbose=false
# Extra arguments for the compiler. These are specific to the java compiler being used.
compilerArg=-g:lines,source -nowarn
# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties
javacSource=1.7
javacSource=1.8
# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
javacTarget=1.7
javacTarget=1.8

View file

@ -2,30 +2,33 @@ com.raytheon.uf.common.base.feature
com.raytheon.uf.viz.dataplugin.obs.feature
com.raytheon.uf.viz.sounding.feature
com.raytheon.uf.viz.cots.feature
com.raytheon.uf.viz.registry.feature
com.raytheon.uf.viz.common.core.feature
com.raytheon.uf.viz.dataplugins.feature
com.raytheon.viz.feature.awips
com.raytheon.uf.viz.application.feature
com.raytheon.uf.viz.base.feature
com.raytheon.uf.viz.nwsauth.feature
com.raytheon.uf.viz.archive.feature
com.raytheon.uf.viz.useradmin.feature
com.raytheon.uf.viz.gisdatastore.feature
com.raytheon.viz.dataaccess.feature
com.raytheon.uf.viz.localization.perspective.feature
com.raytheon.uf.viz.core.feature
com.raytheon.viz.warnings.feature
com.raytheon.uf.viz.ncep.core.feature
com.raytheon.uf.viz.aviation.advisory.feature
com.raytheon.uf.viz.d2d.core.feature
com.raytheon.uf.viz.kml.export.feature
com.raytheon.viz.radar.feature
com.raytheon.uf.viz.grid.feature
com.raytheon.uf.viz.displays.feature
com.raytheon.viz.hydro.feature
com.raytheon.uf.viz.kml.export.feature
com.raytheon.uf.viz.d2d.damagepath.feature
com.raytheon.uf.viz.d2d.xy.feature
com.raytheon.viz.volumebrowser.feature
com.raytheon.uf.viz.core.maps.feature
com.raytheon.uf.viz.thinclient.feature
com.raytheon.uf.viz.npp.feature
com.raytheon.uf.viz.vtec.feature
com.raytheon.viz.text.feature
com.raytheon.viz.warngen.feature
com.raytheon.viz.gfe.feature
@ -42,12 +45,10 @@ com.raytheon.uf.viz.npp.sounding.feature
com.raytheon.uf.viz.ncep.npp.feature
com.raytheon.uf.viz.ncep.perspective.feature
com.raytheon.uf.viz.d2d.skewt.feature
com.raytheon.uf.viz.grib.feature
edu.wisc.ssec.cimss.viz.convectprob.feature
gov.noaa.nws.mdl.viz.boundaryTool.common.feature
com.raytheon.uf.viz.satellite.goesr.feature
gov.noaa.gsd.viz.ensemble.feature
gov.noaa.nws.mdl.viz.awipsref.feature
gov.noaa.nws.obs.viz.geodata.feature
gov.noaa.nws.ocp.uf.viz.gisdatastore.feature
com.raytheon.uf.viz.gisdatastore.feature
com.raytheon.uf.viz.server.edex.feature

View file

@ -217,6 +217,9 @@
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.ncep.dataplugins.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.viz.hydro.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.xy.feature" />
</antcall>
@ -239,7 +242,10 @@
<param name="feature" value="com.raytheon.uf.viz.thinclient.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.useradmin.feature" />
<param name="feature" value="com.raytheon.uf.viz.registry.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.datadelivery.feature" />
</antcall>
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.npp.feature" />
@ -292,11 +298,15 @@
<antcall target="p2.build.repo">
<param name="feature" value="gov.noaa.nws.obs.viz.geodata.feature" />
</antcall>
<!--
<antcall target="p2.build.repo">
<param name="feature" value="gov.noaa.nws.ocp.uf.viz.gisdatastore.feature" />
</antcall>
-->
<antcall target="p2.build.repo">
<param name="feature" value="com.raytheon.uf.viz.d2d.damagepath.feature" />
</antcall>
<antcall target="cleanup.features" />
</target>
@ -473,5 +483,6 @@
</if>
</target>
<taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${basedir}/lib/ant/ant-contrib-1.0b3.jar" />
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
</project>

View file

@ -31,6 +31,7 @@
# Aug 03, 2015 #4694 dlovely Logback will now add user.home to LOGDIR
# Sep 17, 2015 #4869 bkowal Read dynamic AlertViz version information at startup.
# Oct 05, 2015 #4869 bkowal Fix AlertViz argument ordering
# Feb 15, 2017 6025 tgurney Force use of GTK2
#
user=`/usr/bin/whoami`
@ -199,6 +200,9 @@ if [ -f ${dir}/awipsVersion.txt ]; then
IFS=${prevIFS}
fi
# Force GTK2
export SWT_GTK3=0
#run a loop for alertviz
count=0
while [ $exitVal -ne 0 -a $count -lt 10 ]

View file

@ -1,2 +1,300 @@
#!/bin/bash
/awips2/cave/run.sh
# CAVE startup script
# Note: CAVE will not run as 'root'
# 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.
#
#
# SOFTWARE HISTORY
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# Dec 05, 2013 #2593 rjpeter Added check for number of running
# cave sessions.
# Dec 05, 2013 #2590 dgilling Modified so gfeclient.sh can be wrapped
# around this script.
# Jan 24, 2014 #2739 bsteffen Log exit status
# Jan 30, 2014 #2593 bclement warns based on memory usage, fixed for INI files with spaces
# Jul 10, 2014 #3363 bclement logs command used to launch application to console logs
# Oct 10, 2014 #3675 njensen Logback now does console logging to ensure correct pid
# Oct 13, 2014 #3675 bclement startup shutdown log includes both launching pid and placeholder
# Jan 28, 2015 #4018 randerso Added a productEditor log file to changes in the GFE product editor
# Jun 17, 2015 #4148 rferrel Logback needs fewer environment variables.
# Jul 23, 2015 ASM#13849 D. Friedman Use a unique Eclipse configuration directory
# Aug 03, 2015 #4694 dlovely Logback will now add user.home to LOGDIR
# Sep 16, 2015 #4869 bkowal Read dynamic CAVE version information at startup.
# Apr 28, 2016 #5609 bkowal Specify the location of the java.io.tmpdir as a jvm arg.
# Nov 3, 2016 19508 Qinglu Lin Export proper TEXTWS if no matching XT in XT_WORKSTATIONS for LX.
# Jan 26, 2017 6092 randerso Add export for PROGRAM_NAME
# Feb 6, 2017 #6025 tgurney Force use of GTK2
# Nov 07, 2017 6516 randerso Use correct ini file for gfeClient
# Apr 23, 2018 6351 mapeters Fix looking up of ini file
#
user=`/usr/bin/whoami`
if [ ${user} == 'root' ];then
echo "WARNING: CAVE cannot be run as user '${user}'!"
echo " change to another user and run again."
exit 1
fi
# Since, we no longer need to worry about re-location ...
CAVE_INSTALL="/awips2/cave"
JAVA_INSTALL="/awips2/java"
PYTHON_INSTALL="/awips2/python"
export AWIPS_INSTALL_DIR="${CAVE_INSTALL}"
MAX_MEM_PROPORTION="0.85"
source ${CAVE_INSTALL}/caveUtil.sh
RC=$?
if [ ${RC} -ne 0 ]; then
echo "ERROR: unable to find and/or access ${CAVE_INSTALL}/caveUtil.sh."
exit 1
fi
# Run monitorThreads?
runMonitorThreads=false
# copy the viz shutdown utility if necessary.
copyVizShutdownUtilIfNecessary
# delete any old disk caches in the background
deleteOldCaveDiskCaches &
# Enable core dumps
ulimit -c unlimited >> /dev/null 2>&1
export LD_LIBRARY_PATH=${JAVA_INSTALL}/lib:${PYTHON_INSTALL}/lib:${PYTHON_INSTALL}/lib/python2.7/site-packages/jep:$LD_LIBRARY_PATH
if [[ -z "$CALLED_EXTEND_LIB_PATH" ]]; then
extendLibraryPath
fi
export PATH=${JAVA_INSTALL}/bin:${PYTHON_INSTALL}/bin:$PATH
export JAVA_HOME="${JAVA_INSTALL}/jre"
# The user can update this field if they choose to do so.
export HYDRO_APPS_DIR="/awips2/edex/data/share/hydroapps"
export EDEX_HOME=/awips2/edex
export LOCALIZATION_ROOT=~/caveData/common
export PGSQL_DRIVER_DIR=`ls -1d /awips2/cave/plugins/org.postgres_*`
if [ $? -ne 0 ]; then
echo "FATAL: Unable to locate the PostgreSQL JDBC Driver."
exit 1
fi
export apps_dir=${HYDRO_APPS_DIR}
SWITCHES=($SWITCHES)
TESTCHECK="$TMCP_HOME/bin/getTestMode"
if [ -x ${TESTCHECK} ]; then
echo "Calling getTestMode()"
${TESTCHECK}
status=${?}
if [ $status -eq 11 ]; then
MODE="TEST"
SWITCHES+=(-mode TEST)
elif [ $status -eq 12 ];then
MODE="PRACTICE"
SWITCHES+=(-mode PRACTICE)
elif [ $status -eq 15 ];then
MODE="OPERATIONAL"
SWITCHES+=(-mode OPERATIONAL)
else
MODE="OPERATIONAL (no response)"
fi
echo "getTestMode() returned ${MODE}"
else
MODE="UNKNOWN"
echo "getTestMode() not found - going to use defaults"
fi
VERSION_ARGS=()
if [ -f ${CAVE_INSTALL}/awipsVersion.txt ]; then
prevIFS=${IFS}
IFS=$'\n'
for line in `cat ${CAVE_INSTALL}/awipsVersion.txt`; do
VERSION_ARGS+=(${line})
done
IFS=${prevIFS}
fi
TEXTWS=`hostname | sed -e 's/lx/xt/g'`
if [[ $XT_WORKSTATIONS != *$TEXTWS* ]]
then
TEXTWS=`hostname`
fi
export TEXTWS
hostName=`hostname -s`
if [[ -z "$PROGRAM_NAME" ]]
then
export PROGRAM_NAME="cave"
fi
if [[ "${PROGRAM_NAME}" == "gfeclient" || "${PROGRAM_NAME}" == "gfeClientServer" ]]
then
export CAVE_INI_ARG="--launcher.ini /awips2/cave/cave.ini"
else
lookupINI "$@"
fi
# check number of running caves
if [[ -z $IGNORE_NUM_CAVES ]]; then
# get total memory on system in bytes
mem=( `free -b | grep "Mem:"` )
mem=${mem[1]}
# get max amount of system memory used before we warn
memThreshold=$(echo "$mem * $MAX_MEM_PROPORTION" | bc)
# remove decimal
printf -v memThreshold "%.0f" "$memThreshold"
# get launcher.ini argument determined by user arguments
launcherRegex='--launcher.ini\s(.+\.ini)'
# default to cave.ini
targetIni="/awips2/cave/cave.ini"
if [[ $CAVE_INI_ARG =~ $launcherRegex ]]
then
targetIni="${BASH_REMATCH[1]}"
fi
# read max memory that could be used by this instance
memOfLaunchingCave=$(readMemFromIni "$targetIni")
# read total max memory of caves already running
getTotalMemOfRunningCaves
# add them together
_totalAfterStart=$(($memOfLaunchingCave + $_totalRunningMem))
if [[ "$_totalAfterStart" -ge "$memThreshold" ]]; then
# convert to megs for display
memOfLaunchingCave=$(($memOfLaunchingCave / $BYTES_IN_MB))
_totalRunningMem=$(($_totalRunningMem / $BYTES_IN_MB))
getPidsOfMyRunningCaves
memMsg="$_numPids CAVE applications already running with a combined max memory of ${_totalRunningMem}MB. "
memMsg+="The requested application has a max memory requirement of ${memOfLaunchingCave}MB. "
memMsg+="Starting may impact system performance and stability.\n\nProceed?"
zenity --question --title "Low Available Memory for Application" --text "$memMsg"
cancel="$?"
if [[ "$cancel" == "1" ]]; then
exit
fi
fi
fi
#check for gtk-2.0 value
gtkResource=.gtkrc-2.0
includeLine="include \"$HOME/.gtkrc.mine\""
mineFile=.gtkrc.mine
altButtonLine="gtk-alternative-button-order=1"
if [ -f $HOME/$gtkResource ]; then
if [ -w $HOME/$gtkResource ]; then
var=`grep "gtkrc.mine" $HOME/$gtkResource`
if [ '' == "$var" ]; then
echo $includeLine >> $HOME/$gtkResource
fi
fi
else
touch $HOME/$gtkResource
echo $includeLine >> $HOME/$gtkResource
fi
if [ -f $HOME/$mineFile ]; then
if [ -w $HOME/$mineFile ]; then
var=`grep "alternative-button-order" $HOME/$mineFile`
if [ '' == "$var" ]; then
echo $altButtonLine >> $HOME/$mineFile
fi
fi
else
touch $HOME/$mineFile
echo $altButtonLine >> $HOME/$mineFile
fi
BASE_LOGDIR=caveData/logs/consoleLogs
# Logback configuration files will append user.home to LOGDIR.
export LOGDIR=$BASE_LOGDIR/$hostName/
FULL_LOGDIR=$HOME/$LOGDIR
# make sure directory exists
if [ ! -d $FULL_LOGDIR ]; then
mkdir -p $FULL_LOGDIR
fi
# delete any old disk caches in the background
deleteOldCaveLogs &
curTime=`date +%Y%m%d_%H%M%S`
pid=$!
export LOGFILE_STARTUP_SHUTDOWN="$FULL_LOGDIR/${PROGRAM_NAME}_${pid}_${curTime}_pid_%PID%_startup-shutdown.log"
createEclipseConfigurationDir
TMP_VMARGS="--launcher.appendVmargs -vmargs -Djava.io.tmpdir=${eclipseConfigurationDir}"
# Force GTK2
export SWT_GTK3=0
# At this point fork so that log files can be set up with the process pid and
# this process can log the exit status of cave.
(
# can we write to log directory
if [ -w $FULL_LOGDIR ]; then
touch ${LOGFILE_STARTUP_SHUTDOWN}
fi
# remove "-noredirect" flag from command-line if set so it doesn't confuse any
# commands we call later.
redirect="true"
USER_ARGS=()
while [[ $1 ]]
do
if [[ "$1" == "-noredirect" ]]
then
redirect="false"
else
USER_ARGS+=("$1")
fi
shift
done
# Make it easy to determine which process is using the directory
if [[ -n $eclipseConfigurationDir ]]; then
echo "$$" > "$eclipseConfigurationDir"/pid
fi
if [[ "${runMonitorThreads}" == "true" ]] ; then
# nohup to allow tar process to continue after user has logged out
nohup ${CAVE_INSTALL}/monitorThreads.sh $pid >> /dev/null 2>&1 &
fi
echo "Launching cave application using the following command: " >> ${LOGFILE_STARTUP_SHUTDOWN}
echo "${CAVE_INSTALL}/cave ${CAVE_INI_ARG} ${SWITCHES[@]} ${USER_ARGS[@]} ${TMP_VMARGS} ${VERSION_ARGS[@]}" >> ${LOGFILE_STARTUP_SHUTDOWN}
curTime=`date --rfc-3339=seconds -u`
echo "Started at $curTime" >> ${LOGFILE_STARTUP_SHUTDOWN}
if [[ "${redirect}" == "true" ]] ; then
# send output to /dev/null because the logback CaveConsoleAppender will capture that output
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} "${SWITCHES[@]}" "${USER_ARGS[@]}" ${TMP_VMARGS} "${VERSION_ARGS[@]}" >> /dev/null 2>&1
else
# allow output to print to the console/terminal that launched CAVE
exec ${CAVE_INSTALL}/cave ${CAVE_INI_ARG} "${SWITCHES[@]}" "${USER_ARGS[@]}" ${TMP_VMARGS} "${VERSION_ARGS[@]}" 2>&1
fi
) &
pid=$!
logExitStatus $pid $LOGFILE_STARTUP_SHUTDOWN

View file

@ -45,7 +45,7 @@
# May 27, 2016 ASM#18971 dfriedman Fix local variable usage in deleteOldEclipseConfigurationDirs
# Aug 09, 2016 ASM#18911 D. Friedman Add minimum purge period of 24 hours. Use a lock file to prevent
# simultaneous purges. Allow override of days to keep.
# Apr 17, 2018 M. James Cleanup for containerization
# Jan 26,2017 #6092 randerso return exitCode so it can be propagated back to through the calling processes
########################
source /awips2/cave/iniLookup.sh
@ -349,7 +349,7 @@ function logExitStatus()
fi
wait $pid
exitCode=$?
curTime=`date --rfc-3339=seconds`
curTime=`date --rfc-3339=seconds -u`
echo Exited at $curTime with an exit status of $exitCode >> $logFile
# If a core file was generated attempt to save it to a better place
@ -363,6 +363,8 @@ function logExitStatus()
mv $coreFile $hostPath
fi
fi
return $exitCode
}
# takes in a PID
@ -415,7 +417,9 @@ function deleteOldCaveLogs()
# Purge the old logs.
local n_days_to_keep=${CAVE_LOG_DAYS_TO_KEEP:-30}
find "$logdir" -type f -name "*.log" -mtime +"$n_days_to_keep" | xargs -r rm
echo -e "Cleaning consoleLogs: "
echo -e "find $logdir -type f -name "*.log" -mtime +$n_days_to_keep | xargs rm "
find "$logdir" -type f -name "*.log" -mtime +"$n_days_to_keep" | xargs rm
# Record the last purge time and remove the lock file.
echo $(date +%s) > "$last_purge_f"
@ -432,7 +436,7 @@ function deleteOldEclipseConfigurationDirs()
local save_IFS=$IFS
IFS=$'\n'
# Find directories that are owned by the user and older than one hour
local old_dirs=( $(find "$tmp_dir" -mindepth 1 -maxdepth 1 -type d -user "$(whoami)" -mmin +60) )
local old_dirs=( $(find "$tmp_dir" -mindepth 1 -maxdepth 1 -type d -user "$USER" -mmin +60) )
IFS=$save_IFS
if (( ${#old_dirs[@]} < 1 )); then
return
@ -469,7 +473,7 @@ function deleteEclipseConfigurationDir()
function createEclipseConfigurationDir()
{
local d dir id=$(hostname)-$(whoami)
for d in "$HOME/caveData/.cave-eclipse/"; do
for d in "/local/cave-eclipse/" "$HOME/.cave-eclipse/"; do
if [[ $d == $HOME/* ]]; then
mkdir -p "$d" || continue
fi
@ -482,7 +486,7 @@ function createEclipseConfigurationDir()
fi
done
echo "Unable to create a unique Eclipse configuration directory. Will proceed with default." >&2
export eclipseConfigurationDir=$HOME/caveData/.cave-eclipse
export eclipseConfigurationDir=$HOME/.cave-eclipse
return 1
}

View file

@ -20,4 +20,6 @@ do
exit 1
fi
done
# Change permissions back to awips.fxalpha as this is run by root during installs.
chown -R awips.fxalpha /awips2/cave/etc
popd > /dev/null 2>&1

View file

@ -2,9 +2,9 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Acarssounding Plug-in
Bundle-SymbolicName: com.raytheon.uf.viz.acarssounding;singleton:=true
Bundle-Version: 1.15.0.qualifier
Bundle-Version: 1.17.0.qualifier
Bundle-Vendor: RAYTHEON
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: com.raytheon.uf.viz.acarssounding
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
@ -26,7 +26,8 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.8.0",
com.raytheon.uf.common.comm;bundle-version="1.12.1174",
com.raytheon.uf.common.derivparam;bundle-version="1.14.0",
com.raytheon.uf.viz.volumebrowser.dataplugin;bundle-version="1.15.0",
com.raytheon.uf.common.geospatial
com.raytheon.uf.common.geospatial,
com.raytheon.uf.viz.d2d.xy.adapters;bundle-version="1.15.0"
Import-Package: com.raytheon.uf.common.inventory.exception,
com.raytheon.uf.viz.datacube
Bundle-ClassPath: com.raytheon.uf.viz.acarssounding.jar

View file

@ -35,5 +35,28 @@
resourceType="cross_section">
</productCreator>
</extension>
<extension
point="com.raytheon.uf.viz.xy.crosssection.crosssectionadapter">
<crossSectionAdapter
adapter="com.raytheon.uf.viz.d2d.xy.adapters.crosssection.PointCSAdapter"
class="com.raytheon.uf.common.dataplugin.acarssounding.ACARSSoundingRecord"
name="Acars Sounding Cross Section Adapter">
</crossSectionAdapter>
</extension>
<extension
point="com.raytheon.uf.viz.xy.timeseries.timeseriesadapter">
<timeSeriesAdapter
adapter="com.raytheon.uf.viz.d2d.xy.adapters.timeseries.PointDataTimeSeriesAdapter"
class="com.raytheon.uf.common.dataplugin.acarssounding.ACARSSoundingRecord"
name="Acars Sounding Time Series Adapter">
</timeSeriesAdapter>
</extension>
<extension
point="com.raytheon.uf.viz.xy.varheight.varheightadapter">
<varHeightAdapter
adapter="com.raytheon.uf.viz.d2d.xy.adapters.varheight.PointDataVarHeightAdapter"
class="com.raytheon.uf.common.dataplugin.acarssounding.ACARSSoundingRecord"
name="AcarsSounding Var Height Adapter">
</varHeightAdapter>
</extension>
</plugin>

View file

@ -1,13 +1,14 @@
<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-3.1.xsd">
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="acarssoundingDataCubeAdapter" class="com.raytheon.uf.viz.acarssounding.ACARSSoundingDataCubeAdapter" />
<bean id="acarssoundingDataCubeAdapter" class="com.raytheon.uf.viz.acarssounding.ACARSSoundingDataCubeAdapter" />
<bean id="acarssoundingDataCubeAdapterRegistered"
factory-bean="dataCubeAdapterRegistry"
factory-method="registerAdapter">
<constructor-arg ref="acarssoundingDataCubeAdapter" />
</bean>
<bean id="acarssoundingDataCubeAdapterRegistered"
factory-bean="dataCubeAdapterRegistry"
factory-method="registerAdapter">
<constructor-arg ref="acarssoundingDataCubeAdapter" />
</bean>
</beans>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>

View file

@ -4,7 +4,7 @@ Bundle-Name: AlertView Localization
Bundle-SymbolicName: com.raytheon.uf.viz.alertview.localization
Bundle-Version: 1.15.0.qualifier
Bundle-Vendor: RAYTHEON
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Require-Bundle: com.raytheon.uf.common.localization;bundle-version="1.14.1",
com.raytheon.uf.viz.alertview;bundle-version="1.15.0"

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>

View file

@ -4,7 +4,7 @@ Bundle-Name: LogBack AlertView compatibility
Bundle-SymbolicName: com.raytheon.uf.viz.alertview.logback
Bundle-Version: 1.15.0.qualifier
Bundle-Vendor: RAYTHEON
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Eclipse-RegisterBuddy: ch.qos.logback
Require-Bundle: ch.qos.logback;bundle-version="1.1.2",
com.raytheon.uf.viz.alertview;bundle-version="1.15.0",

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>

View file

@ -4,7 +4,7 @@ Bundle-Name: AlertView
Bundle-SymbolicName: com.raytheon.uf.viz.alertview;singleton:=true
Bundle-Version: 1.15.0.qualifier
Bundle-Vendor: RAYTHEON
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: com.raytheon.uf.viz.alertview
Require-Bundle: org.eclipse.ui;bundle-version="3.8.2",
org.eclipse.core.runtime;bundle-version="3.8.0",

View file

@ -62,14 +62,15 @@ import com.raytheon.uf.viz.alertview.ui.view.OpenAlertViewHandler;
* ------------- -------- --------- --------------------------
* Jun 17, 2015 4474 bsteffen Initial creation
* Aug 20, 2015 4717 mapeters Added null check on Alert's message
* Feb 14, 2017 6029 randerso Ensure AlertPopup appears on primary monitor
*
* </pre>
*
* @author bsteffen
* @version 1.0
*/
public class AlertPopup implements AlertDestination,
PreferenceFile.Listener<PopUpPreferences> {
public class AlertPopup
implements AlertDestination, PreferenceFile.Listener<PopUpPreferences> {
private final PopupAlertTask task = new PopupAlertTask();
@ -210,15 +211,16 @@ public class AlertPopup implements AlertDestination,
nextDelayUnblockKey = 2;
}
this.displayedAlert = this.alert;
if (displayedAlert != null && (shell == null || shell.isDisposed())) {
shell = new Shell(Display.getDefault(), SWT.NO_FOCUS
| SWT.NO_TRIM | SWT.ON_TOP);
if (displayedAlert != null
&& (shell == null || shell.isDisposed())) {
shell = new Shell(Display.getDefault(),
SWT.NO_FOCUS | SWT.NO_TRIM | SWT.ON_TOP);
GridLayout layout = new GridLayout(1, false);
layout.marginHeight = 0;
layout.marginWidth = 0;
shell.setLayout(layout);
shell.setForeground(Display.getDefault().getSystemColor(
SWT.COLOR_BLACK));
shell.setForeground(
Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
shell.addListener(SWT.Dispose, new Listener() {
@Override
public void handleEvent(Event event) {
@ -247,7 +249,7 @@ public class AlertPopup implements AlertDestination,
});
shell.setSize(prefs.getWidth(), prefs.getHeight());
Rectangle clientArea = Display.getDefault().getMonitors()[0]
Rectangle clientArea = Display.getDefault().getPrimaryMonitor()
.getClientArea();
int offset = 2;
@ -259,8 +261,8 @@ public class AlertPopup implements AlertDestination,
startY = clientArea.y + offset;
break;
case UPPER_RIGHT:
startX = clientArea.x + clientArea.width
- shell.getSize().x - offset;
startX = clientArea.x + clientArea.width - shell.getSize().x
- offset;
startY = clientArea.y + offset;
break;
case LOWER_LEFT:
@ -269,8 +271,8 @@ public class AlertPopup implements AlertDestination,
- shell.getSize().y - offset;
break;
case LOWER_RIGHT:
startX = clientArea.x + clientArea.width
- shell.getSize().x - offset;
startX = clientArea.x + clientArea.width - shell.getSize().x
- offset;
startY = clientArea.y + clientArea.height
- shell.getSize().y - offset;
break;
@ -286,10 +288,10 @@ public class AlertPopup implements AlertDestination,
}
} else {
Display display = shell.getDisplay();
label.setBackground(styles.getBackgroundColor(display,
displayedAlert));
label.setForeground(styles.getForegroundColor(display,
displayedAlert));
label.setBackground(
styles.getBackgroundColor(display, displayedAlert));
label.setForeground(
styles.getForegroundColor(display, displayedAlert));
label.setFont(styles.getFont(display, displayedAlert));
label.setText(displayedAlert.getMessage() == null ? "null"
: displayedAlert.getMessage());
@ -366,8 +368,8 @@ public class AlertPopup implements AlertDestination,
private void activate() {
if (!active) {
shell.setCursor(shell.getDisplay().getSystemCursor(
SWT.CURSOR_HAND));
shell.setCursor(
shell.getDisplay().getSystemCursor(SWT.CURSOR_HAND));
if (activeColor == null
|| !inactiveColor.equals(label.getBackground())) {
inactiveColor = label.getBackground();
@ -398,8 +400,8 @@ public class AlertPopup implements AlertDestination,
private void deactivate() {
if (active) {
shell.setCursor(shell.getDisplay().getSystemCursor(
SWT.CURSOR_ARROW));
shell.setCursor(
shell.getDisplay().getSystemCursor(SWT.CURSOR_ARROW));
label.setBackground(inactiveColor);
active = false;
task.unblockChanges();

View file

@ -18,6 +18,6 @@ Export-Package: com.raytheon.uf.viz.alertviz.ui,
com.raytheon.uf.viz.alertviz.ui.audio,
com.raytheon.uf.viz.alertviz.ui.dialogs,
com.raytheon.uf.viz.alertviz.ui.timer
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.raytheon.uf.common.alertmonitor
Bundle-ClassPath: com.raytheon.uf.viz.alertviz.ui.jar

View file

@ -22,6 +22,7 @@ package com.raytheon.uf.viz.alertviz.ui.dialogs;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
@ -76,6 +77,7 @@ import com.raytheon.uf.viz.alertviz.config.Source;
import com.raytheon.uf.viz.alertviz.config.TrayConfiguration;
import com.raytheon.uf.viz.alertviz.ui.audio.AlertAudioMgr;
import com.raytheon.uf.viz.alertviz.ui.audio.IAudioAction;
import com.raytheon.viz.ui.dialogs.DialogUtil;
/**
* This class displays the dialog showing all of the in-bound messages.
@ -113,11 +115,12 @@ import com.raytheon.uf.viz.alertviz.ui.audio.IAudioAction;
* monitor containing cursor after caveData is
* cleared. Code cleanup.
* Nov 02, 2016 5980 randerso Fixed sizing when changing layout
* Feb 14, 2017 6029 randerso Ensure AlertMessageDlg cannot be on top of
* panels, cleanup
*
* </pre>
*
* @author lvenable
* @version 1.0
*
*/
public class AlertMessageDlg implements MouseMoveListener, MouseListener,
@ -141,11 +144,6 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
*/
private Display display;
/**
* Return value when the shell is disposed.
*/
private final Boolean returnValue = false;
/**
* Label used to move the dialog.
*/
@ -230,7 +228,7 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
/**
* Message vector.
*/
private final Vector<StatusMessage> messageVec = new Vector<StatusMessage>();
private final Vector<StatusMessage> messageVec = new Vector<>();
private static final String CATEGORY_MONITOR = "MONITOR";
@ -278,9 +276,8 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
/**
* Open method used to display the dialog.
*
* @return True/False.
*/
public Object open() {
public void open() {
shell = new Shell(display, SWT.ON_TOP | SWT.NO_TRIM);
shell.addDisposeListener(new DisposeListener() {
@ -310,21 +307,15 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
// if previous size and location were not set
if (rect.width == 0 || rect.height == 0) {
// use default size and locate dialog on monitor containing cursor
Monitor[] monitors = display.getMonitors();
Point cursor = display.getCursorLocation();
for (int i = 0; i < monitors.length; i++) {
if (monitors[i].getBounds().contains(cursor)) {
shellLoc.x = monitors[i].getBounds().x;
shellLoc.y = monitors[i].getBounds().y;
break;
}
}
Monitor monitor = DialogUtil.getCursorMonitor(display);
shellLoc.x = monitor.getClientArea().x;
shellLoc.y = monitor.getClientArea().y;
}
Point shellSize = shell.getSize();
if (rect.width > shellSize.x && resizeLabel != null
&& !resizeLabel.isDisposed())
&& !resizeLabel.isDisposed()) {
shellSize.x = rect.width;
}
// force bar location to be within the display.
Display d = shell.getDisplay();
@ -350,8 +341,6 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
} else {
enabled = true;
}
return returnValue;
}
/**
@ -397,7 +386,7 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
* Register as a window.
*/
public void registerAsWindow() {
IContextService svc = (IContextService) PlatformUI.getWorkbench()
IContextService svc = PlatformUI.getWorkbench()
.getService(IContextService.class);
svc.registerShell(shell, IContextService.TYPE_WINDOW);
}
@ -421,7 +410,7 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
glSize = 4 + monitorsCount;
}
txtMsgCompArray = new ArrayList<TextMsgControlComp>();
txtMsgCompArray = new ArrayList<>();
GridData gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
Composite mainComp = new Composite(shell, SWT.BORDER);
@ -582,10 +571,25 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
if (mouseDownPt != null) {
if ((Label) e.getSource() == moveLabel) {
if (moveDialog == true) {
Point dialogLoc = shell.getLocation();
dialogLoc.x = dialogLoc.x + (e.x - mouseDownPt.x);
dialogLoc.y = dialogLoc.y + (e.y - mouseDownPt.y);
shell.setLocation(dialogLoc);
Rectangle dialogBounds = shell.getBounds();
dialogBounds.x = dialogBounds.x + (e.x - mouseDownPt.x);
dialogBounds.y = dialogBounds.y + (e.y - mouseDownPt.y);
// don't allow the dialog to move over the top or bottom
// panels
Monitor m = DialogUtil.getCursorMonitor(display);
Rectangle clientArea = m.getClientArea();
if (dialogBounds.y < clientArea.y) {
dialogBounds.y = clientArea.y;
}
if (dialogBounds.y + dialogBounds.height > clientArea.y
+ clientArea.height) {
dialogBounds.y = clientArea.y + clientArea.height
- dialogBounds.height;
}
shell.setLocation(dialogBounds.x, dialogBounds.y);
}
} else if ((Label) e.getSource() == resizeLabel) {
if (resizeDialog == true) {
@ -774,8 +778,8 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
*/
private String loadInfoImage() {
IPathManager pm = PathManagerFactory.getPathManager();
String path = pm
.getFile(pm.getContext(LocalizationType.CAVE_STATIC,
String path = pm.getFile(
pm.getContext(LocalizationType.CAVE_STATIC,
LocalizationLevel.BASE),
"alertVizIcons" + File.separatorChar + "trans_i_small.gif")
.getAbsolutePath();
@ -915,7 +919,7 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
* @return String array of categories.
*/
private Category[] getCategoryList(int textBox) {
ArrayList<String> strArrayList = new ArrayList<String>();
List<String> strArrayList = new ArrayList<>();
Map<String, Category> catMap = configData.getCategories();
@ -1095,7 +1099,7 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
// if tips window would be partially off screen it will be forced on
// screen by eclipse/window manager
if (b.y < (m.getBounds().height - (b.y + b.height))) {
if (b.y < (m.getClientArea().height - (b.y + b.height))) {
// space below alertviz bar > than space above so position below
infoTextShell.setLocation(b.x, b.y + b.height);
} else {
@ -1259,7 +1263,7 @@ public class AlertMessageDlg implements MouseMoveListener, MouseListener,
}
private Map<String, AlertMonitor> createAlertMonitorMap() {
Map<String, AlertMonitor> map = new ConcurrentSkipListMap<String, AlertMonitor>();
Map<String, AlertMonitor> map = new ConcurrentSkipListMap<>();
Map<String, Source> sources = configData.getSources();
for (Source s : sources.values()) {

View file

@ -46,6 +46,7 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
@ -54,33 +55,39 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.alertviz.Container;
import com.raytheon.uf.viz.alertviz.SystemStatusHandler;
import com.raytheon.uf.viz.alertviz.config.AlertMetadata;
import com.raytheon.viz.ui.dialogs.DialogUtil;
/**
* This class displays the pop-up message dialog.
*
* <pre>
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 05 Oct 2008 lvenable Initial creation.
* 02 Apr 2009 lvenable TTR fixes.
* 18 Nov 2010 2235 cjeanbap Changed button, hideDialogBtn, text
* and store previous location.
* 13 Jan 2011 7375 cjeanbap Commented out shell.setVisible(...) in
* acknowledgeLastMessage().
* 20 Apr 2015 4311 lvenable Fixed text field to accept really long text strings.
* 29 Jun 2015 4311 randerso Reworking AlertViz dialogs to be resizable.
* 25 Jan 2016 5054 randerso Converted to stand alone window
* 08 Feb 2016 5312 randerso Deleted isDisposed() added isOpen()
*
* Date Ticket# Engineer Description
* ------------- -------- --------- --------------------------------------------
* Oct 05, 2008 lvenable Initial creation.
* Apr 02, 2009 lvenable TTR fixes.
* Nov 18, 2010 2235 cjeanbap Changed button, hideDialogBtn, text and
* store previous location.
* Jan 13, 2011 7375 cjeanbap Commented out shell.setVisible(...) in
* acknowledgeLastMessage().
* Apr 20, 2015 4311 lvenable Fixed text field to accept really long text
* strings.
* Jun 29, 2015 4311 randerso Reworking AlertViz dialogs to be resizable.
* Jan 25, 2016 5054 randerso Converted to stand alone window
* Feb 08, 2016 5312 randerso Deleted isDisposed() added isOpen()
* Feb 14, 2017 6029 randerso Ensure popup does not appear on top of panels,
* Made popup appear on monitor with AlertViz bar
* Ensure popup cannot be dragged on top of panels.
* Feb 28, 2017 6066 randerso Move dialog up, if necessary, when expanded
*
* </pre>
*
* @author lvenable
* @version 1.0
*
*/
public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
DisposeListener {
public class AlertPopupMessageDlg
implements MouseMoveListener, MouseListener, DisposeListener {
private static final int MAX_INITIAL_LINES = 5;
private static final int WIDTH_IN_CHARS = 135;
@ -100,6 +107,11 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
*/
private Shell shell;
/**
* The parent shell
*/
private Shell parent;
/**
* The display control.
*/
@ -179,7 +191,7 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
/**
* Array of status messages.
*/
private final ArrayList<StatusMessage> statMsgArray = new ArrayList<StatusMessage>();
private final java.util.List<StatusMessage> statMsgArray = new ArrayList<>();
/**
* Source label.
@ -231,16 +243,6 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
*/
private Point origin;
/**
* Adjusted dialog location.
*/
private Point dialogLoc;
/**
* Actual dialog X, Y coordinate.
*/
private Point dialogXY;
/**
* Dialog background color.
*/
@ -280,10 +282,15 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
private int controlWidth;
private Point minSize;
private Point savedLoc = null;
/**
* Constructor.
*
* @param display
* @param parent
* the shell of the AlertMessageDlg
* @param statMsg
* Status message.
* @param expanded
@ -293,9 +300,11 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
* @param startUpRGB
* Color to be displayed at startup.
*/
public AlertPopupMessageDlg(Display display, StatusMessage statMsg,
public AlertPopupMessageDlg(Shell parent, StatusMessage statMsg,
boolean expanded, Listener listener, RGB startUpRGB) {
this.display = display;
this.parent = parent;
this.display = parent.getDisplay();
eventListener = listener;
statMsgArray.add(statMsg);
this.expanded = expanded;
@ -308,7 +317,7 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
* Initialize the shell
*/
private void initShell(RGB startUp) {
shell = new Shell(display, SWT.ON_TOP | SWT.RESIZE);
shell = new Shell(display, SWT.DIALOG_TRIM | SWT.ON_TOP | SWT.RESIZE);
shell.setText("Alert Visualization Popup Message Dialog");
shell.addDisposeListener(this);
@ -351,20 +360,17 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
*
*/
private void open() {
minSize = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT);
shell.setMinimumSize(minSize);
shell.setSize(minSize);
setInitialDialogLocation();
setDialogLocation();
initialized = true;
showHideLog();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
@ -378,7 +384,7 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
/*
* compute preferred height to display entire message.
*/
int screenWidth = display.getPrimaryMonitor().getBounds().width;
int screenWidth = parent.getMonitor().getClientArea().width;
/*
* compute width of controls as the lesser of WIDTH_IN_CHARS or
@ -420,10 +426,10 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
moveLabel.setFont(labelFont);
moveLabel.addMouseListener(this);
moveLabel.addMouseMoveListener(this);
moveLabel.setBackground(display
.getSystemColor(SWT.COLOR_TITLE_BACKGROUND));
moveLabel.setForeground(display
.getSystemColor(SWT.COLOR_TITLE_FOREGROUND));
moveLabel.setBackground(
display.getSystemColor(SWT.COLOR_TITLE_BACKGROUND));
moveLabel.setForeground(
display.getSystemColor(SWT.COLOR_TITLE_FOREGROUND));
}
/**
@ -445,8 +451,8 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
sourceLbl.setLayoutData(gd);
priorityLbl = new Label(topLabelComp, SWT.BORDER);
priorityLbl.setText(priorityStr
+ statMsgArray.get(0).getPriority().ordinal());
priorityLbl.setText(
priorityStr + statMsgArray.get(0).getPriority().ordinal());
gd = new GridData(200, SWT.DEFAULT);
gd.verticalIndent = 10;
priorityLbl.setLayoutData(gd);
@ -468,12 +474,13 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
messageComp.setLayoutData(gd);
messageComp.setBackground(display.getSystemColor(SWT.COLOR_RED));
messageTF = new Text(messageComp, SWT.BORDER | SWT.MULTI | SWT.WRAP
| SWT.V_SCROLL);
messageTF = new Text(messageComp,
SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
messageTF.setEditable(false);
messageTF.setText(statMsgArray.get(0).getMessage());
int preferredHeight = messageTF.computeSize(controlWidth, SWT.DEFAULT).y;
int preferredHeight = messageTF.computeSize(controlWidth,
SWT.DEFAULT).y;
/*
* compute size to display only max initial lines
@ -577,7 +584,8 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
dblClickLBl.setForeground(display.getSystemColor(SWT.COLOR_DARK_BLUE));
dblClickLBl.setLayoutData(gd);
msgLogList = new List(logComp, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
msgLogList = new List(logComp,
SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
Rectangle size = msgLogList.computeTrim(0, 0, controlWidth,
msgLogList.getItemHeight() * NUM_LIST_ITEMS);
@ -673,6 +681,7 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
}
private void adjustHeight(int delta) {
Point minSize = shell.getMinimumSize();
minSize.y += delta;
shell.setMinimumSize(minSize);
@ -681,6 +690,25 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
size.x += SWT_BUG_FACTOR;
size.y += delta + SWT_BUG_FACTOR;
shell.setSize(size);
if (delta < 0 && savedLoc != null) {
shell.setLocation(savedLoc);
savedLoc = null;
}
Point prevLoc = shell.getLocation();
Rectangle dialogBounds = shell.getBounds();
Rectangle clientArea = shell.getMonitor().getClientArea();
if (dialogBounds.y + dialogBounds.height > clientArea.y
+ clientArea.height) {
dialogBounds.y = clientArea.y + clientArea.height
- dialogBounds.height;
}
shell.setLocation(dialogBounds.x, dialogBounds.y);
if (!prevLoc.equals(shell.getLocation())) {
savedLoc = prevLoc;
}
}
/**
@ -702,8 +730,7 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
timeLbl.setText(dateFormat.format(sm.getEventTime()));
messageTF.setText(sm.getMessage());
int desiredHeight = Math.min(MAX_INITIAL_LINES,
messageTF.getLineCount())
* messageTF.getLineHeight();
messageTF.getLineCount()) * messageTF.getLineHeight();
Rectangle clientArea = messageTF.getClientArea();
if (clientArea.height < desiredHeight) {
Rectangle trim = messageTF.computeTrim(clientArea.x, clientArea.y,
@ -716,18 +743,6 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
detailsComp.displayDetails(sm);
}
/**
* Bring the dialog to the front.
*/
public void dialogToFront() {
// This is the way SWT works to bring a dialog
// to the front of the display when it is hidden
// under another dialog.
shell.setLocation(dialogXY);
shell.setFocus();
shell.setVisible(true);
}
/**
* Add a new status message.
*
@ -814,8 +829,8 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
StatusMessage sm = statMsgArray.get(index);
try {
SystemStatusHandler
.acknowledge(sm, System.getProperty("user.name"));
SystemStatusHandler.acknowledge(sm,
System.getProperty("user.name"));
} catch (Exception ex) {
Container.logInternal(Priority.ERROR, "Acknowledge failed...", ex);
return;
@ -842,8 +857,8 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
StatusMessage sm = statMsgArray.get(0);
try {
SystemStatusHandler
.acknowledge(sm, System.getProperty("user.name"));
SystemStatusHandler.acknowledge(sm,
System.getProperty("user.name"));
} catch (Exception ex) {
Container.logInternal(Priority.ERROR, "Acknowledge last failed...",
ex);
@ -932,11 +947,9 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
try {
SystemStatusHandler.acknowledge(message, userName);
} catch (Exception ex) {
Container
.logInternal(
Priority.ERROR,
"AlertPopupMessaeDlg: exception acknowledging message.",
ex);
Container.logInternal(Priority.ERROR,
"AlertPopupMessaeDlg: exception acknowledging message.",
ex);
}
}
@ -954,24 +967,14 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
/**
* Sets initial location of dialog.
*/
private void setInitialDialogLocation() {
private void setDialogLocation() {
if (dialogXY == null) {
Point minSize = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT);
shell.setMinimumSize(minSize);
Rectangle clientArea = parent.getMonitor().getClientArea();
int screenHeight = display.getBounds().height;
int screenWidth = display.getPrimaryMonitor().getBounds().width;
Point size = minSize;
shell.setSize(size);
dialogXY = new Point((screenWidth - size.x) / 2,
(screenHeight - size.y) / 4);
shell.setLocation(dialogXY);
} else {
shell.setLocation(dialogXY);
}
int x = clientArea.x + Math.max(0, (clientArea.width - minSize.x) / 2);
int y = clientArea.y + Math.max(0, (clientArea.height - minSize.y) / 4);
shell.setLocation(x, y);
savedLoc = null;
}
/**
@ -982,8 +985,10 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
*/
public void showDialog() {
if (initialized) {
shell.setLocation(dialogXY);
shell.setVisible(true);
if (!shell.isVisible()) {
shell.setVisible(true);
setDialogLocation();
}
showSelectedListData();
msgLogList.showSelection();
@ -1055,10 +1060,26 @@ public class AlertPopupMessageDlg implements MouseMoveListener, MouseListener,
public void mouseMove(MouseEvent e) {
if ((origin != null) && (moveDialog == true)) {
// Move the dialog.
dialogLoc = display.map(shell, null, e.x, e.y);
dialogXY.x = dialogLoc.x - origin.x;
dialogXY.y = dialogLoc.y - origin.y;
shell.setLocation(dialogXY.x, dialogXY.y);
Rectangle dialogBounds = shell.getBounds();
dialogBounds.x = dialogBounds.x + (e.x - origin.x);
dialogBounds.y = dialogBounds.y + (e.y - origin.y);
// don't allow the dialog to move over the top or bottom
// panels
Monitor m = DialogUtil.getCursorMonitor(display);
Rectangle clientArea = m.getClientArea();
if (dialogBounds.y < clientArea.y) {
dialogBounds.y = clientArea.y;
}
if (dialogBounds.y + dialogBounds.height > clientArea.y
+ clientArea.height) {
dialogBounds.y = clientArea.y + clientArea.height
- dialogBounds.height;
}
shell.setLocation(dialogBounds.x, dialogBounds.y);
savedLoc = null;
}
}

View file

@ -47,6 +47,7 @@ import org.eclipse.ui.themes.ColorUtil;
import com.raytheon.uf.common.localization.IPathManager;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
import com.raytheon.uf.common.localization.LocalizationUtil;
import com.raytheon.uf.common.localization.PathManagerFactory;
import com.raytheon.uf.common.message.StatusMessage;
import com.raytheon.uf.common.status.UFStatus.Priority;
@ -63,6 +64,7 @@ import com.raytheon.uf.viz.alertviz.config.Category;
import com.raytheon.uf.viz.alertviz.config.Configuration;
import com.raytheon.uf.viz.alertviz.config.Source;
import com.raytheon.uf.viz.alertviz.config.TrayConfiguration;
import com.raytheon.uf.viz.alertviz.python.AlertVizPython;
import com.raytheon.uf.viz.alertviz.ui.audio.AlertAudioMgr;
import com.raytheon.uf.viz.alertviz.ui.audio.IAudioAction;
import com.raytheon.uf.viz.alertviz.ui.timer.AlertTimer;
@ -74,44 +76,52 @@ import com.raytheon.uf.viz.core.VizApp;
*
* <pre>
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 05 Oct 2008 lvenable Initial creation.
* 02 Apr 2009 lvenable TTR fixes.
* 18 Nov 2010 2235 cjeanbap Add AlertViz location preservation.
* 01 Dec 2010 6532 cjeanbap Add functionality to restart AlertVisualization App.
* 21 Jan 2011 cjeanbap Check Status Message for Internal AlertViz problem(s).
* 24 Jan 2011 1978 cjeanbap Add Monitor Tooltip functionality.
* 28 Jan 2011 4617 cjeanbap Added Monitor Only functionality.
* 08 Feb 2011 4617 cjeanbap Fix bug of multiple windows.
* 14 Feb 2010 4617 cjeanbap Changed handling of Exceptions filtering.
* 03 Mar 2011 8059 rferrel alertArrived can now play system beep.
* 04 Mar 2011 6532 rferrel Restart now works
* 02 May 2011 9067 cjeanbap Redraw AlertMessageDlg if a Layout or a Monitor was
* changed.
* 03 May 2011 9101 cjeanbap Pass a clone object into AlertVizPython class.
* 31 May 2011 8058 cjeanbap Kill sound based on TextMsgBox id.
* 17 Jan 2012 27 rferrel Refactored to allow override of createTrayMenuItems
* 09 Mar 2015 3856 lvenable Added a check to determine if the timer is running before
* changing the icon on the timer action. If it isn't running
* then set the icon to the default image.
* 18 Mar 2015 4234 njensen Remove reference to non-working python
* 03 Jun 2015 4473 njensen Updated for new AlertvizJob API
* 29 Jun 2015 4311 randerso Reworking AlertViz dialogs to be resizable.
* 28 Oct 2015 5054 randerso Call AlertVisualization.dispose() on restart so all the
* other dispose methods are called.
* 25 Jan 2016 5054 randerso Removed dummy parent shell
* 08 Feb 2016 5312 randerso Changed to build tray menu on demand
*
* Date Ticket# Engineer Description
* ------------- -------- --------- --------------------------------------------
* Oct 05, 2008 lvenable Initial creation.
* Apr 02, 2009 lvenable TTR fixes.
* Nov 18, 2010 2235 cjeanbap Add AlertViz location preservation.
* Dec 01, 2010 6532 cjeanbap Add functionality to restart
* AlertVisualization App.
* Jan 21, 2011 cjeanbap Check Status Message for Internal AlertViz
* problem(s).
* Jan 24, 2011 1978 cjeanbap Add Monitor Tooltip functionality.
* Jan 28, 2011 4617 cjeanbap Added Monitor Only functionality.
* Feb 08, 2011 4617 cjeanbap Fix bug of multiple windows.
* Feb 14, 2010 4617 cjeanbap Changed handling of Exceptions filtering.
* Mar 03, 2011 8059 rferrel alertArrived can now play system beep.
* Mar 04, 2011 6532 rferrel Restart now works
* May 02, 2011 9067 cjeanbap Redraw AlertMessageDlg if a Layout or a
* Monitor was changed.
* May 03, 2011 9101 cjeanbap Pass a clone object into AlertVizPython
* class.
* May 31, 2011 8058 cjeanbap Kill sound based on TextMsgBox id.
* Jan 17, 2012 27 rferrel Refactored to allow override of
* createTrayMenuItems
* Mar 09, 2015 3856 lvenable Added a check to determine if the timer is
* running before changing the icon on the
* timer action. If it isn't running then set
* the icon to the default image.
* Mar 18, 2015 4234 njensen Remove reference to non-working python
* Jun 03, 2015 4473 njensen Updated for new AlertvizJob API
* Jun 29, 2015 4311 randerso Reworking AlertViz dialogs to be resizable.
* Oct 28, 2015 5054 randerso Call AlertVisualization.dispose() on restart
* so all the other dispose methods are called.
* Jan 25, 2016 5054 randerso Removed dummy parent shell
* Feb 08, 2016 5312 randerso Changed to build tray menu on demand
* Feb 14, 2017 6029 randerso Make popup appear on monitor with AlertViz
* bar
* Mar 24, 2017 DR 16985 dfiedman Restore Python script functionality
*
* </pre>
*
* @author lvenable
* @version 1.0
*
*/
public class AlertVisualization implements ITimerAction, IAudioAction,
IAlertArrivedCallback, Listener, IConfigurationChangedListener,
IRestartListener {
public class AlertVisualization
implements ITimerAction, IAudioAction, IAlertArrivedCallback, Listener,
IConfigurationChangedListener, IRestartListener {
/**
* The display control.
*/
@ -454,13 +464,13 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
@Override
public void widgetSelected(SelectionEvent event) {
MessageDialog dialog = new MessageDialog(
alertMessageDlg.getShell(),
"Confirm Restart!",
alertMessageDlg.getShell(), "Confirm Restart!",
null,
"Any unsaved changes will be lost. Restart anyway?",
MessageDialog.QUESTION, new String[] {
IDialogConstants.YES_LABEL,
IDialogConstants.NO_LABEL }, 0);
MessageDialog.QUESTION,
new String[] { IDialogConstants.YES_LABEL,
IDialogConstants.NO_LABEL },
0);
dialog.create();
@ -539,10 +549,11 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
*/
private String loadAlertVizImage() {
IPathManager pm = PathManagerFactory.getPathManager();
String path = pm.getFile(
pm.getContext(LocalizationType.CAVE_STATIC,
LocalizationLevel.BASE),
"alertVizIcons" + File.separatorChar + "alertViz.png")
String path = pm
.getFile(
pm.getContext(LocalizationType.CAVE_STATIC,
LocalizationLevel.BASE),
"alertVizIcons" + File.separatorChar + "alertViz.png")
.getAbsolutePath();
return path;
}
@ -554,10 +565,11 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
*/
private String loadAlertVizErrorImage() {
IPathManager pm = PathManagerFactory.getPathManager();
String path = pm.getFile(
pm.getContext(LocalizationType.CAVE_STATIC,
LocalizationLevel.BASE),
"alertVizIcons" + File.separatorChar + "alertError.png")
String path = pm
.getFile(
pm.getContext(LocalizationType.CAVE_STATIC,
LocalizationLevel.BASE),
"alertVizIcons" + File.separatorChar + "alertError.png")
.getAbsolutePath();
return path;
}
@ -592,11 +604,15 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
final TrayConfiguration gConfig) {
if ((alertMessageDlg == null) || alertMessageDlg.isDisposed()) {
Container.logInternal(Priority.ERROR, statMsg.getMessage() + "\n"
+ statMsg.getDetails());
Container.logInternal(Priority.ERROR,
statMsg.getMessage() + "\n" + statMsg.getDetails());
return;
}
if (amd.isPythonEnabled() && amd.getPythonScript() != null) {
AlertVizPython.run(statMsg, amd.clone(), gConfig);
}
boolean isGdnAdminMessage = statMsg.getCategory().equals("GDN_ADMIN")
|| statMsg.getSourceKey().equals("GDN_ADMIN");
@ -605,15 +621,16 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
if ((statMsg.getDetails() != null)
&& (statMsg.getDetails().contains("Error")
|| statMsg.getDetails().contains("Exception")
|| statMsg.getDetails().contains("Throwable") || Container
.hasMissing(statMsg))) {
|| statMsg.getDetails().contains("Throwable")
|| Container.hasMissing(statMsg))) {
Source source = configData.lookupSource("GDN_ADMIN");
RGB backgroundRBG = null;
if ((source == null) || (source.getConfigurationItem() == null)) {
if ((source == null)
|| (source.getConfigurationItem() == null)) {
backgroundRBG = ColorUtil.getColorValue("COLOR_YELLOW");
} else {
AlertMetadata am = source.getConfigurationItem().lookup(
Priority.SIGNIFICANT);
AlertMetadata am = source.getConfigurationItem()
.lookup(Priority.SIGNIFICANT);
backgroundRBG = am.getBackground();
}
alertMessageDlg.setErrorLogBtnBackground(backgroundRBG);
@ -658,9 +675,8 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
audioFile = getFullAudioFilePath(audioFile);
} else {
audioFile = statMsg.getAudioFile();
if ((audioFile != null)
&& ((audioFile.trim().length() == 0) || audioFile
.equals("NONE"))) {
if ((audioFile != null) && ((audioFile.trim().length() == 0)
|| audioFile.equals("NONE"))) {
audioFile = null;
}
audioFile = getFullAudioFilePath(audioFile);
@ -673,7 +689,8 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
// Pop-up message
if (amd.isPopup() == true) {
if (alertPopupDlg == null) {
alertPopupDlg = new AlertPopupMessageDlg(display, statMsg,
alertPopupDlg = new AlertPopupMessageDlg(
alertMessageDlg.getShell(), statMsg,
gConfig.isExpandedPopup(), this, amd.getBackground());
showPopup = true;
ackAll = true;
@ -707,7 +724,7 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
File file = new File(filename);
if (!file.exists()) {
file = PathManagerFactory.getPathManager().getStaticFile(
"alertVizAudio/" + file.getName());
LocalizationUtil.join("alertVizAudio", file.getName()));
if ((file == null) || !file.exists()) {
filename = null;
} else {
@ -744,8 +761,8 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
toolTip.dispose();
}
toolTip = new ToolTip(alertMessageDlg.getShell(), SWT.BALLOON
| SWT.ICON_WARNING);
toolTip = new ToolTip(alertMessageDlg.getShell(),
SWT.BALLOON | SWT.ICON_WARNING);
toolTip.setText(cat.getCategoryName());
toolTip.setMessage(statMsg.getMessage());
@ -763,8 +780,8 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
} else {
int messages = alertPopupDlg.getNumberOfMessages();
if (messages == 1) {
this.trayItem.setToolTipText("There is " + messages
+ " message to be acknowledged");
this.trayItem.setToolTipText(
"There is " + messages + " message to be acknowledged");
} else {
this.trayItem.setToolTipText("There are " + messages
+ " messages to be acknowledged");
@ -811,8 +828,8 @@ public class AlertVisualization implements ITimerAction, IAudioAction,
showPopup = false;
break;
default:
Container.logInternal(Priority.WARN, "Unexpected event type: "
+ event.type);
Container.logInternal(Priority.WARN,
"Unexpected event type: " + event.type);
break;
}
}

View file

@ -51,21 +51,22 @@ import org.eclipse.swt.widgets.TabFolder;
* <pre>
*
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 2008 mschenke Initial creation
* Apr 02, 2009 lvenable TTR fixes.
* Dec 01, 2010 5632 cjeanbap Added sort based on category.
* Mar 02, 2011 5632 cjeanbap Added sort based on category.
* Feb 06, 2013 14501 Xiaochuan Using getCategoriesFromConfig() to
* set categoryList[] in clearOptionCbo.
* 29 Jan 2016 5289 tgurney Add missing close button in trim
* Apr 01, 2016 5517 randerso Fix GUI sizing issues
*
* Date Ticket# Engineer Description
* ------------- -------- ---------- -------------------------------------------
* 2008 mschenke Initial creation
* Apr 02, 2009 lvenable TTR fixes.
* Dec 01, 2010 5632 cjeanbap Added sort based on category.
* Mar 02, 2011 5632 cjeanbap Added sort based on category.
* Feb 06, 2013 14501 Xiaochuan Using getCategoriesFromConfig() to set
* categoryList[] in clearOptionCbo.
* Jan 29, 2016 5289 tgurney Add missing close button in trim
* Apr 01, 2016 5517 randerso Fix GUI sizing issues
* Feb 27, 2017 6029 randerso Ensure dialog appears on correct monitor
*
* </pre>
*
* @author mschenke
* @version 1.0
*/
public class TabControlDlg extends Dialog {
@ -145,7 +146,7 @@ public class TabControlDlg extends Dialog {
private TabControlDlg(Shell parent) {
super(parent, SWT.TITLE);
logs = new ArrayList<TextMsgLog>();
logs = new ArrayList<>();
initShell();
}
@ -217,13 +218,13 @@ public class TabControlDlg extends Dialog {
shell.setText("Log list for: " + log.getFullText());
populateClearOptionsCombo(log);
detailsText.setText(log.getLogText());
clearOptionCbo.select(logs.get(index)
.getClearOptionCboSelectedIndex());
clearOptionCbo.select(
logs.get(index).getClearOptionCboSelectedIndex());
}
});
detailsText = new StyledText(topComp, SWT.V_SCROLL | SWT.H_SCROLL
| SWT.BORDER);
detailsText = new StyledText(topComp,
SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
gd = new GridData(SWT.FILL, SWT.FILL, true, true);
gd.widthHint = 400;
gd.heightHint = 285;
@ -384,11 +385,10 @@ public class TabControlDlg extends Dialog {
*/
private void setInitialDialogLocation() {
Shell parent = getParent().getShell();
Display display = parent.getDisplay();
// get any monitors height
Monitor any = (display.getMonitors())[0];
Rectangle monSize = any.getBounds();
Monitor m = parent.getMonitor();
Rectangle monSize = m.getClientArea();
int monY = monSize.height;
Point p = parent.getLocation();
@ -474,7 +474,8 @@ public class TabControlDlg extends Dialog {
*/
public int getTabIndex(int textMsgIdx) {
int i;
for (i = 0; i < logs.size() && logs.get(i).getIndex() < textMsgIdx; ++i) {
for (i = 0; i < logs.size()
&& logs.get(i).getIndex() < textMsgIdx; ++i) {
}
return i;
}

View file

@ -19,10 +19,14 @@ Require-Bundle: org.eclipse.ui,
org.slf4j;bundle-version="1.7.21",
org.apache.derby;bundle-version="10.10.1",
com.raytheon.uf.common.logback;bundle-version="1.15.0",
com.raytheon.uf.common.time;bundle-version="1.15.0"
com.raytheon.uf.common.time;bundle-version="1.15.0",
org.jep,
com.raytheon.uf.common.python;bundle-version="1.12.1174",
com.raytheon.uf.common.python.concurrent
Export-Package: com.raytheon.uf.viz.alertviz,
com.raytheon.uf.viz.alertviz.config
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
com.raytheon.uf.viz.alertviz.config,
com.raytheon.uf.viz.alertviz.python
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.raytheon.uf.common.time
Bundle-ActivationPolicy: lazy
Eclipse-RegisterBuddy: ch.qos.logback, com.raytheon.uf.common.logback

View file

@ -18,9 +18,6 @@
# further licensing information.
##
from com.raytheon.uf.viz.alertviz import AlertVizPythonCallback
from com.raytheon.uf.viz.alertviz import AlertVizClient
import jep
#
@ -32,18 +29,15 @@ import jep
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 07/09/09 chammack Initial Creation.
# 03/24/17 DR 16895 D. Friedman Removed callbacks
#
#
#
##
# This is a base file that is not intended to be overridden.
##
class AlertVizProcessor:
def process(self, statusMessage, alertMetadata, globalConfiguration):
raise Exception("Method should be implemented: %s" % _functionId(obj, 1))
def createRunnableCallback(self, callback):
proxy = jep.jproxy(callback, ['java.lang.Runnable'])
return AlertVizPythonCallback(proxy)
def sendCallbackMessage(self, str):
AlertVizClient.sendCallbackMessage(str)

View file

@ -31,8 +31,12 @@ import AlertVizProcessor
#
#
#
##
# This is a base file that is not intended to be overridden.
##
class DebugProcessor(AlertVizProcessor.AlertVizProcessor):
def process(self, statusMessage, alertMetadata, globalConfiguration):
print "%s %s %s" % (statusMessage.getPriority(), statusMessage.getCategory(), statusMessage.getMessage())

View file

@ -32,6 +32,10 @@
#
#
##
# This is a base file that is not intended to be overridden.
##
def process(statusMessage, alertMetadata, globalConfiguration):
script = str(alertMetadata.getPythonScript())[:-3]
module = __import__(script)

View file

@ -32,6 +32,11 @@ import subprocess
#
#
#
##
# This is a base file that is not intended to be overridden.
##
class PyShellScriptWrapper(AlertVizProcessor.AlertVizProcessor):
def process(self, statusMessage, alertMetadata, globalConfiguration):

View file

@ -31,10 +31,14 @@ import AlertVizProcessor
#
#
#
##
# This is a base file that is not intended to be overridden.
##
class WriteToFileTest(AlertVizProcessor.AlertVizProcessor):
def process(self, statusMessage, alertMetadata, globalConfiguration):
testFile = open('/tmp/AlertVizPyTest.txt', 'a')
testFile.write("AV Python Test -- %s %s %s \n" % (statusMessage.getPriority(), statusMessage.getCategory(), statusMessage.getMessage()))
testFile.close()

View file

@ -22,9 +22,9 @@ package com.raytheon.uf.viz.alertviz;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@ -68,11 +68,11 @@ import com.raytheon.uf.viz.alertviz.config.Source;
* Nov 12, 2015 4834 njensen Changed LocalizationOpFailedException to LocalizationException
* Jan 11, 2016 5242 kbisanz Replaced calls to deprecated ILocalizationFile methods
* Feb 12, 2016 4834 bsteffen Fix multiple saves of the customConfiguration.
* Jun 14, 2017 6297 bsteffen Make listeners thread safe.
*
* </pre>
*
* @author mschenke
* @version 1.0
*/
public class ConfigurationManager {
private static final transient IUFStatusHandler statusHandler = UFStatus
@ -134,8 +134,8 @@ public class ConfigurationManager {
/** Initialize manager and load preferences */
private ConfigurationManager() {
// load all configurations
configurationMap = new HashMap<ConfigContext, Configuration>();
listeners = new HashSet<IConfigurationChangedListener>();
configurationMap = new HashMap<>();
listeners = new CopyOnWriteArraySet<>();
current = null;
try {
context = JAXBContext.newInstance(Configuration.class,
@ -144,13 +144,11 @@ public class ConfigurationManager {
marshaller = context.createMarshaller();
unmarshaller = context.createUnmarshaller();
} catch (Exception e) {
Container
.logInternal(
Priority.ERROR,
"ConfigurationManager: exception creating "
+ "marshalling/unmarshalling objects for Configuration, "
+ "ForcedConfiguration, Category, and Source.",
e);
Container.logInternal(Priority.ERROR,
"ConfigurationManager: exception creating "
+ "marshalling/unmarshalling objects for Configuration, "
+ "ForcedConfiguration, Category, and Source.",
e);
context = null;
marshaller = null;
unmarshaller = null;
@ -183,7 +181,7 @@ public class ConfigurationManager {
}
} catch (NullPointerException ex) {
statusHandler.handle(Priority.CRITICAL,
"Unable to load configuration context " + context);
"Unable to load configuration context " + context, ex);
}
return workstationContext;
}
@ -221,13 +219,13 @@ public class ConfigurationManager {
* that result. preserve locking from the base
* configuration.
*/
Configuration baseCustom = baseConfiguration.mergeUnder(
custom, true);
Configuration baseCustom = baseConfiguration
.mergeUnder(custom, true);
currentConfig = baseCustom.overlayWith(currentConfig, true);
}
}
configurationMap.put(current, currentConfig);
} else if (DEFAULT_BASE_CONFIG.equals(current) == false) {
} else if (!DEFAULT_BASE_CONFIG.equals(current)) {
current = DEFAULT_BASE_CONFIG;
return getCurrentConfiguration();
}
@ -331,13 +329,15 @@ public class ConfigurationManager {
* baseConfiguration.
*/
if ((fileContext.getLocalizationLevel() != LocalizationLevel.BASE)
|| ((fileContext.getLocalizationLevel() == LocalizationLevel.BASE) && DEFAULT_BASE_CONFIG
.getLocalizationFileName().equals(file.getPath()))) {
|| ((fileContext
.getLocalizationLevel() == LocalizationLevel.BASE)
&& DEFAULT_BASE_CONFIG.getLocalizationFileName()
.equals(file.getPath()))) {
String fileName = file.getPath();
LocalizationContext locContext = file.getContext();
String name = fileName.substring(
fileName.lastIndexOf(IPathManager.SEPARATOR) + 1, // win32
fileName.lastIndexOf("."));
fileName.lastIndexOf('.'));
ConfigContext context = new ConfigContext(name, locContext);
configurationMap.put(context, null);
}
@ -400,11 +400,11 @@ public class ConfigurationManager {
EXTENSIONS, false, true);
for (ILocalizationFile f : files) {
// Merge other base files with the default.
if (!DEFAULT_BASE_CONFIG.getLocalizationFileName().equals(
f.getPath())) {
if (!DEFAULT_BASE_CONFIG.getLocalizationFileName()
.equals(f.getPath())) {
Configuration fileConfig = retrieveConfiguration(f);
Configuration mergeConfig = configuration.mergeUnder(
fileConfig, true);
Configuration mergeConfig = configuration.mergeUnder(fileConfig,
true);
configuration = mergeConfig.overlayWith(configuration, true);
}
}
@ -430,8 +430,8 @@ public class ConfigurationManager {
ILocalizationFile file = getLocalizationFile(cContext);
try {
// do not attempt to save to base
if (file != null
&& file.getContext().getLocalizationLevel() != LocalizationLevel.BASE) {
if (file != null && file.getContext()
.getLocalizationLevel() != LocalizationLevel.BASE) {
serializeToFile(config, file);
}
} catch (SerializationException e) {
@ -481,7 +481,8 @@ public class ConfigurationManager {
} catch (LocalizationException | IOException | JAXBException e) {
Container.logInternal(Priority.ERROR,
"ConfigurationManager: Exception unmarshalling from file: "
+ file.getPath(), e);
+ file.getPath(),
e);
throw new SerializationException(e);
}
}
@ -533,8 +534,8 @@ public class ConfigurationManager {
.getCategories();
Category cat = (Category) obj;
if (isRemove) {
customConfiguration.getCategories().remove(
cat.getCategoryName());
customConfiguration.getCategories()
.remove(cat.getCategoryName());
} else {
categories.put(cat.getCategoryName(), cat);
}

View file

@ -16,6 +16,6 @@ Export-Package: com.raytheon.uf.viz.app.launcher.bundle,
com.raytheon.uf.viz.app.launcher.handlers,
com.raytheon.uf.viz.app.launcher.runner,
com.raytheon.uf.viz.app.launcher.utilities
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.raytheon.uf.common.ohd,
com.raytheon.uf.common.util

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>

View file

@ -17,7 +17,7 @@ Require-Bundle: org.eclipse.ui;bundle-version="3.8.2",
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
com.raytheon.uf.common.units;bundle-version="1.0.0",
com.raytheon.uf.common.auth;bundle-version="1.12.1174"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Import-Package: org.apache.commons.compress.archivers,
org.apache.commons.compress.archivers.tar

View file

@ -27,6 +27,7 @@ import org.eclipse.ui.PlatformUI;
import com.raytheon.uf.common.archive.request.ArchiveCaseCreationAuthRequest;
import com.raytheon.uf.common.auth.user.IUser;
import com.raytheon.uf.common.auth.util.PermissionUtils;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
@ -42,15 +43,15 @@ import com.raytheon.uf.viz.core.requests.ThriftClient;
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 16, 2013 1966 rferrel Initial creation
* Oct 02, 2013 2326 rferrel Check for administration authorization.
* Date Ticket# Engineer Description
* ------------- -------- --------- --------------------------------------------
* May 16, 2013 1966 rferrel Initial creation
* Oct 02, 2013 2326 rferrel Check for administration authorization.
* Jul 19, 2017 6288 randerso Changes for new roles/permissions framework
*
* </pre>
*
* @author rferrel
* @version 1.0
*/
public class ArchiveCaseCreationDialogAction extends AbstractHandler {
private final IUFStatusHandler statusHandler = UFStatus
@ -63,15 +64,9 @@ public class ArchiveCaseCreationDialogAction extends AbstractHandler {
private String caseDir;
/** Case Administration permission */
private final String PERMISSION = "archive.casecreation";
private static final String PERMISSION = PermissionUtils
.buildPermissionString("archive", "casecreation");
/*
* (non-Javadoc)
*
* @see
* org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands
* .ExecutionEvent)
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
if (isAuthorized()) {
@ -111,11 +106,10 @@ public class ArchiveCaseCreationDialogAction extends AbstractHandler {
return true;
}
} else {
statusHandler
.handle(Priority.ERROR,
String.format(
"Cannot validate user expected response type ArchiveCaseCreationAuthRequest, received %s",
o.getClass().getName()));
statusHandler.handle(Priority.ERROR,
String.format(
"Cannot validate user expected response type ArchiveCaseCreationAuthRequest, received %s",
o.getClass().getName()));
}
} catch (VizException e) {
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);

View file

@ -27,6 +27,7 @@ import org.eclipse.ui.PlatformUI;
import com.raytheon.uf.common.archive.request.ArchiveAdminAuthRequest;
import com.raytheon.uf.common.auth.user.IUser;
import com.raytheon.uf.common.auth.util.PermissionUtils;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
@ -42,32 +43,26 @@ import com.raytheon.uf.viz.core.requests.ThriftClient;
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 16, 2013 1966 rferrel Initial creation
* Oct 02, 2013 2326 rferrel Check for administration authorization.
* Date Ticket# Engineer Description
* ------------- -------- --------- --------------------------------------------
* May 16, 2013 1966 rferrel Initial creation
* Oct 02, 2013 2326 rferrel Check for administration authorization.
* Jul 19, 2017 6288 randerso Changes for new roles/permissions framework
*
* </pre>
*
* @author rferrel
* @version 1.0
*/
public class ArchiveRetentionDialogAction extends AbstractHandler {
private final IUFStatusHandler statusHandler = UFStatus
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(ArchiveRetentionDialogAction.class);
private ArchiveRetentionDlg dialog;
/** Retention Administration permission */
private final String PERMISSION = "archive.retention";
private static final String PERMISSION = PermissionUtils
.buildPermissionString("archive", "retention");
/*
* (non-Javadoc)
*
* @see
* org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands
* .ExecutionEvent)
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
if (isAuthorized()) {

View file

@ -566,7 +566,7 @@ public class CaseCreationDlg extends AbstractArchiveDlg {
if (saveAsDlg == null || saveAsDlg.isDisposed()) {
saveAsDlg = new CaseLoadSaveDeleteDlg(shell,
CaseLoadSaveDeleteDlg.Type.SaveAs);
saveAsDlg.setCloseCallback(new ICloseCallback() {
saveAsDlg.addCloseCallback(new ICloseCallback() {
@Override
public void dialogClosed(Object returnValue) {
@ -596,7 +596,7 @@ public class CaseCreationDlg extends AbstractArchiveDlg {
if (loadDlg == null || loadDlg.isDisposed()) {
loadDlg = new CaseLoadSaveDeleteDlg(shell,
CaseLoadSaveDeleteDlg.Type.Load);
loadDlg.setCloseCallback(new ICloseCallback() {
loadDlg.addCloseCallback(new ICloseCallback() {
@Override
public void dialogClosed(Object returnValue) {
@ -621,7 +621,7 @@ public class CaseCreationDlg extends AbstractArchiveDlg {
if (deleteDlg == null || deleteDlg.isDisposed()) {
deleteDlg = new CaseLoadSaveDeleteDlg(shell,
CaseLoadSaveDeleteDlg.Type.Delete);
deleteDlg.setCloseCallback(new ICloseCallback() {
deleteDlg.addCloseCallback(new ICloseCallback() {
@Override
public void dialogClosed(Object returnValue) {
@ -681,7 +681,7 @@ public class CaseCreationDlg extends AbstractArchiveDlg {
});
}
});
generateCaseDlg.setCloseCallback(new ICloseCallback() {
generateCaseDlg.addCloseCallback(new ICloseCallback() {
@Override
public void dialogClosed(Object returnValue) {
@ -724,7 +724,7 @@ public class CaseCreationDlg extends AbstractArchiveDlg {
setCursorBusy(true);
if (caseNameDlg == null || caseNameDlg.isDisposed()) {
caseNameDlg = new CaseNameDialog(shell, targetDir);
caseNameDlg.setCloseCallback(new ICloseCallback() {
caseNameDlg.addCloseCallback(new ICloseCallback() {
@Override
public void dialogClosed(Object returnValue) {

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>

View file

@ -2,15 +2,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Automatic Transition
Bundle-SymbolicName: com.raytheon.uf.viz.auto.transition;singleton:=true
Bundle-Version: 1.15.0.qualifier
Bundle-Version: 1.16.0.qualifier
Bundle-Vendor: RAYTHEON
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: com.raytheon.viz.ui;bundle-version="1.15.1",
com.raytheon.uf.viz.core;bundle-version="1.15.1",
com.raytheon.uf.common.time;bundle-version="1.14.0",
com.raytheon.uf.common.geospatial;bundle-version="1.14.2",
org.eclipse.core.runtime;bundle-version="3.8.0",
com.raytheon.uf.viz.core.rsc;bundle-version="1.14.1",
com.raytheon.uf.viz.core.rsc;bundle-version="1.16.1",
javax.measure;bundle-version="1.0.0",
com.raytheon.uf.common.colormap;bundle-version="1.15.0"
Import-Package: com.raytheon.viz.core.rsc

View file

@ -5,7 +5,7 @@
point="com.raytheon.viz.ui.contextualMenu">
<contextualMenu
actionClass="com.raytheon.uf.viz.auto.transition.AutoTransitionAction"
capabilityClass="com.raytheon.viz.core.rsc.BlendedResource"
capabilityClass="com.raytheon.uf.viz.core.rsc.groups.BlendedResource"
name="com.raytheon.uf.viz.auto.transition.AutoTransitionAction"
sortID="50">
</contextualMenu>

View file

@ -27,10 +27,10 @@ import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.procedures.ProcedureXmlManager;
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
import com.raytheon.uf.viz.core.rsc.ResourceGroup;
import com.raytheon.uf.viz.core.rsc.groups.BlendedResource;
import com.raytheon.uf.viz.core.rsc.groups.BlendedResourceData;
import com.raytheon.uf.viz.core.rsc.interrogation.Interrogatable;
import com.raytheon.uf.viz.core.time.TimeMatchingJob;
import com.raytheon.viz.core.rsc.BlendedResource;
import com.raytheon.viz.core.rsc.BlendedResourceData;
import com.raytheon.viz.ui.cmenu.AbstractRightClickAction;
/**

View file

@ -30,7 +30,7 @@ import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType;
import com.raytheon.uf.viz.core.rsc.LoadProperties;
import com.raytheon.uf.viz.core.rsc.capabilities.BlendableCapability;
import com.raytheon.viz.core.rsc.BlendedResource;
import com.raytheon.uf.viz.core.rsc.groups.BlendedResource;
/**
*

View file

@ -28,7 +28,7 @@ import com.raytheon.uf.viz.core.drawables.ResourcePair;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.rsc.LoadProperties;
import com.raytheon.uf.viz.core.rsc.ResourceList;
import com.raytheon.viz.core.rsc.BlendedResourceData;
import com.raytheon.uf.viz.core.rsc.groups.BlendedResourceData;
/**
*

View file

@ -34,7 +34,7 @@ Import-Package: com.raytheon.uf.common.dataplugin,
org.geotools.referencing.datum,
org.opengis.referencing.crs,
org.osgi.framework
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: com.raytheon.uf.viz.aviation.advisory,
com.raytheon.uf.viz.aviation.advisory.adapter,

View file

@ -18,31 +18,38 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true" name="${name}" colorString="${color}">
<dataAdapter xsi:type="airmetDataAdapter" hazardType="${hazardType}"/>
<binOffset posOffset="20400" negOffset="1200"
virtualOffset="-7200" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="airmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true" name="${name}"
colorString="${color}">
<dataAdapter xsi:type="airmetDataAdapter"
hazardType="${hazardType}" />
<binOffset posOffset="20400"
negOffset="1200" virtualOffset="-7200" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="airmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
</bundle>

View file

@ -18,105 +18,116 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FF8800" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true" name="C-SIGMET OUTLOOK" enableNonstandardInspect="true">
<dataAdapter xsi:type="convSigmetOutlookDataAdapter"/>
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FFFF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true" name="1hr C-SIGMET Fcst">
<dataAdapter xsi:type="convSigmetCastDataAdapter" forecast="true"/>
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FF0000" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true" name="C-SIGMET Nowcast">
<dataAdapter xsi:type="convSigmetCastDataAdapter"/>
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0" contrast="1.0"
alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FFFFFF" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true" name="C-SIGMET Text">
<dataAdapter xsi:type="convSigmetTextDataAdapter"/>
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0"
contrast="1.0" alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FF8800" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true" name="C-SIGMET OUTLOOK"
enableNonstandardInspect="true">
<dataAdapter xsi:type="convSigmetOutlookDataAdapter" />
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0"
contrast="1.0" alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FFFF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true"
name="1hr C-SIGMET Fcst">
<dataAdapter xsi:type="convSigmetCastDataAdapter"
forecast="true" />
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0"
contrast="1.0" alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FF0000" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true" name="C-SIGMET Nowcast">
<dataAdapter xsi:type="convSigmetCastDataAdapter" />
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="imagingCapability"
interpolationState="false" brightness="1.0"
contrast="1.0" alpha="1.0" />
<capability xsi:type="colorableCapability"
colorAsString="#FFFFFF" />
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true" name="C-SIGMET Text">
<dataAdapter xsi:type="convSigmetTextDataAdapter" />
<binOffset posOffset="3000" negOffset="600"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="convsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
</bundle>

View file

@ -18,31 +18,37 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
</capabilities>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true" name="${name}" colorString="${color}">
<dataAdapter xsi:type="nonConvSigmetDataAdapter" hazardType="${hazardType}"/>
<binOffset posOffset="2700" negOffset="900"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="nonconvsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities/>
</loadProperties>
<resourceData xsi:type="advisoryResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true" name="${name}"
colorString="${color}">
<dataAdapter xsi:type="nonConvSigmetDataAdapter"
hazardType="${hazardType}" />
<binOffset posOffset="2700" negOffset="900"
virtualOffset="0" />
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="nonconvsigmet"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
</bundle>

View file

@ -18,7 +18,22 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuContributionFile>
<include installTo="menu:Aviation?after=AviationProductsStart"
fileName="menus/upperair/baseAviationProducts.xml" />
<include installTo="menu:Aviation?after=ConvectionProductsStart"
fileName="menus/upperair/baseAviationConvectionProducts.xml" />
<include installTo="menu:Aviation?before=IcingProductsEnd"
fileName="menus/upperair/baseAviationIcingProducts.xml" />
<include installTo="menu:Aviation?before=TurbulenceProductsEnd"
fileName="menus/upperair/baseAviationTurbulenceProducts.xml" />
<include installTo="menu:Aviation?before=VisibilityProductsEnd"
fileName="menus/upperair/baseAviationVisibilityProducts.xml" />
<include installTo="menu:Aviation?before=TropicalCycloneEnd"
fileName="menus/upperair/baseAviationTropicalCyclone.xml" />
<include installTo="menu:Aviation?after=VolcanicAshStart"
fileName="menus/upperair/baseAviationVolcanicAsh.xml" />
</menuContributionFile>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="bundleItem" file="bundles/ConvSigmet.xml"
menuText="Convective SIGMET" id="ConvSigmet"/>
</menuTemplate>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="bundleItem" file="bundles/NonConvSigmet.xml"
menuText="SIGMET" id="SIGMETICING">
<substitute key="hazardType" value="ICING" />
<substitute key="color" value="#FFFFFF" />
<substitute key="name" value="Icing SIGMET" />
</contribute>
<contribute xsi:type="bundleItem" file="bundles/Airmet.xml"
menuText="AIRMET" id="AIRMETICING">
<substitute key="hazardType" value="ICING" />
<substitute key="color" value="#0000FF" />
<substitute key="name" value="Icing AIRMET" />
</contribute>
</menuTemplate>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="bundleItem" file="bundles/NonConvSigmet.xml"
menuText="SIGMET" id="SIGMETTTOPCYCLONE">
<substitute key="hazardType" value="TROPICAL CYCLONE" />
<substitute key="color" value="#00FFFF" />
<substitute key="name" value="Tropical Cyclone SIGMET" />
</contribute>
</menuTemplate>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="bundleItem" file="bundles/NonConvSigmet.xml"
menuText="SIGMET" id="SIGMETTURB">
<substitute key="hazardType" value="TURBULENCE" />
<substitute key="color" value="#FF4444" />
<substitute key="name" value="Turbulence SIGMET" />
</contribute>
<contribute xsi:type="bundleItem" file="bundles/Airmet.xml"
menuText="AIRMET" id="AIRMETTURB">
<substitute key="hazardType" value="TURBULENCE" />
<substitute key="color" value="#00FF00" />
<substitute key="name" value="Turbulence AIRMET" />
</contribute>
</menuTemplate>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="subMenu" menuText="AIRMET">
<contribute xsi:type="bundleItem" file="bundles/Airmet.xml"
menuText="IFR" id="AIRMETIFR">
<substitute key="hazardType" value="INSTRUMENT FLIGHT RULES" />
<substitute key="color" value="#00FFFF" />
<substitute key="name" value="IFR AIRMET" />
</contribute>
<contribute xsi:type="bundleItem" file="bundles/Airmet.xml"
menuText="Mtn Obscn" id="AIRMETMTNOBSC">
<substitute key="hazardType" value="MOUNTAIN OBSCURATION" />
<substitute key="color" value="#FF0088" />
<substitute key="name" value="Mtn Obscn AIRMET" />
</contribute>
</contribute>
</menuTemplate>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="bundleItem" file="bundles/NonConvSigmet.xml"
menuText="SIGMET" id="SIGMETVOLCANICASH">
<substitute key="hazardType" value="VOLCANIC ASH CLOUD" />
<substitute key="color" value="#00FF00" />
<substitute key="name" value="Volcanic Ash SIGMET" />
</contribute>
</menuTemplate>

View file

@ -4,7 +4,7 @@ Bundle-Name: Bufrsigwx Displays
Bundle-SymbolicName: com.raytheon.uf.viz.bufrsigwx;singleton:=true
Bundle-Version: 1.15.0.qualifier
Bundle-Vendor: RAYTHEON
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: com.raytheon.uf.viz.bufrsigwx.common,
com.raytheon.uf.viz.bufrsigwx.rsc,

View file

@ -18,122 +18,147 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FF0000" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx" constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}" constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="CLOUD" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FFFF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx" constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}" constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="CAT" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#00FF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx" constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}" constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="JETS" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FFFFFF" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx" constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}" constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="TROP" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FF8800" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx" constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="SWBOTH" constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="VTS" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FF0000" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx"
constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}"
constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="CLOUD"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FFFF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx"
constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}"
constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="CAT"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#00FF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx"
constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}"
constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="JETS"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FFFFFF" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx"
constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="${wxLayer}"
constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="TROP"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FF8800" />
</capabilities>
</loadProperties>
<resourceData xsi:type="sigWxResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="bufrsigwx"
constraintType="EQUALS" />
</mapping>
<mapping key="wxLayer">
<constraint constraintValue="SWBOTH"
constraintType="EQUALS" />
</mapping>
<mapping key="wxType">
<constraint constraintValue="VTS"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
</bundle>

View file

@ -18,6 +18,11 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuContributionFile>
<include installTo="menu:Aviation?before=SignificantWeatherEnd"
fileName="menus/upperair/baseAviationBufrSigWx.xml" />

View file

@ -18,6 +18,11 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<contribute xsi:type="bundleItem" file="bundles/BufrSigWx.xml"
menuText="Medium Level" id="SigWxMedium">

View file

@ -28,6 +28,7 @@ import org.eclipse.swt.graphics.RGB;
import com.raytheon.uf.common.dataplugin.bufrsigwx.JetStreamData;
import com.raytheon.uf.common.dataplugin.bufrsigwx.common.SigWxLayer;
import com.raytheon.uf.common.geospatial.ReferencedCoordinate;
import com.raytheon.uf.common.pointdata.PointDataContainer;
import com.raytheon.uf.common.pointdata.PointDataView;
import com.raytheon.uf.viz.bufrsigwx.common.SigWxCommon;
import com.raytheon.uf.viz.core.DrawableString;
@ -55,17 +56,17 @@ import com.vividsolutions.jts.geom.Coordinate;
* Jul 29, 2014 3465 mapeters Updated deprecated drawString() and
* drawStrings() calls.
* Aug 04, 2014 3489 mapeters Updated deprecated getStringBounds() calls.
* Sep 12, 2016 5886 tgurney Reuse wireframe shapes when possible
*
*
* </pre>
*
* @author jsanchez
* @version 1.0
*/
public class SigWxJetStreamResource extends SigWxResource {
private static UnitConverter meterToHft = SI.METER.getConverterTo(SI
.HECTO(NonSI.FOOT));
private static UnitConverter meterToHft = SI.METER
.getConverterTo(SI.HECTO(NonSI.FOOT));
private static UnitConverter mpsToKnots = SI.METERS_PER_SECOND
.getConverterTo(NonSI.KNOT);
@ -88,6 +89,8 @@ public class SigWxJetStreamResource extends SigWxResource {
private static final String TOP_HGT_STR = "isotach80Abv";
private IWireframeShape shape;
protected SigWxJetStreamResource(SigWxResourceData resourceData,
LoadProperties loadProperties) {
super(resourceData, loadProperties);
@ -110,25 +113,31 @@ public class SigWxJetStreamResource extends SigWxResource {
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps, PointDataView pdv) throws VizException {
PaintProperties paintProps, PointDataContainer pdc)
throws VizException {
if (isUpdateNeeded()) {
disposeShape();
shape = target.createWireframeShape(false, descriptor);
}
RGB color = getCapability(ColorableCapability.class).getColor();
IWireframeShape shape = target.createWireframeShape(false, descriptor);
shape.addLineSegment(makeLine(pdv));
for (int i = 0; i < pdc.getCurrentSz(); i++) {
PointDataView pdv = pdc.readRandom(i);
if (isUpdateNeeded()) {
shape.addLineSegment(makeLine(pdv));
}
JetStreamData[] jetData = makeJetStreamData(pdv);
JetStreamData lastData = jetData[0];
for (JetStreamData data : jetData) {
paintJetStreamText(target, paintProps, color, data, lastData);
lastData = data;
}
// If there is only one jetData you can't make any error head
if (jetData.length > 1) {
paintArrowHead(target, color, jetData[jetData.length - 2],
jetData[jetData.length - 1]);
}
}
target.drawWireframeShape(shape, color, 1.5f);
shape.dispose();
JetStreamData[] jetData = makeJetStreamData(pdv);
JetStreamData lastData = jetData[0];
for (JetStreamData data : jetData) {
paintJetStreamText(target, paintProps, color, data, lastData);
lastData = data;
}
// If there is only one jetData you can't make any error head
if (jetData.length > 1) {
paintArrowHead(target, color, jetData[jetData.length - 2],
jetData[jetData.length - 1]);
}
}
@Override
@ -139,8 +148,8 @@ public class SigWxJetStreamResource extends SigWxResource {
String result = "";
double[] point = null;
try {
point = descriptor.worldToPixel(new double[] { coord.asLatLon().x,
coord.asLatLon().y, });
point = descriptor.worldToPixel(
new double[] { coord.asLatLon().x, coord.asLatLon().y, });
} catch (Exception e) {
return "";
}
@ -171,9 +180,9 @@ public class SigWxJetStreamResource extends SigWxResource {
|| data[j].getJetSpeed() == SigWxCommon.MISSING) {
continue;
}
double dist = distance(point, SigWxCommon.lonLatToWorldPixel(
descriptor, data[j].getLongitude(), data[j]
.getLatitude()));
double dist = distance(point,
SigWxCommon.lonLatToWorldPixel(descriptor,
data[j].getLongitude(), data[j].getLatitude()));
if (dist < bestDistance) {
bestIndex = j;
bestDistance = dist;
@ -188,14 +197,12 @@ public class SigWxJetStreamResource extends SigWxResource {
if (speed != SigWxCommon.MISSING) {
result += SigWxCommon.format(mpsToKnots.convert(speed),
format)
+ "kts ";
format) + "kts ";
}
if (fltLvl != SigWxCommon.MISSING) {
result += "FL"
+ SigWxCommon.format(meterToHft.convert(fltLvl),
format);
result += "FL" + SigWxCommon
.format(meterToHft.convert(fltLvl), format);
}
if (baseHgt != SigWxCommon.MISSING
@ -203,9 +210,8 @@ public class SigWxJetStreamResource extends SigWxResource {
result += " DEPTH:"
+ SigWxCommon.format(meterToHft.convert(baseHgt),
format)
+ "/"
+ SigWxCommon.format(meterToHft.convert(topHgt),
format);
+ "/" + SigWxCommon
.format(meterToHft.convert(topHgt), format);
}
return result;
}
@ -227,17 +233,10 @@ public class SigWxJetStreamResource extends SigWxResource {
JetStreamData[] data = new JetStreamData[numOfPoints];
for (int i = 0; i < numOfPoints; i++) {
data[i] = new JetStreamData(hdf5Lons[i].floatValue(), hdf5Lats[i]
.floatValue(), hdf5Speeds[i].floatValue(), hdf5Altitudes[i]
.floatValue(), hdf5BotHgt[i].floatValue(), hdf5TopHgt[i]
.floatValue()); // Should
// the
// hdf5BotHgt
// and
// hdf5TopHgt
// be
// used?
data[i] = new JetStreamData(hdf5Lons[i].floatValue(),
hdf5Lats[i].floatValue(), hdf5Speeds[i].floatValue(),
hdf5Altitudes[i].floatValue(), hdf5BotHgt[i].floatValue(),
hdf5TopHgt[i].floatValue());
}
return data;
}
@ -250,8 +249,8 @@ public class SigWxJetStreamResource extends SigWxResource {
Coordinate[] js = new Coordinate[numOfPoints];
for (int i = 0; i < numOfPoints; i++) {
js[i] = new Coordinate(hdf5Lons[i].floatValue(), hdf5Lats[i]
.floatValue());
js[i] = new Coordinate(hdf5Lons[i].floatValue(),
hdf5Lats[i].floatValue());
}
return js;
@ -272,12 +271,12 @@ public class SigWxJetStreamResource extends SigWxResource {
*/
private void paintArrowHead(IGraphicsTarget target, RGB color,
JetStreamData data1, JetStreamData data2) throws VizException {
double[] locPixA = SigWxCommon.lonLatToWorldPixel(descriptor, data1
.getLongitude(), data1.getLatitude());
double[] locPixB = SigWxCommon.lonLatToWorldPixel(descriptor, data2
.getLongitude(), data2.getLatitude());
double dir = Math.toDegrees(Math.atan2(locPixA[1] - locPixB[1],
locPixA[0] - locPixB[0]));
double[] locPixA = SigWxCommon.lonLatToWorldPixel(descriptor,
data1.getLongitude(), data1.getLatitude());
double[] locPixB = SigWxCommon.lonLatToWorldPixel(descriptor,
data2.getLongitude(), data2.getLatitude());
double dir = Math.toDegrees(
Math.atan2(locPixA[1] - locPixB[1], locPixA[0] - locPixB[0]));
SigWxCommon.paintArrowHead(target, locPixB, 100.0, dir + 180, color);
}
@ -299,8 +298,8 @@ public class SigWxJetStreamResource extends SigWxResource {
if (lat == SigWxCommon.MISSING || lon == SigWxCommon.MISSING) {
return;
}
double[] locationPixel = SigWxCommon.lonLatToWorldPixel(descriptor,
lon, lat);
double[] locationPixel = SigWxCommon.lonLatToWorldPixel(descriptor, lon,
lat);
HorizontalAlignment halignLevel = HorizontalAlignment.RIGHT;
VerticalAlignment valignLevel = VerticalAlignment.BOTTOM;
HorizontalAlignment halignSpeed = HorizontalAlignment.LEFT;
@ -333,7 +332,8 @@ public class SigWxJetStreamResource extends SigWxResource {
if (flightLevel != SigWxCommon.MISSING) {
flightLevel = meterToHft.convert(flightLevel);
String flightLevelStr = SigWxCommon.format(flightLevel, format);
if (baseHgt != SigWxCommon.MISSING && topHgt != SigWxCommon.MISSING) {
if (baseHgt != SigWxCommon.MISSING
&& topHgt != SigWxCommon.MISSING) {
baseHgt = meterToHft.convert(baseHgt);
topHgt = meterToHft.convert(topHgt);
String depthStr = SigWxCommon.format(baseHgt, format) + "/"
@ -351,8 +351,8 @@ public class SigWxJetStreamResource extends SigWxResource {
tmpX -= width / 2;
halignLevel = HorizontalAlignment.CENTER;
}
DrawableString string = new DrawableString(new String[] {
flightLevelStr, depthStr }, color);
DrawableString string = new DrawableString(
new String[] { flightLevelStr, depthStr }, color);
string.font = font;
string.setCoordinates(tmpX, locationPixel[1]);
string.horizontalAlignment = halignLevel;
@ -390,7 +390,7 @@ public class SigWxJetStreamResource extends SigWxResource {
* @return the dot product of a and b
*/
private double dotProduct(double[] a, double[] b) {
return (a[0] * b[0]) + (a[1] * b[1]);
return a[0] * b[0] + a[1] * b[1];
}
/**
@ -428,20 +428,20 @@ public class SigWxJetStreamResource extends SigWxResource {
double[] fb = new double[] { dx, dy };
double[] fp = new double[] { p[0] - a[0], p[1] - a[1] };
double d = distance(fa, fb);
double m = (dotProduct(fb, fp) / (d * d));
double m = dotProduct(fb, fp) / (d * d);
double[] projP = new double[] { fb[0] * m, fb[1] * m };
double dA = distance(fa, projP);
double dB = distance(fb, projP);
if (dy == 0) {
if (((p[1] < a[1] && p[1] < b[1]) || (p[1] > a[1] && p[1] > b[1]))
if ((p[1] < a[1] && p[1] < b[1] || p[1] > a[1] && p[1] > b[1])
&& Math.abs(p[1] - a[1]) > 4 && Math.abs(p[1] - b[1]) > 4) {
return MAX_VALUE;
} else {
return Math.abs(p[1] - a[1]);
}
} else if (dx == 0) {
if (((p[0] < a[0] && p[0] < b[0]) || (p[0] > a[0] && p[0] > b[0]))
if ((p[0] < a[0] && p[0] < b[0] || p[0] > a[0] && p[0] > b[0])
&& Math.abs(p[0] - a[0]) > 4 && Math.abs(p[0] - b[0]) > 4) {
return MAX_VALUE;
} else {
@ -456,9 +456,23 @@ public class SigWxJetStreamResource extends SigWxResource {
return distance(projP, fp);
}
@Override
protected String[] getParameters() {
return new String[] { LAT_STR, LON_STR, NUM_OF_POINTS_STR, SPD_STR,
ALT_STR, TOP_HGT_STR, BOT_HGT_STR };
}
private void disposeShape() {
if (shape != null) {
shape.dispose();
shape = null;
}
}
@Override
protected void disposeInternal() {
disposeShape();
super.disposeInternal();
}
}

View file

@ -31,9 +31,10 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import com.raytheon.uf.common.dataplugin.bufrsigwx.common.SigWxLayer;
import com.raytheon.uf.common.geospatial.ReferencedCoordinate;
import com.raytheon.uf.common.pointdata.PointDataContainer;
import com.raytheon.uf.common.pointdata.PointDataView;
import com.raytheon.uf.common.time.DataTime;
import com.raytheon.uf.viz.bufrsigwx.util.Declutter;
import com.raytheon.uf.viz.bufrsigwx.util.Declutter.TextBoxData;
import com.raytheon.uf.viz.core.IExtent;
import com.raytheon.uf.viz.core.IGraphicsTarget;
import com.raytheon.uf.viz.core.IGraphicsTarget.LineStyle;
@ -62,12 +63,15 @@ import com.vividsolutions.jts.geom.Polygon;
* ------------ ---------- ----------- --------------------------
* Sep 25, 2009 3099 bsteffen Initial creation
* Sep 28, 2009 3099 bsteffen Updated to conform with common SigWxResource
* Sep 12, 2016 5886 tgurney Use isUpdateNeeded for performance
* Sep 15, 2016 5886 tgurney Keep cached polygons when panning/zooming
* Sep 19, 2016 5886 tgurney Use drawRect/drawLine instead of
* wireframe shape for text boxes
*
*
* </pre>
*
* @author bsteffen
* @version 1.0
*/
public abstract class SigWxPolygonResource extends SigWxResource {
@ -91,27 +95,19 @@ public abstract class SigWxPolygonResource extends SigWxResource {
"\u007a\u007b", "\u007b\u007c", "\u007b\u007c", "\u007b\u007c",
"\u007c\u007c\b6", "\u007c\u007c\u00b6", "\u007c\u007c\u00b6" };
private static UnitConverter meterToHft = SI.METER.getConverterTo(SI
.HECTO(NonSI.FOOT));
protected List<PointDataView> pdvCache = new ArrayList<PointDataView>();
protected List<double[]> textLocCache = new ArrayList<double[]>();
private static UnitConverter meterToHft = SI.METER
.getConverterTo(SI.HECTO(NonSI.FOOT));
protected IExtent lastExtent;
protected DataTime lastDataTime;
protected IWireframeShape lastPolygons;
protected IWireframeShape lastTextBoxes;
protected List<Declutter.TextBoxData> lastTextBoxes = new ArrayList<>();
protected Declutter declutter;
protected SymbolLoader symbolLoader;
private boolean hasUpdated = false;
protected SigWxPolygonResource(SigWxResourceData resourceData,
LoadProperties loadProperties) {
super(resourceData, loadProperties);
@ -128,10 +124,7 @@ public abstract class SigWxPolygonResource extends SigWxResource {
lastPolygons.dispose();
lastPolygons = null;
}
if (lastTextBoxes != null) {
lastTextBoxes.dispose();
lastTextBoxes = null;
}
lastTextBoxes.clear();
}
@Override
@ -144,8 +137,8 @@ public abstract class SigWxPolygonResource extends SigWxResource {
Polygon pixelPoly = worldToPixel(llPolygon);
Point point;
try {
point = pixelPoly.getFactory().createPoint(
coord.asPixel(descriptor.getGridGeometry()));
point = pixelPoly.getFactory()
.createPoint(coord.asPixel(descriptor.getGridGeometry()));
} catch (Exception e) {
throw new VizException("Error inspecting SigWx Data", e);
}
@ -164,60 +157,50 @@ public abstract class SigWxPolygonResource extends SigWxResource {
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps) throws VizException {
// This is overridden so that we can synchronize the declutter, but
// while Im at it I store some data so it does not have to be
// recalculated on each call.
PaintProperties paintProps, PointDataContainer pdc)
throws VizException {
RGB color = getCapability(ColorableCapability.class).getColor();
IExtent curExtent = paintProps.getView().getExtent();
DataTime curDataTime = paintProps.getDataTime();
if (curDataTime == null || curExtent == null) {
if (curExtent == null) {
return;
}
if (!curExtent.equals(lastExtent) || !curDataTime.equals(lastDataTime)
|| hasUpdated) {
if (lastPolygons != null) {
if (!curExtent.equals(lastExtent) || isUpdateNeeded()) {
if (lastPolygons != null && isUpdateNeeded()) {
lastPolygons.dispose();
}
if (lastTextBoxes != null) {
lastTextBoxes.dispose();
}
pdvCache.clear();
textLocCache.clear();
lastTextBoxes.clear();
lastExtent = curExtent;
lastDataTime = curDataTime;
declutter = new Declutter(paintProps.getClippingPane()
.intersection(paintProps.getView().getExtent()));
lastPolygons = target.createWireframeShape(false, descriptor);
lastTextBoxes = target.createWireframeShape(false, descriptor);
super.paintInternal(target, paintProps);
hasUpdated = false;
if (isUpdateNeeded()) {
lastPolygons = target.createWireframeShape(false, descriptor);
}
for (int i = 0; i < pdc.getCurrentSz(); i++) {
PointDataView pdv = pdc.readRandom(i);
double[] scale = getScale(paintProps);
Polygon polygon = getPolygon(pdv);
if (isUpdateNeeded()) {
lastPolygons.addLineSegment(polygon.getCoordinates());
}
double[] dimensions = getTextBoxDimensions(target, pdv);
dimensions[0] = dimensions[0] * scale[0];
dimensions[1] = dimensions[1] * scale[1];
Declutter.TextBoxData textBox = declutter
.infoBoxForPolygon2(worldToPixel(polygon), dimensions);
lastTextBoxes.add(textBox);
}
}
target.drawWireframeShape(lastPolygons, color, 1.5f, getLineStyle());
target.drawWireframeShape(lastTextBoxes, color, 1.0f);
double[] scale = getScale(paintProps);
for (int i = 0; i < pdvCache.size(); i++) {
drawText(target, paintProps, textLocCache.get(i), scale, color,
pdvCache.get(i));
}
}
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps, PointDataView pdv) throws VizException {
double[] scale = getScale(paintProps);
Polygon polygon = getPolygon(pdv);
lastPolygons.addLineSegment(polygon.getCoordinates());
double[] dimensions = getTextBoxDimensions(target, pdv);
dimensions[0] = dimensions[0] * scale[0];
dimensions[1] = dimensions[1] * scale[1];
double[] textLoc = declutter.infoBoxForPolygon2(lastTextBoxes,
worldToPixel(polygon), dimensions);
if (textLoc.length > 1) {
textLocCache.add(textLoc);
pdvCache.add(pdv);
for (int i = 0; i < lastTextBoxes.size(); i++) {
TextBoxData textBox = lastTextBoxes.get(i);
if (textBox != null) {
textBox.line.basics.color = color;
target.drawRect(textBox.box, color, 1.0f, 1.0);
target.drawLine(textBox.line);
drawText(target, paintProps, textBox.textLoc, scale, color,
pdc.readRandom(i));
}
}
}
@ -296,8 +279,8 @@ public abstract class SigWxPolygonResource extends SigWxResource {
Coordinate[] llCoords = llPolygon.getCoordinates();
Coordinate[] pixelCoords = new Coordinate[llCoords.length];
for (int i = 0; i < llCoords.length; i++) {
double[] pixelCoord = descriptor.worldToPixel(new double[] {
llCoords[i].x, llCoords[i].y });
double[] pixelCoord = descriptor.worldToPixel(
new double[] { llCoords[i].x, llCoords[i].y });
pixelCoords[i] = new Coordinate(pixelCoord[0], pixelCoord[1]);
}
GeometryFactory factory = new GeometryFactory();
@ -305,13 +288,6 @@ public abstract class SigWxPolygonResource extends SigWxResource {
return factory.createPolygon(ring, null);
}
@Override
protected void updateRecords(DataTime dataTime) throws VizException {
// Intercept this call so we can recalculate everything
hasUpdated = true;
super.updateRecords(dataTime);
}
@Override
protected String[] getParameters() {
// TODO Auto-generated method stub
@ -321,6 +297,7 @@ public abstract class SigWxPolygonResource extends SigWxResource {
@Override
public void project(CoordinateReferenceSystem crs) throws VizException {
disposeShapes();
super.project(crs);
}
}

View file

@ -26,6 +26,7 @@ import java.util.HashMap;
import java.util.Map;
import org.eclipse.swt.graphics.Rectangle;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import com.raytheon.uf.common.dataplugin.PluginDataObject;
import com.raytheon.uf.common.dataplugin.bufrsigwx.SigWxData;
@ -41,7 +42,7 @@ import com.raytheon.uf.viz.core.drawables.PaintProperties;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.map.MapDescriptor;
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged;
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType;
import com.raytheon.uf.viz.core.rsc.LoadProperties;
import com.raytheon.viz.pointdata.PointDataRequest;
@ -55,44 +56,48 @@ import com.raytheon.viz.pointdata.PointDataRequest;
* ------------ ---------- ----------- --------------------------
* Sep 28, 2009 3099 bsteffen Initial creation
* Nov 05, 2015 5070 randerso Adjust font sizes for dpi scaling
* Feb 04, 2015 5309 tgurney Remove dependency on dataURI
* Feb 04, 2016 5309 tgurney Remove dependency on dataURI
* Sep 12, 2016 5886 tgurney Update paintInternal signature,
* add needsUpdate flag,
* fix point data container iteration.
*
* </pre>
*
* @author bsteffen
* @version 1.0
*/
public abstract class SigWxResource extends
AbstractVizResource<SigWxResourceData, MapDescriptor> {
public abstract class SigWxResource
extends AbstractVizResource<SigWxResourceData, MapDescriptor> {
protected static final String NO_DATA = "No Data Available";
private Map<DataTime, Collection<SigWxData>> recordsToParse = new HashMap<DataTime, Collection<SigWxData>>();
private Map<DataTime, Collection<SigWxData>> recordsToParse = new HashMap<>();
private Map<DataTime, PointDataContainer> recordsToDisplay = new HashMap<DataTime, PointDataContainer>();
private Map<DataTime, PointDataContainer> recordsToDisplay = new HashMap<>();
protected DataTime displayedDataTime;
protected IFont font;
protected DataTime prevDataTime = null;
private boolean needsUpdate = true;
protected SigWxResource(SigWxResourceData resourceData,
LoadProperties loadProperties) {
super(resourceData, loadProperties);
resourceData.addChangeListener(new IResourceDataChanged() {
@Override
public void resourceChanged(ChangeType type, Object object) {
if (type == ChangeType.DATA_UPDATE) {
PluginDataObject[] pdo = (PluginDataObject[]) object;
for (PluginDataObject p : pdo) {
if (p instanceof SigWxData) {
addRecord((SigWxData) p);
}
resourceData.addChangeListener((ChangeType type, Object object) -> {
if (type == ChangeType.DATA_UPDATE) {
PluginDataObject[] pdo = (PluginDataObject[]) object;
for (PluginDataObject p : pdo) {
if (p instanceof SigWxData) {
addRecord((SigWxData) p);
}
}
issueRefresh();
}
setUpdateNeeded(true);
issueRefresh();
});
this.dataTimes = new ArrayList<DataTime>();
this.dataTimes = new ArrayList<>();
}
/**
@ -106,24 +111,20 @@ public abstract class SigWxResource extends
if (toParse == null) {
dataTimes.add(dataTime);
Collections.sort(this.dataTimes);
toParse = new ArrayList<SigWxData>();
toParse = new ArrayList<>();
recordsToParse.put(dataTime, toParse);
}
toParse.add(obj);
}
/*
* (non-Javadoc)
*
* @see
* com.raytheon.uf.viz.core.rsc.AbstractVizResource#paintInternal(com.raytheon
* .uf.viz.core.IGraphicsTarget,
* com.raytheon.uf.viz.core.drawables.PaintProperties)
*/
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps) throws VizException {
DataTime curDataTime = paintProps.getDataTime();
if (prevDataTime == null || !prevDataTime.equals(curDataTime)) {
setUpdateNeeded(true);
}
prevDataTime = curDataTime;
if (curDataTime == null) {
this.displayedDataTime = null;
return;
@ -136,10 +137,9 @@ public abstract class SigWxResource extends
this.displayedDataTime = curDataTime;
PointDataContainer pdc = recordsToDisplay.get(curDataTime);
if (pdc != null) {
for (int uriCounter = 0; uriCounter < pdc.getAllocatedSz(); uriCounter++) {
paintInternal(target, paintProps, pdc.readRandom(uriCounter));
}
paintInternal(target, paintProps, pdc);
}
setUpdateNeeded(false);
}
@Override
@ -169,9 +169,10 @@ public abstract class SigWxResource extends
protected void updateRecords(DataTime dataTime) throws VizException {
// Request the point data
PointDataContainer pdc = PointDataRequest.requestPointDataAllLevels(
dataTime, resourceData.getMetadataMap().get("pluginName")
.getConstraintValue(), getParameters(), null,
resourceData.getMetadataMap());
dataTime,
resourceData.getMetadataMap().get("pluginName")
.getConstraintValue(),
getParameters(), null, resourceData.getMetadataMap());
if (recordsToDisplay.containsKey(dataTime)) {
recordsToDisplay.get(dataTime).combine(pdc);
} else {
@ -192,11 +193,12 @@ public abstract class SigWxResource extends
*
* @param target
* @param paintProps
* @param pdv
* @param pdc
* @throws VizException
*/
protected abstract void paintInternal(IGraphicsTarget target,
PaintProperties paintProps, PointDataView pdv) throws VizException;
PaintProperties paintProps, PointDataContainer pdc)
throws VizException;
/**
* Determine the appropriate scale to use on both axis for constant sized
@ -219,7 +221,8 @@ public abstract class SigWxResource extends
StringBuilder result = new StringBuilder();
PointDataContainer pdc = recordsToDisplay.get(this.displayedDataTime);
if (pdc != null) {
for (int uriCounter = 0; uriCounter < pdc.getAllocatedSz(); uriCounter++) {
for (int uriCounter = 0; uriCounter < pdc
.getCurrentSz(); uriCounter++) {
String line = inspect(coord, pdc.readRandom(uriCounter));
if (line != null && !line.isEmpty()) {
if (result.length() != 0) {
@ -251,4 +254,17 @@ public abstract class SigWxResource extends
recordsToParse.remove(dataTime);
}
public boolean isUpdateNeeded() {
return needsUpdate;
}
public void setUpdateNeeded(boolean needsUpdate) {
this.needsUpdate = needsUpdate;
}
@Override
public void project(CoordinateReferenceSystem crs) throws VizException {
setUpdateNeeded(true);
issueRefresh();
}
}

View file

@ -19,8 +19,6 @@
**/
package com.raytheon.uf.viz.bufrsigwx.rsc;
import java.util.Comparator;
import javax.measure.converter.UnitConverter;
import javax.measure.unit.NonSI;
import javax.measure.unit.SI;
@ -29,6 +27,7 @@ import org.eclipse.swt.graphics.RGB;
import com.raytheon.uf.common.dataplugin.bufrsigwx.TropHeightData;
import com.raytheon.uf.common.dataplugin.bufrsigwx.common.SigWxLayer;
import com.raytheon.uf.common.pointdata.PointDataContainer;
import com.raytheon.uf.common.pointdata.PointDataView;
import com.raytheon.uf.viz.bufrsigwx.common.SigWxCommon;
import com.raytheon.uf.viz.core.DrawableString;
@ -52,16 +51,16 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorableCapability;
* 09/25/2009 jsanchez Initial creation.
* Sep 28, 2009 3099 bsteffen Updated to conform with common SigWxResource
* Jul 29, 2014 #3465 mapeters Updated deprecated drawStrings() calls.
* Sep 12, 2016 5886 tgurney Update paintInternal() signature
*
* </pre>
*
* @author jsanchez
* @version 1.0
*/
public class SigWxTropHeightResource extends SigWxResource {
private static UnitConverter meterToHft = SI.METER.getConverterTo(SI
.HECTO(NonSI.FOOT));
private static UnitConverter meterToHft = SI.METER
.getConverterTo(SI.HECTO(NonSI.FOOT));
private static final String format = "%3.0f";
@ -101,41 +100,32 @@ public class SigWxTropHeightResource extends SigWxResource {
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps, PointDataView pdv) throws VizException {
RGB color = getCapability(ColorableCapability.class).getColor();
Number[] hdf5Lats = pdv.getNumberAllLevels(LAT_STR);
Number[] hdf5Lons = pdv.getNumberAllLevels(LON_STR);
Number[] hdf5Hgts = pdv.getNumberAllLevels(HGT_STR);
int numOfPoints = pdv.getInt(NUM_OF_POINTS_STR);
int tropType = pdv.getInt(TYPE_STR);
TropHeightData data;
for (int i = 0; i < numOfPoints; i++) {
if (hdf5Hgts[i].floatValue() != SigWxCommon.MISSING) {
data = new TropHeightData(hdf5Lons[i].floatValue(), hdf5Lats[i]
.floatValue(), hdf5Hgts[i].floatValue(), tropType);
paintTropHeights(target, color, data);
PaintProperties paintProps, PointDataContainer pdc)
throws VizException {
for (int i = 0; i < pdc.getCurrentSz(); i++) {
PointDataView pdv = pdc.readRandom(i);
RGB color = getCapability(ColorableCapability.class).getColor();
Number[] hdf5Lats = pdv.getNumberAllLevels(LAT_STR);
Number[] hdf5Lons = pdv.getNumberAllLevels(LON_STR);
Number[] hdf5Hgts = pdv.getNumberAllLevels(HGT_STR);
int numOfPoints = pdv.getInt(NUM_OF_POINTS_STR);
int tropType = pdv.getInt(TYPE_STR);
TropHeightData data;
for (int j = 0; j < numOfPoints; j++) {
if (hdf5Hgts[j].floatValue() != SigWxCommon.MISSING) {
data = new TropHeightData(hdf5Lons[j].floatValue(),
hdf5Lats[j].floatValue(), hdf5Hgts[j].floatValue(),
tropType);
paintTropHeights(target, color, data);
}
}
}
}
public class TropHeightComparator implements Comparator<TropHeightData> {
public int compare(TropHeightData o1, TropHeightData o2) {
if (o1 == null && o2 == null) {
return 0;
} else if (o2 == null) {
return 1;
} else if (o1 == null) {
return -1;
}
return o1.getHeight().compareTo(o2.getHeight());
}
}
/**
* Draws teh trop heights on CAVE
* Draws the trop heights on CAVE
*
* @param target
* @param color
@ -150,8 +140,8 @@ public class SigWxTropHeightResource extends SigWxResource {
if (lat == SigWxCommon.MISSING || lon == SigWxCommon.MISSING) {
return;
}
double[] locationPixel = SigWxCommon.lonLatToWorldPixel(descriptor,
lon, lat);
double[] locationPixel = SigWxCommon.lonLatToWorldPixel(descriptor, lon,
lat);
double height = data.getHeight();
height = meterToHft.convert(height);
@ -172,6 +162,7 @@ public class SigWxTropHeightResource extends SigWxResource {
target.drawStrings(string);
}
@Override
protected String[] getParameters() {
return new String[] { LAT_STR, LON_STR, NUM_OF_POINTS_STR, HGT_STR,
TYPE_STR };

View file

@ -21,6 +21,7 @@ package com.raytheon.uf.viz.bufrsigwx.rsc;
import org.eclipse.swt.graphics.RGB;
import com.raytheon.uf.common.pointdata.PointDataContainer;
import com.raytheon.uf.common.pointdata.PointDataView;
import com.raytheon.uf.viz.core.DrawableString;
import com.raytheon.uf.viz.core.IGraphicsTarget;
@ -46,11 +47,11 @@ import com.vividsolutions.jts.geom.Coordinate;
* Sep 28, 2009 3099 bsteffen Initial creation
* Sep 28, 2009 3099 bsteffen Updated to conform with common SigWxResource
* Jul 29, 2014 3465 mapeters Updated deprecated drawString() calls.
* Sep 12, 2016 5886 tgurney Update paintInternal() signature
*
* </pre>
*
* @author bsteffen
* @version 1.0
*/
public class SigWxVtsResource extends SigWxResource {
@ -86,42 +87,46 @@ public class SigWxVtsResource extends SigWxResource {
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps, PointDataView pdv) throws VizException {
PaintProperties paintProps, PointDataContainer pdc)
throws VizException {
RGB color = getCapability(ColorableCapability.class).getColor();
for (int i = 0; i < pdc.getCurrentSz(); i++) {
PointDataView pdv = pdc.readRandom(i);
RGB color = getCapability(ColorableCapability.class).getColor();
String featureName = pdv.getString(P_FEATURE_NAME);
String text = "";
Number lat = pdv.getNumber(P_LATITUDE);
Number lon = pdv.getNumber(P_LONGITUDE);
int metFeature = pdv.getInt(P_MET_FEATURE);
int attribSig = pdv.getInt(P_ATTRIB_SIG);
double[] loc = descriptor.worldToPixel(new double[] {
lon.doubleValue(), lat.doubleValue() });
double scale[] = getScale(paintProps);
IImage image = null;
if (metFeature == 17) {
image = symbolLoader.getImage(target, color, VOLCANO_SYMBOL);
} else if (attribSig == 1) {
image = symbolLoader.getImage(target, color, STORM_SYMBOL);
String featureName = pdv.getString(P_FEATURE_NAME);
String text = "";
Number lat = pdv.getNumber(P_LATITUDE);
Number lon = pdv.getNumber(P_LONGITUDE);
int metFeature = pdv.getInt(P_MET_FEATURE);
int attribSig = pdv.getInt(P_ATTRIB_SIG);
double[] loc = descriptor.worldToPixel(
new double[] { lon.doubleValue(), lat.doubleValue() });
double scale[] = getScale(paintProps);
IImage image = null;
if (metFeature == 17) {
image = symbolLoader.getImage(target, color, VOLCANO_SYMBOL);
} else if (attribSig == 1) {
image = symbolLoader.getImage(target, color, STORM_SYMBOL);
}
if (image != null) {
Coordinate ul = new Coordinate(loc[0], loc[1] - 6 * scale[1]);
Coordinate ur = new Coordinate(loc[0] + 12 * scale[0], ul.y);
Coordinate lr = new Coordinate(ur.x, loc[1] + 6 * scale[1]);
Coordinate ll = new Coordinate(loc[0], lr.y);
PixelCoverage extent = new PixelCoverage(ul, ur, lr, ll);
target.drawRaster(image, extent, paintProps);
loc[0] += 12 * scale[0];
text = " " + featureName;
} else {
text = "??? " + featureName;
}
DrawableString string = new DrawableString(text, color);
string.font = font;
string.setCoordinates(loc[0], loc[1]);
string.verticalAlignment = VerticalAlignment.MIDDLE;
target.drawStrings(string);
}
if (image != null) {
Coordinate ul = new Coordinate(loc[0], loc[1] - 6 * scale[1]);
Coordinate ur = new Coordinate(loc[0] + 12 * scale[0], ul.y);
Coordinate lr = new Coordinate(ur.x, loc[1] + 6 * scale[1]);
Coordinate ll = new Coordinate(loc[0], lr.y);
PixelCoverage extent = new PixelCoverage(ul, ur, lr, ll);
target.drawRaster(image, extent, paintProps);
loc[0] += 12 * scale[0];
text = " " + featureName;
} else {
text = "??? " + featureName;
}
DrawableString string = new DrawableString(text, color);
string.font = font;
string.setCoordinates(loc[0], loc[1]);
string.verticalAlignment = VerticalAlignment.MIDDLE;
target.drawStrings(string);
}
@Override

View file

@ -22,15 +22,14 @@ package com.raytheon.uf.viz.bufrsigwx.util;
import java.util.ArrayList;
import java.util.Collection;
import com.raytheon.uf.viz.core.DrawableLine;
import com.raytheon.uf.viz.core.IExtent;
import com.raytheon.uf.viz.core.drawables.IWireframeShape;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.PixelExtent;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LinearRing;
import com.vividsolutions.jts.geom.Polygon;
/**
* Determines positioning for text boxes so they do not overlap
*
@ -40,21 +39,33 @@ import com.vividsolutions.jts.geom.Polygon;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Sep 25, 2009 3099 bsteffen Initial creation
* Sep 19, 2016 5886 tgurney No longer use wireframe shapes
*
* </pre>
*
* @author bsteffen
* @version 1.0
*/
public class Declutter {
/**
* Dumb container that stores the location and dimensions of a text box,
* with an additional line coming off of it.
*/
public static class TextBoxData {
public PixelExtent box;
public double[] textLoc;
public DrawableLine line;
}
IExtent extent;
public Declutter(IExtent extent) {
this.extent = extent;
}
private Polygon getBox(Coordinate center, double[] dimensions) {
private static Polygon getBox(Coordinate center, double[] dimensions) {
Coordinate[] coords = new Coordinate[5];
double x1 = center.x - dimensions[0] / 2;
double x2 = center.x + dimensions[0] / 2;
@ -69,14 +80,14 @@ public class Declutter {
return factory.createPolygon(ring, null);
}
private Collection<Polygon> boxes = new ArrayList<Polygon>();
private Collection<Polygon> boxes = new ArrayList<>();
public double[] infoBoxForPolygon2(IWireframeShape shape, Polygon polygon,
double[] dimensions) throws VizException {
public TextBoxData infoBoxForPolygon2(Polygon polygon,
double[] boxDimensions) {
Coordinate center = polygon.getCentroid().getCoordinate();
Coordinate lastCoord = center;
double boxRadius = Math.sqrt(dimensions[0] * dimensions[0]
+ dimensions[1] * dimensions[1]);
double boxRadius = Math.sqrt(boxDimensions[0] * boxDimensions[0]
+ boxDimensions[1] * boxDimensions[1]);
double distance = boxRadius * 0.8;
for (Coordinate curCoord : polygon.getCoordinates()) {
Coordinate thisCoord = curCoord;
@ -88,24 +99,25 @@ public class Declutter {
} else {
thisCoord = curCoord;
}
if (!extent.contains(new double[] { thisCoord.x, thisCoord.y })) {
if (!extent
.contains(new double[] { thisCoord.x, thisCoord.y })) {
continue;
}
double angle = Math.atan2(center.y - thisCoord.y, thisCoord.x
- center.x);
double angle = Math.atan2(center.y - thisCoord.y,
thisCoord.x - center.x);
Coordinate boxCenter = new Coordinate(thisCoord.x
+ Math.cos(angle) * distance, thisCoord.y
- Math.sin(angle) * distance);
Polygon box = getBox(boxCenter, dimensions);
boolean flag = true;
Coordinate boxCenter = new Coordinate(
thisCoord.x + Math.cos(angle) * distance,
thisCoord.y - Math.sin(angle) * distance);
Polygon box = getBox(boxCenter, boxDimensions);
boolean createTextBox = true;
for (Coordinate coord : box.getCoordinates()) {
if (!extent.contains(new double[] { coord.x, coord.y })) {
flag = false;
createTextBox = false;
break;
}
}
if (!flag) {
if (!createTextBox) {
continue;
}
if (polygon.intersects(box)) {
@ -113,11 +125,11 @@ public class Declutter {
}
for (Polygon oldBox : boxes) {
if (oldBox.intersects(box)) {
flag = false;
createTextBox = false;
break;
}
}
if (flag) {
if (createTextBox) {
Coordinate[] coords = box.getCoordinates();
Coordinate[] edgePoints = new Coordinate[4];
edgePoints[0] = new Coordinate(coords[1].x, boxCenter.y);
@ -134,20 +146,18 @@ public class Declutter {
}
}
boxes.add(box);
double[][] line = new double[5][];
for (int i = 0; i < 5; i++) {
line[i] = new double[] { coords[i].x, coords[i].y };
}
shape.addLineSegment(new double[][] {
{ bestEdge.x, bestEdge.y },
{ thisCoord.x, thisCoord.y } });
shape.addLineSegment(line);
Coordinate ul = coords[0];
return new double[] { ul.x, ul.y };
TextBoxData textBox = new TextBoxData();
textBox.line = new DrawableLine();
textBox.line.addPoint(bestEdge.x, bestEdge.y);
textBox.line.addPoint(thisCoord.x, thisCoord.y);
textBox.box = new PixelExtent(coords[0].x, coords[2].x,
coords[1].y, coords[3].y);
textBox.textLoc = new double[] { coords[0].x, coords[0].y };
return textBox;
}
}
}
return new double[0];
return null;
}
}

View file

@ -5,7 +5,7 @@ Bundle-SymbolicName: com.raytheon.uf.viz.ccfp;singleton:=true
Bundle-Version: 1.14.0.qualifier
Bundle-Vendor: RAYTHEON
Require-Bundle: com.raytheon.uf.viz.core
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Import-Package: com.raytheon.uf.common.dataplugin,
com.raytheon.uf.common.dataplugin.ccfp,

View file

@ -18,84 +18,97 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority
version of the file will completely replace a lower priority version
of the file.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FF00FF" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="4" validDuration="${validDuration}"
displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FFFF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="3" validDuration="${validDuration}"
displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#ff7900" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="2" validDuration="${validDuration}"
displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#ff0000" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="1" validDuration="${validDuration}"
displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FF00FF" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="4"
validDuration="${validDuration}" displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#FFFF00" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="3"
validDuration="${validDuration}" displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#ff7900" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="2"
validDuration="${validDuration}" displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
<capability xsi:type="colorableCapability"
colorAsString="#ff0000" />
</capabilities>
</loadProperties>
<resourceData xsi:type="ccfpResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true"
retrieveData="true" coverageFilter="1"
validDuration="${validDuration}" displayText="false">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="ccfp"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
</bundle>

View file

@ -17,7 +17,7 @@ Require-Bundle: org.eclipse.ui;bundle-version="3.8.2",
com.raytheon.uf.common.dataplugin.grid;bundle-version="1.0.0",
com.raytheon.uf.viz.core;bundle-version="1.12.1174",
javax.measure;bundle-version="1.0.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: com.raytheon.uf.viz.cloudheight.data,
com.raytheon.uf.viz.cloudheight.rsc

View file

@ -18,8 +18,12 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority version
of the file will completely replace a lower priority version of the file.
-->
<cloudHeightData>
<nx>25</nx>
<ny>25</ny>
<displayOption>PEAK</displayOption>
<nx>25</nx>
<ny>25</ny>
<displayOption>PEAK</displayOption>
</cloudHeightData>

View file

@ -17,6 +17,13 @@
[Enter License Description here.]
</license>
<plugin
id="com.raytheon.uf.common.dissemination"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.common.site"
download-size="0"
@ -24,61 +31,12 @@
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.edex.common"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.edex.core"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.edex.database"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.edex.uengine"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.edex.pointdata"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.common.awipstools"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.common.dataplugin.radar"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
id="com.raytheon.uf.edex.decodertools"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.common.dataplugin.text"
download-size="0"

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>

View file

@ -6,7 +6,7 @@ Bundle-Version: 1.14.0.qualifier
Bundle-Vendor: RAYTHEON
Require-Bundle: org.eclipse.core.runtime,
com.raytheon.uf.viz.datacube
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Import-Package: com.raytheon.uf.common.dataplugin,
com.raytheon.uf.common.dataquery.requests,

View file

@ -1,13 +1,14 @@
<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-3.1.xsd">
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="coopprecipDataCubeAdapter" class="com.raytheon.uf.viz.coopprecip.CoopPrecipDataCubeAdapter" />
<bean id="coopprecipDataCubeAdapter" class="com.raytheon.uf.viz.coopprecip.CoopPrecipDataCubeAdapter" />
<bean id="coopprecipDataCubeAdapterRegistered"
factory-bean="dataCubeAdapterRegistry"
factory-method="registerAdapter">
<constructor-arg ref="coopprecipDataCubeAdapter" />
</bean>
<bean id="coopprecipDataCubeAdapterRegistered"
factory-bean="dataCubeAdapterRegistry"
factory-method="registerAdapter">
<constructor-arg ref="coopprecipDataCubeAdapter" />
</bean>
</beans>

View file

@ -23,13 +23,6 @@
<import feature="com.raytheon.uf.viz.localization.perspective.feature" version="1.0.0.qualifier"/>
</requires>
<plugin
id="com.raytheon.uf.viz.python.swt"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.viz.xy"
download-size="0"
@ -186,12 +179,6 @@
install-size="0"
version="0.0.0"/>
<plugin
id="com.raytheon.uf.common.localization.python"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
id="com.raytheon.uf.viz.drawing"
download-size="0"
@ -224,4 +211,18 @@
install-size="0"
version="0.0.0"/>
<plugin
id="com.raytheon.uf.viz.drawables.image.stipple"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.raytheon.uf.viz.gl.image.stipple"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>

View file

@ -118,4 +118,30 @@
install-size="0"
version="0.0.0"/>
<plugin
id="com.beust.jcommander"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="com.google.protobuf"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.jdom2"
download-size="0"
install-size="0"
version="0.0.0"/>
<plugin
id="org.joda.time"
download-size="0"
install-size="0"
version="0.0.0"/>
</feature>

View file

@ -4,7 +4,7 @@ Bundle-Name: Cwa Plug-in
Bundle-SymbolicName: com.raytheon.uf.viz.cwa
Bundle-Version: 1.15.0.qualifier
Bundle-Vendor: RAYTHEON
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Import-Package: com.raytheon.uf.common.dataplugin,
com.raytheon.uf.common.dataplugin.cwa,

View file

@ -18,26 +18,32 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority version
of the file will completely replace a lower priority version of the file.
-->
<bundle>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
</capabilities>
</loadProperties>
<resourceData xsi:type="cwaResourceData"
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="cwa" constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
<displayList>
<displays xsi:type="d2DMapRenderableDisplay"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<descriptor xsi:type="mapDescriptor">
<resource>
<loadProperties loadWithoutData="false">
<capabilities>
</capabilities>
</loadProperties>
<resourceData xsi:type="cwaResourceData"
isUpdatingOnMetadataOnly="false"
isRequeryNecessaryOnTimeMatch="true">
<metadataMap>
<mapping key="pluginName">
<constraint constraintValue="cwa"
constraintType="EQUALS" />
</mapping>
</metadataMap>
</resourceData>
</resource>
</descriptor>
</displays>
</displayList>
</bundle>

View file

@ -18,6 +18,10 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
This is an absolute override file, indicating that a higher priority version
of the file will completely replace a lower priority version of the file.
-->
<menuContributionFile>
<include installTo="menu:Aviation?before=CenterWeatherEnd"
fileName="menus/upperair/baseAviationCWA.xml" />

Some files were not shown because too many files have changed in this diff Show more