4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8 import java.util.Properties;
10 @SuppressWarnings("serial")
11 public class AppParameters extends Properties {
12 static final String FILE_PATH = "AdjustTime.ini";
14 // GPX: 時間的に間隔が開いたGPXログを別の<trkseg>セグメントに分割する。 {ON | OFF}
15 public static String GPX_GPXSPLIT = "GPX.gpxSplit";
17 // GPX: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
18 public static String GPX_NO_FIRST_NODE = "GPX.noFirstNode";
20 // GPX: 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
21 public static String GPX_REUSE = "GPX.REUSE";
23 // GPX: 基準時刻 {FILE_UPDATE | EXIF_TIME}
24 public static String GPX_BASETIME = "GPX.BASETIME";
26 // GPX: ファイル更新時刻 yyyy:MM:dd HH:mm:ss
27 public static String IMG_TIME = "IMG.TIME";
29 // 対象IMGフォルダ:(位置情報を付加したい画像ファイルが格納されているフォルダ)
30 public static String IMG_SOURCE_FOLDER = "IMG.SOURCE_FOLDER";
32 // 基準時刻画像(正確な撮影時刻が判明できる画像)
33 public static String IMG_BASE_FILE = "IMG.BASE_FILE";
35 // 対象GPXフォルダ:(GPXファイルが格納されているフォルダ)
36 public static String GPX_SOURCE_FOLDER = "GPX.SOURCE_FOLDER";
38 // 出力フォルダ:(変換した画像ファイルとGPXファイルを出力するフォルダ)
39 public static String IMG_OUTPUT_FOLDER = "IMG.OUTPUT_FOLDER";
41 // 出力IMG: IMG出力をする {ON | OFF}
42 public static String IMG_OUTPUT = "IMG.OUTPUT";
44 // 出力IMG: 'out of time'も IMG出力の対象とする {ON | OFF}
45 // この場合は、対象IMGフォルダ内のすべてのIMGファイルが出力フォルダに出力される
46 public static String IMG_OUTPUT_ALL = "IMG.OUTPUT_ALL";
49 public static String IMG_OUTPUT_EXIF = "IMG.OUTPUT_EXIF";
51 // 出力GPX: <SPEED>を上書き出力する {ON | OFF}
52 public static String GPX_OUTPUT_SPEED = "GPX.OUTPUT_SPEED";
54 // 出力GPX: ソースGPXの<MAGVER>を無視する {ON | OFF}
55 public static String GPX_OVERWRITE_MAGVAR = "GPX.OVERWRITE_MAGVAR";
57 // 出力GPX: マーカー<wpt>を出力する {ON | OFF}
58 public static String GPX_OUTPUT_WPT = "GPX.OUTPUT_WPT";
62 public AppParameters() throws FileNotFoundException, IOException {
64 this.file = new File(FILE_PATH);
68 public AppParameters(Properties defaults) throws FileNotFoundException, IOException {
70 this.file = new File(FILE_PATH);
74 public AppParameters(String iniFileName) throws FileNotFoundException, IOException {
76 this.file = new File(iniFileName);
80 private void syncFile() throws FileNotFoundException, IOException {
81 boolean update = false;
83 if (this.file.exists()) {
84 // ファイルが存在すれば、その内容をロードする。
85 this.load(new FileInputStream(file));
91 //------------------------------------------------
92 // 対象フォルダ:(位置情報を付加したい画像ファイルが格納されているフォルダ)
93 String valueStr = this.getProperty(IMG_SOURCE_FOLDER);
94 if (valueStr == null) {
96 this.setProperty(IMG_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
99 //------------------------------------------------
100 // 対象フォルダ:(GPXファイルが格納されているフォルダ)
101 valueStr = this.getProperty(GPX_SOURCE_FOLDER);
102 if (valueStr == null) {
104 this.setProperty(GPX_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
107 //------------------------------------------------
108 // 基準時刻画像(正確な撮影時刻が判明できる画像)
109 valueStr = this.getProperty(IMG_BASE_FILE);
110 if (valueStr == null) {
112 this.setProperty(IMG_BASE_FILE, "");
115 //------------------------------------------------
116 // 出力フォルダ:(変換した画像ファイルとGPXファイルを出力するフォルダ)
117 valueStr = this.getProperty(IMG_OUTPUT_FOLDER);
118 if (valueStr == null) {
120 this.setProperty(IMG_OUTPUT_FOLDER, (new File(".")).getAbsolutePath());
123 //------------------------------------------------
125 valueStr = this.getProperty(IMG_OUTPUT);
126 if (valueStr == null) {
128 valueStr = String.valueOf(true);
130 this.setProperty(IMG_OUTPUT, String.valueOf(valueStr));
132 //------------------------------------------------
133 // 出力IMG: 'out of time'も IMG出力の対象とする
134 valueStr = this.getProperty(IMG_OUTPUT_ALL);
135 if (valueStr == null) {
137 valueStr = String.valueOf(false);
139 this.setProperty(IMG_OUTPUT_ALL, String.valueOf(valueStr));
141 //------------------------------------------------
143 valueStr = this.getProperty(IMG_OUTPUT_EXIF);
144 if (valueStr == null) {
146 valueStr = String.valueOf(true);
148 this.setProperty(IMG_OUTPUT_EXIF, String.valueOf(valueStr));
150 //------------------------------------------------
151 // GPX出力: 時間的に間隔が開いたGPXログを別の<trkseg>セグメントに分割する。 {ON | OFF}
152 valueStr = this.getProperty(GPX_GPXSPLIT);
153 if (valueStr == null) {
155 this.setProperty(GPX_GPXSPLIT, String.valueOf(true));
158 //------------------------------------------------
159 // GPX出力: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
160 valueStr = this.getProperty(GPX_NO_FIRST_NODE);
161 if (valueStr == null) {
163 this.setProperty(GPX_NO_FIRST_NODE, String.valueOf(true));
166 //------------------------------------------------
167 // GPX出力: ポイントマーカー<WPT>を出力する {ON | OFF}
168 valueStr = this.getProperty(GPX_OUTPUT_WPT);
169 if (valueStr == null) {
171 this.setProperty(GPX_OUTPUT_WPT, String.valueOf(false));
174 //------------------------------------------------
175 // GPX出力: ソースGPXの<MAGVAR>を無視する {ON | OFF}
176 valueStr = this.getProperty(GPX_OVERWRITE_MAGVAR);
177 if (valueStr == null) {
179 this.setProperty(GPX_OVERWRITE_MAGVAR, String.valueOf(false));
182 //------------------------------------------------
183 // GPX出力: <SPEED>を上書き出力する {ON | OFF}
184 valueStr = this.getProperty(GPX_OUTPUT_SPEED);
185 if (valueStr == null) {
187 this.setProperty(GPX_OUTPUT_SPEED, String.valueOf(false));
190 //------------------------------------------------
191 // GPX出力: 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
192 valueStr = this.getProperty(GPX_REUSE);
193 if (valueStr == null) {
195 this.setProperty(GPX_REUSE, String.valueOf(false));
198 //------------------------------------------------
199 // GPX: 基準時刻 {FILE_UPDATE | EXIF}
200 valueStr = this.getProperty(GPX_BASETIME);
201 if (valueStr == null) {
203 this.setProperty(GPX_BASETIME, "FILE_UPDATE");
209 this.store(new FileOutputStream(this.file), "defuilt settings");
213 public void store() throws FileNotFoundException, IOException {
214 this.store(new FileOutputStream(this.file), "by AdjustTime");