Merge branch 'ss_sync' (OB12.4.1-10) into 9-Wes2Bridge

Conflicts:
	ncep/gov.noaa.nws.ncep.common.dataplugin.mcidas/src/gov/noaa/nws/ncep/common/dataplugin/mcidas/McidasRecord.java
	ncep/gov.noaa.nws.ncep.common.dataplugin.ncpafm/src/gov/noaa/nws/ncep/common/dataplugin/ncpafm/NcPafmRecord.java
	ncep/gov.noaa.nws.ncep.common.dataplugin.ncuair/src/gov/noaa/nws/ncep/common/dataplugin/ncuair/NcUairRecord.java
	ncep/gov.noaa.nws.ncep.edex.plugin.mosaic/src/gov/noaa/nws/ncep/edex/plugin/mosaic/common/MosaicRecord.java

All of these were 'self-resolved' when kdiff3 invoked


Former-commit-id: f98354aae305ad227eaf3b36e4393b8aefc80f02
This commit is contained in:
Steve Harris 2012-05-09 13:19:47 -05:00
commit 092efd6072
2312 changed files with 143907 additions and 136663 deletions

View file

0
RadarServer/build.rcm/.project Executable file → Normal file
View file

0
RadarServer/build.rcm/bits/bin/importAwips1 Executable file → Normal file
View file

0
RadarServer/build.rcm/bits/bin/start Executable file → Normal file
View file

0
RadarServer/build.rcm/bits/bin/stop Executable file → Normal file
View file

View file

0
RadarServer/build.rcm/build.sh Executable file → Normal file
View file

0
RadarServer/build.rcm/build.xml Executable file → Normal file
View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

View file

0
RadarServer/build.rcm/cfgbits/data/config/start-config Executable file → Normal file
View file

View file

