OSDN Git Service

red: muiltiTRK.GarminColorado.gpxでマルチTRKノードが認識されない。ImportPictureTestの強化。
authorhayashi <hayashi.yuu@gmail.com>
Mon, 26 Jun 2017 06:15:40 +0000 (15:15 +0900)
committerhayashi <hayashi.yuu@gmail.com>
Mon, 26 Jun 2017 06:15:40 +0000 (15:15 +0900)
18 files changed:
importPicture/doc/GPX.class.violet.html
importPicture/src/osm/jp/gpx/AppParameters.java
importPicture/src/osm/jp/gpx/ElementMapTRKPT.java
importPicture/src/osm/jp/gpx/ElementMapTRKSEG.java [new file with mode: 0644]
importPicture/src/osm/jp/gpx/ImportPicture.java
importPicture/src/osm/jp/gpx/matchtime/gui/AdjustTime.java
importPicture/test/osm/jp/gpx/ImportPictureTest.java
importPicture/testdata/AdjustTime.20170518.A1.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.20170518.A2.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.20170518.B1.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.20170518.B2.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.20170518.ini
importPicture/testdata/AdjustTime.M1a.separate.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.M1b.separate.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.M1c.separate.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.M1d.separate.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.M2a.separate.ini [new file with mode: 0644]
importPicture/testdata/AdjustTime.separate.ini

index ccca066..8239128 100644 (file)
@@ -20,7 +20,7 @@
   <nodes id="2">
     <ClassNode id="3">
       <children id="4"/>
-      <location class="Point2D.Double" id="5" x="940.0" y="20.0"/>
+      <location class="Point2D.Double" id="5" x="1090.0" y="20.0"/>
       <id id="6" value="e40e0571-14c3-4475-8c12-9c78d6e7dd0f"/>
       <revision>1</revision>
       <backgroundColor id="7">
       </borderColor>
       <textColor reference="8"/>
       <name id="9" justification="1" size="3" underlined="false">
-        <text>trkpt : Element</text>
+        <text>trkpt : XML Element</text>
       </name>
       <attributes id="10" justification="0" size="4" underlined="false">
-        <text>+ lat
-+ lon</text>
+        <text>+ lat: Attribute
++ lon: Attribute</text>
       </attributes>
       <methods id="11" justification="0" size="4" underlined="false">
-        <text>+ ele
-+ time
-+ hdop</text>
+        <text>+ ele: Element
++ time: Element
++ hdop: Element</text>
       </methods>
     </ClassNode>
     <ClassNode id="12">
       <children id="13"/>
-      <location class="Point2D.Double" id="14" x="600.0" y="70.0"/>
+      <location class="Point2D.Double" id="14" x="660.0" y="70.0"/>
       <id id="15" value="4d93a09d-9e21-480f-9cb0-d226acc7b356"/>
       <revision>1</revision>
       <backgroundColor reference="7"/>
       <borderColor reference="8"/>
       <textColor reference="8"/>
       <name id="16" justification="1" size="3" underlined="false">
-        <text>trkseg : Element</text>
+        <text>trkseg : XML Element</text>
       </name>
       <attributes id="17" justification="0" size="4" underlined="false">
         <text></text>
     </ClassNode>
     <ClassNode id="19">
       <children id="20"/>
-      <location class="Point2D.Double" id="21" x="410.0" y="40.0"/>
+      <location class="Point2D.Double" id="21" x="410.0" y="50.0"/>
       <id id="22" value="b69423aa-cb04-4a9d-a4c2-6298cfbf735e"/>
       <revision>1</revision>
       <backgroundColor reference="7"/>
       <borderColor reference="8"/>
       <textColor reference="8"/>
       <name id="23" justification="1" size="3" underlined="false">
-        <text>trk : Element</text>
+        <text>trk : XML Element</text>
       </name>
       <attributes id="24" justification="0" size="4" underlined="false">
-        <text></text>
+        <text>+ name: Attribute
++ extensions: Attribute</text>
       </attributes>
       <methods id="25" justification="0" size="4" underlined="false">
-        <text>+ name
-+ extensions</text>
+        <text></text>
       </methods>
     </ClassNode>
     <ClassNode id="26">
       <children id="27"/>
-      <location class="Point2D.Double" id="28" x="40.0" y="230.0"/>
+      <location class="Point2D.Double" id="28" x="30.0" y="270.0"/>
       <id id="29" value="c4bb6c1e-47e6-483b-a71c-1b1aaae273c0"/>
       <revision>1</revision>
       <backgroundColor reference="7"/>
       <borderColor reference="8"/>
       <textColor reference="8"/>
       <name id="30" justification="1" size="3" underlined="false">
-        <text>gpx : Element</text>
+        <text>gpx : XML Element</text>
       </name>
       <attributes id="31" justification="0" size="4" underlined="false">
         <text>+ creater
     </ClassNode>
     <NoteNode id="33">
       <children id="34"/>
-      <location class="Point2D.Double" id="35" x="20.0" y="420.0"/>
+      <location class="Point2D.Double" id="35" x="10.0" y="30.0"/>
       <id id="36" value="2048f01c-a0a1-4d2a-8966-5a10e9f9d5b4"/>
       <revision>1</revision>
       <backgroundColor reference="7"/>
     </NoteNode>
     <ClassNode id="39">
       <children id="40"/>
-      <location class="Point2D.Double" id="41" x="400.0" y="330.0"/>
+      <location class="Point2D.Double" id="41" x="370.0" y="320.0"/>
       <id id="42" value="8c2e5cf7-2027-4497-b547-9974a55c5f3f"/>
       <revision>1</revision>
       <backgroundColor id="43">
       </borderColor>
       <textColor reference="44"/>
       <name id="45" justification="1" size="3" underlined="false">
-        <text>wpt : Element</text>
+        <text>wpt : XML Element</text>
       </name>
       <attributes id="46" justification="0" size="4" underlined="false">
         <text>+ lat
     </ClassNode>
     <ClassNode id="48">
       <children id="49"/>
-      <location class="Point2D.Double" id="50" x="900.0" y="290.0"/>
+      <location class="Point2D.Double" id="50" x="1030.0" y="350.0"/>
       <id id="51" value="1b6e7de2-999b-4e94-ae68-048d1c584ccb"/>
       <revision>1</revision>
       <backgroundColor id="52">
       </borderColor>
       <textColor reference="53"/>
       <name id="54" justification="1" size="3" underlined="false">
-        <text>mapTRKPT : TreeMap</text>
+        <text>ElementMapTRKPT</text>
       </name>
       <attributes id="55" justification="0" size="4" underlined="false">
-        <text>key:long[*]
-value:Element[*]</text>
+        <text>+ key:Date = trkptエレメントのtime [*]
++ value:Element = trkpt [*]</text>
       </attributes>
       <methods id="56" justification="0" size="4" underlined="false">
-        <text>+ put(time:long, trkpt:Element)</text>
+        <text>+ put(value: Element): Date
++ getValue(jpdate: Date): Element
+- getTrkpt(jpdate: Date): Element
+- getMaeTrkpt(imaTrkpt: TagTrkpt): Element
++ printinfo(): void</text>
       </methods>
     </ClassNode>
     <ClassNode id="57">
       <children id="58"/>
-      <location class="Point2D.Double" id="59" x="600.0" y="310.0"/>
+      <location class="Point2D.Double" id="59" x="570.0" y="370.0"/>
       <id id="60" value="aa3b94f0-d4d4-47b3-9538-2c5ef5b7aebe"/>
       <revision>1</revision>
       <backgroundColor id="61">
@@ -211,19 +215,20 @@ value:Element[*]</text>
       </borderColor>
       <textColor reference="62"/>
       <name id="63" justification="1" size="3" underlined="false">
-        <text>mapTRKSEG : TreeMap</text>
+        <text>ElementMapTRKSEG</text>
       </name>
       <attributes id="64" justification="0" size="4" underlined="false">
-        <text>key:long[*]
-value:Element[*]</text>
+        <text>+ key:Date = TRKPTの一番最初の日時[*]
++ value:ElementMapTRKPT = mapTRKPT [*]</text>
       </attributes>
       <methods id="65" justification="0" size="4" underlined="false">
-        <text>+ put(long time, Element trkpt)</text>
+        <text>+ put(value: ElementMapTRKSEG): void
++ printinfo(): void</text>
       </methods>
     </ClassNode>
     <NoteNode id="66">
       <children id="67"/>
-      <location class="Point2D.Double" id="68" x="470.0" y="510.0"/>
+      <location class="Point2D.Double" id="68" x="590.0" y="200.0"/>
       <id id="69" value="27876e33-3a11-4680-8b0c-81f4c5edc8fe"/>
       <revision>1</revision>
       <backgroundColor id="70">
@@ -242,9 +247,7 @@ value:Element[*]</text>
       <text id="72" justification="0" size="4" underlined="false">
         <text>○ GPXノードは複数のTRKノードで構成されるが、このプログ
  ラムではTRKノードの構成は無視してTRKSEGノードをフラッ
- トにして mapTRKSEG にかくのうする。
-○ mapTRKSEG は、TreeMapクラスを用いているため、開始
- 時刻順にソートされる。</text>
+ トに mapTRKSEG に格納する。</text>
       </text>
       <color id="73">
         <red>255</red>
@@ -255,1025 +258,1289 @@ value:Element[*]</text>
     </NoteNode>
     <NoteNode id="74">
       <children id="75"/>
-      <location class="Point2D.Double" id="76" x="850.0" y="520.0"/>
-      <id id="77" value="7d396ed5-f4c0-46b1-acdf-73711771093a"/>
+      <location class="Point2D.Double" id="76" x="290.0" y="470.0"/>
+      <id id="77" value="053466a4-fc0b-4271-893f-f4861e489c3f"/>
       <revision>1</revision>
       <backgroundColor reference="70"/>
       <borderColor reference="71"/>
       <textColor reference="71"/>
       <text id="78" justification="0" size="4" underlined="false">
-        <text>○ mapTRKSEG から TRKPT をひとつづつ取り出して mapTRKPT
- に格納して処理を行う。
-
-○ mapTRKPT もTreeMapクラスを用いているので、時間
- 順にソートされる。</text>
+        <text>wptノードについてはとりあえず後回し</text>
       </text>
-      <color reference="73"/>
+      <color id="79">
+        <red>255</red>
+        <green>228</green>
+        <blue>181</blue>
+        <alpha>255</alpha>
+      </color>
     </NoteNode>
-    <NoteNode id="79">
-      <children id="80"/>
-      <location class="Point2D.Double" id="81" x="340.0" y="640.0"/>
-      <id id="82" value="053466a4-fc0b-4271-893f-f4861e489c3f"/>
+    <ClassNode id="80">
+      <children id="81"/>
+      <location class="Point2D.Double" id="82" x="830.0" y="630.0"/>
+      <id id="83" value="73655441-2ae8-4050-aaf5-65aa1395b8c2"/>
       <revision>1</revision>
-      <backgroundColor reference="70"/>
-      <borderColor reference="71"/>
-      <textColor reference="71"/>
-      <text id="83" justification="0" size="4" underlined="false">
-        <text>wptノードについてはとりあえず後回し</text>
+      <backgroundColor id="84">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+        <alpha>255</alpha>
+      </backgroundColor>
+      <borderColor id="85">
+        <red>0</red>
+        <green>0</green>
+        <blue>0</blue>
+        <alpha>255</alpha>
+      </borderColor>
+      <textColor reference="85"/>
+      <name id="86" justification="1" size="3" underlined="false">
+        <text>java.util.TreeMap</text>
+      </name>
+      <attributes id="87" justification="0" size="4" underlined="false">
+        <text></text>
+      </attributes>
+      <methods id="88" justification="0" size="4" underlined="false">
+        <text></text>
+      </methods>
+    </ClassNode>
+    <NoteNode id="89">
+      <children id="90"/>
+      <location class="Point2D.Double" id="91" x="350.0" y="680.0"/>
+      <id id="92" value="d5334036-d63b-4b63-afc0-fac9446ade61"/>
+      <revision>1</revision>
+      <backgroundColor reference="84"/>
+      <borderColor reference="85"/>
+      <textColor reference="85"/>
+      <text id="93" justification="0" size="4" underlined="false">
+        <text>○ mapTRKSEG と mapTRKPT は、TreeMapクラスを継承ているため、開始
+ 時刻順にソートできる</text>
       </text>
       <color reference="73"/>
     </NoteNode>
   </nodes>
