package user.jobengine.server.steps;\r
\r
+import java.io.File;\r
import java.io.IOException;\r
import java.nio.file.FileVisitResult;\r
import java.nio.file.FileVisitor;\r
sourceStoreUri.setProtocol(RemoteStoreProtocol.valueOf(sourceProtocol));\r
\r
FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
- boolean isFolderDateBeforeNow = false;\r
String fileNamePattern = "yyyymmdd";\r
SimpleDateFormat dateFormatter = new SimpleDateFormat(fileNamePattern);\r
Date currentDate = new Date(); // initializes with the current date\r
Date dateFromFileName;\r
+ boolean isRootFolder = true;\r
\r
@Override\r
- public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
- try {\r
- if (Files.isDirectory(path)) {\r
- dateFromFileName = dateFormatter.parse(path.toString().substring(0, 8));\r
+ public FileVisitResult preVisitDirectory(Path folder, BasicFileAttributes attrs) throws IOException {\r
+ FileVisitResult result = null;\r
+ boolean isDateParseable = true;\r
+\r
+ if (folder != null) {\r
+ String splitter = File.separator.replace("\\", "\\\\");\r
+ String[] parentFolderSegments = folder.toString().split(splitter);\r
+\r
+ try {\r
+ dateFromFileName = dateFormatter.parse(parentFolderSegments[parentFolderSegments.length - 1]);\r
+\r
if (!(dateFromFileName.compareTo(currentDate) > 0)) {\r
- isFolderDateBeforeNow = false;\r
- return FileVisitResult.SKIP_SUBTREE;\r
+ if (isRootFolder) {\r
+ result = FileVisitResult.CONTINUE;\r
+ isRootFolder = false;\r
+ } else {\r
+ result = FileVisitResult.SKIP_SUBTREE;\r
+ }\r
} else {\r
- isFolderDateBeforeNow = true;\r
- return FileVisitResult.CONTINUE;\r
+ result = FileVisitResult.CONTINUE;\r
}\r
- } else {\r
- if (isFolderDateBeforeNow) {\r
- String fileExtension = FilenameUtils.getExtension(path.toString());\r
-\r
- if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
- logger.info("path: {}", path.toString());\r
- foundItems.add(path.toString());\r
- StoreUri targetStoreUri = getManager()\r
- .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
- targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
- targetStoreUri.setRootPath(targetFolder);\r
-\r
- copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
- }\r
+ } catch (ParseException e) {\r
+ isDateParseable = false;\r
+ logger.info("Illegal argument to parse as date: {}",\r
+ parentFolderSegments[parentFolderSegments.length - 1]);\r
+ } finally {\r
+ isRootFolder = false;\r
+ if (!isDateParseable) {\r
+ result = FileVisitResult.CONTINUE;\r
}\r
}\r
- } catch (ParseException e) {\r
- logger.info("Illegal argument to parse as date: {}", path.getFileName().toString().substring(0, 8));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
+ logger.info("path: {}", path.toString());\r
+ try {\r
+ String fileExtension = FilenameUtils.getExtension(path.toString());\r
+\r
+ if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
+ foundItems.add(path.toString());\r
+ StoreUri targetStoreUri = getManager()\r
+ .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
+ targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
+ targetStoreUri.setRootPath(targetFolder);\r
+\r
+ copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
+ }\r
} catch (Exception e) {\r
logger.info("Exception: {}", e.getStackTrace());\r
}\r
package user.jobengine.server.steps;\r
\r
+import java.io.File;\r
import java.io.IOException;\r
import java.nio.file.FileVisitResult;\r
import java.nio.file.FileVisitor;\r
sourceStoreUri.setProtocol(RemoteStoreProtocol.valueOf(sourceProtocol));\r
\r
FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
- boolean isFolderDateBeforeNow = false;\r
String fileNamePattern = "yyyymmdd";\r
SimpleDateFormat dateFormatter = new SimpleDateFormat(fileNamePattern);\r
Date currentDate = new Date(); // initializes with the current date\r
Date dateFromFileName;\r
+ boolean isRootFolder = true;\r
\r
@Override\r
- public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
- try {\r
- if (Files.isDirectory(path)) {\r
- dateFromFileName = dateFormatter.parse(path.toString().substring(0, 8));\r
+ public FileVisitResult preVisitDirectory(Path folder, BasicFileAttributes attrs) throws IOException {\r
+ FileVisitResult result = null;\r
+ boolean isDateParseable = true;\r
+\r
+ if (folder != null) {\r
+ String splitter = File.separator.replace("\\", "\\\\");\r
+ String[] parentFolderSegments = folder.toString().split(splitter);\r
+\r
+ try {\r
+ dateFromFileName = dateFormatter.parse(parentFolderSegments[parentFolderSegments.length - 1]);\r
+\r
if (!(dateFromFileName.compareTo(currentDate) > 0)) {\r
- isFolderDateBeforeNow = false;\r
- return FileVisitResult.SKIP_SUBTREE;\r
+ if (isRootFolder) {\r
+ result = FileVisitResult.CONTINUE;\r
+ isRootFolder = false;\r
+ } else {\r
+ result = FileVisitResult.SKIP_SUBTREE;\r
+ }\r
} else {\r
- isFolderDateBeforeNow = true;\r
- return FileVisitResult.CONTINUE;\r
+ result = FileVisitResult.CONTINUE;\r
}\r
- } else {\r
- if (isFolderDateBeforeNow) {\r
- String fileExtension = FilenameUtils.getExtension(path.toString());\r
-\r
- if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
- logger.info("path: {}", path.toString());\r
- foundItems.add(path.toString());\r
- StoreUri targetStoreUri = getManager()\r
- .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
- targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
- targetStoreUri.setRootPath(targetFolder);\r
-\r
- copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
- }\r
+ } catch (ParseException e) {\r
+ isDateParseable = false;\r
+ logger.info("Illegal argument to parse as date: {}",\r
+ parentFolderSegments[parentFolderSegments.length - 1]);\r
+ } finally {\r
+ isRootFolder = false;\r
+ if (!isDateParseable) {\r
+ result = FileVisitResult.CONTINUE;\r
}\r
}\r
- } catch (ParseException e) {\r
- logger.info("Illegal argument to parse as date: {}", path.getFileName().toString().substring(0, 8));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {\r
+ logger.info("path: {}", path.toString());\r
+ try {\r
+ String fileExtension = FilenameUtils.getExtension(path.toString());\r
+\r
+ if (fileExtension.equals("jpg") || fileExtension.equals("jpeg")) {\r
+ foundItems.add(path.toString());\r
+ StoreUri targetStoreUri = getManager()\r
+ .createStoreUri(RemoteStoreProtocol.valueOf(targetProtocol), targetUri);\r
+ targetStoreUri.setProtocol(RemoteStoreProtocol.valueOf(targetProtocol));\r
+ targetStoreUri.setRootPath(targetFolder);\r
+\r
+ copyFile(path, Paths.get(targetStoreUri.getRootPath()));\r
+ }\r
} catch (Exception e) {\r
logger.info("Exception: {}", e.getStackTrace());\r
}\r