Merge "Issue #1400 fix for local and regional warnings, made the WatchesResource better handle extension" into development

Former-commit-id: 823bedcebd [formerly 67d30566c0 [formerly e7b347563598a3f4809cc74096de1f2dc0ef0788]]
Former-commit-id: 67d30566c0
Former-commit-id: acccca74eb
This commit is contained in:
Nate Jensen 2012-12-13 14:25:56 -06:00 committed by Gerrit Code Review
commit 7490c6cc42
3 changed files with 65 additions and 41 deletions

View file

@ -28,7 +28,7 @@ import com.vividsolutions.jts.io.WKBReader;
import com.vividsolutions.jts.io.WKTReader; import com.vividsolutions.jts.io.WKTReader;
public class CWASPSResource extends WarningsResource { public class CWASPSResource extends WatchesResource {
private static final transient IUFStatusHandler statusHandler = UFStatus private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(CWASPSResource.class); .getHandler(CWASPSResource.class);

View file

@ -34,35 +34,43 @@ public class WarningRecordComparator implements
public int compare(AbstractWarningRecord wr1, AbstractWarningRecord wr2) { public int compare(AbstractWarningRecord wr1, AbstractWarningRecord wr2) {
int rval = 0; int rval = 0;
rval = wr1.getPhensig().compareTo(wr2.getPhensig()); if (wr1.getPhensig() != null && wr2.getPhensig() != null) {
rval = wr1.getPhensig().compareTo(wr2.getPhensig());
}
if (rval == 0) { if (rval == 0) {
rval = Double.compare(Double.parseDouble(wr1.getEtn()), if (wr1.getEtn() != null && wr2.getEtn() != null) {
Double.parseDouble(wr2.getEtn())); rval = Double.compare(Double.parseDouble(wr1.getEtn()),
Double.parseDouble(wr2.getEtn()));
}
if (rval == 0) { if (rval == 0) {
WarningAction act1 = WarningAction.valueOf(wr1.getAct()); if (wr1.getAct() != null && wr2.getAct() != null) {
WarningAction act2 = WarningAction.valueOf(wr2.getAct()); WarningAction act1 = WarningAction.valueOf(wr1.getAct());
if (act1 == act2) { WarningAction act2 = WarningAction.valueOf(wr2.getAct());
rval = 0; if (act1 == act2) {
} else if (act1 == WarningAction.NEW) { rval = 0;
rval = -1; } else if (act1 == WarningAction.NEW) {
} else if (act2 == WarningAction.NEW) { rval = -1;
rval = 1; } else if (act2 == WarningAction.NEW) {
} else if (act1 == WarningAction.CON rval = 1;
&& (act2 == WarningAction.CAN || act2 == WarningAction.EXP)) { } else if (act1 == WarningAction.CON
return -1; && (act2 == WarningAction.CAN || act2 == WarningAction.EXP)) {
} else if (act2 == WarningAction.CON return -1;
&& (act1 == WarningAction.CAN || act1 == WarningAction.EXP)) { } else if (act2 == WarningAction.CON
return 1; && (act1 == WarningAction.CAN || act1 == WarningAction.EXP)) {
} else { return 1;
rval = wr1.getAct().compareTo(wr2.getAct()); } else {
rval = wr1.getAct().compareTo(wr2.getAct());
}
} }
if (rval == 0) { if (rval == 0) {
rval = wr1.getStartTime().compareTo(wr2.getStartTime()); rval = wr1.getStartTime().compareTo(wr2.getStartTime());
// sort warnings in descending order // sort warnings in descending order
if (!wr1.getSig().equals("A")) { if (wr1.getSig() != null) {
rval *= -1; if (!wr1.getSig().equals("A")) {
rval *= -1;
}
} }
} }
} }

View file

@ -221,29 +221,45 @@ public class WatchesResource extends AbstractWWAResource {
if (watchact != WarningAction.NEW) { if (watchact != WarningAction.NEW) {
AbstractWarningRecord createShape = null; AbstractWarningRecord createShape = null;
if (watchact == null || watchact.toString() == null) {
createShape = watchrec;
}
for (String entryKey : entryMap.keySet()) { for (String entryKey : entryMap.keySet()) {
WarningEntry entry = entryMap.get(entryKey); WarningEntry entry = entryMap.get(entryKey);
AbstractWarningRecord rec = entry.record; AbstractWarningRecord rec = entry.record;
if (rec.getPhensig().equals(watchrec.getPhensig()) // checks for any possible null pointer exceptions in
&& rec.getOfficeid().equals( // the following block of code, since there is the
watchrec.getOfficeid()) // possibility of null values
&& rec.getEtn().equals(watchrec.getEtn())) { if (rec.getPhensig() != null
int recSize = rec.getUgczones().size(); && watchrec.getPhensig() != null
if (!entry.partialCancel) { && rec.getOfficeid() != null
if (watchact == WarningAction.EXP && watchrec.getOfficeid() != null
|| watchact == WarningAction.CAN) { && rec.getUgczones() != null
entry.partialCancel = true; && rec.getStartTime() != null
entry.record.setEndTime((Calendar) watchrec && watchrec.getStartTime() != null) {
.getStartTime().clone()); if (rec.getPhensig().equals(watchrec.getPhensig())
} else if (watchact == WarningAction.CON && rec.getOfficeid().equals(
&& recSize > watchSize watchrec.getOfficeid())
&& watchrec.getStartTime().after( && rec.getEtn().equals(watchrec.getEtn())) {
rec.getStartTime())) { int recSize = rec.getUgczones().size();
entry.partialCancel = true; if (!entry.partialCancel) {
entry.record.setEndTime((Calendar) watchrec if (watchact == WarningAction.EXP
.getStartTime().clone()); || watchact == WarningAction.CAN) {
createShape = watchrec; entry.partialCancel = true;
entry.record
.setEndTime((Calendar) watchrec
.getStartTime().clone());
} else if (watchact == WarningAction.CON
&& recSize > watchSize
&& watchrec.getStartTime().after(
rec.getStartTime())) {
entry.partialCancel = true;
entry.record
.setEndTime((Calendar) watchrec
.getStartTime().clone());
createShape = watchrec;
}
} }
} }
} }