-  <edges id="84">
-    <AggregationEdge id="85">
+  <edges id="94">
+    <AggregationEdge id="95">
       <start class="ClassNode" reference="39"/>
       <end class="ClassNode" reference="26"/>
-      <startLocation class="Point2D.Double" id="86" x="50.0" y="60.0"/>
-      <endLocation class="Point2D.Double" id="87" x="80.0" y="50.0"/>
-      <transitionPoints id="88"/>
-      <id id="89" value="23569661-5a02-48d2-8d1e-14ccdc72c1b8"/>
+      <startLocation class="Point2D.Double" id="96" x="50.0" y="60.0"/>
+      <endLocation class="Point2D.Double" id="97" x="80.0" y="50.0"/>
+      <transitionPoints id="98"/>
+      <id id="99" value="23569661-5a02-48d2-8d1e-14ccdc72c1b8"/>
       <revision>1</revision>
       <bentStyle name="AUTO"/>
       <startLabel>0..*</startLabel>
       <middleLabel></middleLabel>
       <endLabel>1</endLabel>
     </AggregationEdge>
-    <AggregationEdge id="90">
+    <AggregationEdge id="100">
       <start class="ClassNode" reference="19"/>
       <end class="ClassNode" reference="26"/>
-      <startLocation class="Point2D.Double" id="91" x="40.0" y="60.0"/>
-      <endLocation class="Point2D.Double" id="92" x="90.0" y="60.0"/>
-      <transitionPoints id="93"/>
-      <id id="94" value="a8f7922c-8eab-4e89-bc5f-eeccfc2521cb"/>
+      <startLocation class="Point2D.Double" id="101" x="40.0" y="60.0"/>
+      <endLocation class="Point2D.Double" id="102" x="90.0" y="60.0"/>
+      <transitionPoints id="103">
+        <Point2D.Double id="104" x="390.0" y="110.0"/>
+        <Point2D.Double id="105" x="350.0" y="320.0"/>
+      </transitionPoints>
+      <id id="106" value="a8f7922c-8eab-4e89-bc5f-eeccfc2521cb"/>
       <revision>1</revision>
-      <bentStyle name="AUTO"/>
+      <bentStyle name="FREE"/>
       <startLabel>0..*</startLabel>
       <middleLabel></middleLabel>
       <endLabel>1</endLabel>
     </AggregationEdge>
-    <AggregationEdge id="95">
+    <AggregationEdge id="107">
       <start class="ClassNode" reference="12"/>
       <end class="ClassNode" reference="19"/>
-      <startLocation class="Point2D.Double" id="96" x="50.0" y="40.0"/>
-      <endLocation class="Point2D.Double" id="97" x="60.0" y="40.0"/>
-      <transitionPoints id="98"/>
-      <id id="99" value="47289584-0e22-4be8-ac89-282939189802"/>
+      <startLocation class="Point2D.Double" id="108" x="50.0" y="40.0"/>
+      <endLocation class="Point2D.Double" id="109" x="60.0" y="40.0"/>
+      <transitionPoints id="110"/>
+      <id id="111" value="47289584-0e22-4be8-ac89-282939189802"/>
       <revision>1</revision>
       <bentStyle name="AUTO"/>
       <startLabel>0..*</startLabel>
       <middleLabel></middleLabel>
       <endLabel>1</endLabel>
     </AggregationEdge>
-    <AggregationEdge id="100">
+    <AggregationEdge id="112">
       <start class="ClassNode" reference="3"/>
       <end class="ClassNode" reference="12"/>
-      <startLocation class="Point2D.Double" id="101" x="60.0" y="80.0"/>
-      <endLocation class="Point2D.Double" id="102" x="100.0" y="40.0"/>
-      <transitionPoints id="103"/>
-      <id id="104" value="1c166b06-32b3-4916-91ca-0e523fb9fd6c"/>
+      <startLocation class="Point2D.Double" id="113" x="60.0" y="80.0"/>
+      <endLocation class="Point2D.Double" id="114" x="100.0" y="40.0"/>
+      <transitionPoints id="115"/>
+      <id id="116" value="1c166b06-32b3-4916-91ca-0e523fb9fd6c"/>
       <revision>1</revision>
       <bentStyle name="AUTO"/>
       <startLabel>0..*</startLabel>
       <middleLabel></middleLabel>
       <endLabel>1</endLabel>
     </AggregationEdge>
-    <CompositionEdge id="105">
+    <CompositionEdge id="117">
       <start class="ClassNode" reference="3"/>
       <end class="ClassNode" reference="48"/>
-      <startLocation class="Point2D.Double" id="106" x="70.0" y="90.0"/>
-      <endLocation class="Point2D.Double" id="107" x="90.0" y="80.0"/>
-      <transitionPoints id="108"/>
-      <id id="109" value="6d337260-5eb7-40e6-ae8a-1cb1768910a6"/>
+      <startLocation class="Point2D.Double" id="118" x="70.0" y="90.0"/>
+      <endLocation class="Point2D.Double" id="119" x="90.0" y="80.0"/>
+      <transitionPoints id="120"/>
+      <id id="121" value="6d337260-5eb7-40e6-ae8a-1cb1768910a6"/>
       <revision>1</revision>
       <bentStyle name="AUTO"/>
       <startLabel>*</startLabel>
-      <middleLabel>時間順</middleLabel>
+      <middleLabel>- value [時間順]</middleLabel>
       <endLabel>1</endLabel>
     </CompositionEdge>
-    <NoteEdge id="110">
+    <NoteEdge id="122">
       <start class="ClassNode" reference="57"/>
       <end class="NoteNode" reference="66"/>
-      <startLocation class="Point2D.Double" id="111" x="90.0" y="80.0"/>
-      <endLocation class="Point2D.Double" id="112" x="150.0" y="50.0"/>
-      <transitionPoints id="113"/>
-      <id id="114" value="95f47b47-a6b4-4d1b-b15e-c3e33d3a9b20"/>
+      <startLocation class="Point2D.Double" id="123" x="90.0" y="80.0"/>
+      <endLocation class="Point2D.Double" id="124" x="150.0" y="50.0"/>
+      <transitionPoints id="125"/>
+      <id id="126" value="95f47b47-a6b4-4d1b-b15e-c3e33d3a9b20"/>
       <revision>1</revision>
     </NoteEdge>
-    <NoteEdge id="115">
+    <NoteEdge id="127">
       <start class="ClassNode" reference="19"/>
       <end class="NoteNode" reference="66"/>
-      <startLocation class="Point2D.Double" id="116" x="70.0" y="100.0"/>
-      <endLocation class="Point2D.Double" id="117" x="110.0" y="70.0"/>
-      <transitionPoints id="118"/>
-      <id id="119" value="203f59ec-559f-4aee-ac76-15541afe7494"/>
-      <revision>1</revision>
-    </NoteEdge>
-    <NoteEdge id="120">
-      <start class="NoteNode" reference="74"/>
-      <end class="ClassNode" reference="57"/>
-      <startLocation class="Point2D.Double" id="121" x="130.0" y="50.0"/>
-      <endLocation class="Point2D.Double" id="122" x="100.0" y="80.0"/>
-      <transitionPoints id="123"/>
-      <id id="124" value="dade9513-e176-49ef-aaa3-7dabc2171f2f"/>
-      <revision>1</revision>
-    </NoteEdge>
-    <NoteEdge id="125">
-      <start class="NoteNode" reference="74"/>
-      <end class="ClassNode" reference="48"/>
-      <startLocation class="Point2D.Double" id="126" x="150.0" y="40.0"/>
-      <endLocation class="Point2D.Double" id="127" x="120.0" y="80.0"/>
-      <transitionPoints id="128"/>
-      <id id="129" value="e7a521f5-f393-4c46-9164-e02488d9d100"/>
+      <startLocation class="Point2D.Double" id="128" x="70.0" y="100.0"/>
+      <endLocation class="Point2D.Double" id="129" x="110.0" y="70.0"/>
+      <transitionPoints id="130"/>
+      <id id="131" value="203f59ec-559f-4aee-ac76-15541afe7494"/>
       <revision>1</revision>
     </NoteEdge>
-    <NoteEdge id="130">
+    <NoteEdge id="132">
       <start class="ClassNode" reference="39"/>
-      <end class="NoteNode" reference="79"/>
-      <startLocation class="Point2D.Double" id="131" x="50.0" y="70.0"/>
-      <endLocation class="Point2D.Double" id="132" x="60.0" y="20.0"/>
-      <transitionPoints id="133"/>
-      <id id="134" value="4be64bc2-3890-4bfa-b34c-3639ec3483ea"/>
+      <end class="NoteNode" reference="74"/>
+      <startLocation class="Point2D.Double" id="133" x="50.0" y="70.0"/>
+      <endLocation class="Point2D.Double" id="134" x="60.0" y="20.0"/>
+      <transitionPoints id="135"/>
+      <id id="136" value="4be64bc2-3890-4bfa-b34c-3639ec3483ea"/>
       <revision>1</revision>
     </NoteEdge>
-    <CompositionEdge id="135">
+    <CompositionEdge id="137">
       <start class="ClassNode" reference="48"/>
       <end class="ClassNode" reference="57"/>
-      <startLocation class="Point2D.Double" id="136" x="80.0" y="70.0"/>
-      <endLocation class="Point2D.Double" id="137" x="120.0" y="70.0"/>
-      <transitionPoints id="138"/>
-      <id id="139" value="a6f12c61-eaba-408e-ba03-e37539a5cc8a"/>
+      <startLocation class="Point2D.Double" id="138" x="80.0" y="70.0"/>
+      <endLocation class="Point2D.Double" id="139" x="120.0" y="70.0"/>
+      <transitionPoints id="140"/>
+      <id id="141" value="a6f12c61-eaba-408e-ba03-e37539a5cc8a"/>
       <revision>1</revision>
-      <bentStyle name="AUTO"/>
+      <bentStyle name="FREE"/>
       <startLabel>*</startLabel>
-      <middleLabel>時間順</middleLabel>
+      <middleLabel>- value [時間順]</middleLabel>
       <endLabel>1</endLabel>
     </CompositionEdge>
