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,17 +79,24 @@ 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;
@ -110,14 +117,16 @@ public class MsgServ implements RadarEventListener, MessageListener {
TopicConnectionFactory tConnFac) {
try {
queueConn = qConnFac.createQueueConnection();
queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
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);
topicSession = topicConn.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
Topic topic = topicSession.createTopic("RadarEvents");
topicPublisher = topicSession.createPublisher(topic);
@ -158,11 +167,13 @@ public class MsgServ implements RadarEventListener, MessageListener {
try {
po = handleRequest(replyToDestination, ro);
} catch (RuntimeException e) {
error = "Unexpected error while processing request: " + e.toString();
error = "Unexpected error while processing request: "
+ e.toString();
exc = e;
}
} else if (o != null)
error = String.format("Invalid request class '%s'", o.getClass());
error = String.format("Invalid request class '%s'",
o.getClass());
} else
error = "Invalid JMS message type";
@ -186,8 +197,7 @@ public class MsgServ implements RadarEventListener, MessageListener {
Log.errorf("Error processing remote request: %s", e);
return;
}
TextMessage rtm = queueSession.createTextMessage(
sw.toString());
TextMessage rtm = queueSession.createTextMessage(sw.toString());
String id = msg.getJMSCorrelationID();
if (id == null)
@ -212,13 +222,12 @@ public class MsgServ implements RadarEventListener, MessageListener {
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,28 +236,26 @@ 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 = msg.getJMSCorrelationID(); if (id == null) id =
* msg.getJMSMessageID();
*/
String id = null;
if (replyToDestination != null)
@ -268,15 +275,15 @@ public class MsgServ implements RadarEventListener, MessageListener {
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 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";
@ -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);
@ -359,8 +367,7 @@ public class MsgServ implements RadarEventListener, MessageListener {
return;
}
try {
TextMessage tm = topicSession.createTextMessage(
sw.toString());
TextMessage tm = topicSession.createTextMessage(sw.toString());
topicPublisher.publish(tm);
} catch (JMSException e) {
Log.errorf("Error sending message: %s", e);
@ -374,6 +381,7 @@ public class MsgServ implements RadarEventListener, MessageListener {
class MsgServOtrHandler implements OTRHandler {
Destination destination;
String correlationID;
public MsgServOtrHandler(Destination destination, String correlationID) {
@ -384,11 +392,12 @@ public class MsgServ implements RadarEventListener, MessageListener {
@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.
/*
* 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
@ -406,8 +415,7 @@ public class MsgServ implements RadarEventListener, MessageListener {
return;
}
try {
TextMessage rtm = queueSession.createTextMessage(
sw.toString());
TextMessage rtm = queueSession.createTextMessage(sw.toString());
if (correlationID != null)
rtm.setJMSCorrelationID(correlationID);
queueSender.send(destination, rtm);

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

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

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

@ -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

@ -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>
*
@ -1026,12 +1028,19 @@ public abstract class AbstractInventory implements DerivParamUpdateListener {
// 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;

View file

@ -57,6 +57,9 @@ import com.raytheon.uf.viz.derivparam.library.IDerivParamField;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Dec 14, 2009 rjpeter Initial creation
* Apr 11, 2012 DR14666 porricel Modified getDataInternal to
* use 0-30MB for derived boundary
* layer
*
* </pre>
*
@ -396,9 +399,12 @@ public class DerivedLevelNode extends AbstractDerivedLevelNode {
if (record.getRequest().getBaseParams().size() == method
.getFields().size()) {
modifyRequest(record);
// Define derived BL as 0-30MB
if (record.getLevel().getMasterLevel().getName().equals("BL") && record.getLevel().getLevelOneValueAsString().equals("0.0") &&
!record.getLevel().getLevelTwoValueAsString().equals("30.0"))
continue;
finalResponses.add(record);
}
}
return finalResponses;
}

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