OSDN Git Service

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