in plugins/actions/movefiles/src/main/java/org/apache/hop/workflow/actions/movefiles/ActionMoveFiles.java [795:1043]
private boolean moveFile(
String shortfilename,
FileObject sourcefilename,
FileObject destinationfilename,
FileObject movetofolderfolder,
IWorkflowEngine<WorkflowMeta> parentWorkflow,
Result result) {
FileObject destinationfile = null;
boolean retval = false;
try {
if (!destinationfilename.exists()) {
if (includeSubfolders) {
// Check if
FileObject destinationFilePath =
HopVfs.getFileObject(
destinationfilename.getName().getParent().toString(), getVariables());
if (!destinationFilePath.exists()) destinationFilePath.createFolder();
}
if (!simulate) {
destinationfilename.createFile();
sourcefilename.moveTo(destinationfilename);
}
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG,
CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
sourcefilename.getName().toString(),
destinationfilename.getName().toString()));
}
// add filename to result filename
if (addResultFilenames
&& !ifFileExists.equals("fail")
&& !ifFileExists.equals(CONST_DO_NOTHING)) {
addFileToResultFilenames(destinationfilename.toString(), result, parentWorkflow);
}
updateSuccess();
retval = true;
} else {
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG, "ActionMoveFiles.Log.FileExists", destinationfilename.toString()));
}
if (ifFileExists.equals("overwrite_file")) {
if (!simulate) {
sourcefilename.moveTo(destinationfilename);
}
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG,
"ActionMoveFiles.Log.FileOverwrite",
destinationfilename.getName().toString()));
}
// add filename to result filename
if (addResultFilenames
&& !ifFileExists.equals("fail")
&& !ifFileExists.equals(CONST_DO_NOTHING)) {
addFileToResultFilenames(destinationfilename.toString(), result, parentWorkflow);
}
updateSuccess();
retval = true;
} else if (ifFileExists.equals("unique_name")) {
String shortFilename = shortfilename;
// return destination short filename
try {
shortFilename = getMoveDestinationFilename(shortFilename, "ddMMyyyy_HHmmssSSS");
} catch (Exception e) {
logError(
BaseMessages.getString(
PKG,
BaseMessages.getString(
PKG, CONST_ACTION_MOVE_FILES_ERROR_GETTING_FILENAME, shortFilename)),
e);
return retval;
}
String movetofilenamefull =
destinationfilename.getParent().toString() + Const.FILE_SEPARATOR + shortFilename;
destinationfile = HopVfs.getFileObject(movetofilenamefull, getVariables());
if (!simulate) {
sourcefilename.moveTo(destinationfile);
}
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG,
CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
sourcefilename.getName().toString(),
destinationfile.getName().toString()));
}
// add filename to result filename
if (addResultFilenames
&& !ifFileExists.equals("fail")
&& !ifFileExists.equals(CONST_DO_NOTHING)) {
addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
}
updateSuccess();
retval = true;
} else if (ifFileExists.equals("delete_file")) {
if (!simulate) {
sourcefilename.delete();
}
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG,
"ActionMoveFiles.Log.FileDeleted",
destinationfilename.getName().toString()));
}
updateSuccess();
retval = true;
} else if (ifFileExists.equals("move_file")) {
String shortFilename = shortfilename;
// return destination short filename
try {
shortFilename = getMoveDestinationFilename(shortFilename, null);
} catch (Exception e) {
logError(
BaseMessages.getString(
PKG,
BaseMessages.getString(
PKG, CONST_ACTION_MOVE_FILES_ERROR_GETTING_FILENAME, shortFilename)),
e);
return retval;
}
String movetofilenamefull =
movetofolderfolder.toString() + Const.FILE_SEPARATOR + shortFilename;
destinationfile = HopVfs.getFileObject(movetofilenamefull, getVariables());
if (!destinationfile.exists()) {
if (!simulate) {
sourcefilename.moveTo(destinationfile);
}
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG,
CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
sourcefilename.getName().toString(),
destinationfile.getName().toString()));
}
// add filename to result filename
if (addResultFilenames
&& !ifFileExists.equals("fail")
&& !ifFileExists.equals(CONST_DO_NOTHING)) {
addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
}
} else {
if (ifMovedFileExists.equals("overwrite_file")) {
if (!simulate) {
sourcefilename.moveTo(destinationfile);
}
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG,
"ActionMoveFiles.Log.FileOverwrite",
destinationfile.getName().toString()));
}
// add filename to result filename
if (addResultFilenames
&& !ifFileExists.equals("fail")
&& !ifFileExists.equals(CONST_DO_NOTHING)) {
addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
}
updateSuccess();
retval = true;
} else if (ifMovedFileExists.equals("unique_name")) {
SimpleDateFormat daf = new SimpleDateFormat();
Date now = new Date();
daf.applyPattern("ddMMyyyy_HHmmssSSS");
String dt = daf.format(now);
shortFilename += "_" + dt;
String destinationfilenamefull =
movetofolderfolder.toString() + Const.FILE_SEPARATOR + shortFilename;
destinationfile = HopVfs.getFileObject(destinationfilenamefull, getVariables());
if (!simulate) {
sourcefilename.moveTo(destinationfile);
}
if (isDetailed()) {
logDetailed(
BaseMessages.getString(
PKG,
CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
destinationfile.getName().toString()));
}
// add filename to result filename
if (addResultFilenames
&& !ifFileExists.equals("fail")
&& !ifFileExists.equals(CONST_DO_NOTHING)) {
addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
}
updateSuccess();
retval = true;
} else if (ifMovedFileExists.equals("fail")) {
// Update Errors
updateErrors();
}
}
} else if (ifFileExists.equals("fail")) {
// Update Errors
updateErrors();
}
}
} catch (Exception e) {
logError(
BaseMessages.getString(
PKG,
"ActionMoveFiles.Error.Exception.MoveProcessError",
sourcefilename.toString(),
destinationfilename.toString(),
e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()));
updateErrors();
} finally {
if (destinationfile != null) {
try {
destinationfile.close();
} catch (IOException ex) {
/* Ignore */
}
}
}
return retval;
}