package osm.jp.gpx;
-import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Properties;
+import osm.jp.hayashi.tools.files.Directory;
+
@SuppressWarnings("serial")
public class AppParameters extends Properties {
static final String FILE_PATH = "AdjustTime.ini";
//public boolean param_GpxSplit = false;
//public boolean param_GpxReuse = false;
- File file;
+ Path file;
- public AppParameters() throws FileNotFoundException, IOException {
- super();
- this.file = new File(FILE_PATH);
- syncFile();
+ public AppParameters() throws FileNotFoundException, IOException, URISyntaxException {
+ this(FILE_PATH);
}
- public AppParameters(Properties defaults) throws FileNotFoundException, IOException {
+ public AppParameters(Properties defaults) throws FileNotFoundException, IOException, URISyntaxException {
super(defaults);
- this.file = new File(FILE_PATH);
+ this.file = Paths.get(FILE_PATH);
syncFile();
}
- public AppParameters(String iniFileName) throws FileNotFoundException, IOException {
+ public AppParameters(String iniFileName) throws FileNotFoundException, IOException, URISyntaxException {
super();
- this.file = new File(iniFileName);
+ this.file = Paths.get(iniFileName);
syncFile();
}
- private void syncFile() throws FileNotFoundException, IOException {
+ private void syncFile() throws FileNotFoundException, IOException, URISyntaxException {
boolean update = false;
- if (this.file.exists()) {
+ if (Files.exists(this.file)) {
// ファイルが存在すれば、その内容をロードする。
- this.load(new FileInputStream(file));
+ this.load(new FileInputStream(file.toFile()));
}
else {
update = true;
String valueStr = this.getProperty(IMG_SOURCE_FOLDER);
if (valueStr == null) {
update = true;
- this.setProperty(IMG_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
+ this.setProperty(IMG_SOURCE_FOLDER, Directory.getCurrentDirectory().toString());
}
//------------------------------------------------
valueStr = this.getProperty(GPX_SOURCE_FOLDER);
if (valueStr == null) {
update = true;
- this.setProperty(GPX_SOURCE_FOLDER, (new File(".")).getAbsolutePath());
+ this.setProperty(GPX_SOURCE_FOLDER, Directory.getCurrentDirectory().toString());
}
//------------------------------------------------
valueStr = this.getProperty(IMG_OUTPUT_FOLDER);
if (valueStr == null) {
update = true;
- this.setProperty(IMG_OUTPUT_FOLDER, (new File(".")).getAbsolutePath());
+ this.setProperty(IMG_OUTPUT_FOLDER, Directory.getCurrentDirectory().toString());
}
//------------------------------------------------
update = true;
setProperty(AppParameters.GPX_REUSE, Boolean.toString(false));
}
-
if (update) {
// ・ファイルがなければ新たに作る
// ・項目が足りない時は書き足す。
- this.store(new FileOutputStream(this.file), "defuilt settings");
+ this.store(new FileOutputStream(this.file.toFile()), "defuilt settings");
}
}
public void store() throws FileNotFoundException, IOException {
- this.store(new FileOutputStream(this.file), "by AdjustTime");
+ this.store(new FileOutputStream(this.file.toFile()), "by AdjustTime");
}
public void printout() {
/**
* AppParameters.IMG_SOURCE_FOLDER
- * @return new File(getProperty(AppParameters.IMG_SOURCE_FOLDER));
+ * @return new Path(getProperty(AppParameters.IMG_SOURCE_FOLDER));
*/
- public File getImgSourceFolder() {
- return new File(getProperty(AppParameters.IMG_SOURCE_FOLDER));
+ public Path getImgSourceFolder() {
+ return Paths.get(getProperty(AppParameters.IMG_SOURCE_FOLDER));
}
- public File getGpxSourceFolder() {
+ public Path getGpxSourceFolder() {
String str = getProperty(AppParameters.GPX_SOURCE_FOLDER);
if (str == null) {
return null;
if (str.isEmpty()) {
return null;
}
- return new File(str);
+ return Paths.get(str);
}
/**
* @throws ParseException
*/
private TagTrkpt getTrkpt(Date jptime) throws ParseException {
- Date keyTime = null;
- for (Date key : this.keySet()) {
- int flag = jptime.compareTo(key);
- if (flag < 0) {
- if (keyTime != null) {
- return this.get(keyTime);
+ try {
+ Date keyTime = null;
+ for (Date key : this.keySet()) {
+ int flag = jptime.compareTo(key);
+ if (flag < 0) {
+ if (keyTime != null) {
+ return this.get(keyTime);
+ }
+ return null;
}
- return null;
- }
- else if (flag == 0) {
- return this.get(key);
- }
- else if (flag > 0) {
- keyTime = new Date(key.getTime());
- }
- }
- if (keyTime != null) {
- if (Math.abs(keyTime.getTime() - jptime.getTime()) <= OVER_TIME_LIMIT) {
- return this.get(keyTime);
- }
- }
- return null;
+ else if (flag == 0) {
+ return this.get(key);
+ }
+ else if (flag > 0) {
+ keyTime = new Date(key.getTime());
+ }
+ }
+ if (keyTime != null) {
+ if (Math.abs(keyTime.getTime() - jptime.getTime()) <= OVER_TIME_LIMIT) {
+ return this.get(keyTime);
+ }
+ }
+ return null;
+ }
+ catch (Exception e) {
+ throw new ParseException(e.toString(), 0);
+ }
}
/**
this.params = params;
File[] gpxfiles;
- File gpxDir = params.getGpxSourceFolder();
+ File gpxDir = params.getGpxSourceFolder().toFile();
if (gpxDir == null) {
// GPXファイルまたはディレクトリが存在しません。('%s')
throw new FileNotFoundException(String.format(ImportPicture.i18n.getString("msg.100"), "null"));
return ((name != null) && name.toUpperCase().endsWith(".JPG"));
}
+ /**
+ *
+ * @param params :AppParameters
+ * @param delta :long
+ * @param gpxFile :GpxFile
+ * @param outDir :File
+ * @return
+ * @throws ParseException
+ * @throws ImageReadException
+ * @throws IOException
+ * @throws ImageWriteException
+ * @throws ParserConfigurationExceptionGpxFile
+ * @throws SAXException
+ */
public boolean procImageFile(AppParameters params, long delta, GpxFile gpxFile, File outDir) throws ParseException, ImageReadException, IOException, ImageWriteException, ParserConfigurationException, SAXException {
//ElementMapTRKSEG mapTRKSEG = gpxFile.parse();
boolean exifWrite = params.isImgOutputExif();
import java.io.File;
import java.io.IOException;
+import java.nio.file.Path;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
public class ImgFolder extends ArrayList<ImgFile> {
private static final long serialVersionUID = -1137199371724546343L;
AppParameters params;
- File imgDir;
- File outDir;
+ Path imgDir;
+ Path outDir;
public ImgFolder(AppParameters params) {
this.params = params;
imgDir = params.getImgSourceFolder();
- File[] files = imgDir.listFiles(new ImgFileFilter());
+ File[] files = imgDir.toFile().listFiles(new ImgFileFilter());
Arrays.sort(files, new FileSort());
for (File file : files) {
this.add(new ImgFile(file));
}
}
- public void setOutDir(File outDir) {
+ public void setOutDir(Path outDir) {
this.outDir = outDir;
}
- public File getOutDir() {
+ public Path getOutDir() {
return this.outDir;
}
- public File getImgDir() {
+ public Path getImgDir() {
return this.imgDir;
}
for (ImgFile image : this) {
try {
if (!image.isDone()) {
- if(image.procImageFile(params, delta, gpxFile, outDir)) {
+ if(image.procImageFile(params, delta, gpxFile, outDir.toFile())) {
image.setDone(true);
}
}
package osm.jp.gpx;\r
\r
-import java.io.*;\r
+import java.io.ByteArrayInputStream;\r
+import java.io.File;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.io.UnsupportedEncodingException;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
import java.text.DateFormat;\r
import java.text.ParseException;\r
import java.text.SimpleDateFormat;\r
// 出力ファイル\r
// AppParameters.IMG_OUTPUT に置き換え\r
if (params.isImgOutput()) {\r
- File outDir = new File(params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));\r
- if (!outDir.exists()) {\r
+ Path outDir = Paths.get(params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));\r
+ if (!Files.exists(outDir)) {\r
// 出力ディレクトリが存在しないときは作成する\r
- outDir.mkdir();\r
+ Files.createDirectories(outDir);\r
}\r
- else if (outDir.isFile()) {\r
+ else if (!Files.isDirectory(outDir)) {\r
// 出力ディレクトリがFILEのときはERROR\r
- throw new FileNotFoundException(String.format("OUTPUT directory '%s' is a File!", outDir.getAbsolutePath()));\r
+ throw new FileNotFoundException(String.format("OUTPUT directory '%s' is a File!", outDir.toAbsolutePath().toString()));\r
}\r
- outDir = new File(outDir, imgFolder.getImgDir().getName());\r
+ outDir = Paths.get(outDir.toAbsolutePath().toString(), imgFolder.getImgDir().getFileName().toString());\r
+ //File f = new File(outDir.toFile(), imgFolder.getImgDir().toFile().getName());\r
+ //outDir = f.toPath();\r
imgFolder.setOutDir(outDir);\r
}\r
\r
\r
System.out.println("time difference: "+ (delta / 1000) +"(sec)");\r
System.out.println(" Target GPX: ["+ gpxFile.getAbsolutePath() +"]");\r
- System.out.println(" EXIF: "+ (params.isImgOutputExif() ? ("convert to '" + imgFolder.getOutDir().getAbsolutePath() +"'") : "off"));\r
+ System.out.println(" EXIF: "+ (params.isImgOutputExif() ? ("convert to '" + imgFolder.getOutDir().toAbsolutePath() +"'") : "off"));\r
System.out.println();\r
\r
gpxFile.printinfo();\r
}\r
\r
public File getImgBaseFile() {\r
- return new File(imgFolder.getImgDir(), params.getProperty(AppParameters.IMG_BASE_FILE));\r
+ return new File(imgFolder.getImgDir().toFile(), params.getProperty(AppParameters.IMG_BASE_FILE));\r
}\r
\r
static String getShortPathName(File dir, File iFile) {\r
--- /dev/null
+package osm.jp.hayashi.tools.files;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+
+public abstract class Directory {
+
+ public static Path getCurrentDirectory(Class<?> cls) throws URISyntaxException {
+ ProtectionDomain pd = cls.getProtectionDomain();
+ CodeSource cs = pd.getCodeSource();
+ URL location = cs.getLocation();
+ URI uri = location.toURI();
+ Path path = Paths.get(uri);
+ if (!Files.isDirectory(path)) {
+ return path.getParent();
+ }
+ return path;
+ }
+
+ public static Path getCurrentDirectory() throws URISyntaxException {
+ return getCurrentDirectory(Directory.class);
+ }
+
+}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.net.URISyntaxException;
import java.nio.channels.FileChannel;
import org.junit.After;
String valueStr = params.getProperty(AppParameters.IMG_OUTPUT_ALL);
assertFalse(Boolean.getBoolean(valueStr));
}
- catch (IOException e) {
+ catch (Exception e) {
fail("Exceptionが発生した。");
- }
+ }
}
}
String valueStr = params.getProperty(AppParameters.IMG_OUTPUT_ALL);
assertTrue(Boolean.valueOf(valueStr));
}
- catch (IOException e) {
+ catch (Exception e) {
fail("Exceptionが発生した。");
}
}
String valueStr = newParams.getProperty(AppParameters.IMG_OUTPUT_ALL);
assertFalse(Boolean.valueOf(valueStr));
}
- catch (IOException e) {
+ catch (Exception e) {
fail("Exceptionが発生した。");
}
}
String valueStr = params.getProperty(AppParameters.IMG_OUTPUT_ALL);
assertFalse(Boolean.valueOf(valueStr));
}
- catch (IOException e) {
+ catch (Exception e) {
fail("Exceptionが発生した。");
}
}
String valueStr = newParams.getProperty(AppParameters.IMG_OUTPUT_ALL);
assertTrue(Boolean.valueOf(valueStr));
}
- catch (IOException e) {
+ catch (Exception e) {
fail("Exceptionが発生した。");
}
}
import java.io.File;
import java.io.IOException;
+import java.net.URISyntaxException;
import java.text.ParseException;
import java.util.Date;
}
catch (IOException | ParseException | ParserConfigurationException | SAXException e) {
fail();
- }
+ } catch (URISyntaxException e) {
+ fail();
+ }
}
@Test
}
catch (SAXException e) {
// 整形されていないXML
- }
+ } catch (URISyntaxException e) {
+ fail();
+ }
}
}
}
--- /dev/null
+package osm.jp.hayashi.tools.files;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.*;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class DirectoryTest {
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void test() {
+ try {
+ Path path = Directory.getCurrentDirectory();
+ System.out.print(path.toAbsolutePath().toString());
+ assertThat(path.isAbsolute(), is(true));
+ assertThat(Files.isDirectory(path), is(true));
+ assertThat(Files.exists(path), is(true));
+ }
+ catch (Exception e) {
+ fail();
+ }
+ }
+
+}