in plugins/actions/copyfiles/src/main/java/org/apache/hop/workflow/actions/copyfiles/ActionCopyFiles.java [816:1050]
public boolean includeFile(FileSelectInfo info) {
boolean returncode = false;
FileObject filename = null;
String addFileNameString = null;
try {
if (!info.getFile().toString().equals(sourceFolder) && !parentjob.isStopped()) {
// Pass over the Base folder itself
String shortFilename = info.getFile().getName().getBaseName();
// Built destination filename
if (destinationFolderObject == null) {
// Resolve the destination folder
destinationFolderObject = HopVfs.getFileObject(destinationFolder, getVariables());
}
String fullName = info.getFile().toString();
String baseFolder = info.getBaseFolder().toString();
String path = fullName.substring(fullName.indexOf(baseFolder) + baseFolder.length() + 1);
filename = destinationFolderObject.resolveFile(path, NameScope.DESCENDENT);
if (!info.getFile().getParent().equals(info.getBaseFolder())) {
// Not in the Base Folder..Only if include sub folders
if (includeSubFolders) {
// Folders..only if include subfolders
if (info.getFile().getType() == FileType.FOLDER) {
if (includeSubFolders && copyEmptyFolders && Utils.isEmpty(fileWildcard)) {
if ((filename == null) || (!filename.exists())) {
if (isDetailed()) {
logDetailed(CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
"ActionCopyFiles.Log.FolderCopied",
HopVfs.getFriendlyURI(info.getFile()),
filename != null ? HopVfs.getFriendlyURI(filename) : ""));
}
returncode = true;
} else {
if (isDetailed()) {
logDetailed(CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
"ActionCopyFiles.Log.FolderExists",
HopVfs.getFriendlyURI(filename)));
}
if (overwriteFiles) {
if (isDetailed()) {
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
"ActionCopyFiles.Log.FolderOverwrite",
HopVfs.getFriendlyURI(info.getFile()),
HopVfs.getFriendlyURI(filename)));
}
returncode = true;
}
}
}
} else {
if (getFileWildcard(shortFilename)) {
// Check if the file exists
if ((filename == null) || (!filename.exists())) {
if (isDetailed()) {
logDetailed(CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
CONST_FILE_COPIED,
HopVfs.getFriendlyURI(info.getFile()),
filename != null ? HopVfs.getFriendlyURI(filename) : ""));
}
returncode = true;
} else {
if (isDetailed()) {
logDetailed(CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG, CONST_FILE_EXISTS, HopVfs.getFriendlyURI(filename)));
}
if (overwriteFiles) {
if (isDetailed()) {
logDetailed(
" "
+ BaseMessages.getString(
PKG,
CONST_FILE_EXISTS,
HopVfs.getFriendlyURI(info.getFile()),
HopVfs.getFriendlyURI(filename)));
}
returncode = true;
}
}
}
}
}
} else {
// In the Base Folder...
// Folders..only if include subfolders
if (info.getFile().getType() == FileType.FOLDER) {
if (includeSubFolders && copyEmptyFolders && Utils.isEmpty(fileWildcard)) {
if ((filename == null) || (!filename.exists())) {
if (isDetailed()) {
logDetailed("", CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
"ActionCopyFiles.Log.FolderCopied",
HopVfs.getFriendlyURI(info.getFile()),
filename != null ? HopVfs.getFriendlyURI(filename) : ""));
}
returncode = true;
} else {
if (isDetailed()) {
logDetailed(CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
"ActionCopyFiles.Log.FolderExists",
HopVfs.getFriendlyURI(filename)));
}
if (overwriteFiles) {
if (isDetailed()) {
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
"ActionCopyFiles.Log.FolderOverwrite",
HopVfs.getFriendlyURI(info.getFile()),
HopVfs.getFriendlyURI(filename)));
}
returncode = true;
}
}
}
} else {
// file...Check if exists
filename =
HopVfs.getFileObject(
destinationFolder + Const.FILE_SEPARATOR + shortFilename, getVariables());
if (getFileWildcard(shortFilename)) {
if ((filename == null) || (!filename.exists())) {
if (isDetailed()) {
logDetailed(CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG,
CONST_FILE_COPIED,
HopVfs.getFriendlyURI(info.getFile()),
filename != null ? HopVfs.getFriendlyURI(filename) : ""));
}
returncode = true;
} else {
if (isDetailed()) {
logDetailed(CONST_DASH);
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(
PKG, CONST_FILE_EXISTS, HopVfs.getFriendlyURI(filename)));
}
if (overwriteFiles) {
if (isDetailed()) {
logDetailed(
CONST_SPACE_SHORT
+ BaseMessages.getString(PKG, "ActionCopyFiles.Log.FileExistsInfos"),
BaseMessages.getString(
PKG,
CONST_FILE_EXISTS,
HopVfs.getFriendlyURI(info.getFile()),
HopVfs.getFriendlyURI(filename)));
}
returncode = true;
}
}
}
}
}
}
} catch (Exception e) {
logError(
BaseMessages.getString(
PKG,
CONST_COPY_PROCESS,
HopVfs.getFriendlyURI(info.getFile()),
filename != null ? HopVfs.getFriendlyURI(filename) : null,
e.getMessage()));
returncode = false;
} finally {
if (filename != null) {
try {
if (returncode && addResultFilenames) {
addFileNameString = filename.toString();
}
filename.close();
filename = null;
} catch (IOException ex) {
/* Ignore */
}
}
}
if (returncode && removeSourceFiles) {
// add this folder/file to remove files
// This list will be fetched and all entries files
// will be removed
listFilesRemove.add(info.getFile().toString());
}
if (returncode && addResultFilenames) {
// add this folder/file to result files name
listAddResult.add(
addFileNameString); // was a NPE before with the file_name=null above in the finally
}
return returncode;
}