OSDN Git Service

084329db35785d2a952e2231dcd2434a733b239b
[importpicture/importpicture.git] / importPicture / src / 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: EXIFを変換する
45         public static String IMG_OUTPUT_EXIF = "IMG.OUTPUT_EXIF";
46         
47         // 出力GPX: <SPEED>を上書き出力する {ON | OFF}
48         public static String GPX_OUTPUT_SPEED = "GPX.OUTPUT_SPEED";
49         
50         // 出力GPX: マーカー<wpt>を出力する {ON | OFF}
51         public static String GPX_OUTPUT_WPT = "GPX.OUTPUT_WPT";
52         
53         File file;
54         
55         public AppParameters() throws FileNotFoundException, IOException {
56                 super();
57                 syncFile();
58         }
59
60         public AppParameters(Properties defaults) throws FileNotFoundException, IOException {
61                 super(defaults);
62                 syncFile();
63         }
64         
65         void syncFile() throws FileNotFoundException, IOException {
66                 boolean update = false;
67                 
68                 this.file = new File(FILE_PATH);
69                 if (file.exists()) {
70                         // ファイルが存在すれば、その内容をロードする。
71                         this.load(new FileInputStream(file));
72                 }
73                 else {
74                         update = true;
75                 }
76                 
77                 //------------------------------------------------
78                 // 対象フォルダ:(位置情報を付加したい画像ファイルが格納されているフォルダ)
79                 String valueStr = this.getProperty(IMG_SOURCE_FOLDER);
80                 if (valueStr == null) {
81                         update = true;
82                         this.setProperty(IMG_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
83                 }
84
85                 //------------------------------------------------
86                 // 対象フォルダ:(GPXファイルが格納されているフォルダ)
87                 valueStr = this.getProperty(GPX_SOURCE_FOLDER);
88                 if (valueStr == null) {
89                         update = true;
90                         this.setProperty(GPX_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
91                 }
92
93                 //------------------------------------------------
94                 // 基準時刻画像(正確な撮影時刻が判明できる画像)
95                 valueStr = this.getProperty(IMG_BASE_FILE);
96                 if (valueStr == null) {
97                         update = true;
98                         this.setProperty(IMG_BASE_FILE, "");
99                 }
100
101                 //------------------------------------------------
102                 // 出力フォルダ:(変換した画像ファイルとGPXファイルを出力するフォルダ)
103                 valueStr = this.getProperty(IMG_OUTPUT_FOLDER);
104                 if (valueStr == null) {
105                         update = true;
106                         this.setProperty(IMG_OUTPUT_FOLDER, (new File(".")).getAbsolutePath());
107                 }
108
109                 //------------------------------------------------
110                 // IMG出力: IMGを出力する
111                 valueStr = this.getProperty(IMG_OUTPUT);
112                 if (valueStr == null) {
113                         update = true;
114                         this.setProperty(IMG_OUTPUT, String.valueOf(true));
115                 }
116
117                 //------------------------------------------------
118                 // IMG出力: EXIFを変換する
119                 valueStr = this.getProperty(IMG_OUTPUT_EXIF);
120                 if (valueStr == null) {
121                         update = true;
122                         this.setProperty(IMG_OUTPUT_EXIF, String.valueOf(true));
123                 }
124
125                 //------------------------------------------------
126                 // GPX出力: 時間的に間隔が開いたGPXログを別の<trkseg>セグメントに分割する。 {ON | OFF}
127                 valueStr = this.getProperty(GPX_GPXSPLIT);
128                 if (valueStr == null) {
129                         update = true;
130                         this.setProperty(GPX_GPXSPLIT, String.valueOf(true));
131                 }
132
133                 //------------------------------------------------
134                 // GPX出力: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
135                 valueStr = this.getProperty(GPX_NO_FIRST_NODE);
136                 if (valueStr == null) {
137                         update = true;
138                         this.setProperty(GPX_NO_FIRST_NODE, String.valueOf(true));
139                 }
140
141                 //------------------------------------------------
142                 // GPX出力: ポイントマーカー<WPT>を出力する {ON | OFF}
143                 valueStr = this.getProperty(GPX_OUTPUT_WPT);
144                 if (valueStr == null) {
145                         update = true;
146                         this.setProperty(GPX_OUTPUT_WPT, String.valueOf(false));
147                 }
148                 
149                 //------------------------------------------------
150                 // GPX出力: <SPEED>を上書き出力する {ON | OFF}
151                 valueStr = this.getProperty(GPX_OUTPUT_SPEED);
152                 if (valueStr == null) {
153                         update = true;
154                         this.setProperty(GPX_OUTPUT_SPEED, String.valueOf(false));
155                 }
156                 
157                 //------------------------------------------------
158                 // GPX出力: 生成されたGPXファイル(ファイル名が'_.gpx'で終わるもの)も対象にする。 {ON | OFF}
159                 valueStr = this.getProperty(GPX_REUSE);
160                 if (valueStr == null) {
161                         update = true;
162                         this.setProperty(GPX_REUSE, String.valueOf(false));
163                 }
164
165                 //------------------------------------------------
166                 //  GPX: 基準時刻 {FILE_UPDATE | EXIF}
167                 valueStr = this.getProperty(GPX_BASETIME);
168                 if (valueStr == null) {
169                         update = true;
170                         this.setProperty(GPX_BASETIME, "FILE_UPDATE");
171                 }
172
173                 if (update) {
174                         // ・ファイルがなければ新たに作る
175                         // ・項目が足りない時は書き足す。
176                         this.store(new FileOutputStream(this.file), "defuilt settings");        
177                 }
178         }
179         
180         public void store() throws FileNotFoundException, IOException {
181                 this.store(new FileOutputStream(this.file), "by AdjustTime");
182         }
183 }