@ -79,146 +79,155 @@ import com.raytheon.rcm.server.Log;
import com.raytheon.rcm.server.RadarServer;
import com.raytheon.rcm.server.StatusManager.RadarStatus;
public class MsgServ implements RadarEventListener, MessageListener {
QueueConnection queueConn;
QueueSession queueSession;
QueueSender queueSender;
TopicConnection topicConn;
TopicSession topicSession;
TopicPublisher topicPublisher;
JAXBContext jaxbCtx;
Marshaller m;
Unmarshaller u;
Serv serv;
public MsgServ(RadarServer server) {
serv = new Serv(server);
try {
jaxbCtx = JAXBContext.newInstance(ReqObj.class, ReplyObj.class,
EventObj.class, RmrEvent.class);
m = jaxbCtx.createMarshaller();
u = jaxbCtx.createUnmarshaller();
} catch (JAXBException e) {
Log.errorf("MsgServ could not create JAXBContext: %s", e);
}
}
public void start(QueueConnectionFactory qConnFac,
TopicConnectionFactory tConnFac) {
try {
queueConn = qConnFac.createQueueConnection();
queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = queueSession.createQueue("RadarServer");
queueSender = queueSession.createSender(null);
QueueReceiver qr = queueSession.createReceiver(queue);
qr.setMessageListener(this);
topicConn = tConnFac.createTopicConnection();
topicSession = topicConn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = topicSession.createTopic("RadarEvents");
topicPublisher = topicSession.createPublisher(topic);
queueConn.start();
} catch (JMSException e) {
Log.errorf("MsgServ could not start connections: %s", e);
}
}
@Override
public void handleRadarEvent(RadarEvent event) {
RadarEvent eventToSend = EventObj.filterRadarEvent(event);
if (eventToSend != null)
publishEvent(eventToSend);
}
QueueConnection queueConn;
@Override
public void onMessage(Message msg) {
try {
ReplyObj po = null;
String error = null;
Exception exc = null;
Destination replyToDestination = msg.getJMSReplyTo();
if (msg instanceof TextMessage) {
TextMessage tms = (TextMessage) msg;
StringReader sr = new StringReader(tms.getText());
Object o = null;
try {
o = u.unmarshal(sr);
} catch (JAXBException e) {
exc = e;
}
if (o instanceof ReqObj) {
ReqObj ro = (ReqObj) o;
try {
po = handleRequest(replyToDestination, ro);
} catch (RuntimeException e) {
error = "Unexpected error while processing request: " + e.toString();
exc = e;
}
} else if (o != null)
error = String.format("Invalid request class '%s'", o.getClass());
} else
error = "Invalid JMS message type";
QueueSession queueSession;
if (error == null && exc != null)
error = exc.toString();
if (po == null)
po = ReplyObj.error(error != null ? error : "Unknown error");
if (exc != null)
Log.errorf("Error processing remote request: %s", exc);
else if (error != null)
Log.errorf("Error processing remote request: %s", error);
if (po != null) {
StringWriter sw = new StringWriter();
try {
synchronized (m) {
m.marshal(po, sw);
}
} catch (JAXBException e) {
Log.errorf("Error processing remote request: %s", e);
return;
}
TextMessage rtm = queueSession.createTextMessage(
sw.toString());
String id = msg.getJMSCorrelationID();
if (id == null)
id = msg.getJMSMessageID();
if (id != null)
rtm.setJMSCorrelationID(id);
if (replyToDestination != null)
queueSender.send(replyToDestination, rtm);
else
Log.errorf("Client did not specify reply-to destination");
}
} catch (JMSException e) {
Log.errorf("Error while processing JMS message: %s", e);
}
}
private ReplyObj handleRequest(Destination replyToDestination, ReqObj ro) {
ReplyObj po = null;
QueueSender queueSender;
TopicConnection topicConn;
TopicSession topicSession;
TopicPublisher topicPublisher;
JAXBContext jaxbCtx;
Marshaller m;
Unmarshaller u;
Serv serv;
public MsgServ(RadarServer server) {
serv = new Serv(server);
try {
jaxbCtx = JAXBContext.newInstance(ReqObj.class, ReplyObj.class,
EventObj.class, RmrEvent.class);
m = jaxbCtx.createMarshaller();
u = jaxbCtx.createUnmarshaller();
} catch (JAXBException e) {
Log.errorf("MsgServ could not create JAXBContext: %s", e);
}
}
public void start(QueueConnectionFactory qConnFac,
TopicConnectionFactory tConnFac) {
try {
queueConn = qConnFac.createQueueConnection();
queueSession = queueConn.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
Queue queue = queueSession.createQueue("RadarServer");
queueSender = queueSession.createSender(null);
QueueReceiver qr = queueSession.createReceiver(queue);
qr.setMessageListener(this);
topicConn = tConnFac.createTopicConnection();
topicSession = topicConn.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
Topic topic = topicSession.createTopic("RadarEvents");
topicPublisher = topicSession.createPublisher(topic);
queueConn.start();
} catch (JMSException e) {
Log.errorf("MsgServ could not start connections: %s", e);
}
}
@Override
public void handleRadarEvent(RadarEvent event) {
RadarEvent eventToSend = EventObj.filterRadarEvent(event);
if (eventToSend != null)
publishEvent(eventToSend);
}
@Override
public void onMessage(Message msg) {
try {
ReplyObj po = null;
String error = null;
Exception exc = null;
Destination replyToDestination = msg.getJMSReplyTo();
if (msg instanceof TextMessage) {
TextMessage tms = (TextMessage) msg;
StringReader sr = new StringReader(tms.getText());
Object o = null;
try {
o = u.unmarshal(sr);
} catch (JAXBException e) {
exc = e;
}
if (o instanceof ReqObj) {
ReqObj ro = (ReqObj) o;
try {
po = handleRequest(replyToDestination, ro);
} catch (RuntimeException e) {
error = "Unexpected error while processing request: "
+ e.toString();
exc = e;
}
} else if (o != null)
error = String.format("Invalid request class '%s'",
o.getClass());
} else
error = "Invalid JMS message type";
if (error == null && exc != null)
error = exc.toString();
if (po == null)
po = ReplyObj.error(error != null ? error : "Unknown error");
if (exc != null)
Log.errorf("Error processing remote request: %s", exc);
else if (error != null)
Log.errorf("Error processing remote request: %s", error);
if (po != null) {
StringWriter sw = new StringWriter();
try {
synchronized (m) {
m.marshal(po, sw);
}
} catch (JAXBException e) {
Log.errorf("Error processing remote request: %s", e);
return;
}
TextMessage rtm = queueSession.createTextMessage(sw.toString());
String id = msg.getJMSCorrelationID();
if (id == null)
id = msg.getJMSMessageID();
if (id != null)
rtm.setJMSCorrelationID(id);
if (replyToDestination != null)
queueSender.send(replyToDestination, rtm);
else
Log.errorf("Client did not specify reply-to destination");
}
} catch (JMSException e) {
Log.errorf("Error while processing JMS message: %s", e);
}
}
private ReplyObj handleRequest(Destination replyToDestination, ReqObj ro) {
ReplyObj po = null;
String error = null;
Log.eventf("Got remote request %s", ro);
if (ro instanceof GetRadarList)
po = ReplyObj.toGetRadarList(
serv.getRadarList());
po = ReplyObj.toGetRadarList(serv.getRadarList());
else if (ro instanceof GetRadarConfig) {
GetRadarConfig grc = (GetRadarConfig) ro;
if (grc.radarID != null)
po = ReplyObj.toGetRadarConfig(
serv.getRadarConfig(grc.radarID));
po = ReplyObj
.toGetRadarConfig(serv.getRadarConfig(grc.radarID));
else
po = ReplyObj.toGetRadarConfig(serv.getAllRadarConfigs());
} else if (ro instanceof SetRadarConfig) {
@ -227,33 +236,31 @@ public class MsgServ implements RadarEventListener, MessageListener {
} else if (ro instanceof GetRadarStatusMessages) {
GetRadarStatusMessages grs = (GetRadarStatusMessages) ro;
if (grs.radarID != null)
po = ReplyObj.toGetRadarStatusMessages(
createROStatus(grs.radarID,
serv.getRadarStatus(grs.radarID)));
po = ReplyObj.toGetRadarStatusMessages(createROStatus(
grs.radarID, serv.getRadarStatus(grs.radarID)));
else {
ArrayList<ROStatus> status = new ArrayList<ROStatus>();
for (Map.Entry<String, ? extends RadarStatus> e :
serv.getAllRadarStatus().entrySet()) {
status.add(createROStatus(e.getKey(),
e.getValue()));
for (Map.Entry<String, ? extends RadarStatus> e : serv
.getAllRadarStatus().entrySet()) {
status.add(createROStatus(e.getKey(), e.getValue()));
}
po = ReplyObj.toGetRadarStatusMessages(status);
}
} else if (ro instanceof SendOneTimeRequests) {
MsgServOtrHandler handler = null;
/* Correlation ID should be null so as to not intefere
* with the handler list on the client side.
/*
* Correlation ID should be null so as to not intefere with the
* handler list on the client side.
*/
/*
String id = msg.getJMSCorrelationID();
if (id == null)
id = msg.getJMSMessageID();
*/
String id = null;
* String id = msg.getJMSCorrelationID(); if (id == null) id =
* msg.getJMSMessageID();
*/
String id = null;
if (replyToDestination != null)
handler = new MsgServOtrHandler(replyToDestination, id);
handler = new MsgServOtrHandler(replyToDestination, id);
SendOneTimeRequests r = (SendOneTimeRequests) ro;
serv.sendOTRs(r.radarIDs, r.requests, handler);
} else if (ro instanceof SendRpsList) {
@ -267,17 +274,17 @@ public class MsgServ implements RadarEventListener, MessageListener {
} else if (ro instanceof GetRpsList) {
GetRpsList r = (GetRpsList) ro;
if (r.radarID != null) {
int vcp = r.vcp != null ? r.vcp : -1;
int opMode = r.opMode != null ? r.opMode : GSM.OP_MODE_MAINTENANCE;
int vcp = r.vcp != null ? r.vcp : -1;
int opMode = r.opMode != null ? r.opMode
: GSM.OP_MODE_MAINTENANCE;
RpsList rpsList = serv.getRpsList(r.radarID, opMode, vcp);
po = new ReplyObj.RpsListReply(rpsList);
/*
if (rpsList != null)
po = ReplyObj.toGetRpsList(rpsList);
else
error = String.format("Could not retrieve RPS list for radar %s%s",
r.radarID, vcp != -1 ? ", VCP " + vcp : "");
*/
* if (rpsList != null) po = ReplyObj.toGetRpsList(rpsList);
* else error =
* String.format("Could not retrieve RPS list for radar %s%s",
* r.radarID, vcp != -1 ? ", VCP " + vcp : "");
*/
} else
error = "Must specify a radar name";
} else if (ro instanceof GetGlobalConfig) {
@ -301,7 +308,8 @@ public class MsgServ implements RadarEventListener, MessageListener {
po = r;
} else if (ro instanceof SendAlertRequest) {
SendAlertRequest ro2 = (SendAlertRequest) ro;
error = serv.sendAlertRequest(ro2.radarID, ro2.areaIndex, ro2.alertRequest);
error = serv.sendAlertRequest(ro2.radarID, ro2.areaIndex,
ro2.alertRequest);
} else if (ro instanceof SendMessageToRPG) {
SendMessageToRPG ro2 = (SendMessageToRPG) ro;
error = serv.sendMessageToRPG(ro2.radarID, ro2.message);
@ -316,7 +324,7 @@ public class MsgServ implements RadarEventListener, MessageListener {
error = serv.debugHandleMessage(r.radarID, r.message);
} else
error = String.format("Unsupported request '%s'", ro.toString());
if (po == null) {
if (error == null)
po = new ReplyObj();
@ -324,97 +332,97 @@ public class MsgServ implements RadarEventListener, MessageListener {
po = ReplyObj.error(error);
}
return po;
}
private ROStatus createROStatus(String radarID, RadarStatus rs) {
ROStatus ros = new ROStatus();
ros.radarID = radarID;
ros.currentAAP = rs.getCurrentAAP();
ros.currentGSM = rs.getCurrentGSM();
ros.currentPTL = rs.getCurrentPTL();
ros.lastAAP = rs.getLastAAP();
ros.lastGSM = rs.getLastGSM();
ros.lastPTL = rs.getLastPTL();
return ros;
}
return po;
}
@Override
public void handleConfigEvent(ConfigEvent event) {
publishEvent(event);
}
private void publishEvent(Object obj) {
// Can get events before mq is set up.
if (topicPublisher == null)
return;
StringWriter sw = new StringWriter();
try {
synchronized (m) {
m.marshal(obj, sw);
}
} catch (JAXBException e) {
Log.errorf("Error serializing event: %s", e);
return;
}
try {
TextMessage tm = topicSession.createTextMessage(
sw.toString());
topicPublisher.publish(tm);
} catch (JMSException e) {
Log.errorf("Error sending message: %s", e);
}
}
private ROStatus createROStatus(String radarID, RadarStatus rs) {
ROStatus ros = new ROStatus();
ros.radarID = radarID;
ros.currentAAP = rs.getCurrentAAP();
ros.currentGSM = rs.getCurrentGSM();
ros.currentPTL = rs.getCurrentPTL();
ros.lastAAP = rs.getLastAAP();
ros.lastGSM = rs.getLastGSM();
ros.lastPTL = rs.getLastPTL();
return ros;
}
@Override
public void handleNotificationEvent(NotificationEvent event) {
publishEvent(event);
}
class MsgServOtrHandler implements OTRHandler {
Destination destination;
String correlationID;
public MsgServOtrHandler(Destination destination, String correlationID) {
this.destination = destination;
this.correlationID = correlationID;
}
@Override
public void handleOtrEvent(OtrEvent event) {
OtrEvent eventToSend = event.clone();
/* This OTR notification capability is currently only used to
* display alerts in CAVE. Thus, there is no need to send the
* actual product data. Given that some products can be larger
* than one megabyte and the notification is in XML format,
* this is a useful optimization.
*/
if (event.product != null
@Override
public void handleConfigEvent(ConfigEvent event) {
publishEvent(event);
}
private void publishEvent(Object obj) {
// Can get events before mq is set up.
if (topicPublisher == null)
return;
StringWriter sw = new StringWriter();
try {
synchronized (m) {
m.marshal(obj, sw);
}
} catch (JAXBException e) {
Log.errorf("Error serializing event: %s", e);
return;
}
try {
TextMessage tm = topicSession.createTextMessage(sw.toString());
topicPublisher.publish(tm);
} catch (JMSException e) {
Log.errorf("Error sending message: %s", e);
}
}
@Override
public void handleNotificationEvent(NotificationEvent event) {
publishEvent(event);
}
class MsgServOtrHandler implements OTRHandler {
Destination destination;
String correlationID;
public MsgServOtrHandler(Destination destination, String correlationID) {
this.destination = destination;
this.correlationID = correlationID;
}
@Override
public void handleOtrEvent(OtrEvent event) {
OtrEvent eventToSend = event.clone();
/*
* This OTR notification capability is currently only used to
* display alerts in CAVE. Thus, there is no need to send the actual
* product data. Given that some products can be larger than one
* megabyte and the notification is in XML format, this is a useful
* optimization.
*/
if (event.product != null
&& com.raytheon.rcm.message.Message
.messageCodeOf(event.product) > 16)
eventToSend.product = GraphicProduct
.extractHeaderAndPDB(event.product);
StringWriter sw = new StringWriter();
try {
synchronized (m) {
m.marshal(eventToSend, sw);
}
} catch (JAXBException e) {
Log.errorf("Error processing remote request: %s", e);
return;
}
try {
TextMessage rtm = queueSession.createTextMessage(
sw.toString());
if (correlationID != null)
rtm.setJMSCorrelationID(correlationID);
queueSender.send(destination, rtm);
} catch (JMSException e) {
Log.errorf("Error sending message: %s", e);
}
}
}
StringWriter sw = new StringWriter();
try {
synchronized (m) {
m.marshal(eventToSend, sw);
}
} catch (JAXBException e) {
Log.errorf("Error processing remote request: %s", e);
return;
}
try {
TextMessage rtm = queueSession.createTextMessage(sw.toString());
if (correlationID != null)
rtm.setJMSCorrelationID(correlationID);
queueSender.send(destination, rtm);
} catch (JMSException e) {
Log.errorf("Error sending message: %s", e);
}
}
}
}

View file

@ -1,262 +1,262 @@
<project name="Build specific targets and properties" default="noDefault">
<!-- ===================================================================== -->
<!-- Run a given ${target} on all elements being built -->
<!-- Add on <ant> task for each top level element being built. -->
<!-- ===================================================================== -->
<property name="allElementsFile" value="${builder}/allElements.xml"/>
<import file="${allElementsFile}" />
<target name="allElements">
<antcall target="allElementsDelegator" />
</target>
<!-- ===================================================================== -->
<!-- ===================================================================== -->
<target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
<get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
<unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
</target>
<target name="checkLocalBase">
<available file="${base}" property="skipBase" />
</target>
<!-- ===================================================================== -->
<!-- Check out map files from correct repository -->
<!-- Replace values for mapsCheckoutTag as desired. -->
<!-- ===================================================================== -->
<target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
</target>
<target name="checkLocalMaps">
</target>
<target name="tagMapFiles" if="tagMaps">
</target>
<!-- ===================================================================== -->
<target name="clean" unless="noclean">
<antcall target="allElements">
<param name="target" value="cleanElement" />
</antcall>
</target>
<target name="gatherLogs">
<mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
<antcall target="allElements">
<param name="target" value="gatherLogs" />
</antcall>
<unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
<fileset dir="${buildDirectory}/features">
<include name="**/*.log.zip" />
</fileset>
</unzip>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before setup -->
<!-- ===================================================================== -->
<target name="preSetup">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after setup but before starting the build proper -->
<!-- ===================================================================== -->
<target name="postSetup">
<echo message="${buildDirectory}"/>
<mkdir dir="${buildDirectory}/plugins"/>
<echo message="com.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="com.*/**"/>
</copy>
<project name="Build specific targets and properties" default="noDefault">
<!-- ===================================================================== -->
<!-- Run a given ${target} on all elements being built -->
<!-- Add on <ant> task for each top level element being built. -->
<!-- ===================================================================== -->
<property name="allElementsFile" value="${builder}/allElements.xml"/>
<import file="${allElementsFile}" />
<target name="allElements">
<antcall target="allElementsDelegator" />
</target>
<!-- ===================================================================== -->
<!-- ===================================================================== -->
<target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
<get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
<unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
</target>
<target name="checkLocalBase">
<available file="${base}" property="skipBase" />
</target>
<!-- ===================================================================== -->
<!-- Check out map files from correct repository -->
<!-- Replace values for mapsCheckoutTag as desired. -->
<!-- ===================================================================== -->
<target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
</target>
<target name="checkLocalMaps">
</target>
<target name="tagMapFiles" if="tagMaps">
</target>
<!-- ===================================================================== -->
<target name="clean" unless="noclean">
<antcall target="allElements">
<param name="target" value="cleanElement" />
</antcall>
</target>
<target name="gatherLogs">
<mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
<antcall target="allElements">
<param name="target" value="gatherLogs" />
</antcall>
<unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
<fileset dir="${buildDirectory}/features">
<include name="**/*.log.zip" />
</fileset>
</unzip>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before setup -->
<!-- ===================================================================== -->
<target name="preSetup">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after setup but before starting the build proper -->
<!-- ===================================================================== -->
<target name="postSetup">
<echo message="${buildDirectory}"/>
<mkdir dir="${buildDirectory}/plugins"/>
<echo message="com.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="com.*/**"/>
</copy>
<echo message="ucar.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ucar.*/**"/>
</copy>
<echo message="features.*/**"/>
<copy todir="${buildDirectory}/features">
<fileset dir="${buildDirectory}/../../../" includes="*.feature*/**"/>
</copy>
<echo message="ncsa.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ncsa.*/**"/>
</copy>
<echo message="org.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="org.*/**"/>
</copy>
<echo message="net.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="net.*/**"/>
</copy>
</copy>
<echo message="features.*/**"/>
<copy todir="${buildDirectory}/features">
<fileset dir="${buildDirectory}/../../../" includes="*.feature*/**"/>
</copy>
<echo message="ncsa.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ncsa.*/**"/>
</copy>
<echo message="org.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="org.*/**"/>
</copy>
<echo message="net.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="net.*/**"/>
</copy>
<echo message="ohd.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ohd*/**"/>
</copy>
</copy>
<echo message="meteolib.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="meteolib.*/**"/>
</copy>
<echo message="javax.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="javax.*/**"/>
</copy>
<echo message="gov.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="gov.*/**"/>
</copy>
<antcall target="getBaseComponents" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before fetching the build elements -->
<!-- ===================================================================== -->
<target name="preFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after fetching the build elements -->
<!-- ===================================================================== -->
<target name="postFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before generating the build scripts. -->
<!-- ===================================================================== -->
<target name="preGenerate">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after generating the build scripts. -->
<!-- ===================================================================== -->
<target name="postGenerate">
<antcall target="clean" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="preProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="postProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running assemble. -->
<!-- ===================================================================== -->
<target name="preAssemble">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running assemble. -->
<!-- ===================================================================== -->
<target name="postAssemble">
<copy todir="${buildDirectory}/../../static/common/alertviz/etc"
verbose="true">
<fileset dir="${buildDirectory}/../../static/common/cave/etc">
<include name="alertViz*/**" />
<include name="monitorIcons/**" />
</fileset>
</copy>
<!-- Update the 32-bit linux AlertViz zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/common"
excludes="cave/**" />
<fileset dir="${buildDirectory}/../../static/linux"
excludes="cave/**" />
</zip>
<!-- Update the 64-bit linux AlertViz zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/common"
excludes="cave/**" />
<fileset dir="${buildDirectory}/../../static/linux"
excludes="cave/**" />
</zip>
<!-- Update the 32-bit win32 AlertViz zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-win32.win32.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/common"
excludes="cave/**" />
<fileset dir="${buildDirectory}/../../static/win32.x86"
excludes="cave/**" />
</zip>
<delete includeEmptyDirs="true">
<fileset dir="${buildDirectory}/../../static/common/alertviz/etc">
<include name="alertViz*/**" />
<include name="monitorIcons/**" />
</fileset>
</delete>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running package. -->
<!-- ===================================================================== -->
<target name="prePackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running package. -->
<!-- ===================================================================== -->
<target name="postPackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after the build is done. -->
<!-- ===================================================================== -->
<target name="postBuild">
</target>
<!-- ===================================================================== -->
<!-- Steps to do to test the build results -->
<!-- ===================================================================== -->
<target name="test">
<ant antfile="${builder}/test.xml" />
</target>
<target name="checkJUnitTestResults">
<taskdef name="checkJUnitReports" classname="sample.tools.TestResultCheck" classpath="${builder}/bin;${builder}/extraTools/sampletools.jar" />
<checkJUnitReports dir="${buildDirectory}/${buildLabel}/testresults" output="${buildDirectory}/junitresults.txt" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do to publish the build results -->
<!-- ===================================================================== -->
<target name="publish">
</target>
<!-- ===================================================================== -->
<!-- Default target -->
<!-- ===================================================================== -->
<target name="noDefault">
<echo message="You must specify a target when invoking this file" />
</target>
</project>
</copy>
<echo message="javax.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="javax.*/**"/>
</copy>
<echo message="gov.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="gov.*/**"/>
</copy>
<antcall target="getBaseComponents" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before fetching the build elements -->
<!-- ===================================================================== -->
<target name="preFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after fetching the build elements -->
<!-- ===================================================================== -->
<target name="postFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before generating the build scripts. -->
<!-- ===================================================================== -->
<target name="preGenerate">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after generating the build scripts. -->
<!-- ===================================================================== -->
<target name="postGenerate">
<antcall target="clean" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="preProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="postProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running assemble. -->
<!-- ===================================================================== -->
<target name="preAssemble">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running assemble. -->
<!-- ===================================================================== -->
<target name="postAssemble">
<copy todir="${buildDirectory}/../../static/common/alertviz/etc"
verbose="true">
<fileset dir="${buildDirectory}/../../static/common/cave/etc">
<include name="alertViz*/**" />
<include name="monitorIcons/**" />
</fileset>
</copy>
<!-- Update the 32-bit linux AlertViz zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/common"
excludes="cave/**" />
<fileset dir="${buildDirectory}/../../static/linux"
excludes="cave/**" />
</zip>
<!-- Update the 64-bit linux AlertViz zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/common"
excludes="cave/**" />
<fileset dir="${buildDirectory}/../../static/linux"
excludes="cave/**" />
</zip>
<!-- Update the 32-bit win32 AlertViz zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-win32.win32.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/common"
excludes="cave/**" />
<fileset dir="${buildDirectory}/../../static/win32.x86"
excludes="cave/**" />
</zip>
<delete includeEmptyDirs="true">
<fileset dir="${buildDirectory}/../../static/common/alertviz/etc">
<include name="alertViz*/**" />
<include name="monitorIcons/**" />
</fileset>
</delete>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running package. -->
<!-- ===================================================================== -->
<target name="prePackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running package. -->
<!-- ===================================================================== -->
<target name="postPackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after the build is done. -->
<!-- ===================================================================== -->
<target name="postBuild">
</target>
<!-- ===================================================================== -->
<!-- Steps to do to test the build results -->
<!-- ===================================================================== -->
<target name="test">
<ant antfile="${builder}/test.xml" />
</target>
<target name="checkJUnitTestResults">
<taskdef name="checkJUnitReports" classname="sample.tools.TestResultCheck" classpath="${builder}/bin;${builder}/extraTools/sampletools.jar" />
<checkJUnitReports dir="${buildDirectory}/${buildLabel}/testresults" output="${buildDirectory}/junitresults.txt" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do to publish the build results -->
<!-- ===================================================================== -->
<target name="publish">
</target>
<!-- ===================================================================== -->
<!-- Default target -->
<!-- ===================================================================== -->
<target name="noDefault">
<echo message="You must specify a target when invoking this file" />
</target>
</project>

0
cave/build/build.ecl Normal file
View file

View file

@ -1,485 +1,485 @@
<project name="Build specific targets and properties" default="noDefault">
<!-- ===================================================================== -->
<!-- Run a given ${target} on all elements being built -->
<!-- Add on <ant> task for each top level element being built. -->
<!-- ===================================================================== -->
<property name="allElementsFile" value="${builder}/allElements.xml"/>
<import file="${allElementsFile}" />
<target name="allElements">
<antcall target="allElementsDelegator" />
</target>
<!-- ===================================================================== -->
<!-- ===================================================================== -->
<target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
<get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
<unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
</target>
<target name="checkLocalBase">
<available file="${base}" property="skipBase" />
</target>
<!-- ===================================================================== -->
<!-- Check out map files from correct repository -->
<!-- Replace values for mapsCheckoutTag as desired. -->
<!-- ===================================================================== -->
<target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
</target>
<target name="checkLocalMaps">
</target>
<target name="tagMapFiles" if="tagMaps">
</target>
<!-- ===================================================================== -->
<target name="clean" unless="noclean">
<antcall target="allElements">
<param name="target" value="cleanElement" />
</antcall>
</target>
<target name="gatherLogs">
<mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
<antcall target="allElements">
<param name="target" value="gatherLogs" />
</antcall>
<unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
<fileset dir="${buildDirectory}/features">
<include name="**/*.log.zip" />
</fileset>
</unzip>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before setup -->
<!-- ===================================================================== -->
<target name="preSetup">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after setup but before starting the build proper -->
<!-- ===================================================================== -->
<target name="postSetup">
<echo message="${buildDirectory}"/>
<mkdir dir="${buildDirectory}/plugins"/>
<echo message="com.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="com.*/**"/>
</copy>
<project name="Build specific targets and properties" default="noDefault">
<!-- ===================================================================== -->
<!-- Run a given ${target} on all elements being built -->
<!-- Add on <ant> task for each top level element being built. -->
<!-- ===================================================================== -->
<property name="allElementsFile" value="${builder}/allElements.xml"/>
<import file="${allElementsFile}" />
<target name="allElements">
<antcall target="allElementsDelegator" />
</target>
<!-- ===================================================================== -->
<!-- ===================================================================== -->
<target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
<get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
<unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
</target>
<target name="checkLocalBase">
<available file="${base}" property="skipBase" />
</target>
<!-- ===================================================================== -->
<!-- Check out map files from correct repository -->
<!-- Replace values for mapsCheckoutTag as desired. -->
<!-- ===================================================================== -->
<target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
</target>
<target name="checkLocalMaps">
</target>
<target name="tagMapFiles" if="tagMaps">
</target>
<!-- ===================================================================== -->
<target name="clean" unless="noclean">
<antcall target="allElements">
<param name="target" value="cleanElement" />
</antcall>
</target>
<target name="gatherLogs">
<mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
<antcall target="allElements">
<param name="target" value="gatherLogs" />
</antcall>
<unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
<fileset dir="${buildDirectory}/features">
<include name="**/*.log.zip" />
</fileset>
</unzip>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before setup -->
<!-- ===================================================================== -->
<target name="preSetup">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after setup but before starting the build proper -->
<!-- ===================================================================== -->
<target name="postSetup">
<echo message="${buildDirectory}"/>
<mkdir dir="${buildDirectory}/plugins"/>
<echo message="com.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="com.*/**"/>
</copy>
<echo message="ucar.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ucar.*/**"/>
</copy>
<echo message="features.*/**"/>
<copy todir="${buildDirectory}/features">
<fileset dir="${buildDirectory}/../../../" includes="*.feature*/**"/>
</copy>
<echo message="ncsa.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ncsa.*/**"/>
</copy>
<echo message="org.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="org.*/**"/>
</copy>
<echo message="net.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="net.*/**"/>
</copy>
</copy>
<echo message="features.*/**"/>
<copy todir="${buildDirectory}/features">
<fileset dir="${buildDirectory}/../../../" includes="*.feature*/**"/>
</copy>
<echo message="ncsa.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ncsa.*/**"/>
</copy>
<echo message="org.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="org.*/**"/>
</copy>
<echo message="net.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="net.*/**"/>
</copy>
<echo message="ohd.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="ohd*/**"/>
</copy>
</copy>
<echo message="meteolib.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="meteolib.*/**"/>
</copy>
<echo message="javax.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="javax.*/**"/>
</copy>
<echo message="gov.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="gov.*/**"/>
</copy>
<echo message="edu.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="edu.*/**"/>
</copy>
<antcall target="getBaseComponents" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before fetching the build elements -->
<!-- ===================================================================== -->
<target name="preFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after fetching the build elements -->
<!-- ===================================================================== -->
<target name="postFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before generating the build scripts. -->
<!-- ===================================================================== -->
<target name="preGenerate">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after generating the build scripts. -->
<!-- ===================================================================== -->
<target name="postGenerate">
<antcall target="clean" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="preProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="postProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running assemble. -->
<!-- ===================================================================== -->
<target name="preAssemble">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running assemble. -->
<!-- ===================================================================== -->
<target name="postAssemble">
<!-- Update the 32-bit linux CAVE zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/linux"
excludes="alertviz/**" />
<fileset dir="${buildDirectory}/../../static/linux.x86" />
</zip>
<!-- Update the 64-bit linux CAVE zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/linux"
excludes="alertviz/**" />
<fileset dir="${buildDirectory}/../../static/linux.x86_64" />
</zip>
<!-- Update the 32-bit win32 CAVE zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-win32.win32.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/win32.x86"
excludes="alertviz/**" />
<!-- Include cave/etc in the win32 CAVE zip -->
<fileset dir="${buildDirectory}/../../static/common"
excludes="alertviz/**" />
</zip>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running package. -->
<!-- ===================================================================== -->
<target name="prePackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running package. -->
<!-- ===================================================================== -->
<target name="postPackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after the build is done. -->
<!-- ===================================================================== -->
<target name="postBuild">
<taskdef resource="net/sf/antcontrib/antlib.xml"
classpath="${builder}/../lib/ant/ant-contrib-1.0b3.jar" />
<taskdef name="xmltask"
classpath="${builder}/../lib/ant/xmltask-v1.15.1.jar"
classname="com.oopsconsultancy.xmltask.ant.XmlTask" />
<!-- Generate the 32-bit CAVE ini files -->
<var name="cave.arch" value="arch.x86" />
<extractCAVEini
zip.file="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip" />
<antcall target="generateDynamicCAVE" />
<!-- Update the 32-bit CAVE zip file -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip"
basedir="/tmp"
includes="cave/*.ini, cave/*.sh"
update="true" />
<!-- Generate the 64-bit CAVE ini files -->
<var name="cave.arch" value="arch.x86_64" />
<extractCAVEini
zip.file="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip" />
<antcall target="generateDynamicCAVE" />
<!-- Update the 64-bit cave.ini file -->
<antcall target="update64BitINI" />
<!-- Update the 64-bit CAVE zip file -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip"
basedir="/tmp"
includes="cave/*.ini, cave/*.sh"
update="true" />
</target>
<macrodef name="extractCAVEini">
<attribute name="zip.file" />
<sequential>
<unzip src="@{zip.file}"
dest="/tmp">
<patternset>
<include name="**/cave/cave.ini" />
</patternset>
</unzip>
</sequential>
</macrodef>
<macrodef name="verifyVersion">
<attribute name="file.version" />
<sequential>
<property name="___memorySettingsVersion___"
value="3.0"/>
<if>
<not>
<equals
arg1="${___memorySettingsVersion___}"
arg2="@{file.version}" />
</not>
<then>
<fail
message="ERROR: memorySettings.xml Version Mismatch." />
</then>
</if>
</sequential>
</macrodef>
<target name="generateDynamicCAVE">
<xmlproperty file="${builder}/memorySettings.xml"
collapseAttributes="true"/>
<verifyVersion
file.version="${cave-memory-settings.file-version}" />
<property name="iniLookupScript"
value="/tmp/cave/iniLookup.sh" />
<!-- Start the iniLookup.sh script -->
<echo message="#!/bin/bash${line.separator}"
file="${iniLookupScript}" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="# This auto-generated script will be sourced by caveUtil.sh.${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="export ASSOCIATED_INI=${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="function retrieveAssociatedINI()${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="{${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # Arguments${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # ${1} == one in the set: {-component, -perspective}${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # ${2} == the argument that corresponds to the first argument${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # AUTOGENERATED IF STATEMENTS."
file="${iniLookupScript}"
append="true" />
<xmltask source="${builder}/memorySettings.xml">
<call path="//${cave.arch}/memory-setting">
<param name="first-arg"
path="command-line-args/first-arg/text()" />
<param name="second-arg"
path="command-line-args/second-arg/text()" />
<!-- TODO: Explore using copy and buffers to do
the following actions in a better way. -->
<param name="max-memory"
path="ini-substitutions/max-memory/value/text()" />
<param name="max-perm"
path="ini-substitutions/max-perm/value/text()" />
<actions>
<!-- Create a component-specific ini file -->
<copy verbose="true"
file="/tmp/cave/cave.ini"
tofile="/tmp/cave/@{second-arg}.ini"
overwrite="true" />
<!-- Update the ini file -->
<update.ini
ini.file="@{second-arg}.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-memory.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-memory.value}"
new.value="@{max-memory}" />
<update.ini
ini.file="@{second-arg}.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-perm.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-perm.value}"
new.value="@{max-perm}" />
<!-- Add to the ini lookup utility script -->
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" if [ &quot;$${1}&quot; == &quot;@{first-arg}&quot; ] &amp;&amp;${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" [ &quot;$${2}&quot; == &quot;@{second-arg}&quot; ]; then${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" export ASSOCIATED_INI=&quot;@{second-arg}.ini&quot;${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" return 0${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" fi${line.separator}"
file="${iniLookupScript}"
append="true" />
</actions>
</call>
</xmltask>
<!-- Finish the iniLookup.sh script -->
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" return 1${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="}"
file="${iniLookupScript}"
append="true" />
</target>
<!-- Used to update cave.ini for the x86_64 cave. -->
<target name="update64BitINI">
<xmlproperty file="${builder}/memorySettings.xml"
collapseAttributes="true"/>
<property name="caveXmx" value="2048M" />
<property name="caveMaxPermSize" value="256m" />
<update.ini
ini.file="cave.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-memory.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-memory.value}"
new.value="${caveXmx}" />
<update.ini
ini.file="cave.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-perm.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-perm.value}"
new.value="${caveMaxPermSize}" />
</target>
<macrodef name="update.ini">
<attribute name="ini.file" />
<attribute name="jvm.arg" />
<attribute name="current.value" />
<attribute name="new.value" />
<sequential>
<if>
<not>
<equals arg1="@{new.value}"
arg2="DEFAULT" />
</not>
<then>
<exec executable="/bin/sed"
output="/tmp/cave/ini.tmp">
<arg value="-e" />
<arg value="s/@{jvm.arg}@{current.value}/@{jvm.arg}@{new.value}/" />
<arg value="/tmp/cave/@{ini.file}" />
</exec>
<move verbose="true"
file="/tmp/cave/ini.tmp"
tofile="/tmp/cave/@{ini.file}"
overwrite="true" />
</then>
</if>
</sequential>
</macrodef>
<!-- ===================================================================== -->
<!-- Steps to do to test the build results -->
<!-- ===================================================================== -->
<target name="test">
<ant antfile="${builder}/test.xml" />
</target>
<target name="checkJUnitTestResults">
<taskdef name="checkJUnitReports" classname="sample.tools.TestResultCheck" classpath="${builder}/bin;${builder}/extraTools/sampletools.jar" />
<checkJUnitReports dir="${buildDirectory}/${buildLabel}/testresults" output="${buildDirectory}/junitresults.txt" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do to publish the build results -->
<!-- ===================================================================== -->
<target name="publish">
</target>
<!-- ===================================================================== -->
<!-- Default target -->
<!-- ===================================================================== -->
<target name="noDefault">
<echo message="You must specify a target when invoking this file" />
</target>
</project>
</copy>
<echo message="javax.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="javax.*/**"/>
</copy>
<echo message="gov.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="gov.*/**"/>
</copy>
<echo message="edu.*/**"/>
<copy todir="${buildDirectory}/plugins">
<fileset dir="${buildDirectory}/../../../" includes="edu.*/**"/>
</copy>
<antcall target="getBaseComponents" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before fetching the build elements -->
<!-- ===================================================================== -->
<target name="preFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after fetching the build elements -->
<!-- ===================================================================== -->
<target name="postFetch">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before generating the build scripts. -->
<!-- ===================================================================== -->
<target name="preGenerate">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after generating the build scripts. -->
<!-- ===================================================================== -->
<target name="postGenerate">
<antcall target="clean" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="preProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running the build.xmls for the elements being built. -->
<!-- ===================================================================== -->
<target name="postProcess">
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running assemble. -->
<!-- ===================================================================== -->
<target name="preAssemble">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running assemble. -->
<!-- ===================================================================== -->
<target name="postAssemble">
<!-- Update the 32-bit linux CAVE zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/linux"
excludes="alertviz/**" />
<fileset dir="${buildDirectory}/../../static/linux.x86" />
</zip>
<!-- Update the 64-bit linux CAVE zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/linux"
excludes="alertviz/**" />
<fileset dir="${buildDirectory}/../../static/linux.x86_64" />
</zip>
<!-- Update the 32-bit win32 CAVE zip with static files -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-win32.win32.x86.zip"
update="true">
<fileset dir="${buildDirectory}/../../static/win32.x86"
excludes="alertviz/**" />
<!-- Include cave/etc in the win32 CAVE zip -->
<fileset dir="${buildDirectory}/../../static/common"
excludes="alertviz/**" />
</zip>
</target>
<!-- ===================================================================== -->
<!-- Steps to do before running package. -->
<!-- ===================================================================== -->
<target name="prePackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after running package. -->
<!-- ===================================================================== -->
<target name="postPackage">
</target>
<!-- ===================================================================== -->
<!-- Steps to do after the build is done. -->
<!-- ===================================================================== -->
<target name="postBuild">
<taskdef resource="net/sf/antcontrib/antlib.xml"
classpath="${builder}/../lib/ant/ant-contrib-1.0b3.jar" />
<taskdef name="xmltask"
classpath="${builder}/../lib/ant/xmltask-v1.15.1.jar"
classname="com.oopsconsultancy.xmltask.ant.XmlTask" />
<!-- Generate the 32-bit CAVE ini files -->
<var name="cave.arch" value="arch.x86" />
<extractCAVEini
zip.file="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip" />
<antcall target="generateDynamicCAVE" />
<!-- Update the 32-bit CAVE zip file -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86.zip"
basedir="/tmp"
includes="cave/*.ini, cave/*.sh"
update="true" />
<!-- Generate the 64-bit CAVE ini files -->
<var name="cave.arch" value="arch.x86_64" />
<extractCAVEini
zip.file="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip" />
<antcall target="generateDynamicCAVE" />
<!-- Update the 64-bit cave.ini file -->
<antcall target="update64BitINI" />
<!-- Update the 64-bit CAVE zip file -->
<zip destfile="${buildDirectory}/${buildLabel}/${buildId}-linux.gtk.x86_64.zip"
basedir="/tmp"
includes="cave/*.ini, cave/*.sh"
update="true" />
</target>
<macrodef name="extractCAVEini">
<attribute name="zip.file" />
<sequential>
<unzip src="@{zip.file}"
dest="/tmp">
<patternset>
<include name="**/cave/cave.ini" />
</patternset>
</unzip>
</sequential>
</macrodef>
<macrodef name="verifyVersion">
<attribute name="file.version" />
<sequential>
<property name="___memorySettingsVersion___"
value="3.0"/>
<if>
<not>
<equals
arg1="${___memorySettingsVersion___}"
arg2="@{file.version}" />
</not>
<then>
<fail
message="ERROR: memorySettings.xml Version Mismatch." />
</then>
</if>
</sequential>
</macrodef>
<target name="generateDynamicCAVE">
<xmlproperty file="${builder}/memorySettings.xml"
collapseAttributes="true"/>
<verifyVersion
file.version="${cave-memory-settings.file-version}" />
<property name="iniLookupScript"
value="/tmp/cave/iniLookup.sh" />
<!-- Start the iniLookup.sh script -->
<echo message="#!/bin/bash${line.separator}"
file="${iniLookupScript}" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="# This auto-generated script will be sourced by caveUtil.sh.${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="export ASSOCIATED_INI=${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="function retrieveAssociatedINI()${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="{${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # Arguments${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # ${1} == one in the set: {-component, -perspective}${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # ${2} == the argument that corresponds to the first argument${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" # AUTOGENERATED IF STATEMENTS."
file="${iniLookupScript}"
append="true" />
<xmltask source="${builder}/memorySettings.xml">
<call path="//${cave.arch}/memory-setting">
<param name="first-arg"
path="command-line-args/first-arg/text()" />
<param name="second-arg"
path="command-line-args/second-arg/text()" />
<!-- TODO: Explore using copy and buffers to do
the following actions in a better way. -->
<param name="max-memory"
path="ini-substitutions/max-memory/value/text()" />
<param name="max-perm"
path="ini-substitutions/max-perm/value/text()" />
<actions>
<!-- Create a component-specific ini file -->
<copy verbose="true"
file="/tmp/cave/cave.ini"
tofile="/tmp/cave/@{second-arg}.ini"
overwrite="true" />
<!-- Update the ini file -->
<update.ini
ini.file="@{second-arg}.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-memory.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-memory.value}"
new.value="@{max-memory}" />
<update.ini
ini.file="@{second-arg}.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-perm.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-perm.value}"
new.value="@{max-perm}" />
<!-- Add to the ini lookup utility script -->
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" if [ &quot;$${1}&quot; == &quot;@{first-arg}&quot; ] &amp;&amp;${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" [ &quot;$${2}&quot; == &quot;@{second-arg}&quot; ]; then${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" export ASSOCIATED_INI=&quot;@{second-arg}.ini&quot;${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" return 0${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" fi${line.separator}"
file="${iniLookupScript}"
append="true" />
</actions>
</call>
</xmltask>
<!-- Finish the iniLookup.sh script -->
<echo message="${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message=" return 1${line.separator}"
file="${iniLookupScript}"
append="true" />
<echo message="}"
file="${iniLookupScript}"
append="true" />
</target>
<!-- Used to update cave.ini for the x86_64 cave. -->
<target name="update64BitINI">
<xmlproperty file="${builder}/memorySettings.xml"
collapseAttributes="true"/>
<property name="caveXmx" value="2048M" />
<property name="caveMaxPermSize" value="256m" />
<update.ini
ini.file="cave.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-memory.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-memory.value}"
new.value="${caveXmx}" />
<update.ini
ini.file="cave.ini"
jvm.arg="${cave-memory-settings.default-memory-setting.default-max-perm.jvm-arg}"
current.value="${cave-memory-settings.default-memory-setting.default-max-perm.value}"
new.value="${caveMaxPermSize}" />
</target>
<macrodef name="update.ini">
<attribute name="ini.file" />
<attribute name="jvm.arg" />
<attribute name="current.value" />
<attribute name="new.value" />
<sequential>
<if>
<not>
<equals arg1="@{new.value}"
arg2="DEFAULT" />
</not>
<then>
<exec executable="/bin/sed"
output="/tmp/cave/ini.tmp">
<arg value="-e" />
<arg value="s/@{jvm.arg}@{current.value}/@{jvm.arg}@{new.value}/" />
<arg value="/tmp/cave/@{ini.file}" />
</exec>
<move verbose="true"
file="/tmp/cave/ini.tmp"
tofile="/tmp/cave/@{ini.file}"
overwrite="true" />
</then>
</if>
</sequential>
</macrodef>
<!-- ===================================================================== -->
<!-- Steps to do to test the build results -->
<!-- ===================================================================== -->
<target name="test">
<ant antfile="${builder}/test.xml" />
</target>
<target name="checkJUnitTestResults">
<taskdef name="checkJUnitReports" classname="sample.tools.TestResultCheck" classpath="${builder}/bin;${builder}/extraTools/sampletools.jar" />
<checkJUnitReports dir="${buildDirectory}/${buildLabel}/testresults" output="${buildDirectory}/junitresults.txt" />
</target>
<!-- ===================================================================== -->
<!-- Steps to do to publish the build results -->
<!-- ===================================================================== -->
<target name="publish">
</target>
<!-- ===================================================================== -->
<!-- Default target -->
<!-- ===================================================================== -->
<target name="noDefault">
<echo message="You must specify a target when invoking this file" />
</target>
</project>

View file

@ -18,9 +18,13 @@
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
further_licensing_information.
-->
<!--
Date DR# Engineer Description
03/26/2012 12864 zhao Changed CigVisTrendTimeout from 300 to 1800
-->
<ClimateTimeouts>
<ClimateMetarTimeout>20</ClimateMetarTimeout>
<WindRoseTimeout>20</WindRoseTimeout>
<CigVisDistTimeout>90</CigVisDistTimeout>
<CigVisTrendTimeout>300</CigVisTrendTimeout>
<CigVisTrendTimeout>1800</CigVisTrendTimeout>
</ClimateTimeouts>

View file

@ -452,7 +452,8 @@ class Procedure (SmartScript.SmartScript):
" locked by another user."
self.statusBarMsg(msg, "S")
continue
gustGrid[windTooHigh] = windGrid
gustGrid = where(windTooHigh, windGrid, gustGrid)
self.createGrid(MODEL, "WindGust", "SCALAR", gustGrid, tr)
gustDict[tr] = gustGrid # update the gustDict

View file

@ -66,7 +66,7 @@ VariableList=[]
VariableList.append(("Value:",1,"numeric"))
VariableList.append(("Action:","Add","radio",["Add","Subtract","Multiply","Divide"]))
VariableList.append(("Elevation:","None","radio",["None","Mountain","Valley","Specific"]))
VariableList.append(("Vectors:","Magnitude","radio",["Both","Magnitude","Direction"]))
VariableList.append(("Vectors:","Magnitude","radio",["Magnitude","Direction"]))
VariableList.append(("Edge:","Flat","radio",["Flat","Edge","Taper"]))
VariableList.append(("Edge Width:",5,"scale",[1,30],1))
VariableList.append(("Specific Elevation:",5000,"numeric"))
@ -76,7 +76,7 @@ class Tool (SmartScript.SmartScript):
SmartScript.SmartScript.__init__(self, dbss)
def preProcessTool(self):
self.savemode=self.getVectorEditMode()
self.setVectorEditMode("Both")
self.setVectorEditMode("Magnitude")
def postProcessTool(self):
self.setVectorEditMode(self.savemode)
def preProcessGrid(self,Topo,editArea,varDict):
@ -167,7 +167,7 @@ class Tool (SmartScript.SmartScript):
else:
mag=variableElement[0]
dir=variableElement[1]
if ((vect=="Magnitude")or(vect=="Both")):
if (vect=="Magnitude"):
if (action=="Add"):
newmag=mag+(self.deltagrid*deltavalue)
elif (action=="Subtract"):

View file

@ -162,6 +162,7 @@ class DiscretePhrases(PhraseBuilder.PhraseBuilder):
timeDescriptor = self.headlinesTimeRange_descriptor(
tree, node, key, tr, areaLabel, issuanceTime)
from com.raytheon.uf.common.dataplugin.gfe.discrete import DiscreteKey
headlineWords = DiscreteKey.discreteDefinition(siteId).keyDesc(
"Hazards" + "_SFC", key)
if headlineWords == "": # Don't process the "<None>" key

View file

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NsharpConfigStore xmlns:ns2="group" xmlns:ns3="http://www.example.org/productType">
<graphProperty tempOffset="0" windBarbDistance="400" windBarb="true" corfidiV="false" omega="true" smvBunkersL="true" smvBunkersR="true" smv1585="false" smv3075="false" meanWind="true" hodo="true" cloud="false" effLayer="true" moistAdiabat="false" dryAdiabat="true" mixratio="false" wetBulb="true" vTemp="true" parcel="true" dewp="true" temp="true"/>
<linePropertyMap>
<Line lineName="Compare 6">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {0, 255, 255}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 5">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 215, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 4">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {30, 144, 255}</lineColor>
</lineProperty>
</Line>
<Line lineName="Icing EPI">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 0, 255}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 3">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {155, 0, 220}</lineColor>
</lineProperty>
</Line>
<Line lineName="Wind Barb">
<lineProperty lineWidth="1" lineStyle="SOLID">
<lineColor>RGB {255, 255, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Icing RH">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {0, 255, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 9">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {0, 139, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 8">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {139, 0, 139}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 7">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {139, 71, 38}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 10">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {144, 238, 144}</lineColor>
</lineProperty>
</Line>
<Line lineName="Overlay 2">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {0, 255, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Temperature">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 0, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Overlay 1">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 0, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Turbulence WindShear">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 174, 185}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 2">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {0, 255, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Compare 1">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 0, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Icing Temp">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 0, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Wetbulb">
<lineProperty lineWidth="1" lineStyle="SOLID">
<lineColor>RGB {0, 255, 255}</lineColor>
</lineProperty>
</Line>
<Line lineName="Turbulence Ln">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {255, 0, 255}</lineColor>
</lineProperty>
</Line>
<Line lineName="Virtual Temp">
<lineProperty lineWidth="2" lineStyle="SHORT_DASHED">
<lineColor>RGB {255, 0, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Dew Point">
<lineProperty lineWidth="2" lineStyle="SOLID">
<lineColor>RGB {0, 255, 0}</lineColor>
</lineProperty>
</Line>
<Line lineName="Parcel">
<lineProperty lineWidth="1" lineStyle="SHORT_DASHED">
<lineColor>RGB {255, 250, 250}</lineColor>
</lineProperty>
</Line>
</linePropertyMap>
</NsharpConfigStore>

View file

@ -1,69 +1,69 @@
@echo OFF
REM Determine if we are running on a 32-bit or 64-bit OS.
IF NOT EXIST C:\Windows\SysWOW64\reg.exe (
SET REG_EXE=C:\Windows\System32\reg.exe
) ELSE (
SET REG_EXE=C:\Windows\SysWOW64\reg.exe
)
REM Determine where we are located.
SET CONTAINING_DIRECTORY=%~dp0
REM Prepare the environment.
REM Registry Query Variables.
SET A2_JAVA_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Java"
SET A2_PYTHON_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Python"
REM Determine where AWIPS II Java (the jre) is located.
%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Java. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory') DO (
SET JavaJreDirectory=%%B)
REM Determine where AWIPS II Python is located.
%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Python. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory') DO (
SET PythonInstallDirectory=%%B)
REM Add Java and Python to the path.
SET Path=%PythonInstallDirectory%;%PythonInstallDirectory%\DLLs;%Path%
SET Path=%JavaJreDirectory%\bin;%Path%
REM Define 'PythonPath'.
SET PythonPath=%PythonInstallDirectory%\Lib\lib-tk;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\DLLs;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\Lib;%PythonPath%
SET PythonPath=%PythonInstallDirectory%;%PythonPath%
REM Eliminate variables that will no longer be used.
SET PythonInstallDirectory=
SET JavaJreDirectory=
SET REG_EXE=
SET A2_JAVA_REG=
SET A2_PYTHON_REG=
REM Determine where we will be logging to.
SET HOME_DIRECTORY=%HOMEDRIVE%%HOMEPATH%
SET CAVEDATA_LOG_DIRECTORY=%HOMEDRIVE%%HOMEPATH%\caveData\logs
SET CONSOLE_LOG_DIRECTORY=%CAVEDATA_LOG_DIRECTORY%\consoleLogs\%COMPUTERNAME%
IF NOT EXIST "%CONSOLE_LOG_DIRECTORY%" (MKDIR "%CONSOLE_LOG_DIRECTORY%")
echo Starting ALERTVIZ; leave this CMD window open to enable AlertViz 'restart'.
REM Start AlertViz (and implement the alertviz restart capability).
:AlertVizLoopStart
SET RND=%random%
SET RND_DATETIME_FILE=%TMP%\awips2dt_%RND%.tmp
REM Python is used to retrieve the current date and time because the order
REM of the Windows date/time fields is not necessarily guaranteed and the
REM Windows date/time fields can only be extracted using substring operations
REM instead of -formatter- strings like Linux allows.
python -c "from datetime import datetime; print datetime.now().strftime('%%Y%%m%%d_%%H%%M%%S');" > %RND_DATETIME_FILE%
SET /p LOG_DATETIME= < %RND_DATETIME_FILE%
DEL %RND_DATETIME_FILE%
"%CONTAINING_DIRECTORY%alertviz.exe" %* > "%CONSOLE_LOG_DIRECTORY%\alertviz_%LOG_DATETIME%.log" 2>&1
IF %ERRORLEVEL% == 0 (EXIT)
echo Restarting AlertViz.
GOTO AlertVizLoopStart
@echo OFF
REM Determine if we are running on a 32-bit or 64-bit OS.
IF NOT EXIST C:\Windows\SysWOW64\reg.exe (
SET REG_EXE=C:\Windows\System32\reg.exe
) ELSE (
SET REG_EXE=C:\Windows\SysWOW64\reg.exe
)
REM Determine where we are located.
SET CONTAINING_DIRECTORY=%~dp0
REM Prepare the environment.
REM Registry Query Variables.
SET A2_JAVA_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Java"
SET A2_PYTHON_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Python"
REM Determine where AWIPS II Java (the jre) is located.
%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Java. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory') DO (
SET JavaJreDirectory=%%B)
REM Determine where AWIPS II Python is located.
%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Python. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory') DO (
SET PythonInstallDirectory=%%B)
REM Add Java and Python to the path.
SET Path=%PythonInstallDirectory%;%PythonInstallDirectory%\DLLs;%Path%
SET Path=%JavaJreDirectory%\bin;%Path%
REM Define 'PythonPath'.
SET PythonPath=%PythonInstallDirectory%\Lib\lib-tk;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\DLLs;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\Lib;%PythonPath%
SET PythonPath=%PythonInstallDirectory%;%PythonPath%
REM Eliminate variables that will no longer be used.
SET PythonInstallDirectory=
SET JavaJreDirectory=
SET REG_EXE=
SET A2_JAVA_REG=
SET A2_PYTHON_REG=
REM Determine where we will be logging to.
SET HOME_DIRECTORY=%HOMEDRIVE%%HOMEPATH%
SET CAVEDATA_LOG_DIRECTORY=%HOMEDRIVE%%HOMEPATH%\caveData\logs
SET CONSOLE_LOG_DIRECTORY=%CAVEDATA_LOG_DIRECTORY%\consoleLogs\%COMPUTERNAME%
IF NOT EXIST "%CONSOLE_LOG_DIRECTORY%" (MKDIR "%CONSOLE_LOG_DIRECTORY%")
echo Starting ALERTVIZ; leave this CMD window open to enable AlertViz 'restart'.
REM Start AlertViz (and implement the alertviz restart capability).
:AlertVizLoopStart
SET RND=%random%
SET RND_DATETIME_FILE=%TMP%\awips2dt_%RND%.tmp
REM Python is used to retrieve the current date and time because the order
REM of the Windows date/time fields is not necessarily guaranteed and the
REM Windows date/time fields can only be extracted using substring operations
REM instead of -formatter- strings like Linux allows.
python -c "from datetime import datetime; print datetime.now().strftime('%%Y%%m%%d_%%H%%M%%S');" > %RND_DATETIME_FILE%
SET /p LOG_DATETIME= < %RND_DATETIME_FILE%
DEL %RND_DATETIME_FILE%
"%CONTAINING_DIRECTORY%alertviz.exe" %* > "%CONSOLE_LOG_DIRECTORY%\alertviz_%LOG_DATETIME%.log" 2>&1
IF %ERRORLEVEL% == 0 (EXIT)
echo Restarting AlertViz.
GOTO AlertVizLoopStart

View file

@ -1,72 +1,72 @@
@echo OFF
REM Determine if we are running on a 32-bit or 64-bit OS.
IF NOT EXIST C:\Windows\SysWOW64\reg.exe (
SET REG_EXE=C:\Windows\System32\reg.exe
) ELSE (
SET REG_EXE=C:\Windows\SysWOW64\reg.exe
)
REM Determine where we are located.
SET CONTAINING_DIRECTORY=%~dp0
REM Prepare the environment.
REM Registry Query Variables.
SET A2_JAVA_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Java"
SET A2_PYTHON_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Python"
REM Determine where AWIPS II Java (the jre) is located.
%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Java. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory') DO (
SET JavaJreDirectory=%%B)
REM Determine where AWIPS II Python is located.
%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Python. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory') DO (
SET PythonInstallDirectory=%%B)
REM Add Java and Python to the path.
SET Path=%PythonInstallDirectory%;%PythonInstallDirectory%\DLLs;%Path%
SET Path=%JavaJreDirectory%\bin;%Path%
REM Add the CAVE lib directory to the path.
SET Path=%CONTAINING_DIRECTORY%lib;%Path%
REM Define 'PythonPath'.
SET PythonPath=%CONTAINING_DIRECTORY%lib;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\Lib\lib-tk;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\DLLs;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\Lib;%PythonPath%
SET PythonPath=%PythonInstallDirectory%;%PythonPath%
REM Eliminate variables that will no longer be used.
SET PythonInstallDirectory=
SET JavaJreDirectory=
SET REG_EXE=
SET A2_JAVA_REG=
SET A2_PYTHON_REG=
REM Determine where we will be logging to.
SET HOME_DIRECTORY=%HOMEDRIVE%%HOMEPATH%
SET CAVEDATA_LOG_DIRECTORY=%HOMEDRIVE%%HOMEPATH%\caveData\logs
SET CONSOLE_LOG_DIRECTORY=%CAVEDATA_LOG_DIRECTORY%\consoleLogs\%COMPUTERNAME%
IF NOT EXIST "%CONSOLE_LOG_DIRECTORY%" (MKDIR "%CONSOLE_LOG_DIRECTORY%")
SET RND=%random%
SET RND_DATETIME_FILE=%TMP%\awips2dt_%RND%.tmp
REM Python is used to retrieve the current date and time because the order
REM of the Windows date/time fields is not necessarily guaranteed and the
REM Windows date/time fields can only be extracted using substring operations
REM instead of -formatter- strings like Linux allows.
python -c "from datetime import datetime; print datetime.now().strftime('%%Y%%m%%d_%%H%%M%%S');" > %RND_DATETIME_FILE%
SET /p LOG_DATETIME= < %RND_DATETIME_FILE%
DEL %RND_DATETIME_FILE%
echo THIS CMD WINDOW CAN BE CLOSED AT ANY TIME!
cd %HOMEPATH%
REM Start CAVE.
"%CONTAINING_DIRECTORY%cave.exe" %* > "%CONSOLE_LOG_DIRECTORY%\cave_%LOG_DATETIME%.log" 2>&1
IF ERRORLEVEL 1 (echo CAVE ERROR - check the logs for additional information. && PAUSE)
EXIT
@echo OFF
REM Determine if we are running on a 32-bit or 64-bit OS.
IF NOT EXIST C:\Windows\SysWOW64\reg.exe (
SET REG_EXE=C:\Windows\System32\reg.exe
) ELSE (
SET REG_EXE=C:\Windows\SysWOW64\reg.exe
)
REM Determine where we are located.
SET CONTAINING_DIRECTORY=%~dp0
REM Prepare the environment.
REM Registry Query Variables.
SET A2_JAVA_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Java"
SET A2_PYTHON_REG="HKLM\Software\Raytheon\Runtime Environment\AWIPS II Python"
REM Determine where AWIPS II Java (the jre) is located.
%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Java. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_JAVA_REG% /v JavaJreDirectory') DO (
SET JavaJreDirectory=%%B)
REM Determine where AWIPS II Python is located.
%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory > NUL 2>&1
IF ERRORLEVEL 1 (echo ENVIRONMENT ERROR - Unable to find AWIPS II Python. && PAUSE && EXIT)
FOR /F "tokens=2* delims= " %%A IN (
'%REG_EXE% QUERY %A2_PYTHON_REG% /v PythonInstallDirectory') DO (
SET PythonInstallDirectory=%%B)
REM Add Java and Python to the path.
SET Path=%PythonInstallDirectory%;%PythonInstallDirectory%\DLLs;%Path%
SET Path=%JavaJreDirectory%\bin;%Path%
REM Add the CAVE lib directory to the path.
SET Path=%CONTAINING_DIRECTORY%lib;%Path%
REM Define 'PythonPath'.
SET PythonPath=%CONTAINING_DIRECTORY%lib;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\Lib\lib-tk;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\DLLs;%PythonPath%
SET PythonPath=%PythonInstallDirectory%\Lib;%PythonPath%
SET PythonPath=%PythonInstallDirectory%;%PythonPath%
REM Eliminate variables that will no longer be used.
SET PythonInstallDirectory=
SET JavaJreDirectory=
SET REG_EXE=
SET A2_JAVA_REG=
SET A2_PYTHON_REG=
REM Determine where we will be logging to.
SET HOME_DIRECTORY=%HOMEDRIVE%%HOMEPATH%
SET CAVEDATA_LOG_DIRECTORY=%HOMEDRIVE%%HOMEPATH%\caveData\logs
SET CONSOLE_LOG_DIRECTORY=%CAVEDATA_LOG_DIRECTORY%\consoleLogs\%COMPUTERNAME%
IF NOT EXIST "%CONSOLE_LOG_DIRECTORY%" (MKDIR "%CONSOLE_LOG_DIRECTORY%")
SET RND=%random%
SET RND_DATETIME_FILE=%TMP%\awips2dt_%RND%.tmp
REM Python is used to retrieve the current date and time because the order
REM of the Windows date/time fields is not necessarily guaranteed and the
REM Windows date/time fields can only be extracted using substring operations
REM instead of -formatter- strings like Linux allows.
python -c "from datetime import datetime; print datetime.now().strftime('%%Y%%m%%d_%%H%%M%%S');" > %RND_DATETIME_FILE%
SET /p LOG_DATETIME= < %RND_DATETIME_FILE%
DEL %RND_DATETIME_FILE%
echo THIS CMD WINDOW CAN BE CLOSED AT ANY TIME!
cd %HOMEPATH%
REM Start CAVE.
"%CONTAINING_DIRECTORY%cave.exe" %* > "%CONSOLE_LOG_DIRECTORY%\cave_%LOG_DATETIME%.log" 2>&1
IF ERRORLEVEL 1 (echo CAVE ERROR - check the logs for additional information. && PAUSE)
EXIT

View file

0
cave/build/static/win32.x86/cave/lib/libgfortran-3.dll Executable file → Normal file
View file

0
cave/build/static/win32.x86/cave/lib/libquadmath-0.dll Executable file → Normal file
View file

View file

@ -27,4 +27,8 @@
<framesPerSecondPreference>25</framesPerSecondPreference>
<tileBoundaries>false</tileBoundaries>
<fontMagnification>1.0</fontMagnification>
<qpid>
<max_count>1000</max_count>
<policy_type>ring</policy_type>
</qpid>
</configuration>

View file

@ -1,19 +1,19 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* 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
*
* 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.
**/

View file

@ -39,14 +39,14 @@ import com.raytheon.uf.viz.core.exception.VizCommunicationException;
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 11/01/2007 #518 S.Manoj Initial version
* 11/16/2009 #3120 rjpeter Modifed to better integrate with level framework.
* 11/21/2009 #3576 rjpeter Added group
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 11/01/2007 #518 S.Manoj Initial version
* 11/16/2009 #3120 rjpeter Modifed to better integrate with level framework.
* 11/21/2009 #3576 rjpeter Added group
*
* &#064;author smanoj
* @version 1.0
*/

View file

@ -54,6 +54,7 @@ import com.raytheon.uf.viz.core.Activator;
import com.raytheon.uf.viz.core.comm.JMSConnection;
import com.raytheon.uf.viz.core.notification.INotificationObserver;
import com.raytheon.uf.viz.core.notification.NotificationMessage;
import com.raytheon.uf.viz.core.preferences.JMSPreferences;
/**
* Job to monitor the JMS topic containing notification messages, delegating the
@ -505,10 +506,11 @@ public class NotificationManagerJob implements ExceptionListener, IDisposable {
disconnect();
session = manager.connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
if (session != null) {
String topicName = id;
Topic t = session.createTopic(topicName);
Topic t = session.createTopic(JMSPreferences
.getPolicyString(topicName));
if (queryString != null) {
consumer = session.createConsumer(t, queryString);
} else {

View file

@ -0,0 +1,148 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.uf.viz.core.preferences;
import java.util.UUID;
import org.eclipse.jface.preference.IPreferenceStore;
import com.raytheon.uf.viz.core.Activator;
/**
* Serialized class for the JMS policy type
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jan 30, 2012 mnash Initial creation
*
* </pre>
*
* @author mnash
* @version 1.0
*/
public class JMSPreferences {
// these are the policy types as supported by QPID
//
// reject - reject the message if the topic is full
//
// ring - start overwriting messages in a ring based on sizing. If head
// meets tail, advance head.
//
// flow to disk - flow the messages to disk to preserve memory
//
// ring strict - start overwriting messages in a ring based on sizing. If
// head meets tail, AND the consumer has the tail message acquired it will
// reject
//
public enum PolicyType {
REJECT("reject"), RING("ring"), FLOW_TO_DISK("flow_to_disk"), RING_STRICT(
"ring_strict");
private String type;
/**
* @return the type
*/
public String getType() {
return type;
}
private PolicyType(String name) {
type = name;
}
}
// declare topic as ADDR, not BURL
private static final String addressArgs = "ADDR:'amq.topic'/";
private static final String declareArgs = "; { node: { type: 'topic', x-declare: {arguments: {";
private static final String linkArgs = "}}}, link: { name: '";
private static final String linkDeclareArgs = "', x-declare: {arguments: {";
private static final String QPID_MAX_COUNT = "qpid.max_count";
private static final String QPID_POLICY_TYPE = "qpid.policy_type";
private static String policyType = "";
private static int maxVal = 0;
// putting together the arguments for the qpid queue
public static String getPolicyString(String val) {
// for qpid.policy_type, there is a corresponding constant in
// QpidQueueOptions, but did not want to add a dependency
return addressArgs + val + declareArgs + "'" + QPID_MAX_COUNT + "':"
+ getMaxCount() + ",'" + QPID_POLICY_TYPE + "':"
+ getPolicyType() + linkArgs + val + UUID.randomUUID()
+ linkDeclareArgs + "'" + QPID_MAX_COUNT + "':" + getMaxCount()
+ ",'" + QPID_POLICY_TYPE + "':" + getPolicyType() + "}}}}";
}
/**
* @return the policyTypeOption
*/
public static String getPolicyType() {
if (policyType != null && !policyType.isEmpty()) {
return policyType;
}
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String value = store.getString(QPID_POLICY_TYPE);
// validation
for (PolicyType type : PolicyType.values()) {
if (!type.getType().equals(value)) {
policyType = value;
}
}
// fail safe for bad configurations
if (policyType == null || policyType.isEmpty()) {
policyType = PolicyType.RING.getType();
}
return "'" + policyType + "'";
}
/**
* Get the max count as given in the config.xml in the preference store
*
* @return
*/
public static int getMaxCount() {
if (maxVal != 0) {
return maxVal;
}
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
maxVal = store.getInt(QPID_MAX_COUNT);
// fail safe
if (maxVal == 0) {
maxVal = 1000;
}
return maxVal;
}
}

View file

@ -1,19 +1,19 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* 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
*
* 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.
**/

View file

@ -32,6 +32,7 @@ import com.raytheon.uf.common.message.IMessage;
import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.common.serialization.SerializationUtil;
import com.raytheon.uf.viz.core.comm.JMSConnection;
import com.raytheon.uf.viz.core.preferences.JMSPreferences;
/**
* Sends messages to jms endpoints programmatically.
@ -88,7 +89,8 @@ public class MessageSender {
dest = session.createQueue(endpoint);
}
if (DestinationType.TOPIC.equals(type)) {
dest = session.createTopic(endpoint);
dest = session
.createTopic(JMSPreferences.getPolicyString(endpoint));
}
return dest;

View file

@ -61,6 +61,7 @@ import com.raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType;
import com.raytheon.uf.viz.core.rsc.IResourceGroup;
import com.raytheon.uf.viz.core.rsc.LoadProperties;
import com.raytheon.uf.viz.core.rsc.ResourceList;
import com.raytheon.uf.viz.core.time.TimeMatchingJob;
import com.raytheon.uf.viz.d2d.core.D2DLoadProperties;
/**
@ -72,6 +73,7 @@ import com.raytheon.uf.viz.d2d.core.D2DLoadProperties;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Feb 10, 2009 chammack Initial creation
* 2012-04-20 DR 14699 D. Friedman Work around race conditions
*
* </pre>
*
@ -122,6 +124,10 @@ public class D2DTimeMatcher extends AbstractTimeMatcher implements
private AbstractTimeMatchingConfigurationFactory configFactory;
// DR 14699 work arounds
private boolean needRetry;
private int nRetries;
/**
* Default Constructor.
*/
@ -152,6 +158,8 @@ public class D2DTimeMatcher extends AbstractTimeMatcher implements
public void redoTimeMatching(IDescriptor descriptor) throws VizException {
synchronized (this) {
needRetry = false;
if (timeMatchBasis != null) {
IDescriptor tmDescriptor = timeMatchBasis.getDescriptor();
if (tmDescriptor != null && tmDescriptor != descriptor) {
@ -175,8 +183,11 @@ public class D2DTimeMatcher extends AbstractTimeMatcher implements
Iterator<ResourcePair> pairIterator = descriptor.getResourceList()
.listIterator();
while (pairIterator.hasNext()) {
AbstractVizResource<?, ?> rsc = pairIterator.next()
ResourcePair rp = pairIterator.next();
AbstractVizResource<?, ?> rsc = rp
.getResource();
if (rsc == null && rp.getResourceData() instanceof AbstractRequestableResourceData)
needRetry = true;
recursiveOverlay(descriptor, new FramesInfo(timeSteps, -1,
resourceTimeMap), rsc);
}
@ -193,6 +204,14 @@ public class D2DTimeMatcher extends AbstractTimeMatcher implements
timeMatchUpdate(entry.getKey(), entry.getValue());
}
}
if (needRetry) {
if (nRetries < 200) {
++nRetries;
TimeMatchingJob.scheduleTimeMatch(descriptor);
}
} else
nRetries = 0;
}
}
@ -303,6 +322,8 @@ public class D2DTimeMatcher extends AbstractTimeMatcher implements
if (rsc instanceof IResourceGroup) {
for (ResourcePair rp : ((IResourceGroup) rsc).getResourceList()) {
AbstractVizResource<?, ?> rsc1 = rp.getResource();
if (rsc1 == null && rp.getResourceData() instanceof AbstractRequestableResourceData)
needRetry = true;
recursiveOverlay(descriptor, framesInfo, rsc1);
}
}
@ -311,7 +332,9 @@ public class D2DTimeMatcher extends AbstractTimeMatcher implements
TimeMatchingConfiguration config = getConfiguration(rsc
.getLoadProperties());
DataTime[] timeSteps = getFrameTimes(descriptor, framesInfo);
if (Arrays.equals(timeSteps, config.getLastBaseTimes())) {
if (Arrays.equals(timeSteps, config.getLastBaseTimes()) &&
config.getLastFrameTimes() != null &&
config.getLastFrameTimes().length > 0) {
framesInfo.getTimeMap().put(rsc, config.getLastFrameTimes());
} else {
config = config.clone();

View file

@ -94,7 +94,7 @@ public class MdlSndNSharpResourceData extends D2DNSharpResourceData {
@Override
protected NcSoundingCube getSoundingCube(NsharpStationInfo stnInfo) {
float[][] latLon = { { stnInfo.getLatitude(), stnInfo.getLongitude() } };
double[][] latLon = { { stnInfo.getLatitude(), stnInfo.getLongitude() } };
return NcSoundingQuery.pfcSoundingQueryByLatLon(stnInfo.getReftime()
.getTime(), stnInfo.getRangestarttime().getTime(), latLon,
stnInfo.getSndType(), NcSoundingLayer.DataType.ALLDATA, false,

View file

@ -37,6 +37,28 @@
</contourLabeling>
</contourStyle>
</styleRule>
<!--
* GH, GHxSM, zAGL
dam | 0.1 | 0.0 | 4 | i4 | |..|8000F0FF| | 0 | 50
-->
<!-- geopotential height (GH) rules for HRRR-East -->
<styleRule>
<paramLevelMatches>
<parameter>GH</parameter>
<parameter>GHxSM</parameter>
<parameter>zAGL</parameter>
<creatingEntity>HRRR-East</creatingEntity>
<creatingEntity>HRRR-West</creatingEntity>
</paramLevelMatches>
<contourStyle>
<displayUnits>ft</displayUnits>
<contourLabeling labelSpacing="4" labelFormat="#">
<increment>5000</increment>
</contourLabeling>
</contourStyle>
</styleRule>
<!--
* GH, GHxSM, Topo, Surface
m | 1.0 | 0.0 | 4 | i4 | |..|8000F0FF| | 12 | 1 100 200 300 500 700 1000 1500 2000 2500 3000 3500
@ -345,7 +367,7 @@ F | 1.8 |-459.67| 4 | | |..|8000F0FF| | 0 | 5
<contourStyle>
<displayUnits>F</displayUnits>
<range scale="LINEAR">
<minValue>-40</minValue>
<minValue>-100</minValue>
<maxValue>115</maxValue>
</range>
<contourLabeling>
@ -962,7 +984,7 @@ PVU |1e5| 0.0 | 4 | | |..|8000F0FF| |16| \
<parameter>MpV</parameter>
</paramLevelMatches>
<contourStyle>
<displayUnits label="PVU">K/hPa/s*1.0E-5</displayUnits>
<displayUnits label="PVU">K/hPa/s</displayUnits>
<contourLabeling labelSpacing="4">
<values>-1 -.5 -.1 0 1 1.5 2 3 4 5 6 8 10 12 15 20</values>
</contourLabeling>

View file

@ -81,6 +81,8 @@ import com.raytheon.uf.viz.derivparam.tree.UnionLevelNode;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 17, 2010 bsteffen Initial creation
* Apr 11, 2012 DR14666 porricel Modified resolveField to
* use middle of layer for BL
*
* </pre>
*
@ -1021,17 +1023,24 @@ public abstract class AbstractInventory implements DerivParamUpdateListener {
if (pStatic != null) {
return pStatic;
}
// Check to see if we can set the field from the
// masterlevel name
if (level.getMasterLevel().getName().equals(fieldParamAbbrev)) {
FloatRequestableData data = new FloatRequestableData(
FloatRequestableData data;
if (level.isRangeLevel() && fieldParamAbbrev.equals("BL")){
// get midpoint of boundary layer
data = new FloatRequestableData(
(float) ((level.getLevelonevalue() + level.getLeveltwovalue())/2));
}
else {
data = new FloatRequestableData(
(float) level.getLevelonevalue());
}
data.setUnit(level.getMasterLevel().getUnit());
return data;
}
String validSource = field.getValidSource();
SourceNode fieldSourceNode = sourceNode;

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