Newer
Older
restamp / src / main / java / osm / surveyor / matchtime / AppParameters.java
@haya4 haya4 on 26 Jan 2020 8 KB Restamp
  1. package osm.surveyor.matchtime;
  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. }