OSDN Git Service

MAVEN構成
[importpicture/importpicture.git] / src / main / java / osm / jp / gpx / AppParameters.java
1 package osm.jp.gpx;
2
3 import java.io.File;
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;
9
10 @SuppressWarnings("serial")
11 public class AppParameters extends Properties {
12     static final String FILE_PATH = "AdjustTime.ini";
13
14     // GPX: 時間的に間隔が開いたGPXログを別の<trkseg>セグメントに分割する。 {ON | OFF}
15     public static String GPX_GPXSPLIT = "GPX.gpxSplit";
16
17     // GPX: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
18     public static String GPX_NO_FIRST_NODE = "GPX.noFirstNode";
19
20     // GPX: 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
21     public static String GPX_REUSE = "GPX.REUSE";
22
23     // GPX: 基準時刻 {FILE_UPDATE | EXIF_TIME}
24     public static String GPX_BASETIME = "GPX.BASETIME";
25
26     // GPX: ファイル更新時刻 yyyy:MM:dd HH:mm:ss
27     public static String IMG_TIME = "IMG.TIME";
28
29     // 対象IMGフォルダ:(位置情報を付加したい画像ファイルが格納されているフォルダ)
30     public static String IMG_SOURCE_FOLDER = "IMG.SOURCE_FOLDER";
31
32     // 基準時刻画像(正確な撮影時刻が判明できる画像)
33     public static String IMG_BASE_FILE = "IMG.BASE_FILE";
34
35     // 対象GPXフォルダ:(GPXファイルが格納されているフォルダ)
36     public static String GPX_SOURCE_FOLDER = "GPX.SOURCE_FOLDER";
37
38     // 出力フォルダ:(変換した画像ファイルとGPXファイルを出力するフォルダ)
39     public static String IMG_OUTPUT_FOLDER = "IMG.OUTPUT_FOLDER";
40
41     // 出力IMG: IMG出力をする  {ON | OFF}
42     public static String IMG_OUTPUT = "IMG.OUTPUT";
43
44     // 出力IMG: 'out of time'も IMG出力の対象とする  {ON | OFF}
45     //   この場合は、対象IMGフォルダ内のすべてのIMGファイルが出力フォルダに出力される
46     public static String IMG_OUTPUT_ALL = "IMG.OUTPUT_ALL";
47
48     // 出力IMG: EXIFを変換する
49     public static String IMG_OUTPUT_EXIF = "IMG.OUTPUT_EXIF";
50
51     // 出力GPX: <SPEED>を上書き出力する {ON | OFF}
52     public static String GPX_OUTPUT_SPEED = "GPX.OUTPUT_SPEED";
53
54     // 出力GPX: ソースGPXの<MAGVER>を無視する {ON | OFF}
55     public static String GPX_OVERWRITE_MAGVAR = "GPX.OVERWRITE_MAGVAR";
56
57     // 出力GPX: マーカー<wpt>を出力する {ON | OFF}
58     public static String GPX_OUTPUT_WPT = "GPX.OUTPUT_WPT";
59
60     File file;
61
62     public AppParameters() throws FileNotFoundException, IOException {
63         super();
64         this.file = new File(FILE_PATH);
65         syncFile();
66     }
67
68     public AppParameters(Properties defaults) throws FileNotFoundException, IOException {
69         super(defaults);
70         this.file = new File(FILE_PATH);
71         syncFile();
72     }
73
74     public AppParameters(String iniFileName) throws FileNotFoundException, IOException {
75         super();
76         this.file = new File(iniFileName);
77         syncFile();
78     }
79
80     private void syncFile() throws FileNotFoundException, IOException {
81         boolean update = false;
82
83         if (this.file.exists()) {
84             // ファイルが存在すれば、その内容をロードする。
85             this.load(new FileInputStream(file));
86         }
87         else {
88             update = true;
89         }
90
91         //------------------------------------------------
92         // 対象フォルダ:(位置情報を付加したい画像ファイルが格納されているフォルダ)
93         String valueStr = this.getProperty(IMG_SOURCE_FOLDER);
94         if (valueStr == null) {
95             update = true;
96             this.setProperty(IMG_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
97         }
98
99         //------------------------------------------------
100         // 対象フォルダ:(GPXファイルが格納されているフォルダ)
101         valueStr = this.getProperty(GPX_SOURCE_FOLDER);
102         if (valueStr == null) {
103             update = true;
104             this.setProperty(GPX_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
105         }
106
107         //------------------------------------------------
108         // 基準時刻画像(正確な撮影時刻が判明できる画像)
109         valueStr = this.getProperty(IMG_BASE_FILE);
110         if (valueStr == null) {
111             update = true;
112             this.setProperty(IMG_BASE_FILE, "");
113         }
114
115         //------------------------------------------------
116         // 出力フォルダ:(変換した画像ファイルとGPXファイルを出力するフォルダ)
117         valueStr = this.getProperty(IMG_OUTPUT_FOLDER);
118         if (valueStr == null) {
119             update = true;
120             this.setProperty(IMG_OUTPUT_FOLDER, (new File(".")).getAbsolutePath());
121         }
122
123         //------------------------------------------------
124         // IMG出力: IMGを出力する
125         valueStr = this.getProperty(IMG_OUTPUT);
126         if (valueStr == null) {
127             update = true;
128             valueStr = String.valueOf(true);
129         }
130         this.setProperty(IMG_OUTPUT, String.valueOf(valueStr));
131
132         //------------------------------------------------
133         // 出力IMG: 'out of time'も IMG出力の対象とする
134         valueStr = this.getProperty(IMG_OUTPUT_ALL);
135         if (valueStr == null) {
136             update = true;
137             valueStr = String.valueOf(false);
138         }
139         this.setProperty(IMG_OUTPUT_ALL, String.valueOf(valueStr));
140
141         //------------------------------------------------
142         // IMG出力: EXIFを変換する
143         valueStr = this.getProperty(IMG_OUTPUT_EXIF);
144         if (valueStr == null) {
145             update = true;
146             valueStr = String.valueOf(true);
147         }
148         this.setProperty(IMG_OUTPUT_EXIF, String.valueOf(valueStr));
149
150         //------------------------------------------------
151         // GPX出力: 時間的に間隔が開いたGPXログを別の<trkseg>セグメントに分割する。 {ON | OFF}
152         valueStr = this.getProperty(GPX_GPXSPLIT);
153         if (valueStr == null) {
154             update = true;
155             this.setProperty(GPX_GPXSPLIT, String.valueOf(true));
156         }
157
158         //------------------------------------------------
159         // GPX出力: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
160         valueStr = this.getProperty(GPX_NO_FIRST_NODE);
161         if (valueStr == null) {
162             update = true;
163             this.setProperty(GPX_NO_FIRST_NODE, String.valueOf(true));
164         }
165
166         //------------------------------------------------
167         // GPX出力: ポイントマーカー<WPT>を出力する {ON | OFF}
168         valueStr = this.getProperty(GPX_OUTPUT_WPT);
169         if (valueStr == null) {
170             update = true;
171             this.setProperty(GPX_OUTPUT_WPT, String.valueOf(false));
172         }
173
174         //------------------------------------------------
175         // GPX出力: ソースGPXの<MAGVAR>を無視する {ON | OFF}
176         valueStr = this.getProperty(GPX_OVERWRITE_MAGVAR);
177         if (valueStr == null) {
178             update = true;
179             this.setProperty(GPX_OVERWRITE_MAGVAR, String.valueOf(false));
180         }
181
182         //------------------------------------------------
183         // GPX出力: <SPEED>を上書き出力する {ON | OFF}
184         valueStr = this.getProperty(GPX_OUTPUT_SPEED);
185         if (valueStr == null) {
186             update = true;
187             this.setProperty(GPX_OUTPUT_SPEED, String.valueOf(false));
188         }
189
190         //------------------------------------------------
191         // GPX出力: 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
192         valueStr = this.getProperty(GPX_REUSE);
193         if (valueStr == null) {
194             update = true;
195             this.setProperty(GPX_REUSE, String.valueOf(false));
196         }
197
198         //------------------------------------------------
199         //  GPX: 基準時刻 {FILE_UPDATE | EXIF}
200         valueStr = this.getProperty(GPX_BASETIME);
201         if (valueStr == null) {
202             update = true;
203             this.setProperty(GPX_BASETIME, "FILE_UPDATE");
204         }
205
206         if (update) {
207             // ・ファイルがなければ新たに作る
208             // ・項目が足りない時は書き足す。
209             this.store(new FileOutputStream(this.file), "defuilt settings");
210         }
211     }
212
213     public void store() throws FileNotFoundException, IOException {
214         this.store(new FileOutputStream(this.file), "by AdjustTime");
215     }
216 }