diff --git a/docs/bandcode.md b/docs/bandcode.md
new file mode 100644
index 0000000..ca9e899
--- /dev/null
+++ b/docs/bandcode.md
@@ -0,0 +1,27 @@
+# Frequency Band Channel Code Guidelines
+
+The first letter specifies the general sampling rate and the response band of the instrument. (The “A” code is reserved for
+administrative functions such as miscellaneous state of health.)
+
+|Band Code |Band Type |Sample Rate (Hz) |Corner Period (Sec) |
+|---|---|---|---|
+|F |... | $\geq$ 1000 to $\lt$ 5000|$\geq$ 10 sec|
+|G |... | $\geq$ 1000 to $\lt$ 5000|$\lt$ 10 sec|
+|D |... | $\geq$ 250 to $\lt$ 1000|$\lt$ 10 sec|
+|C |... | $\geq$ 250 to $\lt$ 1000|$\geq$ 10 sec|
+|E |Extremely Short Period|$\geq$ 80 to $\lt$ 250|$\lt$ 10 sec|
+|S |Short Period |$\geq$ 10 to $\lt$ 80|$\lt$ 10 sec|
+|H |High Broad Band |$\geq$ 80 to $\lt$ 250|$\geq$ 10 sec|
+|B |Broad Band |$\geq$ 10 to $\lt$ 80|$\geq$ 10 sec|
+|M |Mid Period |$\geq$ 1 to $\lt$ 10 | |
+|L |Long Period |$\geq$ 0.1 to $\lt$ 10| |
+|V |Very Long Period |$\geq$ 0.01 to $\lt$ 1| |
+|U |Ultra Long Period |$\geq$ 0.001 to $\lt$ 0.1| |
+|R |Extremely Long Period |$\geq$ 0.0001 to $\lt$ 0.001| |
+|P |On the order of 0.1 to 1 day|$\geq$ 0.00001 to $\lt$ 0.0001| |
+|T |On the order of 1 to 10 days|$\geq$ 0.000001 to $\lt$ 0.00001| |
+|Q |Greater than 10 days| $\lt$ 0.000001 | |
+|A |Administrative Instrument Channel|variable| NA |
+|O |Opaque Instrument Channel|variable| NA|
+
+[Updated 09-2020]
diff --git a/docs/index.md b/docs/index.md
index ab2bbb3..157f9d0 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -6,6 +6,7 @@ The IRIS stationxml-validator is a Java library and related command-line utility
* [Validation tests](tests.md)
* [Unit name overview for IRIS stationxml-validator](units.md)
* [Rule restrictions](restrictions.md)
+* [Band Code Dictionary](bandcode.md)
* [Channel:Code orthogonal orientation guidelines](orientation.md)
* [Contributing to the StationXML Validator](contribution.md)
@@ -21,6 +22,7 @@ If you wish to compile the program, the source code is available. Follow the [in
## Using the Validator
+
The Validator's jar runs in both [Java](https://www.java.com/) 8 or 11 enviroments. A usage message will be printed if the stationxml-validator is run with no arguments are supplied:
java -jar stationxml-validator-1.7.0.jar
diff --git a/docs/tests.md b/docs/tests.md
index b1172bb..79933f8 100644
--- a/docs/tests.md
+++ b/docs/tests.md
@@ -66,9 +66,10 @@ DICTIONARY: External reference, such as the units name list
| | **`Channel Time Errors`** ||||
| 310 | Channel:startDate must be included and must occur before Channel:endDate if included.Channel:startDate must be **INCLUDED AND** < Channel:endDate **IF INCLUDED** |Error||[F1_310](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_310.xml), [F2_310](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F2_310.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml)|
| 320 | If Channel:Code[2]==(H | L | M | N) THEN Channel:Azimuth and Channel:Dip must be included. |Error|[C1](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel), [C2](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel)| [F1_320](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_320.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml)|
-| 321 |If Channel:Code[2] == (H | L | M | N) then Stage[1]:InputUnit must equal *m/s* AND Stage[Last]:OutputUnits must equal count*|WARNING|[C1](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel), [C2](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel)| [F1_321](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_320.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml)|
+| 321 |If Channel:Code[2] == (H | L | M | N) then Stage[1]:InputUnit must equal *m/s* AND Stage[Last]:OutputUnits must equal count*|WARNING|[C1](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel), [C2](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel)| [F1_321](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_321.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml)|
||||||
| | **`Channel Orientation Errors`** ||||
+| 330 |Channel:SampleRate must be assigned a float that inclusively correspounds to Channel:Code[1], which is outlined by the Band Code dictionary|WARNING|[C1](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel), [C2](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel)| [F1_321](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_330.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml)|
| 332 |If Channel:Code[LAST]==N then Channel:Azimuth must be assigned (>=355.0 or <=5.0) or (>=175.0 and <=185.0) and Channel:Dip must be assigned (>=-5 AND <=5.0). |Warning|[C1](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel), [C2](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel)|[F1_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_332.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml), [P1_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P1_332.xml), [P2_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P2_332.xml), [P3_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P3_332.xml), [P4_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P4_332.xml)|
| 333 |If Channel:Code[LAST]==E then Channel:Azimuth must be assigned (>=85.0 and <=95.0) or (>=265.0 and <=275.0) and Channel:Dip must be ASSIGNED (>=-5.0 and <=5.0). |Warning|[C1](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel), [C2](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel)|[F1_333](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_333.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml), [P1_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P1_332.xml), [P2_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P2_332.xml), [P3_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P3_332.xml), [P4_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P4_332.xml)|
| 334 |If Channel:Code[LAST]==Z then Channel:Azimuth must be assigned (>=355.0 or <=5.0) and Channel:Dip must be assigned (>=-85.0 and <=-90.0) or (>=85.0 and <=90.0). |Warning|[C1](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel), [C2](https://github.com/iris-edu/StationXML-Validator/wiki/Restrictions#channel)|[F1_334](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/F1_334.xml)|[PASS](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/Validator_Pass.xml), [P1_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P1_332.xml), [P2_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P2_332.xml), [P3_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P3_332.xml), [P4_332](https://github.com/iris-edu/StationXML-Validator/blob/master/src/test/resources/P4_332.xml)|
diff --git a/src/main/java/edu/iris/dmc/station/RuleEngineRegistry.java b/src/main/java/edu/iris/dmc/station/RuleEngineRegistry.java
index 388a844..4b0c173 100644
--- a/src/main/java/edu/iris/dmc/station/RuleEngineRegistry.java
+++ b/src/main/java/edu/iris/dmc/station/RuleEngineRegistry.java
@@ -13,6 +13,7 @@
import edu.iris.dmc.fdsn.station.model.Response;
import edu.iris.dmc.fdsn.station.model.Station;
import edu.iris.dmc.station.conditions.AzimuthDipCondition;
+import edu.iris.dmc.station.conditions.BandCodeCondition;
import edu.iris.dmc.station.conditions.CalibrationUnitCondition;
import edu.iris.dmc.station.conditions.CodeCondition;
import edu.iris.dmc.station.conditions.Condition;
@@ -186,6 +187,12 @@ private void defaultChannelRules(Set set) {
new Restriction[] { new ChannelCodeRestriction(), new ChannelTypeRestriction() }),
Channel.class);
}
+ if (!set.contains(330)) {
+ add(330, new BandCodeCondition(true,
+ "Channel:SampleRate must be assigned a float that inclusively correspounds to Channel:Code[1], which is outlined by the Band Code dictionary",
+ new Restriction[] { new ChannelCodeRestriction(), new ChannelTypeRestriction() }),
+ Channel.class);
+ }
if (!set.contains(332)) {
add(332, new OrientationCondition(true,
"If Channel:Code[LAST]==N then Channel:Azimuth must be assigned (>=355.0 or <=5.0) or (>=175.0 and <=185.0) and Channel:Dip must be assigned (>=-5 AND <=5.0).",
diff --git a/src/main/java/edu/iris/dmc/station/conditions/BandCodeCondition.java b/src/main/java/edu/iris/dmc/station/conditions/BandCodeCondition.java
new file mode 100644
index 0000000..ca7d4b1
--- /dev/null
+++ b/src/main/java/edu/iris/dmc/station/conditions/BandCodeCondition.java
@@ -0,0 +1,180 @@
+package edu.iris.dmc.station.conditions;
+
+import edu.iris.dmc.fdsn.station.model.Channel;
+import edu.iris.dmc.fdsn.station.model.Network;
+import edu.iris.dmc.fdsn.station.model.ResponseStage;
+import edu.iris.dmc.fdsn.station.model.SampleRate;
+import edu.iris.dmc.fdsn.station.model.Station;
+import edu.iris.dmc.station.exceptions.StationxmlException;
+import edu.iris.dmc.station.restrictions.Restriction;
+import edu.iris.dmc.station.rules.Message;
+import edu.iris.dmc.station.rules.NestedMessage;
+import edu.iris.dmc.station.rules.Result;
+
+public class BandCodeCondition extends AbstractCondition {
+ private Restriction[] restrictions;
+
+ public BandCodeCondition(boolean required, String description, Restriction[] restrictions) {
+ super(required, description);
+ this.restrictions = restrictions;
+ }
+
+ @Override
+ public Message evaluate(Network network) {
+ throw new IllegalArgumentException("Not supported!");
+ }
+
+ @Override
+ public Message evaluate(Station station) {
+ throw new IllegalArgumentException("Not supported!");
+ }
+
+ @Override
+ public Message evaluate(Channel channel) {
+ NestedMessage nestedMessage = new NestedMessage();
+ boolean returnmessage = false;
+ String inputUnit ="";
+ String code = channel.getCode();
+ try {
+ if(channel.getResponse().getStage().size()==0) {
+ throw new StationxmlException("Response is missing from input StationXML");
+ }
+ for (Restriction r : this.restrictions)
+ if (r.qualifies(channel)) {
+ return Result.success();
+ }
+
+ Double samplerate = channel.getSampleRate().getValue();
+ String bandcode = Character.toString(code.charAt(0));
+ bandcode=bandcode.toUpperCase();
+ switch (bandcode){
+ case "F":
+ if(samplerate < 1000 || samplerate >= 5000) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 1000 and < 5000"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "G":
+ if(samplerate < 1000 || samplerate >= 5000) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 1000 and < 5000"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "D":
+ if(samplerate < 250 || samplerate >= 1000) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 250 and < 1000"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "C":
+ if(samplerate < 250 || samplerate >= 1000) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 250 and < 1000"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "E":
+ if(samplerate < 80 || samplerate >= 250) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 80 and < 250"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "H":
+ if(samplerate < 80 || samplerate >= 250) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 80 and < 250"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "S":
+ if(samplerate < 10.0 || samplerate >= 80.0) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 10 and < 80"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "B":
+ if(samplerate < 10.0 || samplerate >= 80.0) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 10 and < 80"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "M":
+ if(samplerate < 1 || samplerate >= 10) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 1 and < 10"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "L":
+ if(samplerate < 0.1 || samplerate >= 10) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 0.1 and < 10"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "V":
+ if(samplerate < 0.01 || samplerate >= 1) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 0.01 and < 1"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "U":
+ if(samplerate < 0.001 || samplerate >= 0.1) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 0.001 and < 0.1"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "R":
+ if(samplerate < 0.0001 || samplerate >= 0.001) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 0.0001 and < 0.001"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "P":
+ if(samplerate < 0.00001 || samplerate >= 0.0001) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 0.00001 and < 0.0001"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "T":
+ if(samplerate < 0.000001 || samplerate >= 0.00001) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned between >= 0.000001 and < 0.00001"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ case "Q":
+ if(samplerate >= 0.000001) {
+ nestedMessage.add(Result.warning("Frequency Band " + bandcode +" must have a sample rate assigned < 0.000001"));
+ returnmessage = true;
+ break;
+ }
+ break;
+ default:
+ break;
+
+ }
+ }
+ catch(Exception e) {
+
+ }
+ if(returnmessage==true) {
+ return nestedMessage;
+ }else {
+ return Result.success();
+ }
+ }
+
+}
+
+
diff --git a/src/main/java/edu/iris/dmc/station/conditions/DecimationAnalogFilterCondition.java b/src/main/java/edu/iris/dmc/station/conditions/DecimationAnalogFilterCondition.java
index 4986ebc..9aa39a7 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/DecimationAnalogFilterCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/DecimationAnalogFilterCondition.java
@@ -58,56 +58,56 @@ public Message evaluate(Channel channel, Response response) {
if (stage.getPolesZeros()!=null && stage.getPolesZeros().getPzTransferFunctionType().equalsIgnoreCase("LAPLACE (RADIANS/SECOND)")) {
if (stage.getDecimation()!= null) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ " includes PolesZeros:PzTransferFunctionType:LAPLACE (RADIANS/SECOND)"
- + " so decimation must not be included in stage [" +String.format("%02d", stage.getNumber().intValue()) + "]."));
+ + " so decimation must not be included in Stage[" +String.format("%02d", stage.getNumber().intValue()) + "]."));
returnmessage=true;
}else {
- nestedMessage.add(Result.error("Stage [" + stage.getNumber().intValue() + "]"
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue() + "]"
+ " includes PolesZeros:PzTransferFunctionType:LAPLACE (RADIANS/SECOND)"
- + " so decimation must not be included in stage [" + stage.getNumber().intValue() + "]."));
+ + " so decimation must not be included in Stage[" + stage.getNumber().intValue() + "]."));
returnmessage=true;
}
}
}else if (stage.getPolesZeros()!=null && stage.getPolesZeros().getPzTransferFunctionType().equalsIgnoreCase("LAPLACE (HERTZ)")) {
if (stage.getDecimation()!= null) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ " includes PolesZeros:PzTransferFunctionType:LAPLACE (HERTZ)"
- + " so decimation must not be included in stage [" + String.format("%02d", stage.getNumber().intValue()) + "]."));
+ + " so decimation must not be included in Stage[" + String.format("%02d", stage.getNumber().intValue()) + "]."));
returnmessage=true;
}else {
- nestedMessage.add(Result.error("Stage [" + stage.getNumber().intValue() + "]"
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue() + "]"
+ " includes PolesZeros:PzTransferFunctionType:LAPLACE (HERTZ)"
- + " so decimation must not be included in stage [" + stage.getNumber().intValue() + "]."));
+ + " so decimation must not be included in Stage[" + stage.getNumber().intValue() + "]."));
returnmessage=true;
}
}
}else if (stage.getCoefficients() !=null && stage.getCoefficients().getCfTransferFunctionType().equalsIgnoreCase("ANALOG (RADIANS/SECOND)")) {
if (stage.getDecimation()!= null) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ " includes CoefficientsType:CfTransferFunctionType:ANALOG (RADIANS/SECOND)"
- + " so decimation must not be included in stage [" + String.format("%02d", stage.getNumber().intValue()) + "]."));
+ + " so decimation must not be included in Stage[" + String.format("%02d", stage.getNumber().intValue()) + "]."));
returnmessage=true;
}else {
- nestedMessage.add(Result.error("Stage [" + stage.getNumber().intValue() + "]"
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue() + "]"
+ " includes PolesZeros:PzTransferFunctionType:ANALOG (RADIANS/SECOND)"
- + " so decimation must not be included in stage [" + stage.getNumber().intValue() + "]."));
+ + " so decimation must not be included in Stage[" + stage.getNumber().intValue() + "]."));
returnmessage=true;
}
}
}else if (stage.getCoefficients() !=null && stage.getCoefficients().getCfTransferFunctionType().equalsIgnoreCase("ANALOG (HERTZ)")) {
if (stage.getDecimation()!= null) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "]"
+ " includes CoefficientsType:CfTransferFunctionType:ANALOG (HERTZ)"
- + " so decimation must not be included in stage [" + String.format("%02d", stage.getNumber().intValue()) + "]."));
+ + " so decimation must not be included in Stage[" + String.format("%02d", stage.getNumber().intValue()) + "]."));
returnmessage=true;
}else {
- nestedMessage.add(Result.error("Stage [" + stage.getNumber().intValue() + "]"
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue() + "]"
+ " includes CoefficientsType:CfTransferFunctionType:ANALOG (HERTZ)"
- + " so decimation must not be included in stage [" + stage.getNumber().intValue() + "]."));
+ + " so decimation must not be included in Stage[" + stage.getNumber().intValue() + "]."));
returnmessage=true;
}
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/DecimationCondition.java b/src/main/java/edu/iris/dmc/station/conditions/DecimationCondition.java
index 9b919e9..eefe10c 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/DecimationCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/DecimationCondition.java
@@ -61,11 +61,11 @@ public Message evaluate(Channel channel, Response response) {
Frequency sampleRate = decimation.getInputSampleRate();
if(sampleRate==null) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", stage.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ "] must include Decimation:Samplerate"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + stage.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue()
+ "] must include Decimation:Samplerate"));
returnmessage =true;
}
@@ -75,13 +75,13 @@ public Message evaluate(Channel channel, Response response) {
if (inputSampleRateByFactor != null) {
if (Math.abs(inputSampleRate - inputSampleRateByFactor.doubleValue()) > 0.001) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", stage.getNumber().intValue())
- + "] Decimation:InputSampleRate "+ inputSampleRate +" != [stage "+ String.format("%02d", (stage.getNumber().intValue()-1))
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ + "] Decimation:InputSampleRate "+ inputSampleRate +" != Stage["+ String.format("%02d", (stage.getNumber().intValue()-1))
+ "] Decimation:InputSampleRate/Decimation:Factor "+inputSampleRateByFactor.doubleValue()));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + stage.getNumber().intValue()
- + "] Decimation:InputSampleRate "+ inputSampleRate +" != [stage "+ (stage.getNumber().intValue()-1)
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue()
+ + "] Decimation:InputSampleRate "+ inputSampleRate +" != Stage["+ (stage.getNumber().intValue()-1)
+ "] Decimation:InputSampleRate/Decimation:Factor "+inputSampleRateByFactor.doubleValue()));
returnmessage =true;
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/DecimationSampleRateCondition.java b/src/main/java/edu/iris/dmc/station/conditions/DecimationSampleRateCondition.java
index 2ec209e..57c8937 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/DecimationSampleRateCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/DecimationSampleRateCondition.java
@@ -65,10 +65,10 @@ public Message evaluate(Channel channel, Response response) {
if (frequence == null) {
if (stageindex < 10 ) {
- return Result.error("[stage " + String.format("%02d", stageindex) +
+ return Result.error("Stage[" + String.format("%02d", stageindex) +
"] Decimation:Frequency must not be null");
}else {
- return Result.error("[stage " + stageindex +
+ return Result.error("Stage[" + stageindex +
"] Decimation:Frequency must not be null");
}
@@ -76,11 +76,11 @@ public Message evaluate(Channel channel, Response response) {
}
if (Math.abs(sampleRate.getValue() - (frequence.getValue() / factor.doubleValue())) > 0.0001) {
if (stageindex < 10 ) {
- return Result.error("Chan:Samplerate "+sampleRate.getValue() + " != [stage "
+ return Result.error("Chan:Samplerate "+sampleRate.getValue() + " != Stage["
+ String.format("%02d", stageindex) + "] Decimation:Frequency/Decimation:Factor "
+ (frequence.getValue() / factor.doubleValue()));
}else {
- return Result.error("Channel:Samplerate: "+sampleRate.getValue() + " != [stage "
+ return Result.error("Channel:Samplerate: "+sampleRate.getValue() + " != Stage["
+ stageindex + "] Decimation:Frequency/Decimation:Factor "
+ (frequence.getValue() / factor.doubleValue()));
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/DecimationStageGainCondition.java b/src/main/java/edu/iris/dmc/station/conditions/DecimationStageGainCondition.java
index 6e4a1e2..c308270 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/DecimationStageGainCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/DecimationStageGainCondition.java
@@ -55,11 +55,11 @@ public Message evaluate(Channel channel, Response response) {
if (s.getDecimation() != null && s.getStageGain() != null) {
if (s.getCoefficients() == null && s.getPolesZeros() == null && s.getFIR()==null && s.getResponseList()==null) {
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ "] includes Decimation and StageGain but does not include a filter"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ "] includes Decimation and StageGain but does not include a filter"));
returnmessage =true;
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/DecimationStageUnitCondition.java b/src/main/java/edu/iris/dmc/station/conditions/DecimationStageUnitCondition.java
index 1d8e09e..58b13ec 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/DecimationStageUnitCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/DecimationStageUnitCondition.java
@@ -81,12 +81,12 @@ public Message evaluate(Channel channel, Response response) {
continue;
}else {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "] output unit "
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "] output unit "
+ stageUnit.output.getName()
+ " must be count(s) because Stage[" + String.format("%02d",stage.getNumber().intValue()) + "].Decimation is included"));
returnmessage=true;
}else {
- nestedMessage.add(Result.error("Stage [" + stage.getNumber().intValue() + "] output unit "
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue() + "] output unit "
+ stageUnit.output.getName()
+ " must be count(s) because Stage[" + stage.getNumber().intValue() + "].Decimation is included"));
returnmessage=true;
diff --git a/src/main/java/edu/iris/dmc/station/conditions/DigitalFilterCondition.java b/src/main/java/edu/iris/dmc/station/conditions/DigitalFilterCondition.java
index 01ab0d5..0ba91ae 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/DigitalFilterCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/DigitalFilterCondition.java
@@ -55,11 +55,11 @@ public Message evaluate(Channel channel, Response response) {
if (s.getCoefficients() != null && "DIGITAL".equals(s.getCoefficients().getCfTransferFunctionType())) {
if (s.getDecimation() == null || s.getStageGain() == null) {
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ "] must include StageGain and Decimation"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ "] must include StageGain and Decimation"));
returnmessage =true;
}
@@ -70,11 +70,11 @@ public Message evaluate(Channel channel, Response response) {
&& "DIGITAL (Z-TRANSFORM)".equals(s.getPolesZeros().getPzTransferFunctionType())) {
if (s.getDecimation() == null || s.getStageGain() == null) {
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ "] must include StageGain and Decimation"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ "] must include StageGain and Decimation"));
returnmessage =true;
}
@@ -85,11 +85,11 @@ public Message evaluate(Channel channel, Response response) {
if (s.getDecimation() == null || s.getStageGain() == null) {
nestedMessage.add(Result.error("Gain and|or decimation are missing"));
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ "] must include StageGain and Decimation"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ "] must include StageGain and Decimation"));
returnmessage =true;
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/LastStageUnitCondition.java b/src/main/java/edu/iris/dmc/station/conditions/LastStageUnitCondition.java
index 6a90795..8b808fe 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/LastStageUnitCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/LastStageUnitCondition.java
@@ -66,10 +66,10 @@ public Message evaluate(Channel channel, Response response) {
if(stage.getNumber().intValue() == lastStage) {
if (stage.getNumber().intValue() < 10 ) {
- return Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "] output unit "
+ return Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "] output unit "
+ " must not be null");
}else {
- return Result.error("Stage [" + stage.getNumber().intValue() + "] output unit "
+ return Result.error("Stage[" + stage.getNumber().intValue() + "] output unit "
+ " must not be null");
}
}else {
@@ -82,11 +82,11 @@ public Message evaluate(Channel channel, Response response) {
continue;
}else {
if (stage.getNumber().intValue() < 10 ) {
- return Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "] output unit is "
+ return Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "] output unit is "
+ stageUnit.output.getName()
+ " but must be count(s)" );
}else {
- return Result.error("Stage [" + stage.getNumber().intValue() + "] output unit is "
+ return Result.error("Stage[" + stage.getNumber().intValue() + "] output unit is "
+ stageUnit.output.getName()
+ " but must be count(s)" );
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/PolesZerosCondition.java b/src/main/java/edu/iris/dmc/station/conditions/PolesZerosCondition.java
index 1b5d5c0..30707f5 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/PolesZerosCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/PolesZerosCondition.java
@@ -76,24 +76,24 @@ public Message evaluate(Channel channel, Response response) {
if(t) {
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
- + "] Zero:number " + z.getNumber() +" Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ + "] Zero:number[" + z.getNumber() +"] Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
- + "] Zero:number " + z.getNumber() +" Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ + "] Zero:number[" + z.getNumber() +"] Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
returnmessage =true;
}
}else {
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
- + "] Zero:number " + z.getNumber() +" Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ + "] Zero:number[" + z.getNumber() +"] Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
- + "] Zero:number " + z.getNumber() +" Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ + "] Zero:number[" + z.getNumber() +"] Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
returnmessage =true;
}
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/PolesZerosSequenceCondition.java b/src/main/java/edu/iris/dmc/station/conditions/PolesZerosSequenceCondition.java
index 7a35ecb..d44543f 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/PolesZerosSequenceCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/PolesZerosSequenceCondition.java
@@ -67,11 +67,11 @@ public Message evaluate(Channel channel, Response response) {
for (PoleZero z : s.getPolesZeros().getZero()) {
if (z.getNumber().compareTo(BigInteger.valueOf(zeroInc))!=0) {
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ "] Zero:number "+z.getNumber()+ " is out of sequence " +zeroInc+ " is expected"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ "] Zero:number "+z.getNumber()+ " is out of sequence "+zeroInc+ " is expected"));
returnmessage =true;
@@ -85,11 +85,11 @@ public Message evaluate(Channel channel, Response response) {
for (PoleZero p : s.getPolesZeros().getPole()) {
if (p.getNumber().compareTo(BigInteger.valueOf(poleInc))!=0) {
if (s.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", s.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", s.getNumber().intValue())
+ "] Pole:number "+p.getNumber()+ " is out of sequence " +poleInc+ " is expected"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + s.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + s.getNumber().intValue()
+ "] Pole:number "+p.getNumber()+ " is out of sequence " +poleInc+ " is expected"));
returnmessage =true;
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/PolynomialCondition.java b/src/main/java/edu/iris/dmc/station/conditions/PolynomialCondition.java
index 448bcfe..2bb956e 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/PolynomialCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/PolynomialCondition.java
@@ -49,12 +49,12 @@ public Message evaluate(Channel channel, Response response) {
for (ResponseStage stage : response.getStage()) {
if (stage.getPolynomial() != null) {
if (response.getInstrumentPolynomial() == null) {
- //Stage [N] polynomial requires that an InstrumentPolynomial be included
+ //Stage[N] polynomial requires that an InstrumentPolynomial be included
if (stage.getNumber().intValue() < 10 ) {
- return Result.error("[stage " + String.format("%02d", stage.getNumber().intValue())
+ return Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ "] includes a Polynomial so InstrumentPolynomial must be included");
}else {
- return Result.error("[stage " + stage.getNumber().intValue()
+ return Result.error("Stage[" + stage.getNumber().intValue()
+ "] includes a Polynomial so InstrumentPolynomial must be included");
}
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/StageGainNonZeroCondition.java b/src/main/java/edu/iris/dmc/station/conditions/StageGainNonZeroCondition.java
index b806baa..22f134d 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/StageGainNonZeroCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/StageGainNonZeroCondition.java
@@ -54,11 +54,11 @@ public Message evaluate(Channel channel, Response response) {
if (stageGain == null) {
if (stage.getPolynomial() == null) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", stage.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ "] must include StageGain"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + stage.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue()
+ "] must include StageGain"));
returnmessage =true;
}
@@ -70,11 +70,11 @@ public Message evaluate(Channel channel, Response response) {
} else {
if (stage.getPolynomial() == null) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", stage.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ "] StageGain:Value must not be 0"));
returnmessage =true;
}else {
- nestedMessage.add(Result.error("[stage " + stage.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue()
+ "] StageGain:Value must not be 0"));
returnmessage =true;
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/StageUnitCondition.java b/src/main/java/edu/iris/dmc/station/conditions/StageUnitCondition.java
index 4768b56..dda0bed 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/StageUnitCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/StageUnitCondition.java
@@ -78,12 +78,12 @@ public Message evaluate(Channel channel, Response response) {
}
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("Stage [" + String.format("%02d", stage.getNumber().intValue()) + "] input unit " + stageUnit.input.getName()
- + " must equal stage [" + String.format("%02d", prevstage) + "] output unit "
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue()) + "] input unit " + stageUnit.input.getName()
+ + " must equal Stage[" + String.format("%02d", prevstage) + "] output unit "
+ current.output.getName()));
}else {
- nestedMessage.add(Result.error("stage [" + stage.getNumber().intValue() + "] input unit " + stageUnit.input.getName()
- + " must equal stage [" + prevstage + "] output unit "
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue() + "] input unit " + stageUnit.input.getName()
+ + " must equal Stage[" + prevstage + "] output unit "
+ current.output.getName()));
}
diff --git a/src/main/java/edu/iris/dmc/station/conditions/UnitCondition.java b/src/main/java/edu/iris/dmc/station/conditions/UnitCondition.java
index 5c231bd..759ab98 100644
--- a/src/main/java/edu/iris/dmc/station/conditions/UnitCondition.java
+++ b/src/main/java/edu/iris/dmc/station/conditions/UnitCondition.java
@@ -62,32 +62,32 @@ public Message evaluate(Channel channel, Response response) {
}
Units[] units = getUnits(stage);
if (units == null) {
- nestedMessage.add(Result.error("stage [null units for stage " + stage.getNumber().intValue() + "]"));
+ nestedMessage.add(Result.error("Stage["+ stage.getNumber().intValue() + "]"+" contains null units" ));
} else {
Units inputUnits = units[0];
Units outputUnits = units[1];
if (inputUnits == null || inputUnits.getName() == null) {
nestedMessage
- .add(Result.error("Input unit cannot be null [stage " + stage.getNumber().intValue() + "]"));
+ .add(Result.error("Stage["+ stage.getNumber().intValue() + "]"+" input unit cannot be null"));
} else {
boolean result = UnitTable.contains(inputUnits.getName());
if (!result) {
result = UnitTable.containsCaseInsensitive(inputUnits.getName());
if (result) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.warning("[stage " + String.format("%02d", stage.getNumber().intValue())
+ nestedMessage.add(Result.warning("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ "] invalid input units " + inputUnits.getName()));
}else {
- nestedMessage.add(Result.warning("[stage " + stage.getNumber().intValue()
+ nestedMessage.add(Result.warning("Stage[" + stage.getNumber().intValue()
+ "] invalid input units " + inputUnits.getName()));
}
} else {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", stage.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ "] invalid input units " + inputUnits.getName()));
}else {
- nestedMessage.add(Result.error("[stage " + stage.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue()
+ "] invalid input units " + inputUnits.getName()));
}
}
@@ -97,9 +97,9 @@ public Message evaluate(Channel channel, Response response) {
if (outputUnits == null || outputUnits.getName() == null) {
if (stage.getNumber().intValue() < 10 ) {
nestedMessage.add(
- Result.error("Output unit cannot be null [stage " + String.format("%02d", stage.getNumber().intValue()) + "]"));
+ Result.error("Stage["+ String.format("%02d",stage.getNumber().intValue()) + "]"+" output unit cannot be null"));
}else {
- Result.error("Output unit cannot be null [stage " + stage.getNumber().intValue() + "]");
+ Result.error("Stage["+ stage.getNumber().intValue() + "]"+" output unit cannot be null");
}
} else {
boolean result = UnitTable.contains(outputUnits.getName());
@@ -107,18 +107,18 @@ public Message evaluate(Channel channel, Response response) {
result = UnitTable.containsCaseInsensitive(outputUnits.getName().toLowerCase());
if (result) {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.warning("[stage " + String.format("%02d",stage.getNumber().intValue())
+ nestedMessage.add(Result.warning("Stage[" + String.format("%02d",stage.getNumber().intValue())
+ "] invalid output units " + outputUnits.getName()));
}else {
- nestedMessage.add(Result.warning("[stage " + stage.getNumber().intValue()
+ nestedMessage.add(Result.warning("Stage[" + stage.getNumber().intValue()
+ "] invalid output units " + outputUnits.getName()));
}
} else {
if (stage.getNumber().intValue() < 10 ) {
- nestedMessage.add(Result.error("[stage " + String.format("%02d", stage.getNumber().intValue())
+ nestedMessage.add(Result.error("Stage[" + String.format("%02d", stage.getNumber().intValue())
+ "] invalid output units " + outputUnits.getName()));
}else {
- nestedMessage.add(Result.error("[stage " + stage.getNumber().intValue()
+ nestedMessage.add(Result.error("Stage[" + stage.getNumber().intValue()
+ "] invalid output units " + outputUnits.getName()));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition330Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition330Test.java
index 098bdb0..a99cafe 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition330Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition330Test.java
@@ -9,12 +9,17 @@
import org.junit.jupiter.api.Test;
import edu.iris.dmc.DocumentMarshaller;
+import edu.iris.dmc.fdsn.station.model.Channel;
import edu.iris.dmc.fdsn.station.model.FDSNStationXML;
import edu.iris.dmc.fdsn.station.model.Network;
import edu.iris.dmc.fdsn.station.model.Station;
import edu.iris.dmc.station.RuleEngineServiceTest;
import edu.iris.dmc.station.exceptions.StationxmlException;
+import edu.iris.dmc.station.restrictions.ChannelCodeRestriction;
+import edu.iris.dmc.station.restrictions.ChannelTypeRestriction;
+import edu.iris.dmc.station.restrictions.Restriction;
import edu.iris.dmc.station.rules.Message;
+import edu.iris.dmc.station.rules.NestedMessage;
public class Condition330Test {
@@ -26,11 +31,40 @@ public void init() throws Exception {
}
@Test
- public void throwsExceptionWithSpecificType() throws Exception {
+ public void fail() throws Exception {
try (InputStream is = RuleEngineServiceTest.class.getClassLoader().getResourceAsStream("F1_330.xml")) {
- Assertions.assertThrows(StationxmlException.class,() -> DocumentMarshaller.unmarshal(is));
+ theDocument = DocumentMarshaller.unmarshal(is);
+ Restriction[] restrictions = new Restriction[] { new ChannelCodeRestriction(), new ChannelTypeRestriction() };
+
+ Network n = theDocument.getNetwork().get(0);
+ Station s = n.getStations().get(0);
+ Channel c = s.getChannels().get(0);
+ BandCodeCondition condition = new BandCodeCondition(true, "", restrictions);
+
+ Message result = condition.evaluate(c);
+ NestedMessage nestedMessage=(NestedMessage) result;
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Frequency Band B must have a sample rate assigned between >= 10 and < 80"));
+
+ }
+
+ }
+
+ @Test
+ public void fail2() throws Exception {
+ try (InputStream is = RuleEngineServiceTest.class.getClassLoader().getResourceAsStream("F2_330.xml")) {
+ theDocument = DocumentMarshaller.unmarshal(is);
+ Restriction[] restrictions = new Restriction[] { new ChannelCodeRestriction(), new ChannelTypeRestriction() };
+
+ Network n = theDocument.getNetwork().get(0);
+ Station s = n.getStations().get(0);
+ Channel c = s.getChannels().get(0);
+ BandCodeCondition condition = new BandCodeCondition(true, "", restrictions);
+
+ Message result = condition.evaluate(c);
+ NestedMessage nestedMessage=(NestedMessage) result;
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Frequency Band F must have a sample rate assigned between >= 1000 and < 5000"));
+
}
-
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition403Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition403Test.java
index 5e73d1e..33ac308 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition403Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition403Test.java
@@ -44,7 +44,7 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage) result;
System.out.println(nestedMessage.getNestedMessages().get(0).getDescription());
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage [03] input unit V must equal stage [01] output unit volt"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[03] input unit V must equal Stage[01] output unit volt"));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition403Test2.java b/src/test/java/edu/iris/dmc/station/conditions/Condition403Test2.java
index 08d8c8a..45c910d 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition403Test2.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition403Test2.java
@@ -43,8 +43,8 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage [03] input unit Volts must equal stage[01] output unit V"));
- assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage [05] input unit C must equal stage[04] output unit COUNTS"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[03] input unit Volts must equal Stage[01] output unit V"));
+ assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage[05] input unit C must equal Stage[04] output unit COUNTS"));
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition404Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition404Test.java
index aa53c90..0710a26 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition404Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition404Test.java
@@ -43,8 +43,8 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 03] must include StageGain and Decimation"));
- assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("[stage 04] must include StageGain and Decimation"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[03] must include StageGain and Decimation"));
+ assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage[04] must include StageGain and Decimation"));
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition404Test2.java b/src/test/java/edu/iris/dmc/station/conditions/Condition404Test2.java
index a47b6b0..7841bc7 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition404Test2.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition404Test2.java
@@ -43,7 +43,7 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 03] must include StageGain and Decimation"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[03] must include StageGain and Decimation"));
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition404Test4.java b/src/test/java/edu/iris/dmc/station/conditions/Condition404Test4.java
index ee0bf92..ad2946b 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition404Test4.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition404Test4.java
@@ -43,7 +43,7 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 01] must include StageGain and Decimation"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] must include StageGain and Decimation"));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition413Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition413Test.java
index c86d86c..29bc2f5 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition413Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition413Test.java
@@ -44,7 +44,7 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 01] StageGain:Value must not be 0"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] StageGain:Value must not be 0"));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition414Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition414Test.java
index 37a7e4c..854c74b 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition414Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition414Test.java
@@ -44,8 +44,8 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 01] Zero:number 0 Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
- assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("[stage 01] Zero:number 1 Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] Zero:number[0] Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
+ assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage[01] Zero:number[1] Zero:Real==0 and Zero:Imaginary==0 StageGain:Frequency must not equal 0"));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition414Test2.java b/src/test/java/edu/iris/dmc/station/conditions/Condition414Test2.java
index 34fffb3..41cdb73 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition414Test2.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition414Test2.java
@@ -44,8 +44,8 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 01] Zero:number 0 Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
- assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("[stage 01] Zero:number 1 Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] Zero:number[0] Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
+ assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage[01] Zero:number[1] Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition414Test3.java b/src/test/java/edu/iris/dmc/station/conditions/Condition414Test3.java
index 1134cf7..639aa36 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition414Test3.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition414Test3.java
@@ -43,8 +43,8 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 01] Zero:number 0 Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
- assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("[stage 01] Zero:number 1 Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] Zero:number[0] Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
+ assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage[01] Zero:number[1] Zero:Real==0 and Zero:Imaginary==0 InstrumentSensitivity:Frequency must not equal 0"));
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition422Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition422Test.java
index f7c9b30..cc9434e 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition422Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition422Test.java
@@ -43,7 +43,8 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 05] Decimation:InputSampleRate 20.0 != [stage 04] Decimation:InputSampleRate/Decimation:Factor 10.0"));
+ System.out.println(nestedMessage.getNestedMessages().get(0).getDescription());
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[05] Decimation:InputSampleRate 20.0 != Stage[04] Decimation:InputSampleRate/Decimation:Factor 10.0"));
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition423.java b/src/test/java/edu/iris/dmc/station/conditions/Condition423.java
index 5084302..881a7ca 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition423.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition423.java
@@ -45,8 +45,8 @@ public void fail() throws Exception {
NestedMessage nestedMessage=(NestedMessage)result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("[stage 01] includes Decimation and StageGain but does not include a Filter"));
- assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("[stage 07] includes Decimation and StageGain but does not include a Filter"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] includes Decimation and StageGain but does not include a Filter"));
+ assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage[07] includes Decimation and StageGain but does not include a Filter"));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition424Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition424Test.java
index cbbe870..b2a1a0c 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition424Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition424Test.java
@@ -44,7 +44,7 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage) result;
System.out.println(nestedMessage.getNestedMessages().get(0).getDescription());
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage [08] output unit M/S must be count(s) because Stage[08].Decimation is included"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[08] output unit M/S must be count(s) because Stage[08].Decimation is included"));
}
}
diff --git a/src/test/java/edu/iris/dmc/station/conditions/Condition425Test.java b/src/test/java/edu/iris/dmc/station/conditions/Condition425Test.java
index 344c977..7585cd8 100644
--- a/src/test/java/edu/iris/dmc/station/conditions/Condition425Test.java
+++ b/src/test/java/edu/iris/dmc/station/conditions/Condition425Test.java
@@ -43,7 +43,7 @@ public void fail() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage) result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage [01] includes PolesZeros:PzTransferFunctionType:LAPLACE (RADIANS/SECOND) so decimation must not be included in stage [01]"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] includes PolesZeros:PzTransferFunctionType:LAPLACE (RADIANS/SECOND) so decimation must not be included in Stage[01]"));
}
}
@@ -63,7 +63,7 @@ public void fail2() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage) result;
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage [01] includes PolesZeros:PzTransferFunctionType:LAPLACE (HERTZ) so decimation must not be included in stage [01]"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[01] includes PolesZeros:PzTransferFunctionType:LAPLACE (HERTZ) so decimation must not be included in Stage[01]"));
}
}
@@ -84,8 +84,8 @@ public void fail3() throws Exception {
Message result = condition.evaluate(c);
NestedMessage nestedMessage=(NestedMessage) result;
System.out.println(nestedMessage.getNestedMessages().get(0).getDescription());
- assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage [04] includes CoefficientsType:CfTransferFunctionType:ANALOG (RADIANS/SECOND) so decimation must not be included in stage [04]"));
- assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage [10] includes CoefficientsType:CfTransferFunctionType:ANALOG (HERTZ) so decimation must not be included in stage [10]"));
+ assertTrue(nestedMessage.getNestedMessages().get(0).getDescription().contains("Stage[04] includes CoefficientsType:CfTransferFunctionType:ANALOG (RADIANS/SECOND) so decimation must not be included in Stage[04]"));
+ assertTrue(nestedMessage.getNestedMessages().get(1).getDescription().contains("Stage[10] includes CoefficientsType:CfTransferFunctionType:ANALOG (HERTZ) so decimation must not be included in Stage[10]"));
}
diff --git a/src/test/resources/F1_330.xml b/src/test/resources/F1_330.xml
index 2957145..6906657 100644
--- a/src/test/resources/F1_330.xml
+++ b/src/test/resources/F1_330.xml
@@ -25,11 +25,11 @@
-122.31332
225.879999
0
- 361
- 10
+ 359
+ 0
CONTINUOUS
GEOPHYSICAL
- 2E01
+ 9.0
0E00
V
@@ -40,8 +40,8 @@
- 2.44648E5
- 1E0
+ 1
+ 4E01
PA
No Abbreviation Referenced
diff --git a/src/test/resources/F2_330.xml b/src/test/resources/F2_330.xml
new file mode 100644
index 0000000..64ec9ac
--- /dev/null
+++ b/src/test/resources/F2_330.xml
@@ -0,0 +1,624 @@
+
+
+
+ IRIS-DMC
+ IRIS-DMC
+ IRIS WEB SERVICE: fdsnws-station | version: 1.1.33
+ http://service.iris.edu/fdsnws/station/1/query?net=XX&sta=VPASS&cha=BDF&starttime=2018-08-06T00:00:01&level=response&format=xml&includecomments=true&nodata=404
+ 2018-08-06T20:17:16
+
+ [IRIS DMC] Station XML Validator Passing Test File
+ 1
+ 1
+
+ 47.66157
+ -122.31332
+ 225.879999
+
+ Synthetic Test File, IRIS DMC, USA, 218 2018, Tim Ronan
+
+ 2018-08-06T00:00:00
+ 1
+ 1
+
+ 47.66157
+ -122.31332
+ 225.879999
+ 0
+ 359
+ 0
+ CONTINUOUS
+ GEOPHYSICAL
+ 1E02
+ 0E00
+
+ V
+ Volts
+
+
+ 50A (Infrasound), 0.2-50 Hz, 0.4 V/Pa-null
+
+
+
+ 1
+ 4E01
+
+ PA
+ No Abbreviation Referenced
+
+
+ COUNTS
+ Digital Counts
+
+
+
+
+
+ PA
+ No Abbreviation Referenced
+
+
+ V
+ Volts
+
+ LAPLACE (RADIANS/SECOND)
+ 314.1
+ 1.00000
+
+ 0.00000
+ 0.00000
+
+
+ 0.00000
+ 0.00000
+
+
+ -0.170000
+ 0.00000
+
+
+ 0.00000
+ 0.00000
+
+
+ -314.000
+ 0.00000
+
+
+ -0.188000
+ 0.00000
+
+
+ -0.0440000
+ 0.00000
+
+
+
+ 0.4
+ 1.0
+
+
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ V
+ Volts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 1.00000
+
+
+ 512000.0
+ 1
+ 0
+ 0.0
+ 0.0
+
+
+ 611621.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.0000305176
+ 0.000152588
+ 0.000457764
+ 0.00106812
+ 0.00213623
+ 0.00384521
+ 0.00640869
+ 0.0100708
+ 0.0149536
+ 0.0210571
+ 0.0282593
+ 0.0363159
+ 0.0448608
+ 0.0534058
+ 0.0613403
+ 0.0679321
+ 0.0726318
+ 0.0750732
+ 0.0750732
+ 0.0726318
+ 0.0679321
+ 0.0613403
+ 0.0534058
+ 0.0448608
+ 0.0363159
+ 0.0282593
+ 0.0210571
+ 0.0149536
+ 0.0100708
+ 0.00640869
+ 0.00384521
+ 0.00213623
+ 0.00106812
+ 0.000457764
+ 0.000152588
+ 0.0000305176
+
+
+ 512000.0
+ 8
+ 0
+ 3.418E-5
+ 3.418E-5
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.0312500
+ 0.156250
+ 0.312500
+ 0.312500
+ 0.156250
+ 0.0312500
+
+
+ 64000.0
+ 2
+ 0
+ 3.9063E-5
+ 3.9063E-5
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.0156250
+ 0.0937500
+ 0.234375
+ 0.312500
+ 0.234375
+ 0.0937500
+ 0.0156250
+
+
+ 32000.0
+ 2
+ 0
+ 9.375E-5
+ 9.375E-5
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.00160000
+ 0.00640000
+ 0.0160000
+ 0.0320000
+ 0.0560000
+ 0.0832000
+ 0.108800
+ 0.128000
+ 0.136000
+ 0.128000
+ 0.108800
+ 0.0832000
+ 0.0560000
+ 0.0320000
+ 0.0160000
+ 0.00640000
+ 0.00160000
+
+
+ 16000.0
+ 5
+ 0
+ 5.0E-4
+ 5.0E-4
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.00160000
+ 0.00640000
+ 0.0160000
+ 0.0320000
+ 0.0560000
+ 0.0832000
+ 0.108800
+ 0.128000
+ 0.136000
+ 0.128000
+ 0.108800
+ 0.0832000
+ 0.0560000
+ 0.0320000
+ 0.0160000
+ 0.00640000
+ 0.00160000
+
+
+ 3200.0
+ 5
+ 0
+ 0.0025
+ 0.0025
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.0312500
+ 0.156250
+ 0.312500
+ 0.312500
+ 0.156250
+ 0.0312500
+
+
+ 640.0
+ 2
+ 0
+ 0.0039062
+ 0.0039062
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.0156250
+ 0.0937500
+ 0.234375
+ 0.312500
+ 0.234375
+ 0.0937500
+ 0.0156250
+
+
+ 320.0
+ 2
+ 0
+ 0.009375
+ 0.009375
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.0000142825
+ 0.0000487602
+ 0.0000981347
+ 0.000131000
+ 0.00000934250
+ -0.000371601
+ -0.00101838
+ -0.00172427
+ -0.00178938
+ -0.000497840
+ 0.00249391
+ 0.00662629
+ 0.00961284
+ 0.00850723
+ 0.00102035
+ -0.0127048
+ -0.0277493
+ -0.0356507
+ -0.0269602
+ 0.00484878
+ 0.0580113
+ 0.122066
+ 0.180265
+ 0.214714
+ 0.214714
+ 0.180265
+ 0.122066
+ 0.0580113
+ 0.00484878
+ -0.0269602
+ -0.0356507
+ -0.0277493
+ -0.0127048
+ 0.00102035
+ 0.00850723
+ 0.00961284
+ 0.00662629
+ 0.00249391
+ -0.000497840
+ -0.00178938
+ -0.00172427
+ -0.00101838
+ -0.000371601
+ 0.00000934250
+ 0.000131000
+ 0.0000981347
+ 0.0000487602
+ 0.0000142825
+
+
+ 160.0
+ 4
+ 0
+ 0.14688
+ 0.14688
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+ COUNTS
+ Digital Counts
+
+
+ COUNTS
+ Digital Counts
+
+ DIGITAL
+ 0.00000
+ -0.00000341752
+ -0.0000178578
+ -0.0000418767
+ -0.0000474602
+ 0.00000163656
+ 0.0000859675
+ 0.000110275
+ 0.0000140070
+ -0.0000980010
+ -0.0000453905
+ 0.000143680
+ 0.000182139
+ -0.0000701795
+ -0.000279563
+ -0.0000484710
+ 0.000373328
+ 0.000285676
+ -0.000343437
+ -0.000562736
+ 0.000169962
+ 0.000842347
+ 0.000211212
+ -0.000994499
+ -0.000768220
+ 0.000911179
+ 0.00143478
+ -0.000471474
+ -0.00204921
+ -0.000372799
+ 0.00240642
+ 0.00158944
+ -0.00226673
+ -0.00301565
+ 0.00142968
+ 0.00436788
+ 0.000213523
+ -0.00525571
+ -0.00260752
+ 0.00524705
+ 0.00549470
+ -0.00394666
+ -0.00839709
+ 0.00109986
+ 0.0106478
+ 0.00331466
+ -0.0114571
+ -0.00900786
+ 0.0100128
+ 0.0153434
+ -0.00558380
+ -0.0213365
+ -0.00240468
+ 0.0256716
+ 0.0143909
+ -0.0266602
+ -0.0309250
+ 0.0219005
+ 0.0536113
+ -0.00660299
+ -0.0892570
+ -0.0368818
+ 0.186535
+ 0.403778
+ 0.403778
+ 0.186535
+ -0.0368818
+ -0.0892570
+ -0.00660299
+ 0.0536113
+ 0.0219005
+ -0.0309250
+ -0.0266602
+ 0.0143909
+ 0.0256716
+ -0.00240468
+ -0.0213365
+ -0.00558380
+ 0.0153434
+ 0.0100128
+ -0.00900786
+ -0.0114571
+ 0.00331466
+ 0.0106478
+ 0.00109986
+ -0.00839709
+ -0.00394666
+ 0.00549470
+ 0.00524705
+ -0.00260752
+ -0.00525571
+ 0.000213523
+ 0.00436788
+ 0.00142968
+ -0.00301565
+ -0.00226673
+ 0.00158944
+ 0.00240642
+ -0.000372799
+ -0.00204921
+ -0.000471474
+ 0.00143478
+ 0.000911179
+ -0.000768220
+ -0.000994499
+ 0.000211212
+ 0.000842347
+ 0.000169962
+ -0.000562736
+ -0.000343437
+ 0.000285676
+ 0.000373328
+ -0.0000484710
+ -0.000279563
+ -0.0000701795
+ 0.000182139
+ 0.000143680
+ -0.0000453905
+ -0.0000980010
+ 0.0000140070
+ 0.000110275
+ 0.0000859675
+ 0.00000163656
+ -0.0000474602
+ -0.0000418767
+ -0.0000178578
+ -0.00000341752
+ 0.00000
+
+
+ 40.0
+ 2
+ 0
+ 1.5875
+ 1.5875
+
+
+ 1.0
+ 1.0
+
+
+
+
+
+
+