OSDN Git Service

getCurrentDirectory()
authorhaya4 <hayashi.yuu@gmail.com>
Sat, 19 Dec 2020 00:25:33 +0000 (09:25 +0900)
committerhaya4 <hayashi.yuu@gmail.com>
Sat, 19 Dec 2020 00:25:33 +0000 (09:25 +0900)
src/main/java/osm/jp/gpx/AppParameters.java
src/main/java/osm/jp/gpx/ElementMapTRKPT.java
src/main/java/osm/jp/gpx/GpxFolder.java
src/main/java/osm/jp/gpx/ImgFile.java
src/main/java/osm/jp/gpx/ImgFolder.java
src/main/java/osm/jp/gpx/ImportPicture.java
src/main/java/osm/jp/hayashi/tools/files/Directory.java [new file with mode: 0644]
src/test/java/osm/jp/gpx/AppParametersTest.java
src/test/java/osm/jp/gpx/ElementMapTRKSEGTest.java
src/test/java/osm/jp/hayashi/tools/files/DirectoryTest.java [new file with mode: 0644]

index 8e7c610..62b06a9 100644 (file)
@@ -1,12 +1,17 @@
 package osm.jp.gpx;
 
-import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Properties;
 
+import osm.jp.hayashi.tools.files.Directory;
+
 @SuppressWarnings("serial")
 public class AppParameters extends Properties {
     static final String FILE_PATH = "AdjustTime.ini";
@@ -58,32 +63,30 @@ public class AppParameters extends Properties {
     //public boolean param_GpxSplit = false;
     //public boolean param_GpxReuse = false;
 
-    File file;
+    Path file;
 
-    public AppParameters() throws FileNotFoundException, IOException {
-        super();
-        this.file = new File(FILE_PATH);
-        syncFile();
+    public AppParameters() throws FileNotFoundException, IOException, URISyntaxException {
+        this(FILE_PATH);
     }
 
-    public AppParameters(Properties defaults) throws FileNotFoundException, IOException {
+    public AppParameters(Properties defaults) throws FileNotFoundException, IOException, URISyntaxException {
         super(defaults);
-        this.file = new File(FILE_PATH);
+        this.file = Paths.get(FILE_PATH);
         syncFile();
     }
 
-    public AppParameters(String iniFileName) throws FileNotFoundException, IOException {
+    public AppParameters(String iniFileName) throws FileNotFoundException, IOException, URISyntaxException {
         super();
-        this.file = new File(iniFileName);
+        this.file = Paths.get(iniFileName);
         syncFile();
     }
 
-    private void syncFile() throws FileNotFoundException, IOException {
+    private void syncFile() throws FileNotFoundException, IOException, URISyntaxException {
         boolean update = false;
 
-        if (this.file.exists()) {
+        if (Files.exists(this.file)) {
             // ファイルが存在すれば、その内容をロードする。
-            this.load(new FileInputStream(file));
+            this.load(new FileInputStream(file.toFile()));
         }
         else {
             update = true;
@@ -94,7 +97,7 @@ public class AppParameters extends Properties {
         String valueStr = this.getProperty(IMG_SOURCE_FOLDER);
         if (valueStr == null) {
             update = true;
-            this.setProperty(IMG_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
+            this.setProperty(IMG_SOURCE_FOLDER, Directory.getCurrentDirectory().toString());
         }
 
         //------------------------------------------------
@@ -102,7 +105,7 @@ public class AppParameters extends Properties {
         valueStr = this.getProperty(GPX_SOURCE_FOLDER);
         if (valueStr == null) {
             update = true;
-            this.setProperty(GPX_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
+            this.setProperty(GPX_SOURCE_FOLDER, Directory.getCurrentDirectory().toString());
         }
 
         //------------------------------------------------
@@ -118,7 +121,7 @@ public class AppParameters extends Properties {
         valueStr = this.getProperty(IMG_OUTPUT_FOLDER);
         if (valueStr == null) {
             update = true;
-            this.setProperty(IMG_OUTPUT_FOLDER, (new File(".")).getAbsolutePath());
+            this.setProperty(IMG_OUTPUT_FOLDER, Directory.getCurrentDirectory().toString());
         }
 
         //------------------------------------------------
@@ -225,17 +228,16 @@ public class AppParameters extends Properties {
             update = true;
             setProperty(AppParameters.GPX_REUSE, Boolean.toString(false));
        }
-       
         
         if (update) {
             // ・ファイルがなければ新たに作る
             // ・項目が足りない時は書き足す。
-            this.store(new FileOutputStream(this.file), "defuilt settings");
+            this.store(new FileOutputStream(this.file.toFile()), "defuilt settings");
         }
     }
 
     public void store() throws FileNotFoundException, IOException {
-        this.store(new FileOutputStream(this.file), "by AdjustTime");
+        this.store(new FileOutputStream(this.file.toFile()), "by AdjustTime");
     }
     
     public void printout() {
@@ -285,13 +287,13 @@ public class AppParameters extends Properties {
     
     /**
      * AppParameters.IMG_SOURCE_FOLDER
-     * @return new File(getProperty(AppParameters.IMG_SOURCE_FOLDER));
+     * @return new Path(getProperty(AppParameters.IMG_SOURCE_FOLDER));
      */
-    public File getImgSourceFolder() {
-       return new File(getProperty(AppParameters.IMG_SOURCE_FOLDER));
+    public Path getImgSourceFolder() {
+       return Paths.get(getProperty(AppParameters.IMG_SOURCE_FOLDER));
     }
     
-    public File getGpxSourceFolder() {
+    public Path getGpxSourceFolder() {
        String str = getProperty(AppParameters.GPX_SOURCE_FOLDER);
        if (str == null) {
                return null;
@@ -299,7 +301,7 @@ public class AppParameters extends Properties {
        if (str.isEmpty()) {
                return null;
        }
-       return new File(str);
+       return Paths.get(str);
     }
 
     /**
index 2599ccd..82b538f 100644 (file)
@@ -77,28 +77,33 @@ public class ElementMapTRKPT extends TreeMap<Date, TagTrkpt> {
      * @throws ParseException
      */
     private TagTrkpt getTrkpt(Date jptime) throws ParseException {
-       Date keyTime = null;
-       for (Date key : this.keySet()) {
-            int flag = jptime.compareTo(key);
-            if (flag < 0) {
-                if (keyTime != null) {
-                    return this.get(keyTime);
+               try {
+               Date keyTime = null;
+               for (Date key : this.keySet()) {
+                int flag = jptime.compareTo(key);
+                if (flag < 0) {
+                    if (keyTime != null) {
+                        return this.get(keyTime);
+                    }
+                    return null;
                 }
-                return null;
-            }
-            else if (flag == 0) {
-                return this.get(key);
-            }
-            else if (flag > 0) {
-                keyTime = new Date(key.getTime());
-            }
-        }
-        if (keyTime != null) {
-            if (Math.abs(keyTime.getTime() - jptime.getTime()) <= OVER_TIME_LIMIT) {
-                return this.get(keyTime);
-            }
-        }
-        return null;
+                else if (flag == 0) {
+                    return this.get(key);
+                }
+                else if (flag > 0) {
+                    keyTime = new Date(key.getTime());
+                }
+               }
+               if (keyTime != null) {
+                   if (Math.abs(keyTime.getTime() - jptime.getTime()) <= OVER_TIME_LIMIT) {
+                       return this.get(keyTime);
+                   }
+               }
+               return null;
+               }
+               catch (Exception e) {
+                       throw new ParseException(e.toString(), 0);
+               }
     }
     
     /**
index 9b6bcaa..4a731ea 100644 (file)
@@ -22,7 +22,7 @@ public class GpxFolder extends ArrayList<GpxFile> {
                this.params = params;
 
                File[] gpxfiles;
-               File gpxDir = params.getGpxSourceFolder();
+               File gpxDir = params.getGpxSourceFolder().toFile();
        if (gpxDir == null) {
                // GPXファイルまたはディレクトリが存在しません。('%s')
                throw new FileNotFoundException(String.format(ImportPicture.i18n.getString("msg.100"), "null"));
index 1e21d54..bd67b6b 100644 (file)
@@ -60,6 +60,20 @@ public class ImgFile extends File {
         return ((name != null) && name.toUpperCase().endsWith(".JPG"));
     }
     
+    /**
+     * 
+     * @param params :AppParameters
+     * @param delta            :long
+     * @param gpxFile  :GpxFile
+     * @param outDir   :File
+     * @return
+     * @throws ParseException
+     * @throws ImageReadException
+     * @throws IOException
+     * @throws ImageWriteException
+     * @throws ParserConfigurationExceptionGpxFile
+     * @throws SAXException
+     */
     public boolean procImageFile(AppParameters params, long delta, GpxFile gpxFile, File outDir) throws ParseException, ImageReadException, IOException, ImageWriteException, ParserConfigurationException, SAXException {
        //ElementMapTRKSEG mapTRKSEG = gpxFile.parse();
        boolean exifWrite = params.isImgOutputExif();
index 66879d9..e94fea3 100644 (file)
@@ -2,6 +2,7 @@ package osm.jp.gpx;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Path;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -17,28 +18,28 @@ import org.xml.sax.SAXException;
 public class ImgFolder extends ArrayList<ImgFile> {
     private static final long serialVersionUID = -1137199371724546343L;
     AppParameters params;
-    File imgDir;
-    File outDir;
+    Path imgDir;
+    Path outDir;
        
        public ImgFolder(AppParameters params) {
                this.params = params;
                imgDir = params.getImgSourceFolder();
-        File[] files = imgDir.listFiles(new ImgFileFilter());
+        File[] files = imgDir.toFile().listFiles(new ImgFileFilter());
         Arrays.sort(files, new FileSort());
         for (File file : files) {
                this.add(new ImgFile(file));
         }
        }
        
-       public void setOutDir(File outDir) {
+       public void setOutDir(Path outDir) {
                this.outDir = outDir;
        }
        
-       public File getOutDir() {
+       public Path getOutDir() {
                return this.outDir;
        }
 
-       public File getImgDir() {
+       public Path getImgDir() {
                return this.imgDir;
        }
        
@@ -63,7 +64,7 @@ public class ImgFolder extends ArrayList<ImgFile> {
         for (ImgFile image : this) {
                try {
                        if (!image.isDone()) {
-                    if(image.procImageFile(params, delta, gpxFile, outDir)) {
+                    if(image.procImageFile(params, delta, gpxFile, outDir.toFile())) {
                        image.setDone(true);
                     }
                        }
index 2c6724d..2904946 100644 (file)
@@ -1,6 +1,14 @@
 package osm.jp.gpx;\r
 \r
-import java.io.*;\r
+import java.io.ByteArrayInputStream;\r
+import java.io.File;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.io.UnsupportedEncodingException;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
 import java.text.DateFormat;\r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
@@ -103,16 +111,18 @@ public class ImportPicture extends Thread {
         // 出力ファイル\r
         // AppParameters.IMG_OUTPUT に置き換え\r
         if (params.isImgOutput()) {\r
-            File outDir = new File(params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));\r
-            if (!outDir.exists()) {\r
+            Path outDir = Paths.get(params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));\r
+            if (!Files.exists(outDir)) {\r
                // 出力ディレクトリが存在しないときは作成する\r
-               outDir.mkdir();\r
+               Files.createDirectories(outDir);\r
             }\r
-            else if (outDir.isFile()) {\r
+            else if (!Files.isDirectory(outDir)) {\r
                // 出力ディレクトリがFILEのときはERROR\r
-               throw new FileNotFoundException(String.format("OUTPUT directory '%s' is a File!", outDir.getAbsolutePath()));\r
+               throw new FileNotFoundException(String.format("OUTPUT directory '%s' is a File!", outDir.toAbsolutePath().toString()));\r
             }\r
-            outDir = new File(outDir, imgFolder.getImgDir().getName());\r
+            outDir = Paths.get(outDir.toAbsolutePath().toString(), imgFolder.getImgDir().getFileName().toString());\r
+            //File f = new File(outDir.toFile(), imgFolder.getImgDir().toFile().getName());\r
+            //outDir = f.toPath();\r
             imgFolder.setOutDir(outDir);\r
         }\r
 \r
@@ -170,7 +180,7 @@ public class ImportPicture extends Thread {
                \r
                 System.out.println("time difference: "+ (delta / 1000) +"(sec)");\r
                 System.out.println("     Target GPX: ["+ gpxFile.getAbsolutePath() +"]");\r
-                System.out.println("           EXIF: "+ (params.isImgOutputExif() ? ("convert to '" + imgFolder.getOutDir().getAbsolutePath() +"'") : "off"));\r
+                System.out.println("           EXIF: "+ (params.isImgOutputExif() ? ("convert to '" + imgFolder.getOutDir().toAbsolutePath() +"'") : "off"));\r
                 System.out.println();\r
 \r
                gpxFile.printinfo();\r
@@ -234,7 +244,7 @@ public class ImportPicture extends Thread {
     }\r
     \r
        public File getImgBaseFile() {\r
-               return new File(imgFolder.getImgDir(), params.getProperty(AppParameters.IMG_BASE_FILE));\r
+               return new File(imgFolder.getImgDir().toFile(), params.getProperty(AppParameters.IMG_BASE_FILE));\r
        }\r
        \r
     static String getShortPathName(File dir, File iFile) {\r
diff --git a/src/main/java/osm/jp/hayashi/tools/files/Directory.java b/src/main/java/osm/jp/hayashi/tools/files/Directory.java
new file mode 100644 (file)
index 0000000..cbf2c8f
--- /dev/null
@@ -0,0 +1,30 @@
+package osm.jp.hayashi.tools.files;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+
+public abstract class Directory {
+
+       public static Path getCurrentDirectory(Class<?> cls) throws URISyntaxException {
+               ProtectionDomain pd = cls.getProtectionDomain();
+               CodeSource cs = pd.getCodeSource();
+               URL location = cs.getLocation();
+               URI uri = location.toURI();
+               Path path = Paths.get(uri);
+               if (!Files.isDirectory(path)) {
+                       return path.getParent();
+               }
+               return path;
+       }
+       
+       public static Path getCurrentDirectory() throws URISyntaxException {
+               return getCurrentDirectory(Directory.class);
+       }
+
+}
index 686a249..c624988 100644 (file)
@@ -6,6 +6,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.nio.channels.FileChannel;
 
 import org.junit.After;
@@ -36,9 +37,9 @@ public class AppParametersTest {
                 String valueStr = params.getProperty(AppParameters.IMG_OUTPUT_ALL);
                 assertFalse(Boolean.getBoolean(valueStr));
             }
-            catch (IOException e) {
+            catch (Exception e) {
                 fail("Exceptionが発生した。");
-            }
+                       }
         }
     }
 
@@ -62,7 +63,7 @@ public class AppParametersTest {
                 String valueStr = params.getProperty(AppParameters.IMG_OUTPUT_ALL);
                 assertTrue(Boolean.valueOf(valueStr));
             }
-            catch (IOException e) {
+            catch (Exception e) {
                 fail("Exceptionが発生した。");
             }
         }
@@ -77,7 +78,7 @@ public class AppParametersTest {
                 String valueStr = newParams.getProperty(AppParameters.IMG_OUTPUT_ALL);
                 assertFalse(Boolean.valueOf(valueStr));
             }
-            catch (IOException e) {
+            catch (Exception e) {
                 fail("Exceptionが発生した。");
             }
         }
@@ -103,7 +104,7 @@ public class AppParametersTest {
                 String valueStr = params.getProperty(AppParameters.IMG_OUTPUT_ALL);
                 assertFalse(Boolean.valueOf(valueStr));
             }
-            catch (IOException e) {
+            catch (Exception e) {
                 fail("Exceptionが発生した。");
             }
         }
@@ -118,7 +119,7 @@ public class AppParametersTest {
                 String valueStr = newParams.getProperty(AppParameters.IMG_OUTPUT_ALL);
                 assertTrue(Boolean.valueOf(valueStr));
             }
-            catch (IOException e) {
+            catch (Exception e) {
                 fail("Exceptionが発生した。");
             }
         }
index f00436d..eadc092 100644 (file)
@@ -2,6 +2,7 @@ package osm.jp.gpx;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.text.ParseException;
 import java.util.Date;
 
@@ -71,7 +72,9 @@ public class ElementMapTRKSEGTest {
             }
             catch (IOException | ParseException | ParserConfigurationException | SAXException e) {
                 fail();
-            }
+            } catch (URISyntaxException e) {
+                fail();
+                       }
         }
         
         @Test
@@ -98,7 +101,9 @@ public class ElementMapTRKSEGTest {
             }
             catch (SAXException e) {
                // 整形されていないXML
-            }
+            } catch (URISyntaxException e) {
+                fail();
+                       }
         }
     }
 }
diff --git a/src/test/java/osm/jp/hayashi/tools/files/DirectoryTest.java b/src/test/java/osm/jp/hayashi/tools/files/DirectoryTest.java
new file mode 100644 (file)
index 0000000..0bb0774
--- /dev/null
@@ -0,0 +1,47 @@
+package osm.jp.hayashi.tools.files;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.*;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class DirectoryTest {
+
+       @BeforeClass
+       public static void setUpBeforeClass() throws Exception {
+       }
+
+       @AfterClass
+       public static void tearDownAfterClass() throws Exception {
+       }
+
+       @Before
+       public void setUp() throws Exception {
+       }
+
+       @After
+       public void tearDown() throws Exception {
+       }
+
+       @Test
+       public void test() {
+               try {
+                       Path path = Directory.getCurrentDirectory();
+                       System.out.print(path.toAbsolutePath().toString());
+            assertThat(path.isAbsolute(), is(true));
+            assertThat(Files.isDirectory(path), is(true));
+            assertThat(Files.exists(path), is(true));
+               }
+               catch (Exception e) {
+                       fail();
+               }
+       }
+
+}