+    <InheritanceEdge id="142">
+      <start class="ClassNode" reference="48"/>
+      <end class="ClassNode" reference="80"/>
+      <startLocation class="Point2D.Double" id="143" x="90.0" y="70.0"/>
+      <endLocation class="Point2D.Double" id="144" x="60.0" y="40.0"/>
+      <transitionPoints id="145"/>
+      <id id="146" value="ca295bda-90e8-480f-b927-13ff29dd5afe"/>
+      <revision>1</revision>
+      <bentStyle name="VHV"/>
+      <startLabel></startLabel>
+      <middleLabel></middleLabel>
+      <endLabel></endLabel>
+    </InheritanceEdge>
+    <NoteEdge id="147">
+      <start class="ClassNode" reference="12"/>
+      <end class="NoteNode" reference="66"/>
+      <startLocation class="Point2D.Double" id="148" x="70.0" y="30.0"/>
+      <endLocation class="Point2D.Double" id="149" x="140.0" y="30.0"/>
+      <transitionPoints id="150"/>
+      <id id="151" value="3f3733a1-9b08-4694-b445-6fd99b2e4545"/>
+      <revision>1</revision>
+    </NoteEdge>
+    <NoteEdge id="152">
+      <start class="NoteNode" reference="89"/>
+      <end class="NoteNode" reference="89"/>
+      <startLocation class="Point2D.Double" id="153" x="200.0" y="30.0"/>
+      <endLocation class="Point2D.Double" reference="153"/>
+      <transitionPoints id="154"/>
+      <id id="155" value="00ede2f2-6a0f-4e71-a959-00556138286d"/>
+      <revision>1</revision>
+    </NoteEdge>
+    <NoteEdge id="156">
+      <start class="NoteNode" reference="89"/>
+      <end class="NoteNode" reference="89"/>
+      <startLocation class="Point2D.Double" id="157" x="320.0" y="20.0"/>
+      <endLocation class="Point2D.Double" reference="157"/>
+      <transitionPoints id="158"/>
+      <id id="159" value="3515866f-3619-476c-a092-b09f8e55f386"/>
+      <revision>1</revision>
+    </NoteEdge>
+    <NoteEdge id="160">
+      <start class="ClassNode" reference="80"/>
+      <end class="NoteNode" reference="89"/>
+      <startLocation class="Point2D.Double" id="161" x="70.0" y="40.0"/>
+      <endLocation class="Point2D.Double" id="162" x="260.0" y="10.0"/>
+      <transitionPoints id="163"/>
+      <id id="164" value="d9dc4e29-7856-492a-9402-6a1470055f30"/>
+      <revision>1</revision>
+    </NoteEdge>
+    <InheritanceEdge id="165">
+      <start class="ClassNode" reference="57"/>
+      <end class="ClassNode" reference="80"/>
+      <startLocation class="Point2D.Double" id="166" x="130.0" y="100.0"/>
+      <endLocation class="Point2D.Double" id="167" x="60.0" y="0.0"/>
+      <transitionPoints id="168"/>
+      <id id="169" value="842618fc-23fa-4e69-bcb1-2c5fc124d508"/>
+      <revision>1</revision>
+      <bentStyle name="AUTO"/>
+      <startLabel></startLabel>
+      <middleLabel></middleLabel>
+      <endLabel></endLabel>
+    </InheritanceEdge>
   </edges>
 </ClassDiagramGraph>]]></SCRIPT>
        <BR />
        <BR />
-       <IMG alt="embedded diagram image" src="data:image/png;base64,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\r
-AABJRU5ErkJg" />
+       <IMG alt="embedded diagram image" src="data:image/png;base64,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\r
+fGi9syaT6cCBA9Lj1C/v7++flZVlcX+adX/u+vXrSUlJUrmnp2dQUFBubq4UWdCWDw4OigZLQeki\r
+t7S0SOWTk5OSbm1tdbiDBj1Li8Wqq6ud32aH6zK4GtNimbm19L4TfBhW14fHxsbE7iIjI7UcHx+f\r
+vr4+OfkUFxdbH00BAQFdXV0zMzM5OTlappyvampqpIhYtKj11NTUgnzYZnFjuXW+iJw5zWbzQgOo\r
+L2VdbXNz8yuvvKK/SFtMWE6Shw4dUtdL21wpPowPAwA+DPSnV82HVUK6LBUVFcHBwWJBBssv7v0c\r
+i+ibSoepoKAgKirKIr+wsDAhIUHrU2r5Ys7SC9QPjFjHRzx2y5YtJSUle/fulcrPnDkjnd2QkBDp\r
+NS5om8UYpR71twO1FvFzix7eghw1OTlZcqTLqBIXL17UfNiZbXY43mJwgah1Z3rtvO8EH4ZVb7sz\r
+MjJOnjypfaytrfXz8/Py8srPz5ez08DAgL7Curq6zZs3+/v7i47qHxCVkpIiRcSWy8vLbR6eBu8f\r
+dqa4RcL5Iunp6Z6ennFxcerPi06iL2Wz2szMTPFwlVNWViabIRsj52f1hzybK8WH8WEAwIeB/rQD\r
+P1xuH1aIEqelpa3kz95gf6W3pK6v0/KllxkTE6M3T4v706TXZa/mxsZG0Uj1zFLR5o6ODlVEVFa6\r
+vAvaYAOc92EN2YDr16+rPwEon9d82MltXpAP2yuyBt93gg8Dbfc6CTU+jA8DAG0q0J9epA/rX25h\r
+/ZoN+XjmzBm1fHl5uXJdg1d9TExM+Pr6qrT1m0UsvM7mWz2Wan9lv3Jzc8vKyrT81tbW8PBwybdX\r
+XDbex8fHXs2xsbFNTU0qHRgYqD3lVXZT2+UFcfr0adlCWUtWVlZnZ+fidj9/np6eHpF/+ffQoUPK\r
+hy9cuOD8Ni/t+PDaed8JPgy03S6N/g+UDpe0XthmJuDDAECbCvjw57MsXm5h/ZqNmzdvii2ruZLo\r
+7u52+DP29PRUCeM3i8w5eo+IM0OjNvdXsWXLljt37ujzd+3aJWau3npiXXxwcFDkPD093V7Nsl/q\r
+8ry7d+8mJCTY3GUnx37FGAsLC5WpSr7seFpa2smTJ7XL/5ysR+l0Q0PDgQMH5KuUCjMzM+fmh8FF\r
+iZ3c5rlF3T9s4Mxr50SHDwNtNwA+DAC0qbBOfdiZRzFZvNzC5ms2XnnlFfHVnp4e8UmHP+Px8fHN\r
+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\r
+yYTR90byiWwZleNRD91ZIQ0mMcP8fZsxZtB1V0X4Kb6nN6JpxKR022fJ+nrKYFXWudNVssptidXU\r
+HshevuO9VyN8jhn5/RbzcMFVx9iQYf9wXSvycATF8aOGp1g7deI/psaEY59E+KkwMs0klpgekV26\r
+YHJK49nMq9yBEVBjb+RDbByI/O3ixeXtV395x20DSzY39fAPhxZfMY63TbwfYqHTn/zJPbffNODq\r
+vrHcDaua4tdYUKxSJMx4t6Q1j/dMDBR87bJg1mNZ9kuTxZiSDypf3qe++CubOOLFIyM5Z++fWLeI\r
+l7Ge6cH4GIg9lr8Z/vD23195We/0QEHs8Nio/FXiGPPUow/e+K1v7N74emxd9tVPzLb4g1/wNij3\r
+9Hv2CEaK97EJJR97locBkIeBWsnDESZLPie8f+uy4vxQ8vbIbKB558rXmiZFKmt88Pbiv6arkfmq\r
+dsmro7HcyEhP/Oz+/Ph9W34XK9nviobiC7Yxz0gdWStNxTkwsmX+smq5RqEiaUToOqVYeNb3QNae\r
+VgShiT+9r9yt1PkSExc8w5lubW3Frd3ZM+cRxvLR6M8rXio3Ms0ksmt6oDTee+nbh1bswHxW/PSD\r
+f4tIWfkR6FtuuDqfFVOJtYoX9r/y0nxj0REIY5+kFZs77WeRFWNtsyQZIf+9lXNjld6Y94v0/HD8\r
+afSPh8XAj+4dHDE+34hULDG/E+IAFTcnVu4rm0jd6a7+2M/ZN1bpRvc9m96Igfh4xspHxk7trsVq\r
+THtiZO9LLsrmsOhXE6dO/MdyOySScOyxZb95OmaSbzyv4C1a7m1QYSDCcCx6yzsLxo8aXvIrKnkY\r
+AHkYqJU8XLI9rXQtq/gm0spp8Nab+s+f+Wgkt6hSlwwzBfdgl7tbOOJNr57ds66PsvGRV4sv5aWL\r
+nFmiKK5wR6U8ckKLT8NW2ZJWTe2BCumi3J8urvtyakO7afrYbl+8ILY63e+dbXu5TncqPOpc8sJs\r
+yZHpVbGsCPDr3nqx4at1p7kDU4S+67s3FD9AW/AwfPGXOyteeS6iYITJyLf527OjxArEz0i5ERTj\r
+WNz3vZvzd9Snp4XjZwyna9cRg1PczdrT2rnhX2OexddRZ05unDP1pwVr0vfSS4qvmkYUTzF18dwn\r
+8g/Ax3rGKsUH9oWnR0Xpev55kd6zHJ6/Zz4Sb7qfPOXSkiE8tYydWvDKupjKjl3xm6Ga68Px8md+\r
+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" />
 </BODY>
 </HTML>
