Revision: 5011
          http://sourceforge.net/p/jump-pilot/code/5011
Author:   michaudm
Date:     2016-09-10 09:49:59 +0000 (Sat, 10 Sep 2016)
Log Message:
-----------
Improve SridLookupTable and use nw SRSInfo class

Modified Paths:
--------------
    core/trunk/src/org/openjump/core/ccordsys/utils/SridLookupTable.java

Modified: core/trunk/src/org/openjump/core/ccordsys/utils/SridLookupTable.java
===================================================================
--- core/trunk/src/org/openjump/core/ccordsys/utils/SridLookupTable.java        
2016-09-10 09:47:35 UTC (rev 5010)
+++ core/trunk/src/org/openjump/core/ccordsys/utils/SridLookupTable.java        
2016-09-10 09:49:59 UTC (rev 5011)
@@ -4,11 +4,12 @@
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.text.Normalizer;
-import java.util.Arrays;
 import java.util.Scanner;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.openjump.core.ccordsys.utils.SRSInfo.Unit;
+
 /**
  * A class to lookup in srid.txt.
  * Can find the srid, the name and/or the unit from the code or the name
@@ -20,103 +21,99 @@
             
.compile("<([^<>]*)>\\s*;\\s*<([^<>]*)>\\s*;\\s*\\[([^\\[\\]]*)\\]");
 
     /** Test the class*/
