diff --git a/importPicture/src/osm/jp/gpx/ImportPicture.java b/importPicture/src/osm/jp/gpx/ImportPicture.java index aeeab0d..90086cb 100644 --- a/importPicture/src/osm/jp/gpx/ImportPicture.java +++ b/importPicture/src/osm/jp/gpx/ImportPicture.java @@ -113,151 +113,8 @@ */ public static void main(String[] argv) throws Exception { - - String paramFilePath = ((argv.length < 1) ? AppParameters.FILE_PATH : argv[0]); - System.out.println("Param File = '"+ paramFilePath +"'"); ImportPicture obj = new ImportPicture(); - - Date imgtime; - obj.params = new AppParameters(paramFilePath); - - System.out.println(" - param: "+ AppParameters.IMG_TIME +"="+ obj.params.getProperty(AppParameters.IMG_TIME) ); - System.out.println(" - param: "+ AppParameters.IMG_BASE_FILE +"="+ obj.params.getProperty(AppParameters.IMG_BASE_FILE) ); - System.out.println(" - param: "+ AppParameters.GPX_BASETIME +"="+ obj.params.getProperty(AppParameters.GPX_BASETIME) ); - System.out.println(" - param: "+ AppParameters.IMG_SOURCE_FOLDER +"="+ obj.params.getProperty(AppParameters.IMG_SOURCE_FOLDER) ); - System.out.println(" - param: "+ AppParameters.IMG_OUTPUT_FOLDER +"="+ obj.params.getProperty(AppParameters.IMG_OUTPUT_FOLDER) ); - System.out.println(" - param: "+ AppParameters.IMG_OUTPUT +"="+ obj.params.getProperty(AppParameters.IMG_OUTPUT)); - System.out.println(" - param: "+ AppParameters.IMG_OUTPUT_ALL +"="+ obj.param_ImgOutputAll); - System.out.println(" - param: "+ AppParameters.IMG_OUTPUT_EXIF +"= "+ String.valueOf(obj.exif)); - System.out.println(" - param: "+ AppParameters.GPX_SOURCE_FOLDER +"="+ obj.param_GpxSourceFolder); - System.out.println(" - param: "+ AppParameters.GPX_OUTPUT_WPT +"="+ obj.param_GpxOutputWpt); - System.out.println(" - param: "+ AppParameters.GPX_OVERWRITE_MAGVAR +"="+ Complementation.param_GpxOverwriteMagvar); - System.out.println(" - param: "+ AppParameters.GPX_OUTPUT_SPEED +"="+ Complementation.param_GpxOutputSpeed); - System.out.println(" - param: "+ AppParameters.GPX_GPXSPLIT +"="+ obj.param_GpxSplit); - System.out.println(" - param: "+ AppParameters.GPX_NO_FIRST_NODE +"="+ ImportPicture.param_GpxNoFirstNode); - System.out.println(" - param: "+ AppParameters.GPX_REUSE +"="+ obj.param_GpxReuse); - - obj.ex = null; - // argv[0] --> AppParameters.IMG_SOURCE_FOLDER に置き換え - obj.imgDir = new File(obj.params.getProperty(AppParameters.IMG_SOURCE_FOLDER)); - - // 基準時刻(ファイル更新日時 | EXIF撮影日時) - obj.exifBase = (obj.params.getProperty(AppParameters.GPX_BASETIME).equals("EXIF_TIME") ? true : false); - - // 基準時刻ファイルの「更新日時」を使って時刻合わせを行う。 - // argv[1] --> AppParameters.IMG_BASE_FILE に置き換え - imgtime = obj.adjustTime(new File(obj.imgDir, obj.params.getProperty(AppParameters.IMG_BASE_FILE))); - - // 出力ファイル - // argv[3] --> AppParameters.IMG_OUTPUT に置き換え - obj.outDir = new File(obj.params.getProperty(AppParameters.IMG_OUTPUT_FOLDER)); - - // その他のパラメータを読み取る - String paramStr = obj.params.getProperty(AppParameters.GPX_GPXSPLIT); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - obj.param_GpxSplit = true; - } - - paramStr = obj.params.getProperty(AppParameters.GPX_NO_FIRST_NODE); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - ImportPicture.param_GpxNoFirstNode = true; - } - - paramStr = obj.params.getProperty(AppParameters.GPX_REUSE); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - obj.param_GpxReuse = true; - } - - paramStr = obj.params.getProperty(AppParameters.IMG_OUTPUT_ALL); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - obj.param_ImgOutputAll = true; - } - - paramStr = obj.params.getProperty(AppParameters.GPX_OUTPUT_WPT); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - obj.param_GpxOutputWpt = true; - } - - paramStr = obj.params.getProperty(AppParameters.GPX_OVERWRITE_MAGVAR); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - Complementation.param_GpxOverwriteMagvar = true; - } - - paramStr = obj.params.getProperty(AppParameters.GPX_OUTPUT_SPEED); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - Complementation.param_GpxOutputSpeed = true; - } - - paramStr = obj.params.getProperty(AppParameters.GPX_SOURCE_FOLDER); - if (paramStr != null) { - obj.param_GpxSourceFolder = new String(paramStr); - obj.gpxDir = new File(obj.param_GpxSourceFolder); - if (!obj.gpxDir.exists()) { - // GPXファイルまたはディレクトリが存在しません。 - System.out.println("GPXファイルまたはディレクトリが存在しません。('"+ paramStr +"')"); - return; - } - } - else { - obj.gpxDir = obj.imgDir; - } - - // 指定されたディレクトリ内のGPXファイルすべてを対象とする - if (obj.gpxDir.isDirectory()) { - File[] files = obj.gpxDir.listFiles(); - if (files == null) { - // 対象となるGPXファイルがありませんでした。 - System.out.println("対象となるGPXファイルがありませんでした。('"+ obj.gpxDir.getAbsolutePath() +"')"); - return; - } - if (obj.param_ImgOutputAll && (files.length > 1)) { - System.out.println("複数のGPXファイルがあるときには、'IMG.OUTPUT_ALL'オプションは指定できません。"); - return; - } - - java.util.Arrays.sort(files, new java.util.Comparator() { - @Override - public int compare(File file1, File file2){ - return file1.getName().compareTo(file2.getName()); - } - }); - for (File file : files) { - if (file.isFile()) { - String filename = file.getName().toUpperCase(); - if (filename.toUpperCase().endsWith(".GPX")) { - if (!filename.toUpperCase().endsWith("_.GPX") || obj.param_GpxReuse) { - obj.gpxFiles.add(file); - } - } - } - } - } - else { - obj.gpxFiles.add(obj.gpxDir); - } - - paramStr = obj.params.getProperty(AppParameters.IMG_OUTPUT_EXIF); - if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { - obj.exif = true; - } - - String timeStr = obj.params.getProperty(AppParameters.IMG_TIME); - try { - Date t = toUTCDate(timeStr); - obj.delta = t.getTime() - imgtime.getTime(); - } - catch (ParseException e) { - System.out.println("'"+ timeStr +"' の書式が違います("+ TIME_FORMAT_STRING +")"); - return; - } - - obj.start(); - try { - obj.join(); - } catch(InterruptedException end) {} - if (obj.ex != null) { - throw obj.ex; - } + obj.setUp(((argv.length < 1) ? AppParameters.FILE_PATH : argv[0])); } public File gpxDir; @@ -279,7 +136,149 @@ public static final String TIME_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static final String EXIF_DATE_TIME_FORMAT_STRING = "yyyy:MM:dd HH:mm:ss"; - public void setUp() { + public void setUp(String paramFilePath) throws Exception { + System.out.println("Param File = '"+ paramFilePath +"'"); + this.params = new AppParameters(paramFilePath); + + Date imgtime; + + System.out.println(" - param: "+ AppParameters.IMG_TIME +"="+ this.params.getProperty(AppParameters.IMG_TIME) ); + System.out.println(" - param: "+ AppParameters.IMG_BASE_FILE +"="+ this.params.getProperty(AppParameters.IMG_BASE_FILE) ); + System.out.println(" - param: "+ AppParameters.GPX_BASETIME +"="+ this.params.getProperty(AppParameters.GPX_BASETIME) ); + System.out.println(" - param: "+ AppParameters.IMG_SOURCE_FOLDER +"="+ this.params.getProperty(AppParameters.IMG_SOURCE_FOLDER) ); + System.out.println(" - param: "+ AppParameters.IMG_OUTPUT_FOLDER +"="+ this.params.getProperty(AppParameters.IMG_OUTPUT_FOLDER) ); + System.out.println(" - param: "+ AppParameters.IMG_OUTPUT +"="+ this.params.getProperty(AppParameters.IMG_OUTPUT)); + System.out.println(" - param: "+ AppParameters.IMG_OUTPUT_ALL +"="+ this.param_ImgOutputAll); + System.out.println(" - param: "+ AppParameters.IMG_OUTPUT_EXIF +"= "+ String.valueOf(this.exif)); + System.out.println(" - param: "+ AppParameters.GPX_SOURCE_FOLDER +"="+ this.param_GpxSourceFolder); + System.out.println(" - param: "+ AppParameters.GPX_OUTPUT_WPT +"="+ this.param_GpxOutputWpt); + System.out.println(" - param: "+ AppParameters.GPX_OVERWRITE_MAGVAR +"="+ Complementation.param_GpxOverwriteMagvar); + System.out.println(" - param: "+ AppParameters.GPX_OUTPUT_SPEED +"="+ Complementation.param_GpxOutputSpeed); + System.out.println(" - param: "+ AppParameters.GPX_GPXSPLIT +"="+ this.param_GpxSplit); + System.out.println(" - param: "+ AppParameters.GPX_NO_FIRST_NODE +"="+ ImportPicture.param_GpxNoFirstNode); + System.out.println(" - param: "+ AppParameters.GPX_REUSE +"="+ this.param_GpxReuse); + + this.ex = null; + // argv[0] --> AppParameters.IMG_SOURCE_FOLDER に置き換え + this.imgDir = new File(this.params.getProperty(AppParameters.IMG_SOURCE_FOLDER)); + + // 基準時刻(ファイル更新日時 | EXIF撮影日時) + this.exifBase = (this.params.getProperty(AppParameters.GPX_BASETIME).equals("EXIF_TIME") ? true : false); + + // 基準時刻ファイルの「更新日時」を使って時刻合わせを行う。 + // argv[1] --> AppParameters.IMG_BASE_FILE に置き換え + imgtime = this.adjustTime(new File(this.imgDir, this.params.getProperty(AppParameters.IMG_BASE_FILE))); + + // 出力ファイル + // argv[3] --> AppParameters.IMG_OUTPUT に置き換え + this.outDir = new File(this.params.getProperty(AppParameters.IMG_OUTPUT_FOLDER)); + + // その他のパラメータを読み取る + String paramStr = this.params.getProperty(AppParameters.GPX_GPXSPLIT); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + this.param_GpxSplit = true; + } + + paramStr = this.params.getProperty(AppParameters.GPX_NO_FIRST_NODE); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + ImportPicture.param_GpxNoFirstNode = true; + } + + paramStr = this.params.getProperty(AppParameters.GPX_REUSE); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + this.param_GpxReuse = true; + } + + paramStr = this.params.getProperty(AppParameters.IMG_OUTPUT_ALL); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + this.param_ImgOutputAll = true; + } + + paramStr = this.params.getProperty(AppParameters.GPX_OUTPUT_WPT); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + this.param_GpxOutputWpt = true; + } + + paramStr = this.params.getProperty(AppParameters.GPX_OVERWRITE_MAGVAR); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + Complementation.param_GpxOverwriteMagvar = true; + } + + paramStr = this.params.getProperty(AppParameters.GPX_OUTPUT_SPEED); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + Complementation.param_GpxOutputSpeed = true; + } + + paramStr = this.params.getProperty(AppParameters.GPX_SOURCE_FOLDER); + if (paramStr != null) { + this.param_GpxSourceFolder = new String(paramStr); + this.gpxDir = new File(this.param_GpxSourceFolder); + if (!this.gpxDir.exists()) { + // GPXファイルまたはディレクトリが存在しません。 + System.out.println("GPXファイルまたはディレクトリが存在しません。('"+ paramStr +"')"); + return; + } + } + else { + this.gpxDir = this.imgDir; + } + + // 指定されたディレクトリ内のGPXファイルすべてを対象とする + if (this.gpxDir.isDirectory()) { + File[] files = this.gpxDir.listFiles(); + if (files == null) { + // 対象となるGPXファイルがありませんでした。 + System.out.println("対象となるGPXファイルがありませんでした。('"+ this.gpxDir.getAbsolutePath() +"')"); + return; + } + if (this.param_ImgOutputAll && (files.length > 1)) { + System.out.println("複数のGPXファイルがあるときには、'IMG.OUTPUT_ALL'オプションは指定できません。"); + return; + } + + java.util.Arrays.sort(files, new java.util.Comparator() { + @Override + public int compare(File file1, File file2){ + return file1.getName().compareTo(file2.getName()); + } + }); + for (File file : files) { + if (file.isFile()) { + String filename = file.getName().toUpperCase(); + if (filename.toUpperCase().endsWith(".GPX")) { + if (!filename.toUpperCase().endsWith("_.GPX") || this.param_GpxReuse) { + this.gpxFiles.add(file); + } + } + } + } + } + else { + this.gpxFiles.add(this.gpxDir); + } + + paramStr = this.params.getProperty(AppParameters.IMG_OUTPUT_EXIF); + if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) { + this.exif = true; + } + + String timeStr = this.params.getProperty(AppParameters.IMG_TIME); + try { + Date t = toUTCDate(timeStr); + this.delta = t.getTime() - imgtime.getTime(); + } + catch (ParseException e) { + System.out.println("'"+ timeStr +"' の書式が違います("+ TIME_FORMAT_STRING +")"); + return; + } + + this.start(); + try { + this.join(); + } catch(InterruptedException end) {} + if (this.ex != null) { + throw this.ex; + } } @@ -622,7 +621,7 @@ // 基準時刻ファイルの「更新日時」を使って時刻合わせを行う。 // argv[1] --> AppParameters.IMG_BASE_FILE に置き換え - // File baseFile = new File(obj.imgDir, obj.params.getProperty(AppParameters.IMG_BASE_FILE)); + // File baseFile = new File(this.imgDir, this.params.getProperty(AppParameters.IMG_BASE_FILE)); private Date adjustTime(File baseFile) throws ImageReadException, IOException, ParseException { if (exifBase) { ImageMetadata meta = Imaging.getMetadata(baseFile);