\ No newline at end of file
index ee7f98e..fdd20ca 100644 (file)
@@ -61,19 +61,26 @@ public class AppParameters extends Properties {
        
        public AppParameters() throws FileNotFoundException, IOException {
                super();
+               this.file = new File(FILE_PATH);
                syncFile();
        }
 
        public AppParameters(Properties defaults) throws FileNotFoundException, IOException {
                super(defaults);
+               this.file = new File(FILE_PATH);
+               syncFile();
+       }
+       
+       public AppParameters(String iniFileName) throws FileNotFoundException, IOException {
+               super();
+               this.file = new File(iniFileName);
                syncFile();
        }
        
        void syncFile() throws FileNotFoundException, IOException {
                boolean update = false;
                
-               this.file = new File(FILE_PATH);
-               if (file.exists()) {
+               if (this.file.exists()) {
                        // ファイルが存在すれば、その内容をロードする。
                        this.load(new FileInputStream(file));
                }
@@ -199,7 +206,7 @@ public class AppParameters extends Properties {
                if (update) {
                        // ・ファイルがなければ新たに作る
                        // ・項目が足りない時は書き足す。
-                       this.store(new FileOutputStream(this.file), "defuilt settings");        
+                       this.store(new FileOutputStream(this.file), "defuilt settings");
                }
        }
        
index 8bb015e..8b8758d 100644 (file)
@@ -18,7 +18,7 @@ public class ElementMapTRKPT extends TreeMap<Date, Element> {
        }
 
        /**
-        * 拡張put value:ElementをputするとElement内のtimeを読み取ってkeyとしてsuper.put(key,value)する。
+        * 拡張put value:ElementをputするとElement内のtimeを読み取ってkeyとしてthis.put(key,value)する。
         * @param value
         * @return      keyとして登録したtime:Date
         * @throws ParseException 
@@ -145,4 +145,16 @@ public class ElementMapTRKPT extends TreeMap<Date, Element> {
                }
         return null;
     }
+    
+    public void printinfo() {
+       Date firstTime = null;
+       Date lastTime = null;
+               for (Date key : this.keySet()) {
+                       if (firstTime == null) {
+                               firstTime = new Date(key.getTime());
+                       }
+                       lastTime = new Date(key.getTime());
+               }
+               System.out.println(String.format("|                       <trkpt/> |%20s|%20s|", ImportPicture.dfuk.format(firstTime), ImportPicture.dfuk.format(lastTime)));
+    }
 }
diff --git a/importPicture/src/osm/jp/gpx/ElementMapTRKSEG.java b/importPicture/src/osm/jp/gpx/ElementMapTRKSEG.java
new file mode 100644 (file)
index 0000000..45d5486
--- /dev/null
@@ -0,0 +1,70 @@
+package osm.jp.gpx;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.TreeMap;
+
+import org.w3c.dom.*;
+
+@SuppressWarnings("serial")
+public class ElementMapTRKSEG extends TreeMap<Date, ElementMapTRKPT> {
+       
+       public ElementMapTRKSEG() {
+               super(new TimeComparator());
+       }
+       
+       /**
+        * 拡張put value:Node<TRKSEG>をputするとNode<TRKSEG>内のNode<TRKSPT>を put(key,value)する。
+        * @param nodeTRKSEG
+        * @return      keyとして登録したtime:Date
+        * @throws ParseException 
+        * @throws DOMException 
+        */
+       public Date put(Node nodeTRKSEG) throws DOMException, ParseException {
+        if (nodeTRKSEG.getNodeName().equals("trkseg")) {
+            NodeList nodes2 = nodeTRKSEG.getChildNodes();
+            
+               Date trksegStartTime = new Date();                              // 対象とする開始時刻(現在時刻)
+            ElementMapTRKPT mapTRKPT = new ElementMapTRKPT();
+            for (int i2 = 0; i2 < nodes2.getLength(); i2++) {
+                Node nodeTRKPT = nodes2.item(i2);
+                if (nodeTRKPT.getNodeName().equals("trkpt")) {
+                       if (ImportPicture.param_GpxNoFirstNode && (i2 == 0)) {
+                               continue;
+                       }
+                    Date time = mapTRKPT.put((Element)nodeTRKPT);
+                               if (trksegStartTime.compareTo(time) < 0) {
+                                       trksegStartTime = time;
+                               }
+                }
+            }
+            this.put(trksegStartTime, mapTRKPT);
+            return trksegStartTime;
+        }
+        return null;
+       }
+       
+       /**
+        * 拡張put value:ElementMapTRKPTをputするとElementMapTRKPT内の最初のエントリのtimeを読み取ってkeyとしてthis.put(key,value)する。
+        * @param value
+        * @return      keyとして登録したtime:Date
+        * @throws ParseException 
+        * @throws DOMException 
+        */
+       public Date put(ElementMapTRKPT value) {
+               for (Date key : value.keySet()) {
+                       this.put(key, value);
+                       return key;
+               }
+               return null;
+       }
+       
+       public void printinfo() {
+        for (java.util.Map.Entry<Date, ElementMapTRKPT> map : this.entrySet()) {
+               System.out.println("|--------------------------------|--------------------|--------------------|");
+               ElementMapTRKPT mapTRKPT = map.getValue();
+               mapTRKPT.printinfo();
+        }
+       }
+
+}
index fe2a689..bb487a5 100644 (file)
@@ -13,7 +13,6 @@ import java.util.Date;
 import java.util.GregorianCalendar;\r
 import java.util.Map;\r
 import java.util.TimeZone;\r
-import java.util.TreeMap;\r
 import java.util.logging.LogManager;\r
 import java.util.logging.Logger;\r
 \r
@@ -95,8 +94,13 @@ public class ImportPicture extends Thread {
      * ・精確な時刻との時差を入力することで、撮影日時を補正します。\r
      * ・画像ファイルの更新日付リストをCSV形式のファイルとして出力する。\r
      * ・・結果は、取り込み元のGPXファイルとは別に、元ファイル名にアンダーバー「_」を付加した.ファイルに出力します。\r
+     * \r
+     *  exp) $ java -cp .:AdjustTime.jar:commons-imaging-1.0-SNAPSHOT.jar [AdjustTime.ini]\r
+     *  exp) > java -cp .;AdjustTime.jar;commons-imaging-1.0-SNAPSHOT.jar [AdjustTime.ini]\r
      *\r
      * @param argv\r
+     * argv[0] = INIファイルのパス名\r
+     * \r
      * argv[-] = dummy\r
      * argv[0] = 画像ファイルが格納されているディレクトリ          --> imgDir\r
      * argv[1] = 時刻補正の基準とする画像ファイル                              --> baseFile\r
@@ -109,31 +113,23 @@ public class ImportPicture extends Thread {
      */\r
     public static void main(String[] argv) throws Exception\r
     {\r
-        Date jptime;\r
+        Date imgtime;\r
 \r
+       String paramFilePath = ((argv.length < 1) ? AppParameters.FILE_PATH : argv[0]);\r
+        System.out.println("Param File = '"+ paramFilePath +"'");\r
         ImportPicture obj = new ImportPicture();\r
-        obj.ex = null;\r
-\r
-        if (argv.length > 0) {\r
-            obj.imgDir = new File(argv[0]);\r
-        }\r
-\r
-        if (argv.length < 4) {\r
-            System.out.println("!!! Illigal command call. !!!");\r
-            System.out.println("> java -cp .:AdjustTime.jar:commons-imaging-1.0-SNAPSHOT.jar <targetDir> <time base image> <time> {EXIF/not} (gpx)");\r
-            System.out.println("> java -cp .:AdjustTime.jar:commons-imaging-1.0-SNAPSHOT.jar. IMG_01234.JPG 2012-06-15T12:52:22 EXIF");\r
-            System.out.println("> java -cp .:AdjustTime.jar . IMG_01234.JPG 2012-06-15T12:52:22 not");\r
-            System.out.println();\r
-            return;\r
-        }\r
+        obj.params = new AppParameters(paramFilePath);\r
 \r
-        obj.params = new AppParameters();\r
+        obj.ex = null;\r
+        // argv[0] --> AppParameters.IMG_SOURCE_FOLDER に置き換え\r
+        obj.imgDir = new File(obj.params.getProperty(AppParameters.IMG_SOURCE_FOLDER));\r
 \r
         // 基準時刻(ファイル更新日時 | EXIF撮影日時)\r
        obj.exifBase = (obj.params.getProperty(AppParameters.GPX_BASETIME).equals("EXIF_TIME") ? true : false);\r
 \r
         // 基準時刻ファイルの「更新日時」を使って時刻合わせを行う。\r
-        File baseFile = new File(obj.imgDir, argv[1]);\r
+        // argv[1] --> AppParameters.IMG_BASE_FILE に置き換え\r
+        File baseFile = new File(obj.imgDir, obj.params.getProperty(AppParameters.IMG_BASE_FILE));\r
         if (obj.exifBase) {\r
             ImageMetadata meta = Imaging.getMetadata(baseFile);\r
             JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;\r
@@ -148,25 +144,15 @@ public class ImportPicture extends Thread {
             }\r
                String dateTimeOriginal = exif.getFieldValue(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL)[0];\r
                long lastModifyTime = (new SimpleDateFormat("yyyy:MM:dd HH:mm:ss")).parse(dateTimeOriginal).getTime();\r
-               jptime = new Date(lastModifyTime);\r
+               imgtime = new Date(lastModifyTime);\r
         }\r
         else {\r
-            jptime = new Date(baseFile.lastModified());\r
-        }\r
-\r
-        String timeStr = argv[2];\r
-        try {\r
-            dfjp.setTimeZone(TimeZone.getTimeZone("JST"));\r
-            Date t = dfjp.parse(timeStr);\r
-            obj.delta = t.getTime() - jptime.getTime();\r
-        }\r
-        catch (ParseException e) {\r
-            System.out.println("'"+ timeStr +"' の書式が違います("+ TIME_FORMAT_STRING +")");\r
-            return;\r
+            imgtime = new Date(baseFile.lastModified());\r
         }\r
 \r
         // 出力ファイル\r
-        obj.outDir = new File(argv[3]);\r
+        // argv[3] --> AppParameters.IMG_OUTPUT に置き換え\r
+        obj.outDir = new File(obj.params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));\r
 \r
         // その他のパラメータを読み取る\r
        String paramStr = obj.params.getProperty(AppParameters.GPX_GPXSPLIT);\r
@@ -176,7 +162,7 @@ public class ImportPicture extends Thread {
         \r
        paramStr = obj.params.getProperty(AppParameters.GPX_NO_FIRST_NODE);\r
        if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) {\r
-               obj.param_GpxNoFirstNode = true;\r
+               ImportPicture.param_GpxNoFirstNode = true;\r
        }\r
        \r
        paramStr = obj.params.getProperty(AppParameters.GPX_REUSE);\r
@@ -261,8 +247,9 @@ public class ImportPicture extends Thread {
         System.out.println(" - param: gpxDir = '"+ (obj.gpxDir == null ? "" : obj.gpxDir.getAbsolutePath()) +"'");\r
         System.out.println(" - param: number of gpxFiles = '"+ obj.gpxFiles.size() +"'");\r
         System.out.println(" - param: "+ AppParameters.GPX_GPXSPLIT +"="+ obj.param_GpxSplit);\r
-        System.out.println(" - param: "+ AppParameters.GPX_NO_FIRST_NODE +"="+ obj.param_GpxNoFirstNode);        \r
+        System.out.println(" - param: "+ AppParameters.GPX_NO_FIRST_NODE +"="+ ImportPicture.param_GpxNoFirstNode);        \r
         System.out.println(" - param: "+ AppParameters.GPX_REUSE +"="+ obj.param_GpxReuse);\r
+        System.out.println(" - param: "+ AppParameters.IMG_TIME +"="+ obj.params.getProperty(AppParameters.IMG_TIME) );\r
         System.out.println(" - param: "+ AppParameters.IMG_BASE_FILE +"="+ obj.params.getProperty(AppParameters.IMG_BASE_FILE) );\r
         System.out.println(" - param: "+ AppParameters.GPX_BASETIME +"="+ obj.params.getProperty(AppParameters.GPX_BASETIME) );\r
         System.out.println(" - param: "+ AppParameters.IMG_OUTPUT +"="+ obj.params.getProperty(AppParameters.IMG_OUTPUT));     \r
@@ -272,6 +259,18 @@ public class ImportPicture extends Thread {
         System.out.println(" - param: "+ AppParameters.GPX_OUTPUT_WPT +"="+ obj.param_GpxOutputWpt);\r
         System.out.println(" - param: "+ AppParameters.GPX_OVERWRITE_MAGVAR +"="+ Complementation.param_GpxOverwriteMagvar);\r
         System.out.println(" - param: "+ AppParameters.GPX_OUTPUT_SPEED +"="+ Complementation.param_GpxOutputSpeed);\r
+\r
+        String timeStr = obj.params.getProperty(AppParameters.IMG_TIME);\r
+        try {\r
+            //dfjp.setTimeZone(TimeZone.getTimeZone("JST"));\r
+            Date t = dfuk.parse(timeStr);\r
+            obj.delta = t.getTime() - imgtime.getTime();\r
+        }\r
+        catch (ParseException e) {\r
+            System.out.println("'"+ timeStr +"' の書式が違います("+ TIME_FORMAT_STRING +")");\r
+            return;\r
+        }\r
+\r
         obj.start();\r
         try {\r
             obj.join();\r
@@ -290,7 +289,7 @@ public class ImportPicture extends Thread {
     public ArrayList<File> gpxFiles = new ArrayList<>();\r
     public AppParameters params;\r
        public boolean param_GpxSplit = false;\r
-       public boolean param_GpxNoFirstNode = false;\r
+       public static boolean param_GpxNoFirstNode = false;\r
        public boolean param_GpxReuse = false;\r
        public boolean param_GpxOutputWpt = true;\r
        public boolean param_ImgOutputAll = false;\r
@@ -367,6 +366,8 @@ public class ImportPicture extends Thread {
         document = domImpl.createDocument("", "gpx", null);\r
 \r
         /*\r
+         * GPXファイルをパースする\r
+         * \r
          * <gpx>\r
          *   <trk>\r
          *     <trkseg>\r
@@ -379,7 +380,7 @@ public class ImportPicture extends Thread {
          *   </trk>\r
          * </gpx>\r
          */\r
-        TreeMap<Long,ElementMapTRKPT> mapTRKSEG = new TreeMap<Long, ElementMapTRKPT>();\r
+        ElementMapTRKSEG mapTRKSEG = new ElementMapTRKSEG();\r
         Element trk = null;\r
         gpx    = builder.parse(gpxFile).getFirstChild();\r
         document = gpx.getOwnerDocument();\r
@@ -393,32 +394,22 @@ public class ImportPicture extends Thread {
                 for (int i1=0; i1 < nodes1.getLength(); i1++) {\r
                     Node nodeTRKSEG = nodes1.item(i1);\r
                     if (nodeTRKSEG.getNodeName().equals("trkseg")) {\r
-                        NodeList nodes2 = nodeTRKSEG.getChildNodes();\r
-                        \r
-                        ElementMapTRKPT mapTRKPT = new ElementMapTRKPT();\r
-                               Date trksegStartTime = new Date();                              // 対象とする開始時刻(現在時刻)\r
-                        for (int i2=0; i2 < nodes2.getLength(); i2++) {\r
-                            Node nodeTRKPT = nodes2.item(i2);\r
-                            if (nodeTRKPT.getNodeName().equals("trkpt")) {\r
-                               if (param_GpxNoFirstNode && (i2 == 0)) {\r
-                                       continue;\r
-                               }\r
-                                Date time = mapTRKPT.put(getCopy(document, nodeTRKPT));\r
-                                       if (trksegStartTime.compareTo(time) < 0) {\r
-                                               trksegStartTime = time;\r
-                                       }\r
-                            }\r
-                        }\r
-\r
-                        mapTRKSEG.put(trksegStartTime.getTime(), mapTRKPT);\r
+                        mapTRKSEG.put(nodeTRKSEG);\r
                     }\r
                 }\r
             }\r
         }\r
         \r
-        // mapTRKSEGに時間順に格納された<trkseg>を順次ひとつづつ処理する\r
+        // パースされた mapTRKSEG の中身を出力する\r
+               System.out.println("                                 |--------------------|--------------------|");\r
+               System.out.println("  GPS logging time               | First Time         | Last Time          |");\r
+        mapTRKSEG.printinfo();\r
+               System.out.println("|--------------------------------|--------------------|--------------------|");\r
+               System.out.println();\r
+        \r
+        // imgDir内の画像ファイルを処理する\r
                System.out.println("|--------------------------------|--------------------|--------------------|--------------|--------------|--------|------|------|");\r
-               System.out.println("| name                           | UpdateTime         | GPStime            |   Latitude   |   Longitude  | ele    |magvar| km/h |");\r
+               System.out.println("| name                           | Camera Time        | GPStime            |   Latitude   |   Longitude  | ele    |magvar| km/h |");\r
                System.out.println("|--------------------------------|--------------------|--------------------|--------------|--------------|--------|------|------|");\r
                proc(imgDir, delta, mapTRKSEG, exif, gpx);\r
                System.out.println("|--------------------------------|--------------------|--------------------|--------------|--------------|--------|------|------|");\r
@@ -447,7 +438,7 @@ public class ImportPicture extends Thread {
      * @throws ImageReadException \r
      * @throws ImageWriteException \r
      */\r
-    boolean proc(File dir, long delta, TreeMap<Long,ElementMapTRKPT> mapTRKSEG, boolean exifWrite, Node gpx) throws ParseException, ImageReadException, IOException, ImageWriteException {\r
+    boolean proc(File dir, long delta, ElementMapTRKSEG mapTRKSEG, boolean exifWrite, Node gpx) throws ParseException, ImageReadException, IOException, ImageWriteException {\r
         DecimalFormat yearFormatter = new DecimalFormat("0000");\r
         DecimalFormat monthFormatter = new DecimalFormat("00");\r
         DecimalFormat dayFormatter = new DecimalFormat("00");\r
@@ -487,11 +478,11 @@ public class ImportPicture extends Thread {
                long lastModifyTime = (new SimpleDateFormat("yyyy:MM:dd HH:mm:ss")).parse(dateTimeOriginal).getTime();\r
                itime = new Date(lastModifyTime);\r
             }\r
-            System.out.print(String.format("%20s ", dfjp.format(itime)));\r
+            System.out.print(String.format("%20s|", dfuk.format(itime)));\r
 \r
             // uktime <-- 画像撮影時刻に対応するGPX時刻(補正日時)\r
             Date uktime = new Date(itime.getTime() + delta);\r
-            System.out.print(String.format("%20s|", dfjp.format(uktime)));\r
+            System.out.print(String.format("%20s|", dfuk.format(uktime)));\r
 \r
                // 時刻uktimeにおける<magver>をtrkptに追加する\r
             String eleStr = "-";\r
@@ -502,7 +493,7 @@ public class ImportPicture extends Thread {
             Element trkptE = null;\r
             TagTrkpt trkptT = null;\r
 \r
-            for (Map.Entry<Long,ElementMapTRKPT> map : mapTRKSEG.entrySet()) {\r
+            for (Map.Entry<Date,ElementMapTRKPT> map : mapTRKSEG.entrySet()) {\r
                ElementMapTRKPT mapTRKPT = map.getValue();\r
                 trkptE = mapTRKPT.getValue(uktime);\r
                 if (trkptE != null) {\r
@@ -510,7 +501,7 @@ public class ImportPicture extends Thread {
                 }\r
             }\r
             if (trkptE == null) {\r
-                System.out.println(String.format("%20s ", "Out of GPX logging time."));\r
+                System.out.println(String.format("%-52s|", "  Out of GPX logging time."));\r
                 if (!this.param_ImgOutputAll) {\r
                        continue;\r
                 }\r
@@ -688,7 +679,7 @@ public class ImportPicture extends Thread {
      * 2012-06-10T05:09:46Z  (日本時間の'2012-06-10T14:09:46')\r
      */\r
     public static final String TIME_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss";\r
-    public static SimpleDateFormat dfjp = new SimpleDateFormat(TIME_FORMAT_STRING);\r
+    public static SimpleDateFormat dfjp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");\r
     public static SimpleDateFormat dfuk = new SimpleDateFormat(TIME_FORMAT_STRING +"'Z'");\r
 \r
     /**\r
index db305d8..41720a9 100644 (file)
@@ -597,13 +597,14 @@ public class AdjustTime extends JFrame
     void doButton_Action(java.awt.event.ActionEvent event) {
        doButton.setEnabled(false);
 
-       String[] argv = new String[5];
+       String[] argv = new String[0];
+       /*
         argv[0] = arg1_srcFolder.getText();
         argv[1] = arg2_baseTimeImg.getText();
         argv[2] = arg3_basetiome.getText();
         argv[3] = arg5_outputFolder.getText();
         argv[4] = arg4_gpxFolder.getText();
-        
+        */
         this.params.setProperty(AppParameters.GPX_NO_FIRST_NODE, String.valueOf(noFirstNode.isSelected()));
         this.params.setProperty(AppParameters.GPX_REUSE, String.valueOf(gpxReuse.isSelected()));
         this.params.setProperty(AppParameters.GPX_SOURCE_FOLDER, arg4_gpxFolder.getText());
index 9d7b59e..0ad0be1 100644 (file)
@@ -14,439 +14,612 @@ import java.nio.channels.FileChannel;
 import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
 import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
 import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
-import org.junit.Before;
-import org.junit.Test;
 import org.junit.runner.*;
-import org.junit.experimental.runners.Enclosed;
-import org.junit.experimental.theories.DataPoint;
+import org.junit.experimental.theories.DataPoints;
 import org.junit.experimental.theories.Theories;
 import org.junit.experimental.theories.Theory;
 
 import hayashi.tools.files.DeleteDir;
-import osm.jp.gpx.utils.TarGz;
 
-@RunWith(Enclosed.class)
+@RunWith(Theories.class)
 public class ImportPictureTest {
-       
-       public static class SONYのカメラの場合 {
+       static class Expecter {
+               String value;
+               boolean expect;
                
-               @Before
-               public void setUp() throws Exception {
-                       // カメラディレクトリを削除する
-                       File dir = new File("testdata/cameradata");
-                       if (dir.exists()) {
-                               DeleteDir.delete(dir);
-                       }
-                       File outDir = new File("testdata/output");
-                       if (outDir.exists()) {
-                               DeleteDir.delete(outDir);
-                       }
-                       outDir.mkdir();
-                       
-                       // カメラディレクトリを作成する
-                       uncompress(new File("testdata", "Sony20170518.tar.gz"), dir);
-                       
-                       // GPXファイルをセット
-               try (   FileInputStream inStream = new FileInputStream(new File("testdata", "20170518.gpx"));
-                               FileOutputStream outStream = new FileOutputStream(new File("testdata/cameradata/10170518/20170518.gpx"));
-                       FileChannel inChannel = inStream.getChannel();
-                       FileChannel outChannel = outStream.getChannel();        )
-               {
-                   inChannel.transferTo(0, inChannel.size(), outChannel);
-               }
-               
-               // プロパティファイルを設定
-                       File iniFile = new File("AdjustTime.ini");
-                       File orgFile = new File("AdjustTime.ini.org");
-                       File testFile = new File("testdata", "AdjustTime.20170518.ini");
-                       if (orgFile.exists()) {
-                               orgFile.delete();
-                       }
-                       if (iniFile.exists()) {
-                               iniFile.renameTo(orgFile);
-                       }
-               try (   FileInputStream inStream = new FileInputStream(testFile);
-                               FileOutputStream outStream = new FileOutputStream(new File("AdjustTime.ini"));
-                               FileChannel inChannel = inStream.getChannel();
-                               FileChannel outChannel = outStream.getChannel();        )
-               {
-                   inChannel.transferTo(0, inChannel.size(),outChannel);
-               }
+               public Expecter(String value, boolean expect){
+                       this.value = value;
+                       this.expect = expect;
                }
+       }
 
-               @Test
-               public void FILE_UPDATE時間を基準にして時間外のファイルはコピー対象外の時() throws Exception {
-               // "AdjustTime.20170517.ini"のデフォルト状態で実行
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
-                       params.setProperty(AppParameters.IMG_OUTPUT_ALL, "false");
-                       params.store();
-               
-               // 実行する
-                       testdo();
-
-               File gpxfile = new File("./testdata/output/10170518", "20170518_.gpx");
-               assertThat(gpxfile.exists(), is(true));
-               File file0 = new File("./testdata/output/10170518", "DSC05183.JPG");
-               assertThat(file0.exists(), is(false));
-               File file1 = new File("./testdata/output/10170518", "DSC05184.JPG");
-               assertThat(file1.exists(), is(true));
-               File file2 = new File("./testdata/output/10170518", "DSC05196.JPG");
-               assertThat(file2.exists(), is(true));
-               File file3 = new File("./testdata/output/10170518", "DSC05204.JPG");
-               assertThat(file3.exists(), is(true));
-               File file4 = new File("./testdata/output/10170518", "DSC05205.JPG");
-               assertThat(file4.exists(), is(false));
-               }
+       static class Fixture {
+               String comment;                         // テスト概要(コメント)
+               String tarFilePath;                     // TARデータ
+               String gpxSourcePath;           // GPXファイル(オリジナル)
+               String gpxDestinationPath;      // GPXファイル(配置先)
+               String iniFilePath;                     // iniファイル
+               Expecter[] expecters;
                
-               @Test
-               public void FILE_UPDATE時間を基準にして時間外のファイルもコピーする時() throws Exception {
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
-                       params.setProperty(AppParameters.IMG_OUTPUT_ALL, "true");
-                       params.store();
-               
-               // 実行する
-                       testdo();
-
-               File gpxfile = new File("./testdata/output/10170518", "20170518_.gpx");
-               assertThat(gpxfile.exists(), is(true));
-               File file0 = new File("./testdata/output/10170518", "DSC05183.JPG");
-               assertThat(file0.exists(), is(true));
-               File file1 = new File("./testdata/output/10170518", "DSC05184.JPG");
-               assertThat(file1.exists(), is(true));
-               File file2 = new File("./testdata/output/10170518", "DSC05196.JPG");
-               assertThat(file2.exists(), is(true));
-               File file3 = new File("./testdata/output/10170518", "DSC05204.JPG");
-               assertThat(file3.exists(), is(true));
-               File file4 = new File("./testdata/output/10170518", "DSC05205.JPG");
-               assertThat(file4.exists(), is(true));
+               public Fixture(
+                               String comment,
+                               String tarFilePath,
+                               String gpxSourcePath,
+                               String gpxDestinationPath,
+                               String iniFilePath,
+                               Expecter[] expecters
+               ) {
+                       this.comment = comment;
+                       this.tarFilePath = tarFilePath;
+                       this.gpxSourcePath = gpxSourcePath;
+                       this.gpxDestinationPath = gpxDestinationPath;
+                       this.iniFilePath = iniFilePath;
+                       this.expecters = expecters;
                }
                
-               /**
-                * 実行する
-                * @throws Exception
-                */
-               public void testdo() {
-               try {
-                       String[] argv = {
-                                       "./testdata/cameradata/10170518",
-                                       "DSC05183.JPG",
-                                       "2017-05-18T09:16:48",
-                                       "./testdata/output",
-                                       "./testdata/cameradata/10170518"
-                       };
-                       ImportPicture.main(argv);
-                       }
-                       catch (Exception e) {
-                               fail("Exceptionが発生した。");
-                       }
+               public String toString() {
+                       String msg = "テストパターン : "+ comment + "\n";
+                       msg += "\ttarFilePath = "+ tarFilePath +"\n";
+                       msg += "\tgpxSourcePath = "+ gpxSourcePath +"\n";
+                       msg += "\tgpxDestinationPath = "+ gpxDestinationPath +"\n";
+                       msg += "\tiniFilePath = "+ iniFilePath;
+                       return msg;
                }
        }
 
-       public static class WiMiUSのカメラの場合 {
-               
-               @Before
-               public void setUp() throws Exception {
-                       // カメラディレクトリを削除する
-                       File dir = new File("testdata/cameradata");
-                       if (dir.exists()) {
-                               DeleteDir.delete(dir);
-                       }
-                       File outDir = new File("testdata/output");
-                       if (outDir.exists()) {
-                               DeleteDir.delete(outDir);
-                       }
-                       outDir.mkdir();
+       @DataPoints
+       public static Fixture[] datas = {
+                       new Fixture(
+                                       "[A1].SONYカメラの場合.FILE_UPDATE時間を基準にして時間外のファイルはコピー対象外の時",
+                                       "testdata/Sony20170518.tar.gz", 
+                                       "testdata/20170518.gpx",
+                                       "testdata/cameradata/20170518.gpx",
+                                       "testdata/AdjustTime.20170518.A1.ini",
+                                       new Expecter[] {
+                                               new Expecter("10170518/20170518_.gpx", true),
+                                               new Expecter("10170518/DSC05183.JPG", false),
+                                               new Expecter("10170518/DSC05184.JPG", true),
+                                               new Expecter("10170518/DSC05196.JPG", true),
+                                               new Expecter("10170518/DSC05204.JPG", true),
+                                               new Expecter("10170518/DSC05205.JPG", false),
+                                       }),
+                       new Fixture(
+                                       "[A2].SONYカメラの場合.FILE_UPDATE時間を基準にして時間外のファイルもコピーする時",
+                                       "testdata/Sony20170518.tar.gz", 
+                                       "testdata/20170518.gpx",
+                                       "testdata/cameradata/20170518.gpx",
+                                       "testdata/AdjustTime.20170518.A2.ini",
+                                       new Expecter[] {
+                                               new Expecter("10170518/20170518_.gpx", true),
+                                               new Expecter("10170518/DSC05183.JPG", true),
+                                               new Expecter("10170518/DSC05184.JPG", true),
+                                               new Expecter("10170518/DSC05196.JPG", true),
+                                               new Expecter("10170518/DSC05204.JPG", true),
+                                               new Expecter("10170518/DSC05205.JPG", true),
+                                       }),
                        
-                       // カメラディレクトリを作成する
-                       TarGz.uncompress(new File("testdata", "WiMiUS20170518.tar.gz"), dir);
+                       new Fixture(
+                                       "[B1].WiMiUSカメラの場合.FILE_UPDATE時間を基準にして時間外のファイルはコピー対象外の時",
+                                       "testdata/WiMiUS20170518.tar.gz", 
+                                       "testdata/20170518.gpx",
+                                       "testdata/cameradata/20170518.gpx",
+                                       "testdata/AdjustTime.20170518.B1.ini",
+                                       new Expecter[] {
+                                               new Expecter("cameradata/20170518_.gpx", true),
+                                               new Expecter("cameradata/20170518_092031A.jpg", false),
+                                               new Expecter("cameradata/20170518_094226A_snap.jpg", true),
+                                               new Expecter("cameradata/20170518_094737A.jpg", true),
+                                               new Expecter("cameradata/20170518_094827A.jpg", false),
+                                       }),
+
+                       new Fixture(
+                                       "[B2].WiMiUSカメラの場合.FILE_UPDATE時間を基準にして時間外のファイルもコピーする時",
+                                       "testdata/WiMiUS20170518.tar.gz", 
+                                       "testdata/20170518.gpx",
+                                       "testdata/cameradata/20170518.gpx",
+                                       "testdata/AdjustTime.20170518.B2.ini",
+                                       new Expecter[] {
+                                               new Expecter("cameradata/20170518_.gpx", true),
+                                               new Expecter("cameradata/20170518_092031A.jpg", true),
+                                               new Expecter("cameradata/20170518_094226A_snap.jpg", true),
+                                               new Expecter("cameradata/20170518_094737A.jpg", true),
+                                               new Expecter("cameradata/20170518_094827A.jpg", true),
+                                       }),
                        
-                       // GPXファイルをセット
-               try (   FileInputStream inStream = new FileInputStream(new File("testdata", "20170518.gpx"));
-                               FileOutputStream outStream = new FileOutputStream(new File("testdata/cameradata/20170518.gpx"));
-                       FileChannel inChannel = inStream.getChannel();
-                       FileChannel outChannel = outStream.getChannel();        )
-               {
-                   inChannel.transferTo(0, inChannel.size(), outChannel);
-               }
-               
-               // プロパティファイルを設定
-                       File iniFile = new File("AdjustTime.ini");
-                       File orgFile = new File("AdjustTime.ini.org");
-                       File testFile = new File("testdata", "AdjustTime.20170518.ini");
-                       if (orgFile.exists()) {
-                               orgFile.delete();
-                       }
-                       if (iniFile.exists()) {
-                               iniFile.renameTo(orgFile);
-                       }
-               try (   FileInputStream inStream = new FileInputStream(testFile);
-                               FileOutputStream outStream = new FileOutputStream(new File("AdjustTime.ini"));
-                               FileChannel inChannel = inStream.getChannel();
-                               FileChannel outChannel = outStream.getChannel();        )
-               {
-                   inChannel.transferTo(0, inChannel.size(),outChannel);
-               }
-
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.IMG_TIME, "2017-05-18T09:20:30");
-                       params.setProperty(AppParameters.IMG_BASE_FILE, "20170518_092031A.jpg");
-                       params.setProperty(AppParameters.IMG_SOURCE_FOLDER, "./testdata/cameradata");
-                       params.setProperty(AppParameters.GPX_SOURCE_FOLDER, "./testdata/cameradata/20170518.gpx");
-                       params.store();
-               }
+                       new Fixture(
+                                       "[M1a].GPXが複数のTRKSEGに分割している場合.FILE_UPDATE時間を基準.GarminColorado",
+                                       "testdata/separate.tar.gz",
+                                       "testdata/muiltiTRK.GarminColorado.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M1a.separate.ini",
+                                       new Expecter[] {
+                                       // GPX file
+                                               new Expecter("separate/separate_.gpx", true),
+                                   
+                                   // out of time ( - 2017-05-29T01:24:05)
+                                               new Expecter("separate/20170529_102305A.jpg", false),
+                                               new Expecter("separate/20170529_102314A.jpg", false),
+                                   
+                                   // in TRKSEG(1) (2017-05-29T01:23:05 - 2017-05-29T01:24:05)
+                                               new Expecter("separate/20170529_102318A.jpg", true),
+                                               new Expecter("separate/20170529_102322A.jpg", true),
+                                               new Expecter("separate/20170529_102405A.jpg", true),
 
-               @Test
-               public void FILE_UPDATE時間を基準にして時間外のファイルはコピー対象外の時() throws Exception {
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
-                       params.setProperty(AppParameters.IMG_OUTPUT_ALL, "false");
-                       params.store();
-               
-               // 実行する
-                       testdo();
-
-               File gpxfile = new File("./testdata/output/cameradata", "20170518_.gpx");
-               assertThat(gpxfile.exists(), is(true));
-               File file0 = new File("./testdata/output/cameradata", "20170518_092031A.jpg");
-               assertThat(file0.exists(), is(false));
-               File file1 = new File("./testdata/output/cameradata", "20170518_094226A_snap.jpg");
-               assertThat(file1.exists(), is(true));
-               File file3 = new File("./testdata/output/cameradata", "20170518_094737A.jpg");
-               assertThat(file3.exists(), is(true));
-               File file4 = new File("./testdata/output/cameradata", "20170518_094827A.jpg");
-               assertThat(file4.exists(), is(false));
-               }
-               
-               @Test
-               public void FILE_UPDATE時間を基準にして時間外のファイルもコピーする時() throws Exception {
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
-                       params.setProperty(AppParameters.IMG_OUTPUT_ALL, "true");
-                       params.store();
-               
-               // 実行する
-                       testdo();
-
-               File gpxfile = new File("./testdata/output/cameradata", "20170518_.gpx");
-               assertThat(gpxfile.exists(), is(true));
-               File file0 = new File("./testdata/output/cameradata", "20170518_092031A.jpg");
-               assertThat(file0.exists(), is(true));
-               File file1 = new File("./testdata/output/cameradata", "20170518_094226A_snap.jpg");
-               assertThat(file1.exists(), is(true));
-               File file3 = new File("./testdata/output/cameradata", "20170518_094737A.jpg");
-               assertThat(file3.exists(), is(true));
-               File file4 = new File("./testdata/output/cameradata", "20170518_094827A.jpg");
-               assertThat(file4.exists(), is(true));
-               }
+                                   // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                               new Expecter("separate/20170529_102409A.jpg", false),
+                                               new Expecter("separate/20170529_102418A.jpg", false),
+
+                                   // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                               new Expecter("separate/20170529_102448A.jpg", true),
+                                               new Expecter("separate/20170529_103246A.jpg", true),
+
+                                   // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                               new Expecter("separate/20170529_103315A.jpg", false),
+                                               new Expecter("separate/20170529_103545A.jpg", false),
+
+                                   // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                               new Expecter("separate/20170529_102448A.jpg", true),
+                                               new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M1b].GPXが複数のTRKSEGに分割している場合.FILE_UPDATE時間を基準.GarminColorado",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/muiltiTRK.GarminColorado.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M1b.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", true),
+                                                       new Expecter("separate/20170529_102314A.jpg", true),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", true),
+                                                       new Expecter("separate/20170529_102418A.jpg", true),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", true),
+                                                       new Expecter("separate/20170529_103545A.jpg", true),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M1c].GPXが複数のTRKSEGに分割している場合.EXIF時間を基準.GarminColorado",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/muiltiTRK.GarminColorado.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M1c.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate_", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", false),
+                                                       new Expecter("separate/20170529_102314A.jpg", false),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", false),
+                                                       new Expecter("separate/20170529_102418A.jpg", false),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", false),
+                                                       new Expecter("separate/20170529_103545A.jpg", false),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M1d].GPXが複数のTRKSEGに分割している場合.EXIF時間を基準.GarminColorado",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/muiltiTRK.GarminColorado.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M1d.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate_", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", true),
+                                                       new Expecter("separate/20170529_102314A.jpg", true),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", true),
+                                                       new Expecter("separate/20170529_102418A.jpg", true),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", true),
+                                                       new Expecter("separate/20170529_103545A.jpg", true),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       
+                       new Fixture(
+                                       "[M2a].GPXが複数のTRKSEGに分割している場合.FILE_UPDATE時間を基準.eTrex_20J",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEG.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M2a.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", false),
+                                                       new Expecter("separate/20170529_102314A.jpg", false),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", false),
+                                                       new Expecter("separate/20170529_102418A.jpg", false),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", false),
+                                                       new Expecter("separate/20170529_103545A.jpg", false),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M2b].GPXが複数のTRKSEGに分割している場合.FILE_UPDATE時間を基準.eTrex_20J",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEG.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M2b.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", true),
+                                                       new Expecter("separate/20170529_102314A.jpg", true),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", true),
+                                                       new Expecter("separate/20170529_102418A.jpg", true),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", true),
+                                                       new Expecter("separate/20170529_103545A.jpg", true),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M2c].GPXが複数のTRKSEGに分割している場合.EXIF時間を基準.eTrex_20J",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEG.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M2c.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", false),
+                                                       new Expecter("separate/20170529_102314A.jpg", false),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", false),
+                                                       new Expecter("separate/20170529_102418A.jpg", false),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", false),
+                                                       new Expecter("separate/20170529_103545A.jpg", false),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M2d].GPXが複数のTRKSEGに分割している場合.EXIF時間を基準.eTrex_20J",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEG.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M2d.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", true),
+                                                       new Expecter("separate/20170529_102314A.jpg", true),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", true),
+                                                       new Expecter("separate/20170529_102418A.jpg", true),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", true),
+                                                       new Expecter("separate/20170529_103545A.jpg", true),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+                       
+                       new Fixture(
+                                       "[M3a].GPXが複数のTRKSEGに分割している場合.FILE_UPDATE時間を基準.eTrex_20Jreverse",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEGreverse.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M3a.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", false),
+                                                       new Expecter("separate/20170529_102314A.jpg", false),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", false),
+                                                       new Expecter("separate/20170529_102418A.jpg", false),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", false),
+                                                       new Expecter("separate/20170529_103545A.jpg", false),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M3b].GPXが複数のTRKSEGに分割している場合.FILE_UPDATE時間を基準.eTrex_20Jreverse",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEGreverse.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M3b.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", true),
+                                                       new Expecter("separate/20170529_102314A.jpg", true),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", true),
+                                                       new Expecter("separate/20170529_102418A.jpg", true),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", true),
+                                                       new Expecter("separate/20170529_103545A.jpg", true),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M3c].GPXが複数のTRKSEGに分割している場合.EXIF時間を基準.eTrex_20Jreverse",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEGreverse.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M3c.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", false),
+                                                       new Expecter("separate/20170529_102314A.jpg", false),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", false),
+                                                       new Expecter("separate/20170529_102418A.jpg", false),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", false),
+                                                       new Expecter("separate/20170529_103545A.jpg", false),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+
+                       new Fixture(
+                                       "[M3d].GPXが複数のTRKSEGに分割している場合.EXIF時間を基準.eTrex_20Jreverse",
+                                       "testdata/separate.tar.gz", 
+                                       "testdata/multiTRKSEGreverse.eTrex_20J.gpx.xml",
+                                       "testdata/cameradata/separate.gpx",
+                                       "testdata/AdjustTime.M3d.separate.ini",
+                                       new Expecter[] {
+                                               // GPX file
+                                                       new Expecter("separate/separate_.gpx", true),
+                                           
+                                           // out of time ( - 2017-05-29T01:23:18)
+                                                       new Expecter("separate/20170529_102305A.jpg", true),
+                                                       new Expecter("separate/20170529_102314A.jpg", true),
+                                           
+                                           // in TRKSEG(1) (2017-05-29T01:23:18 - 2017-05-29T01:24:05)
+                                                       new Expecter("separate/20170529_102318A.jpg", true),
+                                                       new Expecter("separate/20170529_102322A.jpg", true),
+                                                       new Expecter("separate/20170529_102405A.jpg", true),
+
+                                           // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
+                                                       new Expecter("separate/20170529_102409A.jpg", false),
+                                                       new Expecter("separate/20170529_102418A.jpg", false),
+
+                                           // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+
+                                           // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
+                                                       new Expecter("separate/20170529_103315A.jpg", true),
+                                                       new Expecter("separate/20170529_103545A.jpg", true),
+
+                                           // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
+                                                       new Expecter("separate/20170529_102448A.jpg", true),
+                                                       new Expecter("separate/20170529_103246A.jpg", true),
+                                       }),
+       };
+
+
+       @Theory
+       public void パラメータテスト(Fixture dataset) throws Exception {
+               setup(dataset);
+               testdo(dataset.iniFilePath);
                
-               /**
-                * 実行する
-                * @throws Exception
-                */
-               public void testdo() {
-               try {
-                       String[] argv = {
-                                       "./testdata/cameradata",
-                                       "20170518_092031A.jpg",
-                                       "2017-05-18T09:20:30",
-                                       "./testdata/output",
-                                       "./testdata/cameradata"
-                       };
-                       ImportPicture.main(argv);
-                       }
-                       catch (Exception e) {
-                               fail("Exceptionが発生した。");
-                       }
+               Expecter[] es = dataset.expecters;
+               AppParameters params = new AppParameters(dataset.iniFilePath);
+               File outDir = new File(params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));
+               for (int i = 0; i < es.length; i++) {
+               File file = new File(outDir, es[i].value);
+               System.out.println("[JUnit.debug] assert file='"+ file.getAbsolutePath() +"'");
+               assertThat(file.exists(), is(es[i].expect));
                }
        }
 
-       @RunWith(Theories.class)
-       public static class GPXが複数のTRKSEGに分割している場合 {
-               @DataPoint
-               public static String GPX_MUILTI_TRK = new String("muiltiTRK.GarminColorado.gpx.xml");
-               @DataPoint
-               public static String GPX_Muilti_TRKSEG = new String("multiTRKSEG.eTrex_20J.gpx.xml");
-               @DataPoint
-               public static String GPX_Muilti_TRKSEG_reverse = new String("multiTRKSEGreverse.eTrex_20J.gpx.xml");
+       public void setup(Fixture dataset) throws IOException {
+               System.out.println(dataset.toString());
                
-               @Before
-               public void setUp() throws Exception {
-                       // カメラディレクトリを削除する
-                       File dir = new File("testdata/cameradata");
-                       if (dir.exists()) {
-                               DeleteDir.delete(dir);
-                       }
-                       File outDir = new File("testdata/output");
-                       if (outDir.exists()) {
-                               DeleteDir.delete(outDir);
-                       }
-                       outDir.mkdir();
-                       
-                       // カメラディレクトリを作成する
-                       TarGz.uncompress(new File("testdata", "separate.tar.gz"), dir);
-                       
-               
-               // プロパティファイルを設定
-                       File iniFile = new File("AdjustTime.ini");
-                       File orgFile = new File("AdjustTime.ini.org");
-                       File testFile = new File("testdata", "AdjustTime.separate.ini");
-                       if (orgFile.exists()) {
-                               orgFile.delete();
-                       }
-                       if (iniFile.exists()) {
-                               iniFile.renameTo(orgFile);
-                       }
-               try (   FileInputStream inStream = new FileInputStream(testFile);
-                               FileOutputStream outStream = new FileOutputStream(new File("AdjustTime.ini"));
-                               FileChannel inChannel = inStream.getChannel();
-                               FileChannel outChannel = outStream.getChannel();        )
-               {
-                   inChannel.transferTo(0, inChannel.size(),outChannel);
-               }
-
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.IMG_TIME, "2017-05-29T10:31:46");
-                       params.setProperty(AppParameters.IMG_BASE_FILE, "20170529_103146A.jpg");
-                       params.setProperty(AppParameters.IMG_SOURCE_FOLDER, "./testdata/cameradata/separate");
-                       params.setProperty(AppParameters.GPX_SOURCE_FOLDER, "./testdata/cameradata/separate.gpx");
-                       params.store();
+               // カメラディレクトリを削除する
+               File dir = new File("testdata/cameradata");
+               if (dir.exists()) {
+                       DeleteDir.delete(dir);
                }
-
-               @Theory
-               public void FILE_UPDATE時間を基準にして時間外のファイルはコピー対象外の時(String gpxFileName) throws Exception {
-                       System.out.println("TEST parameter : "+ gpxFileName);
-                       
-                       // GPXファイルをセット
-               try (   FileInputStream inStream = new FileInputStream(new File("testdata", gpxFileName));
-                               FileOutputStream outStream = new FileOutputStream(new File("testdata/cameradata/separate.gpx"));
-                       FileChannel inChannel = inStream.getChannel();
-                       FileChannel outChannel = outStream.getChannel();        )
-               {
-                   inChannel.transferTo(0, inChannel.size(), outChannel);
-               }
-                       
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.GPX_BASETIME, "FILE_UPDATE");
-                       params.setProperty(AppParameters.IMG_OUTPUT_ALL, "false");
-                       params.store();
-               
-               // 実行する
-                       try {
-                               testdo();
-                       }
-                       catch (Exception e) {
-                               fail();
-                       }
-
-                       File outDir = new File("./testdata/output/separate");
-                       
-                       // GPX file
-               assertThat((new File(outDir, "separate_.gpx")).exists(), is(true));
-               
-               // out of time ( - 2017-05-29T01:23:03)
-               assertThat((new File(outDir, "20170529_102305A.jpg")).exists(), is(false));
-               assertThat((new File(outDir, "20170529_102318A.jpg")).exists(), is(false));
-               
-               // in TRKSEG(1) (2017-05-29T01:23:03 - 2017-05-29T01:24:05)
-               assertThat((new File(outDir, "20170529_102322A.jpg")).exists(), is(true));
-               assertThat((new File(outDir, "20170529_102405A.jpg")).exists(), is(true));
-
-               // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
-               assertThat((new File(outDir, "20170529_102409A.jpg")).exists(), is(false));
-               assertThat((new File(outDir, "20170529_102418A.jpg")).exists(), is(false));
-
-               // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
-               assertThat((new File(outDir, "20170529_102448A.jpg")).exists(), is(true));
-               assertThat((new File(outDir, "20170529_103246A.jpg")).exists(), is(true));
-
-               // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
-               assertThat((new File(outDir, "20170529_103315A.jpg")).exists(), is(false));
-               assertThat((new File(outDir, "20170529_103545A.jpg")).exists(), is(false));
-
-               // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
-               assertThat((new File(outDir, "20170529_102448A.jpg")).exists(), is(true));
-               assertThat((new File(outDir, "20170529_103246A.jpg")).exists(), is(true));
+               File outDir = new File("testdata/output");
+               if (outDir.exists()) {
+                       DeleteDir.delete(outDir);
                }
+               outDir.mkdir();
 
-               @Theory
-               public void EXIF時間を基準にして時間外のファイルはコピー対象外の時(String gpxFileName) throws Exception {
-                       // GPXファイルをセット
-               try (   FileInputStream inStream = new FileInputStream(new File("testdata", gpxFileName));
-                               FileOutputStream outStream = new FileOutputStream(new File("testdata/cameradata/separate.gpx"));
-                       FileChannel inChannel = inStream.getChannel();
-                       FileChannel outChannel = outStream.getChannel();        )
-               {
-                   inChannel.transferTo(0, inChannel.size(), outChannel);
-               }
-                       
-                       AppParameters params = new AppParameters();
-                       params.setProperty(AppParameters.GPX_BASETIME, "EXIF_TIME");
-                       params.setProperty(AppParameters.IMG_OUTPUT_ALL, "false");
-                       params.store();
-               
-               // 実行する
-                       try {
-                               testdo();
-                       }
-                       catch (Exception e) {
-                               fail();
-                       }
-
-                       File outDir = new File("./testdata/output/separate");
-                       
-                       // GPX file
-               assertThat((new File(outDir, "separate_.gpx")).exists(), is(true));
-               
-               // out of time ( - 2017-05-29T01:23:03)
-               assertThat((new File(outDir, "20170529_102305A.jpg")).exists(), is(false));
-               assertThat((new File(outDir, "20170529_102318A.jpg")).exists(), is(false));
-               
-               // in TRKSEG(1) (2017-05-29T01:23:03 - 2017-05-29T01:24:05)
-               assertThat((new File(outDir, "20170529_102322A.jpg")).exists(), is(true));
-               assertThat((new File(outDir, "20170529_102405A.jpg")).exists(), is(true));
-
-               // out of time (2017-05-29T01:24:05 - 2017-05-29T01:24:37)
-               assertThat((new File(outDir, "20170529_102409A.jpg")).exists(), is(false));
-               assertThat((new File(outDir, "20170529_102418A.jpg")).exists(), is(false));
-
-               // in TRKSEG(2) (2017-05-29T01:24:37 - 2017-05-29T01:33:03)
-               assertThat((new File(outDir, "20170529_102448A.jpg")).exists(), is(true));
-               assertThat((new File(outDir, "20170529_103246A.jpg")).exists(), is(true));
-
-               // out of time (2017-05-29T01:33:03 - 2017-05-29T01:35:53)
-               assertThat((new File(outDir, "20170529_103315A.jpg")).exists(), is(false));
-               assertThat((new File(outDir, "20170529_103545A.jpg")).exists(), is(false));
-
-               // in TRKSEG(3) (2017-05-29T01:35:53 - 2017-05-29T01:47:35)
-               assertThat((new File(outDir, "20170529_102448A.jpg")).exists(), is(true));
-               assertThat((new File(outDir, "20170529_103246A.jpg")).exists(), is(true));
-               }
+               // カメラディレクトリを作成する
+               uncompress(new File(dataset.tarFilePath), new File("testdata/cameradata"));
                
-               /**
-                * 実行する
-                * @throws Exception
-                */
-               public void testdo() {
-               try {
-                       String[] argv = {
-                                       "./testdata/cameradata/separate",
-                                       "20170529_103146A.jpg",
-                                       "2017-05-29T10:31:46",
-                                       "./testdata/output",
-                                       "./testdata/cameradata/separate.gpx"
-                       };
-                       ImportPicture.main(argv);
-                       }
-                       catch (Exception e) {
-                               e.printStackTrace();
-                               fail("Exceptionが発生した。");
-                       }
-               }
+               // GPXファイルをセット
+        try (  FileInputStream inStream = new FileInputStream(new File(dataset.gpxSourcePath));
+                       FileOutputStream outStream = new FileOutputStream(new File(dataset.gpxDestinationPath));
+               FileChannel inChannel = inStream.getChannel();
+               FileChannel outChannel = outStream.getChannel();        )
+        {
+            inChannel.transferTo(0, inChannel.size(), outChannel);
+        }
        }
        
-    /**
+       /**
+        * 実行する
+        * @throws Exception
+        */
+       public static void testdo(String iniFilePath) {
+        try {
+               String[] argv = new String[1];
+               argv[0] = new String(iniFilePath);
+               ImportPicture.main(argv);
+               }
+               catch (Exception e) {
+                       e.printStackTrace();
+                       fail("Exceptionが発生した。");
+               }
+       }
+
+       /**
      * *.tar.gz解凍
      * ファイル更新日時をオリジナルと同じにします。
      * @param tazFile 解凍する*.tar.gzファイル
diff --git a/importPicture/testdata/AdjustTime.20170518.A1.ini b/importPicture/testdata/AdjustTime.20170518.A1.ini
new file mode 100644 (file)
index 0000000..5db4a3e
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sat Jun 24 20:33:37 JST 2017
+GPX.BASETIME=FILE_UPDATE
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=false
+IMG.OUTPUT_ALL=false
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.BASE_FILE=DSC05183.JPG
+IMG.TIME=2017-05-18T00\:16\:48Z
+GPX.OVERWRITE_MAGVAR=false
+GPX.REUSE=false
+IMG.SOURCE_FOLDER=testdata/cameradata/10170518
+GPX.SOURCE_FOLDER=testdata/cameradata/20170518.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.20170518.A2.ini b/importPicture/testdata/AdjustTime.20170518.A2.ini
new file mode 100644 (file)
index 0000000..6277705
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sat Jun 24 20:33:37 JST 2017
+GPX.BASETIME=FILE_UPDATE
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=false
+IMG.OUTPUT_ALL=true
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.BASE_FILE=DSC05183.JPG
+IMG.TIME=2017-05-18T00\:16\:48Z
+GPX.OVERWRITE_MAGVAR=false
+GPX.REUSE=false
+IMG.SOURCE_FOLDER=testdata/cameradata/10170518
+GPX.SOURCE_FOLDER=testdata/cameradata/20170518.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.20170518.B1.ini b/importPicture/testdata/AdjustTime.20170518.B1.ini
new file mode 100644 (file)
index 0000000..0b37f82
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sat Jun 24 20:33:37 JST 2017
+GPX.BASETIME=FILE_UPDATE
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=false
+IMG.OUTPUT_ALL=false
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.TIME=2017-05-18T00\:20\:30Z
+GPX.OVERWRITE_MAGVAR=false
+GPX.REUSE=false
+IMG.BASE_FILE=20170518_092031A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata
+GPX.SOURCE_FOLDER=testdata/cameradata/20170518.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.20170518.B2.ini b/importPicture/testdata/AdjustTime.20170518.B2.ini
new file mode 100644 (file)
index 0000000..502984d
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sat Jun 24 20:33:37 JST 2017
+GPX.BASETIME=FILE_UPDATE
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=false
+IMG.OUTPUT_ALL=true
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.TIME=2017-05-18T00\:20\:30Z
+GPX.OVERWRITE_MAGVAR=false
+GPX.REUSE=false
+IMG.BASE_FILE=20170518_092031A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata
+GPX.SOURCE_FOLDER=testdata/cameradata/20170518.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
index 9bf5d84..0b37f82 100644 (file)
@@ -1,16 +1,17 @@
 #by AdjustTime
-#Wed May 17 19:07:03 JST 2017
+#Sat Jun 24 20:33:37 JST 2017
 GPX.BASETIME=FILE_UPDATE
 IMG.OUTPUT_EXIF=true
 GPX.OUTPUT_WPT=false
 GPX.OUTPUT_SPEED=false
+IMG.OUTPUT_ALL=false
 GPX.noFirstNode=true
 IMG.OUTPUT=true
 GPX.gpxSplit=true
-IMG.TIME=2017-05-18T09\:16\:48
+IMG.TIME=2017-05-18T00\:20\:30Z
 GPX.OVERWRITE_MAGVAR=false
 GPX.REUSE=false
-IMG.BASE_FILE=DSC05183.JPG
-IMG.SOURCE_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/cameradata/10170518
-GPX.SOURCE_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/cameradata/10170518/20170518.gpx
+IMG.BASE_FILE=20170518_092031A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata
+GPX.SOURCE_FOLDER=testdata/cameradata/20170518.gpx
 IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.M1a.separate.ini b/importPicture/testdata/AdjustTime.M1a.separate.ini
new file mode 100644 (file)
index 0000000..25e9f7c
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sun Jun 25 09:32:18 JST 2017
+GPX.BASETIME=FILE_UPDATE
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=true
+IMG.OUTPUT_ALL=false
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.TIME=2017-05-29T01\:31\:46Z
+GPX.OVERWRITE_MAGVAR=true
+GPX.REUSE=false
+IMG.BASE_FILE=20170529_103146A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata/separate
+GPX.SOURCE_FOLDER=testdata/cameradata/separate.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.M1b.separate.ini b/importPicture/testdata/AdjustTime.M1b.separate.ini
new file mode 100644 (file)
index 0000000..12b8aed
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sun Jun 25 09:32:18 JST 2017
+GPX.BASETIME=FILE_UPDATE
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=true
+IMG.OUTPUT_ALL=true
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.TIME=2017-05-29T01\:31\:46Z
+GPX.OVERWRITE_MAGVAR=true
+GPX.REUSE=false
+IMG.BASE_FILE=20170529_103146A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata/separate
+GPX.SOURCE_FOLDER=testdata/cameradata/separate.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.M1c.separate.ini b/importPicture/testdata/AdjustTime.M1c.separate.ini
new file mode 100644 (file)
index 0000000..f432ba7
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sun Jun 25 09:32:18 JST 2017
+GPX.BASETIME=EXIF_TIME
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=true
+IMG.OUTPUT_ALL=false
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.TIME=2017-05-29T01\:31\:46Z
+GPX.OVERWRITE_MAGVAR=true
+GPX.REUSE=false
+IMG.BASE_FILE=20170529_103146A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata/separate
+GPX.SOURCE_FOLDER=testdata/cameradata/separate.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.M1d.separate.ini b/importPicture/testdata/AdjustTime.M1d.separate.ini
new file mode 100644 (file)
index 0000000..d0ab153
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sun Jun 25 09:32:18 JST 2017
+GPX.BASETIME=EXIF_TIME
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=true
+IMG.OUTPUT_ALL=true
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.TIME=2017-05-29T01\:31\:46Z
+GPX.OVERWRITE_MAGVAR=true
+GPX.REUSE=false
+IMG.BASE_FILE=20170529_103146A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata/separate
+GPX.SOURCE_FOLDER=testdata/cameradata/separate.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
diff --git a/importPicture/testdata/AdjustTime.M2a.separate.ini b/importPicture/testdata/AdjustTime.M2a.separate.ini
new file mode 100644 (file)
index 0000000..25e9f7c
--- /dev/null
@@ -0,0 +1,17 @@
+#by AdjustTime
+#Sun Jun 25 09:32:18 JST 2017
+GPX.BASETIME=FILE_UPDATE
+IMG.OUTPUT_EXIF=true
+GPX.OUTPUT_WPT=false
+GPX.OUTPUT_SPEED=true
+IMG.OUTPUT_ALL=false
+GPX.noFirstNode=true
+IMG.OUTPUT=true
+GPX.gpxSplit=true
+IMG.TIME=2017-05-29T01\:31\:46Z
+GPX.OVERWRITE_MAGVAR=true
+GPX.REUSE=false
+IMG.BASE_FILE=20170529_103146A.jpg
+IMG.SOURCE_FOLDER=testdata/cameradata/separate
+GPX.SOURCE_FOLDER=testdata/cameradata/separate.gpx
+IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output
index 69864be..26f1d1d 100644 (file)
@@ -1,16 +1,17 @@
-# for ImportPictureTest
-#
-GPX.BASETIME=EXIF_TIME
+#by AdjustTime
+#Sun Jun 25 09:32:18 JST 2017
+GPX.BASETIME=FILE_UPDATE
 IMG.OUTPUT_EXIF=true
 GPX.OUTPUT_WPT=false
 GPX.OUTPUT_SPEED=true
+IMG.OUTPUT_ALL=false
 GPX.noFirstNode=true
 IMG.OUTPUT=true
 GPX.gpxSplit=true
-IMG.TIME=2017-05-29T10:31:46
+IMG.TIME=2017-05-29T01\:31\:46Z
 GPX.OVERWRITE_MAGVAR=true
 GPX.REUSE=false
 IMG.BASE_FILE=20170529_103146A.jpg
-IMG.SOURCE_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/cameradata/separate
-GPX.SOURCE_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/cameradata/separate.gpx
+IMG.SOURCE_FOLDER=./testdata/cameradata/separate
+GPX.SOURCE_FOLDER=./testdata/cameradata/separate.gpx
 IMG.OUTPUT_FOLDER=/home/yuu/workspace/AdjustTime/importPicture/testdata/output