-    public static void main(String[] args) throws UnsupportedEncodingException 
{
-        System.out.println("4326       -> " + 
Arrays.toString(getSrsAndUnitFromCode("4326")));
-        System.out.println("WGS 84     -> " + 
Arrays.toString(getSrsAndUnitFromName("WGS 84")));
-        System.out.println("LAMB93     -> " + 
Arrays.toString(getSrsAndUnitFromCode("LAMB93")));
-        System.out.println("Lambert 93 -> " + 
Arrays.toString(getSrsAndUnitFromName("Lambert 93")));
-        System.out.println("Geoportail - Reunion -> " + 
Arrays.toString(getSrsAndUnitFromName("Geoportail - Reunion")));
+    public static void main(String[] args) {
+        System.out.println("4326       -> " + getSrsAndUnitFromCode("4326"));
+        System.out.println("WGS 84     -> " + getSrsAndUnitFromName("WGS 84"));
+        System.out.println("LAMB93     -> " + getSrsAndUnitFromCode("LAMB93"));
+        System.out.println("Lambert 93 -> " + getSrsAndUnitFromName("Lambert 
93"));
+        System.out.println("Geoportail - Reunion -> " + 
getSrsAndUnitFromName("Geoportail - Reunion"));
         System.out.println("4326       -> " + getSrsNameFromCode("4326"));
         System.out.println("WGS 84     -> " + getSrsCodeFromName("WGS 84"));
         System.out.println("4326       -> " + getUnitFromCode("4326"));
         System.out.println("WGS 84     -> " + getUnitFromName("WGS 84"));
     }
 
-    private static Scanner getScanner() throws UnsupportedEncodingException {
-        InputStream is = ProjUtils.class.getResourceAsStream("srid.txt");
-        InputStreamReader isr = new InputStreamReader(is, "UTF-8");
-        Scanner scanner = new Scanner(isr);
-        scanner.useDelimiter("\\n");
+    private static Scanner getScanner() {
+        Scanner scanner = null;
+        try {
+            InputStream is = ProjUtils.class.getResourceAsStream("srid.txt");
+            InputStreamReader isr = new InputStreamReader(is, "UTF-8");
+            scanner = new Scanner(isr);
+            scanner.useDelimiter("\\n");
+        } catch(UnsupportedEncodingException e) {
+            // It is safe to use UTF-8
+        }
         return scanner;
     }
 
-    public static String[] getSrsAndUnitFromCode(String code) throws 
UnsupportedEncodingException {
-        Scanner scanner = getScanner();
-        String[] srsAndUnit = null;
-        try {
+    public static SRSInfo getSrsAndUnitFromCode(String code) {
+        SRSInfo srsInfo = new SRSInfo();
+        try (Scanner scanner = getScanner()) {
             while (scanner.hasNextLine()) {
                 String line = scanner.nextLine().trim();
                 Matcher m = pattern.matcher(line);
                 if (m.matches()) {
                     if (m.group(1).equals(code)) {
-                        srsAndUnit = new String[]{m.group(1), m.group(2), 
m.group(3)};
+                        
srsInfo.setCode(m.group(1)).setDescription(m.group(2)).setUnit(m.group(3));
                     }
                 }
             }
-        } finally {
-            scanner.close();
-            return srsAndUnit;
+            return srsInfo;
         }
     }
 
-    public static String[] getSrsAndUnitFromName(String name) throws 
UnsupportedEncodingException {
-        Scanner scanner = getScanner();
-        String[] srsAndUnit = null;
-        try {
+    public static SRSInfo getSrsAndUnitFromName(String name) {
+        SRSInfo srsInfo = new SRSInfo();
+        try (Scanner scanner = getScanner()) {
             while (scanner.hasNextLine()) {
                 String line = scanner.nextLine().trim();
                 Matcher m = pattern.matcher(line);
                 if (m.matches()) {
                     if (normalize(m.group(2)).equals(normalize(name))) {
-                        srsAndUnit = new String[]{m.group(1), m.group(2), 
m.group(3)};
+                        
srsInfo.setCode(m.group(1)).setDescription(m.group(2)).setUnit(m.group(3));
                     }
                 }
             }
-        } finally {
-            scanner.close();
-            return srsAndUnit;
+            return srsInfo;
         }
     }
 
-    public static String[] getSrsAndUnitFromCodeOrName(String codeOrName) 
throws UnsupportedEncodingException {
-        Scanner scanner = getScanner();
-        String[] srsAndUnit = null;
-        try {
+    public static SRSInfo getSrsAndUnitFromCodeOrName(String codeOrName) {
+        SRSInfo srsInfo = new SRSInfo();
+        try (Scanner scanner = getScanner()) {
             while (scanner.hasNextLine()) {
                 String line = scanner.nextLine().trim();
                 Matcher m = pattern.matcher(line);
                 if (m.matches()) {
                     if (m.group(1).equals(codeOrName) ||
                             
normalize(m.group(2)).equals(normalize(codeOrName))) {
-                        srsAndUnit = new String[]{m.group(1), m.group(2), 
m.group(3)};
+                        
srsInfo.setCode(m.group(1)).setDescription(m.group(2)).setUnit(m.group(3));
                     }
                 }
             }
-        } finally {
-            scanner.close();
-            return srsAndUnit;
+            return srsInfo;
         }
     }
 
 
-    public static String getSrsCodeFromName(String name) throws 
UnsupportedEncodingException {
-        String[] srsAndUnit = getSrsAndUnitFromName(name);
-        return srsAndUnit == null ? null : srsAndUnit[0];
+    public static String getSrsCodeFromName(String name) {
+        SRSInfo srsInfo = getSrsAndUnitFromName(name);
+        return srsInfo == null ? null : srsInfo.getCode();
     }
 
-    public static String getSrsNameFromCode(String code) throws 
UnsupportedEncodingException {
-        String[] srsAndUnit = getSrsAndUnitFromCode(code);
-        return srsAndUnit == null ? null : srsAndUnit[1];
+    public static String getSrsNameFromCode(String code) {
+        SRSInfo srsInfo = getSrsAndUnitFromCode(code);
+        return srsInfo == null ? null : srsInfo.getDescription();
     }
 
-    public static String getUnitFromName(String name) throws 
UnsupportedEncodingException {
-        String[] srsAndUnit = getSrsAndUnitFromName(name);
-        return srsAndUnit == null ? null : srsAndUnit[2];
+    public static Unit getUnitFromName(String name) {
+        SRSInfo srsInfo = getSrsAndUnitFromName(name);
+        return srsInfo == null ? null : srsInfo.getUnit();
     }
 
-    public static String getUnitFromCode(String code) throws 
UnsupportedEncodingException {
-        String[] srsAndUnit = getSrsAndUnitFromCode(code);
-        return srsAndUnit == null ? null : srsAndUnit[2];
+    public static Unit getUnitFromCode(String code) {
+        SRSInfo srsInfo = getSrsAndUnitFromCode(code);
+        return srsInfo == null ? null : srsInfo.getUnit();
     }
 
     /**


------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to