diff --git a/.gitignore b/.gitignore
index 7aefd0d..6c08e18 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,10 @@ arc.dir
*-sav.*
*Copy.*
*-master
+*.orig
+*.original
+*.mdb
+*.sav
#############
## Python
diff --git a/data/app6b/dictionary/app6b.dat b/data/app6b/dictionary/app6b.dat
index 1d131ab..90c2878 100644
Binary files a/data/app6b/dictionary/app6b.dat and b/data/app6b/dictionary/app6b.dat differ
diff --git a/data/app6b/stylefiles/APP6 Air Track.style b/data/app6b/stylefiles/APP6 Air Track.style
index c55da9f..24aa631 100644
Binary files a/data/app6b/stylefiles/APP6 Air Track.style and b/data/app6b/stylefiles/APP6 Air Track.style differ
diff --git a/data/app6b/stylefiles/APP6 Ground Track Equipment.style b/data/app6b/stylefiles/APP6 Ground Track Equipment.style
index cd85ccf..4da40dd 100644
Binary files a/data/app6b/stylefiles/APP6 Ground Track Equipment.style and b/data/app6b/stylefiles/APP6 Ground Track Equipment.style differ
diff --git a/data/app6b/stylefiles/APP6 Ground Track Units.style b/data/app6b/stylefiles/APP6 Ground Track Units.style
index b82b0fb..1508373 100644
Binary files a/data/app6b/stylefiles/APP6 Ground Track Units.style and b/data/app6b/stylefiles/APP6 Ground Track Units.style differ
diff --git a/data/app6b/stylefiles/APP6 Military NA5CRO.style b/data/app6b/stylefiles/APP6 Military NA5CRO.style
index b2bf07c..5195d25 100644
Binary files a/data/app6b/stylefiles/APP6 Military NA5CRO.style and b/data/app6b/stylefiles/APP6 Military NA5CRO.style differ
diff --git a/data/app6b/stylefiles/APP6 Military Operations.style b/data/app6b/stylefiles/APP6 Military Operations.style
index 35cf5af..e795c4a 100644
Binary files a/data/app6b/stylefiles/APP6 Military Operations.style and b/data/app6b/stylefiles/APP6 Military Operations.style differ
diff --git a/data/app6b/stylefiles/APP6 Weather.style b/data/app6b/stylefiles/APP6 Weather.style
index fc43a23..5b56a05 100644
Binary files a/data/app6b/stylefiles/APP6 Weather.style and b/data/app6b/stylefiles/APP6 Weather.style differ
diff --git a/data/mil2525c/dictionary/mil2525c.dat b/data/mil2525c/dictionary/mil2525c.dat
index d01614a..5a343ec 100644
Binary files a/data/mil2525c/dictionary/mil2525c.dat and b/data/mil2525c/dictionary/mil2525c.dat differ
diff --git a/data/mil2525c/stylefiles/C2 Military Operations.style b/data/mil2525c/stylefiles/C2 Military Operations.style
index d3ec305..0128e15 100644
Binary files a/data/mil2525c/stylefiles/C2 Military Operations.style and b/data/mil2525c/stylefiles/C2 Military Operations.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Air Track.style b/data/mil2525c/stylefiles/C2 UEI Air Track.style
index 3b17244..99c93bd 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Air Track.style and b/data/mil2525c/stylefiles/C2 UEI Air Track.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Ground Track Equipment.style b/data/mil2525c/stylefiles/C2 UEI Ground Track Equipment.style
index 9d2d103..e8f89ef 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Ground Track Equipment.style and b/data/mil2525c/stylefiles/C2 UEI Ground Track Equipment.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Ground Track Installations.style b/data/mil2525c/stylefiles/C2 UEI Ground Track Installations.style
index 8e4affc..78a45fc 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Ground Track Installations.style and b/data/mil2525c/stylefiles/C2 UEI Ground Track Installations.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Ground Track Units.style b/data/mil2525c/stylefiles/C2 UEI Ground Track Units.style
index 76943a8..6fbaf54 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Ground Track Units.style and b/data/mil2525c/stylefiles/C2 UEI Ground Track Units.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Sea Surface Track.style b/data/mil2525c/stylefiles/C2 UEI Sea Surface Track.style
index 363b913..57eb5e8 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Sea Surface Track.style and b/data/mil2525c/stylefiles/C2 UEI Sea Surface Track.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Space Track.style b/data/mil2525c/stylefiles/C2 UEI Space Track.style
index 80c6394..2a6f257 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Space Track.style and b/data/mil2525c/stylefiles/C2 UEI Space Track.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Special Operations Track.style b/data/mil2525c/stylefiles/C2 UEI Special Operations Track.style
index 2d574d7..0968a25 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Special Operations Track.style and b/data/mil2525c/stylefiles/C2 UEI Special Operations Track.style differ
diff --git a/data/mil2525c/stylefiles/C2 UEI Subsurface Track.style b/data/mil2525c/stylefiles/C2 UEI Subsurface Track.style
index 6a8c02f..df83545 100644
Binary files a/data/mil2525c/stylefiles/C2 UEI Subsurface Track.style and b/data/mil2525c/stylefiles/C2 UEI Subsurface Track.style differ
diff --git a/data/mil2525c/stylefiles/Military Emergency Management.style b/data/mil2525c/stylefiles/Military Emergency Management.style
index 8c683ec..4addc50 100644
Binary files a/data/mil2525c/stylefiles/Military Emergency Management.style and b/data/mil2525c/stylefiles/Military Emergency Management.style differ
diff --git a/data/mil2525c/stylefiles/Military METOC.style b/data/mil2525c/stylefiles/Military METOC.style
index 7e1f488..2d15933 100644
Binary files a/data/mil2525c/stylefiles/Military METOC.style and b/data/mil2525c/stylefiles/Military METOC.style differ
diff --git a/data/mil2525c/stylefiles/Signals Intelligence.style b/data/mil2525c/stylefiles/Signals Intelligence.style
index 3d6f549..0f946c5 100644
Binary files a/data/mil2525c/stylefiles/Signals Intelligence.style and b/data/mil2525c/stylefiles/Signals Intelligence.style differ
diff --git a/data/mil2525c/stylefiles/Stability Operations.style b/data/mil2525c/stylefiles/Stability Operations.style
index 8eca27d..72fcead 100644
Binary files a/data/mil2525c/stylefiles/Stability Operations.style and b/data/mil2525c/stylefiles/Stability Operations.style differ
diff --git a/test/.gitignore b/test/.gitignore
index d02079e..4a33dfe 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -39,7 +39,6 @@ develop-eggs
# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
[Bb]in/
[Oo]bj/
-[Ll]ib/
#################
## Eclipse
diff --git a/test/TestExportSymbol/versions.xml b/test/TestExportSymbol/versions.xml
index f563cc3..8fdcc54 100644
--- a/test/TestExportSymbol/versions.xml
+++ b/test/TestExportSymbol/versions.xml
@@ -7,9 +7,14 @@
+
+
+
+
+
@@ -18,6 +23,13 @@
+
+
+
+
+
+
+
@@ -32,6 +44,12 @@
+
+
+
+
+
+
@@ -46,7 +64,7 @@
-
+
diff --git a/test/TestExportSymbolsAll/README.md b/test/TestExportSymbolsAll/README.md
index abbb415..6fcaa63 100644
--- a/test/TestExportSymbolsAll/README.md
+++ b/test/TestExportSymbolsAll/README.md
@@ -25,6 +25,7 @@ This test application uses ArcGIS Runtime and sqlite4java to export all dictiona
* sqlite4java-win32-x64.dll
* sqlite4java-win32-x86.dll
* sqlite4java.jar
+ * For simplicity, the pre-built Windows binaries/dependencies have been included in this repo.
* To build and run:
* Open Command Prompt>
* > cd military-features-data\test\TestExportSymbolsAll
@@ -33,3 +34,19 @@ This test application uses ArcGIS Runtime and sqlite4java to export all dictiona
* This example export all area symbols
* >java -classpath dist -jar dist/ExportSymbols.jar all area
* NOTE: Some configurations may require that the location of the sqlite4java native binaries (.dll/.so) be added to the path, see the sqlite4java for more information
+
+## License
+
+Copyright 2013-2014 Esri
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+
+
+
+Portions of this code use third-party libraries:
+
+Google Code SQLite Java Wrapper project is also governed by the Apache License, Version 2.0. For more information see the project at [sqlite4java](https://code.google.com/p/sqlite4java)
diff --git a/test/TestExportSymbolsAll/build.xml b/test/TestExportSymbolsAll/build.xml
index fd663ea..f1273fd 100644
--- a/test/TestExportSymbolsAll/build.xml
+++ b/test/TestExportSymbolsAll/build.xml
@@ -96,6 +96,7 @@
+
diff --git a/test/TestExportSymbolsAll/lib/Readme.txt b/test/TestExportSymbolsAll/lib/Readme.txt
new file mode 100644
index 0000000..ecc55f6
--- /dev/null
+++ b/test/TestExportSymbolsAll/lib/Readme.txt
@@ -0,0 +1,13 @@
+These are from https://code.google.com/p/sqlite4java/:
+
+sqlite4java.jar
+
+Windows:
+sqlite4java-win32-x64.dll
+sqlite4java-win32-x86.dll
+
+If you are using another platform, you will need to obtain these binaries from
+https://code.google.com/p/sqlite4java/ and place them here.
+
+There use is governed by the Apache License 2.0:
+http://www.apache.org/licenses/LICENSE-2.0
diff --git a/test/TestExportSymbolsAll/lib/sqlite4java-win32-x64.dll b/test/TestExportSymbolsAll/lib/sqlite4java-win32-x64.dll
new file mode 100644
index 0000000..0d7f2bb
Binary files /dev/null and b/test/TestExportSymbolsAll/lib/sqlite4java-win32-x64.dll differ
diff --git a/test/TestExportSymbolsAll/lib/sqlite4java-win32-x86.dll b/test/TestExportSymbolsAll/lib/sqlite4java-win32-x86.dll
new file mode 100644
index 0000000..bf85116
Binary files /dev/null and b/test/TestExportSymbolsAll/lib/sqlite4java-win32-x86.dll differ
diff --git a/test/TestExportSymbolsAll/lib/sqlite4java.jar b/test/TestExportSymbolsAll/lib/sqlite4java.jar
new file mode 100644
index 0000000..686098f
Binary files /dev/null and b/test/TestExportSymbolsAll/lib/sqlite4java.jar differ
diff --git a/test/TestExportSymbolsAll/src/ExportSymbols.java b/test/TestExportSymbolsAll/src/ExportSymbols.java
index 5f9a65e..8a8bf11 100644
--- a/test/TestExportSymbolsAll/src/ExportSymbols.java
+++ b/test/TestExportSymbolsAll/src/ExportSymbols.java
@@ -15,7 +15,9 @@
*/
import java.awt.image.BufferedImage;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
@@ -33,15 +35,20 @@
* A command line utility for exporting sets of ArcGIS Runtime Military/Dictionary Symbols
*
* Usage:
+ * java -jar ExportSymbols.jar [(symbol name/id),"ALL"] [Standard:("2525", "APP6")]
* java -jar ExportSymbols.jar [(symbol name/id),"ALL"] [Type:("Point","Line","Area")]
* java -jar ExportSymbols.jar [(symbol name/id),"ALL"] [Type:("Point" "Line" "Area")] {Standard:("2525", "APP6")}
+ * java -jar ExportSymbols.jar [(symbol name/id),"FILE"] [Filename with SIDCs/Names)] {Standard:("2525", "APP6")}
+ *
+ * Note: If using the file option, the file must be a comma-delimited file where the SIDC or Name is in the first column
*
* Example:
* If using version built with the provided ant build.xml:
* java -classpath dist -jar dist/ExportSymbols.jar "SFGPUCI-----USG"
- * java -classpath dist -jar dist/ExportSymbols.jar ALL
+ * java -classpath dist -jar dist/ExportSymbols.jar ALL APP6
* java -classpath dist -jar dist/ExportSymbols.jar ALL POINT
* java -classpath dist -jar dist/ExportSymbols.jar ALL LINE APP6
+ * java -classpath dist -jar dist/ExportSymbols.jar FILE MyListOfSIDCs.txt
*/
public class ExportSymbols {
@@ -56,22 +63,43 @@ public static void main(String[] args) {
t.printStackTrace();
}
- // Defaults used if no arguments given:
+ String NOT_SET = "NOT SET";
+
+ // Defaults used if no arguments given:
String sidc = "SFGPUCI-----USG";
String standard = "2525";
- String allFlag = "NOT SET";
- String geometryType = "NOT SET";
+ String allFlag = NOT_SET;
+ String geometryType = NOT_SET;
+ String readFromFileName = NOT_SET;
if (args.length == 0 || args[0].equals("help")) {
Usage();
} else if (args.length == 1) {
sidc = args[0];
- } else if (args.length == 2) {
- allFlag = args[0].toUpperCase();
- geometryType = args[1].toUpperCase();
+ allFlag = args[0];
+ } else if (args.length == 2) {
+
+ String arg0 = args[0].toUpperCase();
+
+ sidc = arg0;
+ allFlag = arg0;
+
+ String arg1 = args[1].toUpperCase();
+
+ // then a standard has been set in arg1, don't look for geometry type
+ if (arg1.contains("APP") || arg1.contains("2525")) {
+ if (arg1.contains("APP"))
+ standard = "APP6";
+ }
+ else {
+ geometryType = arg1;
+ readFromFileName = args[1];
+ }
+
} else if (args.length == 3) {
allFlag = args[0].toUpperCase();
geometryType = args[1].toUpperCase();
+ readFromFileName = args[1];
standard = args[2].toUpperCase();
} else {
Usage();
@@ -85,20 +113,27 @@ public static void main(String[] args) {
sd = new SymbolDictionary(DictionaryType.App6B);
else
sd = new SymbolDictionary(DictionaryType.Mil2525C);
-
- if (!allFlag.equals("ALL")) {
- // export a single symbol name/id
- export(sd, sidc);
- }
- else {
- System.out.println("Running with settings: " + allFlag + ":" + geometryType
- + ":" + standard);
- if (geometryType.equals("NOT SET"))
+ System.out.println("Running with settings: " + allFlag + ":" + geometryType
+ + ":" + standard);
+
+ if (allFlag.equals("ALL")) {
+ if (geometryType.equals(NOT_SET))
getAll(sd, "ALL", standard);
else
getAll(sd, geometryType, standard);
}
+ else if (allFlag.equals("FILE")) {
+
+ if (readFromFileName.equals(NOT_SET))
+ System.out.println("FILE option: input file not specified");
+ else
+ getFromFile(sd, readFromFileName);
+ }
+ else { // No "ALL" "FILE" flag, just do a single one
+ // export a single symbol name/id
+ export(sd, sidc);
+ }
} catch (Throwable t) {
t.printStackTrace();
@@ -127,10 +162,46 @@ public static boolean isValidSymbol(MilitarySymbol symbol) {
}
}
+ public static void getFromFile(SymbolDictionary sd, String fileName) {
+
+ try {
+
+ System.out.println("Reading symbols from file: " + fileName);
+
+ File dataFile = new File(fileName);
+ if (!dataFile.exists()) {
+ System.err.println ("ERROR: Could not find file: " + fileName);
+ return;
+ }
+
+ BufferedReader reader = new BufferedReader(new FileReader(fileName));
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ if (!line.startsWith("#")) { // Skip lines with "#"
+
+ String[] columns = line.split(",");
+
+ if (columns.length > 0)
+ {
+ String nameOrSidc = columns[0];
+
+ if (!nameOrSidc.isEmpty())
+ export(sd, nameOrSidc);
+ }
+ }
+ }
+
+ }
+ catch (java.io.IOException ioEx) {
+ System.err.println ("ERROR: exception while reading file: " + fileName);
+ }
+
+ }
+
public static void getAll(SymbolDictionary sd, String geometryType, String standard)
throws SQLiteException {
System.out.println("Getting all symbols matching type: " + geometryType +
- "in standard: " + standard);
+ ", in standard: " + standard);
// Assumes will be run from: test\TestExportSymbolsAll
String dbFileLocation = "../../data/mil2525c/dictionary/mil2525c.dat";
@@ -140,9 +211,18 @@ public static void getAll(SymbolDictionary sd, String geometryType, String stand
File dbFile = new File(dbFileLocation);
- if (!dbFile.exists()) {
- System.out.println("Exiting: Can't find dictionary file at: " + dbFileLocation);
- System.exit(-1);
+ if (!dbFile.exists()) {
+ // Just in case accidentally run from dist folder...
+ dbFileLocation = "../" + dbFileLocation;
+ dbFile = new File(dbFileLocation);
+
+ // TODO: Just use the one from the Runtime install/deploy if we
+ // can't find this expected version from the Github repo clone
+
+ if (!dbFile.exists()) {
+ System.out.println("Exiting: Can't find dictionary file at: " + dbFileLocation);
+ System.exit(-1);
+ }
}
// Query all symbols
diff --git a/test/TestExportSymbolsAll/versions.xml b/test/TestExportSymbolsAll/versions.xml
index f563cc3..8fdcc54 100644
--- a/test/TestExportSymbolsAll/versions.xml
+++ b/test/TestExportSymbolsAll/versions.xml
@@ -7,9 +7,14 @@
+
+
+
+
+
@@ -18,6 +23,13 @@
+
+
+
+
+
+
+
@@ -32,6 +44,12 @@
+
+
+
+
+
+
@@ -46,7 +64,7 @@
-
+
diff --git a/test/TestReproData/App6ErrorsPre10.2.2.csv b/test/TestReproData/App6ErrorsPre10.2.2.csv
new file mode 100644
index 0000000..98cd3b0
--- /dev/null
+++ b/test/TestReproData/App6ErrorsPre10.2.2.csv
@@ -0,0 +1,136 @@
+# File: App6B-Probs.csv
+# SIDC Issue Notes
+#
+# Incorrect Lengths
+GFCPBYCG-------,"Extra 'P' in SIDC, should be G*CPBYCG-------",
+SFUPWM---------,length = 16,
+SHUPWM---------,length = 16,
+SNUPWM---------,length = 16,
+SUUPWM---------,length = 16,
+SFGPEWAH-------,length = 14,
+SHGPEWAH-------,length = 14,
+SNGPEWAH-------,length = 14,
+SUGPEWAH-------,length = 14,
+SFGPEVEE-------,length = 13,
+SHGPEVEE-------,length = 13,
+SNGPEVEE-------,length = 13,
+SUGPEVEE-------,length = 13,
+SNGPUUMRSS-----,length = 14,
+SNGPUUMRSS-----,length = 14,
+SFGPUU---------,length = 14,
+SHGPUU---------,length = 14,
+SNGPUU---------,length = 14,
+SUGPUU---------,length = 14,
+GFCPBWF--------,length = 14,
+GFCPBWDP-------,length = 16,Space in middle
+GHCPBWDP-------,length = 16,Space in middle
+GNCPBWDP-------,length = 16,Space in middle
+GUCPBWDP-------,length = 16,Space in middle
+GFCPBWDTF------,length = 16,
+GHCPBWDTF------,length = 16,
+GNCPBWDTF------,length = 16,
+GUCPBWDTF------,length = 16,
+GFCPBOAEF------,length = 14,
+W-A-OS---------,length = 21,"BLSN: ":" should be ";"
+W-A-PSS--------,length = 14,
+SUGPUCEC-------,length = 15,"V" should be "U" in affiliation (char 2)"
+# Need "P" in 4th Char
+GHCPMGLBGK-----,"Needs "P",
+GHCPMGLBGS-----,"Needs "P",
+GFCPMGLBGF-----,"Needs "P",
+GFCPMOLDY------,"Needs "P",
+GHCPMOLDT------,"Needs "P",
+GNCPMOLDY------,"Needs "P",
+GUCPMOLDY------,"Needs "P",
+GFCPMOLDO------,"Needs "P",
+GHCPMOLDR------,"Needs "P",
+GNCPMOLDO------,"Needs "P",
+GUCPMOLDO------,"Needs "P",
+# "*"'s in ID
+SFGPEWAH--*****,Air Defence Gun Heavy F,SFGPEWAH-
+SHGPEWAH--*****,Air Defence Gun Heavy H,SHGPEWAH-
+SNGPEWAH--*****,Air Defence Gun Heavy N,SNGPEWAH-
+SUGPEWAH--*****,Air Defence Gun Heavy U,SUGPEWAH-
+SFGPEVEE--*****,Multi-Functional Earthmover/Digger F,SFGPEVEE**
+SHGPEVEE--*****,Multi-Functional Earthmover/Digger H,SHGPEVEE**
+SNGPEVEE--*****,Multi-Functional Earthmover/Digger N,SNGPEVEE**
+SUGPEVEE--*****,Multi-Functional Earthmover/Digger U,SUGPEVEE**
+SNGPUUMRSS*****,Military Intelligence Surveillance Sensor SCM N,SNGPUMRSS*
+SFGPUS----*****,Supply Materiel (Stock) F,SFGPUS**--
+SHGPUS----*****,Supply Materiel (Stock) H,SHGPUS**--
+SNGPUS----*****,Supply Materiel (Stock) N,SNGPUS**--
+SUGPUS----*****,Supply Materiel (Stock) U,SUGPUS**--
+GFCPBWF---*****,Nuclear Detonations Friendly Planned or On-Order F,GFCABWF--
+GFCPBOGB--*****,General Obstacle Belt,G*CPBOGB--
+GFCPBOGL--*****,General Obstacle Line,G*CPBOGL--
+GFCPBOGZ--*****,General Obstacle Zone,G*CPBOGZ--
+GFCPBOA---*****,Abatis,G*CPBOA---
+GFCPBOATO-*****,Antitank Ditch Complete,G*CPBOATO-
+GFCPBOATM-*****,Antitank Ditch Reinforced with Antitank Mines,G*CPBOATM-
+GFCPBOATW-*****,Antitank Wall,G*CPBOATW-
+GFCPBOAIL-*****,Minefield - Antipersonnel Mines,G*CPBOAIL-
+GFCPBOAIN-*****,Minefield - Antitank,G*CPBOAIN-
+GFCPBOAIG-*****,Minefield - Antitank with Gap,G*CPBOAIG-
+GFCPBOAIC-*****,Minefield - Completed,G*CPBOAIC-
+GFCPBOAV--*****,Minefield - Executed Volcano,G*CPBOAV--
+GFCPBOAIP-*****,Minefield - Planned,G*CABOAIP-
+GFCPBOAIH-*****,Minefield - Antipersonnel Reinforced with Scatterable with Self-Destruct,G*C*BOAIH-
+W*A*CC----*****,Clear Sky,W*A*CC----
+W*A*CS----*****,Scattered Sky,W*A*CS----
+W*A*CB----*****,Broken Sky,W*A*CB----
+W*A*CW----*****,Overcast with Breaks,W*A*CW----
+W*A*CO----*****,Overcast Coverage,W*A*CO----
+W*A*CP----*****,Sky Obscured Or Partially Obscured,W*A*CP----
+W*A*ICL---*****,Light Clear Icing,W*A*ICL---
+W*A*ICM---*****,Moderate Clear Icing,W*A*ICM---
+W*A*TS----*****,Severe Clear Icing,W*A*TS----
+W*A*IRL---*****,Light Rime Icing,W*A*IRL---
+W*A*IRM---*****,Moderate Rime Icing,W*A*IRM---
+W*A*IRS---*****,Severe Rime Icing,W*A*IRS---
+W*A*IML---*****,Light Mixed Icing,W*A*IML---
+W*A*IMM---*****,Moderate Mixed Icing,W*A*IMM---
+W*A*IMS---*****,Severe Mixed Icing,W*A*IMS---
+W*A*OS----*****,Blowing Snow (BLSN),BLSN: W*A*
+W*A*OF----*****,Fog-sky Obscured,W*A*OF----
+W*A*OFF---*****,Freezing Fog (FZFG),W*A*OFF---
+W*A*OT----*****,Dust or Sand Storm,W*A*OT----
+W*A*OD----*****,Dust Devil,W*A*OD----
+W*A*OK----*****,Smoke,W*A*OK----
+W*A*OH----*****,Haze,W*A*OH----
+W*A*OB----*****,Blowing Dust Or Sand,W*A*OB----
+W*A*PR----*****,Rain (RA),W*A*PR----
+W*A*PRS---*****,Rain Showers-light,W*A*PRS---
+W*A*PRF---*****,Freezing Rain-moderate Heavy,W*A*PRF---
+W*A*PRD---*****,Drizzle (DZ),W*A*PRD---
+W*A*PRDF--*****,Freezing Drizzle (FZDZ),W*A*PRDF--
+W*A*PS----*****,Snow (SN),W*A*PS----
+W*A*PSS---*****,Snow Showers,W*A*PSS---
+W*A*PSG---*****,Snow Grains (SG),W*A*PSG---
+W*A*PH----*****,Hail APP6,W*A*PH----
+W*A*PI----*****,Ice Pellets (IP),W*A*PI----
+W*A*PC----*****,Ice Crystals (IC),W*A*PC----
+W*A*PL----*****,Low Pressure Centre,W*A*PL----
+W*A*PH----*****,High Pressure Centre,W*A*PH----
+W*A*ST----*****,Thunderstorm (TS),W*A*ST----
+W*A*STR---*****,Placeholder Thunderstorm and Rain,W*A*STR---
+W*A*STF---*****,Funnel Cloud (tornado Waterspout),W*A*STF---
+W*A*STL---*****,Lightning,W*A*STL---
+W*A*SST---*****,Tropical Storm,W*A*SST---
+W*A*SSH---*****,Hurricane Typhoon,W*A*SSH---
+W*A*TL----*****,Light Turbulence,W*A*TL----
+W*A*TS----*****,Severe Turbulence,W*A*TS----
+W*A*TM----*****,Moderate Turbulence,W*A*TM----
+W*A*TE----*****,Extreme Turbulence,W*A*TE----
+W*A*W-----*****,Placeholder Wind Barb,W*A*W-----
+W*A*PFC---*****,Cold Front,W*A*PFC---
+W*A*FI----*****,Instrument Ceiling,W*A*FI----
+W*A*WJ----*****,Jet Stream,W*A*WJ----
+W*A*PFO---*****,Occluded Front,W*A*PFO---
+W*A*PXR---*****,Placeholder Ridge Line,W*A*PXR---
+W*A*PXS---*****,Placeholder Squall Line,W*A*PXS---
+W*A*PXT---*****,Placeholder Trough Line,W*A*PXT---
+W*A*PFS---*****,Stationary Front,W*A*PFS---
+W*A*PFCU--*****,Upper Cold Front,W*A*PFCU--
+W*A*PFWU--*****,Upper Warm Front,W*A*PFWU--
+W*A*FV----*****,Visual Ceiling,***********BAD REP RULE********
+W*A*PFW---*****,Warm Front,W*A*PFW---
diff --git a/test/TestReproData/Mil2525CErrorsPre10.2.2.csv b/test/TestReproData/Mil2525CErrorsPre10.2.2.csv
new file mode 100644
index 0000000..9f1bae2
--- /dev/null
+++ b/test/TestReproData/Mil2525CErrorsPre10.2.2.csv
@@ -0,0 +1,57 @@
+# Mil2525C Style File Data Errors pre-10.2.2
+# File: Mil2525CErrorsPre10.2.2.csv
+# SIDC Issue Notes
+#
+SFGPEVCTL-*****,1,Does not display,Symbol Dictionary,Could Not Repro,WAR.GRDTRK.EQT.GRDVEH.CVLVEH.TRTRLF.SMAL,S*G*EVCTL-*****,SMALL/LIGHT BOX TRAILER
+SHGPEVCTL-*****,1,Does not display,Symbol Dictionary,Could Not Repro,WAR.GRDTRK.EQT.GRDVEH.CVLVEH.TRTRLF.SMAL,S*G*EVCTL-*****,SMALL/LIGHT BOX TRAILER
+SNGPEVCTL-*****,1,Does not display,Symbol Dictionary,Could Not Repro,WAR.GRDTRK.EQT.GRDVEH.CVLVEH.TRTRLF.SMAL,S*G*EVCTL-*****,SMALL/LIGHT BOX TRAILER
+SUGPEVCTL-*****,1,Does not display,Symbol Dictionary,Could Not Repro,WAR.GRDTRK.EQT.GRDVEH.CVLVEH.TRTRLF.SMAL,S*G*EVCTL-*****,SMALL/LIGHT BOX TRAILER
+SFGPUUMSEA*****,2,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.ARMWVH,S*G*UUMSEA*****,ARMORED WHEELED VEHICLE
+SFGPUUMSEA*****,2,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.ARMWVH,S*G*UUMSEA*****,ARMORED WHEELED VEHICLE
+SFGPUUMSEA*****,2,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.ARMWVH,S*G*UUMSEA*****,ARMORED WHEELED VEHICLE
+SFGPUUMSEA*****,2,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.ARMWVH,S*G*UUMSEA*****,ARMORED WHEELED VEHICLE
+SFGPUSAW--*****,3,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR,S*G*USAW--*****,MORALE
+SHGPUSAW--*****,3,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR,S*G*USAW--*****,MORALE
+SNGPUSAW--*****,3,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR,S*G*USAW--*****,MORALE
+SUGPUSAW--*****,3,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR,S*G*USAW--*****,MORALE
+SFGPUSAWT-*****,4,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.CRP,S*G*USAWT-*****,MWR Theater
+SHGPUSAWT-*****,4,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.CRP,S*G*USAWT-*****,MWR Theater
+SNGPUSAWT-*****,4,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.CRP,S*G*USAWT-*****,MWR Theater
+SUGPUSAWT-*****,4,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.CRP,S*G*USAWT-*****,MWR Theater
+SFGPUSAWC-*****,5,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.THT,S*G*USAWC-*****,MWR Corps
+SHGPUSAWC-*****,5,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.THT,S*G*USAWC-*****,MWR Corps
+SNGPUSAWC-*****,5,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.THT,S*G*USAWC-*****,MWR Corps
+SUGPUSAWC-*****,5,Does not display,Symbol Dictionary,Missing,WAR.GRDTRK.UNT.CSS.ADMIN.MWR.THT,S*G*USAWC-*****,MWR Corps
+OFIPR-----*****,6,Does not display,Symbol Dictionary,Could Not Repro,EMS.INCDNT.CVDIS.DISPOP,O*I*R----*****,CIVIL DISPLACED
+OHIPR-----*****,6,Does not display,Symbol Dictionary,Could Not Repro,EMS.INCDNT.CVDIS.DISPOP,O*I*R----*****,CIVIL DISPLACED
+OUIPR-----*****,6,Does not display,Symbol Dictionary,Could Not Repro,EMS.INCDNT.CVDIS.DISPOP,O*I*R----*****,CIVIL DISPLACED
+ONIPR-----*****,6,Does not display,Symbol Dictionary,Could Not Repro,EMS.INCDNT.CVDIS.DISPOP,O*I*R----*****,CIVIL DISPLACED
+WOS-HPBA--P----,7,Does not display,Symbol Dictionary,Missing,EMS.INFSTR.TSP.ANCRG,WOS-HPBA--P----,SHIP ANCHORAGE
+WAS-GNW-SWP----,8,Does not display,Symbol Dictionary,Missing,METOC.AMPHC.STOG.WOSMIC.SUFWET,WAS-GNW-SWP----,SURFACE WET
+WAS-GSSCH-P----,9,Does not display,Symbol Dictionary,Missing,METOC.AMPHC.STOG.WSMIC.CSNALH,WAS-GSSCH-P---,COMPACT OR WET SNOW
+WAS-GSSCL-P----,10,Does not display,Symbol Dictionary,Missing,METOC.AMPHC.STOG.WSMIC.CWSNLH,WAS-GSSCL-P----,COMPACT OR WET SNOW
+WAS-GSSLH-P----,11,Does not display,Symbol Dictionary,Missing,METOC.AMPHC.STOG.WSMIC.LDSALH,WAS-GSSLH-P----,LOOSE DRY SNOW
+WAS-WSFGFOP----,12,Does not display,Symbol Dictionary,Missing,METOC.AMPHC.WTH.FG.FZSNV,WAS-WSFGFOP----,"FOG - FREEZING, SKY NOT VISIBLE"
+WAS-WSFGFVP----,13,Does not display,Symbol Dictionary,Missing,METOC.AMPHC.WTH.FG.FZSV,WAS-WSFGFVP----,"FOG - FREEZING, SKY VISIBLE"
+WAS-WST-LVP----,14,Does not display,Symbol Dictionary,Missing,METOC.AMPHC.WTH.TROPLV,WAS-WST-LVP----,TROPOPAUSE LEVEL
+WOS-HALH--P----,15,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.ATN.LITHSE,WOS-HALH--P----,LIGHTHOUSE
+WOS-HABP--P----,16,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.ATN.PRH1.PRH2,WOS-HABP--P----,PERCHES/STAKES
+WO-DHCF----L---,17,Does not display,Symbol Dictionary,(“L--” misplaced),METOC.OCA.HYDGRY.CSTHYD.FSH1.FSH2,WO-DHCF----L---,FORESHORE
+WO-DHCF-----A--,18,Does not display,Unknown,May be a bug in Runtime if ID value is repeated/same,METOC.OCA.HYDGRY.CSTHYD.FSH1.FSH3,WO-DHCF-----A--,FORESHORE
+WOS-HHDF--P----,19,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.DANHAZ.FLGRD1.FLGRD2,WOS-HHDF--P----,FOUL GROUND
+WOS-HHDR---L---,20,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.DANHAZ.REEF,WOS-HHDR---L---,REEF Line
+WOS-HPM-R-P----,21,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.PRTHBR.FAC.LNDRNG,WOS-HPM-R-P----,LANDING RING
+WO-DHPMO---L---,22,Does not display,Symbol Dictionary,“L--” misplaced,METOC.OCA.HYDGRY.PRTHBR.FAC.OSLF2,WO-DHPMO---L---,OFFSHORE Line
+WO-DHPMO---A---,23,Does not display,Unknown,May be a bug in Runtime if ID value is repeated/same,METOC.OCA.HYDGRY.PRTHBR.FAC.OSLF3,WO-DHPMO---A--,OFFSHORE
+WOS-HPBA--P----,24,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.PRTHBR.PRT.ANCRG1,WOS-HPBA--P----,ANCHORAGE
+WOS-TCCTG-P----,25,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.TDECUR.TDEG,WOS-TCCTG-P----,TIDE GAUGE
+WO-DMCA----L---,26,Does not display,Symbol Dictionary,Missing,METOC.OCA.MMD.SUBCBL,WO-DMCA----L---,SUBMARINE CABLE
+WO-DHPBA---L---,27,Does not display,Symbol Dictionary,“L--” misplaced,,WO-DHPBA---L---,Anchorage Line
+SHGPUUACRW-----,28,Does not display with GetSymbolImage,Style File,Bad Symbol (Hostile Only),WAR.GRDTRK.UNT.CS.CBRN.CML.RECON.WARMVH,SHGPUUACRW -----,
+SFGPUUMSEJ-----,29,Symbol Lines,Style File,Minor-wavy lines extend just outside frame,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.JMG,S*G*UUMSEJ-----,Note: look fine in style file
+SHGPUUMSEJ-----,29,Symbol Lines,Style File,Minor-wavy lines extend just outside frame,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.JMG,S*G*UUMSEJ-----,Note: look fine in style file
+SUGPUUMSEJ-----,29,Symbol Lines,Style File,Minor-wavy lines extend just outside frame,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.JMG,S*G*UUMSEJ-----,Note: look fine in style file
+SNGPUUMSEJ-----,29,Symbol Lines,Style File,Minor-wavy lines extend just outside frame,WAR.GRDTRK.UNT.CS.MILINT.SIGINT.ECW.JMG,S*G*UUMSEJ-----,Note: look fine in style file
+WOS-HHDR--P----,30,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.DANHAZ.REEF,WOS-HHDR--P----,REEF Point
+WO-DHPMO--P----,31,Does not display,Symbol Dictionary,Missing,METOC.OCA.HYDGRY.PRTHBR.FAC.OSLF,WO-DHPMO--P----,OFFSHORE Point
+WA-DBAMV--P----,32,Does not display,StyleFile,Bad Symbol Rep,METOC.AMPHC.BDAWTH.MVFR,WA-DBAMV--P----,Bounded Area VFR