List of usage examples for org.apache.commons.vfs FileObject findFiles
public FileObject[] findFiles(FileSelector selector) throws FileSystemException;
From source file:com.panet.imeta.job.entries.folderscompare.JobEntryFoldersCompare.java
public Result execute(Result previousResult, int nr, Repository rep, Job parentJob) { LogWriter log = LogWriter.getInstance(); Result result = previousResult; result.setResult(false);// w w w . j ava2 s . c om boolean ok = true; String realFilename1 = getRealFilename1(); String realFilename2 = getRealFilename2(); FileObject folder1 = null; FileObject folder2 = null; FileObject filefolder1 = null; FileObject filefolder2 = null; try { if (filename1 != null && filename2 != null) { // Get Folders/Files to compare folder1 = KettleVFS.getFileObject(realFilename1); folder2 = KettleVFS.getFileObject(realFilename2); if (folder1.exists() && folder2.exists()) { if (!folder1.getType().equals(folder2.getType())) { // pb...we try to compare file with folder !!! log.logError(toString(), Messages.getString("JobFoldersCompare.Log.CanNotCompareFilesFolders")); if (folder1.getType() == FileType.FILE) log.logError(toString(), Messages.getString("JobFoldersCompare.Log.IsAFile", realFilename1)); else if (folder1.getType() == FileType.FOLDER) log.logError(toString(), Messages.getString("JobFoldersCompare.Log.IsAFolder", realFilename1)); else log.logError(toString(), Messages.getString("JobFoldersCompare.Log.IsUnknownFileType", realFilename1)); if (folder2.getType() == FileType.FILE) log.logError(toString(), Messages.getString("JobFoldersCompare.Log.IsAFile", realFilename2)); else if (folder2.getType() == FileType.FOLDER) log.logError(toString(), Messages.getString("JobFoldersCompare.Log.IsAFolder", realFilename2)); else log.logError(toString(), Messages.getString("JobFoldersCompare.Log.IsUnknownFileType", realFilename2)); } else { if (folder1.getType() == FileType.FILE) { // simply compare 2 files .. if (equalFileContents(folder1, folder2)) result.setResult(true); else result.setResult(false); } else if (folder1.getType() == FileType.FOLDER) { // We compare 2 folders ... FileObject list1[] = folder1.findFiles(new TextFileSelector(folder1.toString())); FileObject list2[] = folder2.findFiles(new TextFileSelector(folder2.toString())); int lenList1 = list1.length; int lenList2 = list2.length; if (log.isDetailed()) { log.logDetailed(toString(), Messages.getString( "JobFoldersCompare.Log.FolderContains", realFilename1, "" + lenList1)); log.logDetailed(toString(), Messages.getString( "JobFoldersCompare.Log.FolderContains", realFilename2, "" + lenList2)); } if (lenList1 == lenList2) { HashMap<String, String> collection1 = new HashMap<String, String>(); HashMap<String, String> collection2 = new HashMap<String, String>(); for (int i = 0; i < list1.length; i++) { // Put files list1 in TreeMap collection1 collection1.put(list1[i].getName().getBaseName(), list1[i].toString()); } for (int i = 0; i < list2.length; i++) { // Put files list2 in TreeMap collection2 collection2.put(list2[i].getName().getBaseName(), list2[i].toString()); } // Let's now fetch Folder1 // and for each entry, we will search it in // Folder2 // if the entry exists..we will compare file // entry (file or folder?) // if the 2 entry are file (not folder), we will // compare content Set<Map.Entry<String, String>> entrees = collection1.entrySet(); Iterator<Map.Entry<String, String>> iterateur = entrees.iterator(); while (iterateur.hasNext()) { Map.Entry<String, String> entree = iterateur.next(); if (!collection2.containsKey(entree.getKey())) { ok = false; if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFoldersCompare.Log.FileCanNotBeFoundIn", entree.getKey().toString(), realFilename2)); } else { if (log.isDebug()) log.logDebug(toString(), Messages.getString("JobFoldersCompare.Log.FileIsFoundIn", entree.getKey().toString(), realFilename2)); filefolder1 = KettleVFS.getFileObject(entree.getValue().toString()); filefolder2 = KettleVFS .getFileObject(collection2.get(entree.getKey()).toString()); if (!filefolder2.getType().equals(filefolder1.getType())) { // The file1 exist in the // folder2..but they don't have the // same type ok = false; if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFoldersCompare.Log.FilesNotSameType", filefolder1.toString(), filefolder2.toString())); if (filefolder1.getType() == FileType.FILE) log.logError(toString(), Messages.getString( "JobFoldersCompare.Log.IsAFile", filefolder1.toString())); else if (filefolder1.getType() == FileType.FOLDER) log.logError(toString(), Messages.getString( "JobFoldersCompare.Log.IsAFolder", filefolder1.toString())); else log.logError(toString(), Messages.getString( "JobFoldersCompare.Log.IsUnknownFileType", filefolder1.toString())); if (filefolder2.getType() == FileType.FILE) log.logError(toString(), Messages.getString( "JobFoldersCompare.Log.IsAFile", filefolder2.toString())); else if (filefolder2.getType() == FileType.FOLDER) log.logError(toString(), Messages.getString( "JobFoldersCompare.Log.IsAFolder", filefolder2.toString())); else log.logError(toString(), Messages.getString( "JobFoldersCompare.Log.IsUnknownFileType", filefolder2.toString())); } else { // Files are the same type ... if (filefolder2.getType() == FileType.FILE) { // Let's compare file size if (comparefilesize) { long filefolder1_size = filefolder1.getContent().getSize(); long filefolder2_size = filefolder2.getContent().getSize(); if (filefolder1_size != filefolder2_size) { ok = false; if (log.isDetailed()) { log.logDetailed(toString(), Messages.getString( "JobFoldersCompare.Log.FilesNotSameSize", filefolder1.toString(), filefolder2.toString())); log.logDetailed(toString(), Messages.getString( "JobFoldersCompare.Log.SizeFileIs", filefolder1.toString(), "" + filefolder1_size)); log.logDetailed(toString(), Messages.getString( "JobFoldersCompare.Log.SizeFileIs", filefolder2.toString(), "" + filefolder2_size)); } } } if (ok) { // Let's compare files // content.. if (comparefilecontent) { if (!equalFileContents(filefolder1, filefolder2)) { ok = false; if (log.isDetailed()) log.logDetailed(toString(), Messages.getString( "JobFoldersCompare.Log.FilesNotSameContent", filefolder1.toString(), filefolder2.toString())); } } } } } } // log.logBasic(toString(),entree.getKey() + // " - " + entree.getValue()); } result.setResult(ok); } else { // The 2 folders don't have the same files // number if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFoldersCompare.Log.FoldersDifferentFiles", realFilename1.toString(), realFilename2.toString())); } } else { // File type unknown !! } } } else { if (!folder1.exists()) log.logError(toString(), Messages.getString("JobFileCompare.Log.FileNotExist", realFilename1)); if (!folder2.exists()) log.logError(toString(), Messages.getString("JobFileCompare.Log.FileNotExist", realFilename2)); result.setResult(false); result.setNrErrors(1); } } else { log.logError(toString(), Messages.getString("JobFoldersCompare.Log.Need2Files")); } } catch (Exception e) { result.setResult(false); result.setNrErrors(1); log.logError(toString(), Messages.getString("JobFoldersCompare.Log.ErrorComparing", realFilename2, realFilename2, e.getMessage())); } finally { try { if (folder1 != null) folder1.close(); if (folder2 != null) folder2.close(); if (filefolder1 != null) filefolder1.close(); if (filefolder2 != null) filefolder2.close(); } catch (IOException e) { } } return result; }
From source file:com.panet.imeta.job.entries.movefiles.JobEntryMoveFiles.java
private boolean ProcessFileFolder(String sourcefilefoldername, String destinationfilefoldername, String wildcard, Job parentJob, Result result, String MoveToFolder, LogWriter log) { boolean entrystatus = false; FileObject sourcefilefolder = null; FileObject destinationfilefolder = null; FileObject movetofolderfolder = null; FileObject Currentfile = null; // Get real source, destination file and wildcard String realSourceFilefoldername = environmentSubstitute(sourcefilefoldername); String realDestinationFilefoldername = environmentSubstitute(destinationfilefoldername); String realWildcard = environmentSubstitute(wildcard); try {//from w w w. java2s. co m // Here gc() is explicitly called if e.g. createfile is used in the // same // job for the same file. The problem is that after creating the // file the // file object is not properly garbaged collected and thus the file // cannot // be deleted anymore. This is a known problem in the JVM. System.gc(); sourcefilefolder = KettleVFS.getFileObject(realSourceFilefoldername); destinationfilefolder = KettleVFS.getFileObject(realDestinationFilefoldername); if (!Const.isEmpty(MoveToFolder)) movetofolderfolder = KettleVFS.getFileObject(MoveToFolder); if (sourcefilefolder.exists()) { // Check if destination folder/parent folder exists ! // If user wanted and if destination folder does not exist // PDI will create it if (CreateDestinationFolder(destinationfilefolder)) { // Basic Tests if (sourcefilefolder.getType().equals(FileType.FOLDER) && destination_is_a_file) { // Source is a folder, destination is a file // WARNING !!! CAN NOT MOVE FOLDER TO FILE !!! log.logError(Messages.getString("JobMoveFiles.Log.Forbidden"), Messages.getString("JobMoveFiles.Log.CanNotMoveFolderToFile", realSourceFilefoldername, realDestinationFilefoldername)); // Update Errors updateErrors(); } else { if (destinationfilefolder.getType().equals(FileType.FOLDER) && sourcefilefolder.getType().equals(FileType.FILE)) { // Source is a file, destination is a folder // return destination short filename String shortfilename = sourcefilefolder.getName().getBaseName(); try { shortfilename = getDestinationFilename(sourcefilefolder.getName().getBaseName()); } catch (Exception e) { log.logError(toString(), Messages.getString(Messages.getString("JobMoveFiles.Error.GettingFilename", sourcefilefolder.getName().getBaseName(), e.toString()))); return entrystatus; } // Move the file to the destination folder String destinationfilenamefull = destinationfilefolder.toString() + Const.FILE_SEPARATOR + shortfilename; FileObject destinationfile = KettleVFS.getFileObject(destinationfilenamefull); entrystatus = MoveFile(shortfilename, sourcefilefolder, destinationfile, movetofolderfolder, log, parentJob, result); } else if (sourcefilefolder.getType().equals(FileType.FILE) && destination_is_a_file) { // Source is a file, destination is a file FileObject destinationfile = KettleVFS.getFileObject(realDestinationFilefoldername); // return destination short filename String shortfilename = destinationfile.getName().getBaseName(); try { shortfilename = getDestinationFilename(destinationfile.getName().getBaseName()); } catch (Exception e) { log.logError(toString(), Messages.getString(Messages.getString("JobMoveFiles.Error.GettingFilename", sourcefilefolder.getName().getBaseName(), e.toString()))); return entrystatus; } String destinationfilenamefull = destinationfilefolder.getParent().toString() + Const.FILE_SEPARATOR + shortfilename; destinationfile = KettleVFS.getFileObject(destinationfilenamefull); entrystatus = MoveFile(shortfilename, sourcefilefolder, destinationfile, movetofolderfolder, log, parentJob, result); } else { // Both source and destination are folders if (log.isDetailed()) { log.logDetailed(toString(), " "); log.logDetailed(toString(), Messages.getString("JobMoveFiles.Log.FetchFolder", sourcefilefolder.toString())); } FileObject[] fileObjects = sourcefilefolder.findFiles(new AllFileSelector() { public boolean traverseDescendents(FileSelectInfo info) { return true; } public boolean includeFile(FileSelectInfo info) { FileObject fileObject = info.getFile(); try { if (fileObject == null) return false; } catch (Exception ex) { // Upon error don't process the // file. return false; } finally { if (fileObject != null) { try { fileObject.close(); } catch (IOException ex) { } ; } } return true; } }); if (fileObjects != null) { for (int j = 0; j < fileObjects.length && !parentJob.isStopped(); j++) { // Success condition broken? if (successConditionBroken) { if (!successConditionBrokenExit) { log.logError(toString(), Messages.getString( "JobMoveFiles.Error.SuccessConditionbroken", "" + NrErrors)); successConditionBrokenExit = true; } return false; } // Fetch files in list one after one ... Currentfile = fileObjects[j]; if (!MoveOneFile(Currentfile, sourcefilefolder, realDestinationFilefoldername, realWildcard, log, parentJob, result, movetofolderfolder)) { // Update Errors updateErrors(); } } } } } entrystatus = true; } // end if else { // Destination Folder or Parent folder is missing log.logError(toString(), Messages.getString("JobMoveFiles.Error.DestinationFolderNotFound", realDestinationFilefoldername)); } } // end if else { log.logError(toString(), Messages.getString("JobMoveFiles.Error.SourceFileNotExists", realSourceFilefoldername)); } } // end try catch (Exception e) { log.logError(toString(), Messages.getString("JobMoveFiles.Error.Exception.MoveProcess", realSourceFilefoldername.toString(), destinationfilefolder.toString(), e.getMessage())); // Update Errors updateErrors(); } finally { if (sourcefilefolder != null) { try { sourcefilefolder.close(); } catch (IOException ex) { } ; } if (destinationfilefolder != null) { try { destinationfilefolder.close(); } catch (IOException ex) { } ; } if (Currentfile != null) { try { Currentfile.close(); } catch (IOException ex) { } ; } if (movetofolderfolder != null) { try { movetofolderfolder.close(); } catch (IOException ex) { } ; } } return entrystatus; }
From source file:org.geoserver.importer.VFSWorker.java
/** * //from w ww. j a v a2s. c om * @param archiveFile * @param filter * * @return */ public List<String> listFiles(final File archiveFile, final FilenameFilter filter) { FileSystemManager fsManager; try { fsManager = VFS.getManager(); String absolutePath = resolveArchiveURI(archiveFile); FileObject resolvedFile = fsManager.resolveFile(absolutePath); FileSelector fileSelector = new FileSelector() { /** * @see org.apache.commons.vfs.FileSelector#traverseDescendents(org.apache.commons.vfs.FileSelectInfo) */ public boolean traverseDescendents(FileSelectInfo folderInfo) throws Exception { return true; } /** * @see org.apache.commons.vfs.FileSelector#includeFile(org.apache.commons.vfs.FileSelectInfo) */ public boolean includeFile(FileSelectInfo fileInfo) throws Exception { File folder = archiveFile.getParentFile(); String name = fileInfo.getFile().getName().getFriendlyURI(); return filter.accept(folder, name); } }; FileObject fileSystem; if (fsManager.canCreateFileSystem(resolvedFile)) { fileSystem = fsManager.createFileSystem(resolvedFile); } else { fileSystem = resolvedFile; } LOGGER.fine("Listing spatial data files archived in " + archiveFile.getName()); FileObject[] containedFiles = fileSystem.findFiles(fileSelector); List<String> names = new ArrayList<String>(containedFiles.length); for (FileObject fo : containedFiles) { // path relative to its filesystem (ie, to the archive file) String pathDecoded = fo.getName().getPathDecoded(); names.add(pathDecoded); } LOGGER.fine("Found " + names.size() + " spatial data files in " + archiveFile.getName() + ": " + names); return names; } catch (FileSystemException e) { e.printStackTrace(); } finally { // fsManager.closeFileSystem(fileSystem.getFileSystem()); } return Collections.emptyList(); }
From source file:org.nanocontainer.deployer.NanoContainerDeployer.java
private FileObject getDeploymentScript(FileObject applicationFolder) throws FileSystemException { final FileObject metaInf = applicationFolder.getChild("META-INF"); if (metaInf == null) { throw new FileSystemException("Missing META-INF folder in " + applicationFolder.getName().getPath()); }//from w ww .j a va2s . c o m final FileObject[] nanocontainerScripts = metaInf.findFiles(new FileSelector() { public boolean includeFile(FileSelectInfo fileSelectInfo) throws Exception { return fileSelectInfo.getFile().getName().getBaseName().startsWith("nanocontainer"); } public boolean traverseDescendents(FileSelectInfo fileSelectInfo) throws Exception { return true; } }); if (nanocontainerScripts == null || nanocontainerScripts.length < 1) { throw new FileSystemException("No deployment script (nanocontainer.[groovy|bsh|js|py|xml]) in " + applicationFolder.getName().getPath() + "/META-INF"); } return nanocontainerScripts[0]; }
From source file:org.pentaho.di.core.fileinput.FileInputList.java
public static FileInputList createFileList(VariableSpace space, String[] fileName, String[] fileMask, String[] excludeFileMask, String[] fileRequired, boolean[] includeSubdirs, FileTypeFilter[] fileTypeFilters) { FileInputList fileInputList = new FileInputList(); // Replace possible environment variables... final String[] realfile = space.environmentSubstitute(fileName); final String[] realmask = space.environmentSubstitute(fileMask); final String[] realExcludeMask = space.environmentSubstitute(excludeFileMask); for (int i = 0; i < realfile.length; i++) { final String onefile = realfile[i]; final String onemask = realmask[i]; final String excludeonemask = realExcludeMask[i]; final boolean onerequired = YES.equalsIgnoreCase(fileRequired[i]); final boolean subdirs = includeSubdirs[i]; final FileTypeFilter filter = ((fileTypeFilters == null || fileTypeFilters[i] == null) ? FileTypeFilter.ONLY_FILES : fileTypeFilters[i]);//from ww w.j a v a 2 s .c o m if (Const.isEmpty(onefile)) { continue; } // // If a wildcard is set we search for files // if (!Const.isEmpty(onemask) || !Const.isEmpty(excludeonemask)) { try { FileObject directoryFileObject = KettleVFS.getFileObject(onefile, space); boolean processFolder = true; if (onerequired) { if (!directoryFileObject.exists()) { // if we don't find folder..no need to continue fileInputList.addNonExistantFile(directoryFileObject); processFolder = false; } else { if (!directoryFileObject.isReadable()) { fileInputList.addNonAccessibleFile(directoryFileObject); processFolder = false; } } } // Find all file names that match the wildcard in this directory // if (processFolder) { if (directoryFileObject != null && directoryFileObject.getType() == FileType.FOLDER) // it's a directory { FileObject[] fileObjects = directoryFileObject.findFiles(new AllFileSelector() { @Override public boolean traverseDescendents(FileSelectInfo info) { return info.getDepth() == 0 || subdirs; } @Override public boolean includeFile(FileSelectInfo info) { // Never return the parent directory of a file list. if (info.getDepth() == 0) { return false; } FileObject fileObject = info.getFile(); try { if (fileObject != null && filter.isFileTypeAllowed(fileObject.getType())) { String name = info.getFile().getName().getBaseName(); boolean matches = true; if (!Const.isEmpty(onemask)) { matches = Pattern.matches(onemask, name); } boolean excludematches = false; if (!Const.isEmpty(excludeonemask)) { excludematches = Pattern.matches(excludeonemask, name); } return (matches && !excludematches); } return false; } catch (IOException ex) { // Upon error don't process the file. return false; } } }); if (fileObjects != null) { for (int j = 0; j < fileObjects.length; j++) { if (fileObjects[j].exists()) { fileInputList.addFile(fileObjects[j]); } } } if (Const.isEmpty(fileObjects)) { if (onerequired) { fileInputList.addNonAccessibleFile(directoryFileObject); } } // Sort the list: quicksort, only for regular files fileInputList.sortFiles(); } else { FileObject[] children = directoryFileObject.getChildren(); for (int j = 0; j < children.length; j++) { // See if the wildcard (regexp) matches... String name = children[j].getName().getBaseName(); boolean matches = true; if (!Const.isEmpty(onemask)) { matches = Pattern.matches(onemask, name); } boolean excludematches = false; if (!Const.isEmpty(excludeonemask)) { excludematches = Pattern.matches(excludeonemask, name); } if (matches && !excludematches) { fileInputList.addFile(children[j]); } } // We don't sort here, keep the order of the files in the archive. } } } catch (Exception e) { if (onerequired) { fileInputList.addNonAccessibleFile(new NonAccessibleFileObject(onefile)); } log.logError(Const.getStackTracker(e)); } } else { // A normal file... try { FileObject fileObject = KettleVFS.getFileObject(onefile, space); if (fileObject.exists()) { if (fileObject.isReadable()) { fileInputList.addFile(fileObject); } else { if (onerequired) { fileInputList.addNonAccessibleFile(fileObject); } } } else { if (onerequired) { fileInputList.addNonExistantFile(fileObject); } } } catch (Exception e) { if (onerequired) { fileInputList.addNonAccessibleFile(new NonAccessibleFileObject(onefile)); } log.logError(Const.getStackTracker(e)); } } } return fileInputList; }
From source file:org.pentaho.di.core.fileinput.FileInputList.java
public static FileInputList createFolderList(VariableSpace space, String[] folderName, String[] folderRequired) { FileInputList fileInputList = new FileInputList(); // Replace possible environment variables... final String[] realfolder = space.environmentSubstitute(folderName); for (int i = 0; i < realfolder.length; i++) { final String onefile = realfolder[i]; final boolean onerequired = YES.equalsIgnoreCase(folderRequired[i]); final boolean subdirs = true; final FileTypeFilter filter = FileTypeFilter.ONLY_FOLDERS; if (Const.isEmpty(onefile)) { continue; }//from www . j a v a2s. co m FileObject directoryFileObject = null; try { // Find all folder names in this directory // directoryFileObject = KettleVFS.getFileObject(onefile, space); if (directoryFileObject != null && directoryFileObject.getType() == FileType.FOLDER) // it's a directory { FileObject[] fileObjects = directoryFileObject.findFiles(new AllFileSelector() { @Override public boolean traverseDescendents(FileSelectInfo info) { return info.getDepth() == 0 || subdirs; } @Override public boolean includeFile(FileSelectInfo info) { // Never return the parent directory of a file list. if (info.getDepth() == 0) { return false; } FileObject fileObject = info.getFile(); try { if (fileObject != null && filter.isFileTypeAllowed(fileObject.getType())) { return true; } return false; } catch (IOException ex) { // Upon error don't process the file. return false; } } }); if (fileObjects != null) { for (int j = 0; j < fileObjects.length; j++) { if (fileObjects[j].exists()) { fileInputList.addFile(fileObjects[j]); } } } if (Const.isEmpty(fileObjects)) { if (onerequired) { fileInputList.addNonAccessibleFile(directoryFileObject); } } // Sort the list: quicksort, only for regular files fileInputList.sortFiles(); } else { if (onerequired && !directoryFileObject.exists()) { fileInputList.addNonExistantFile(directoryFileObject); } } } catch (Exception e) { log.logError(Const.getStackTracker(e)); } finally { try { if (directoryFileObject != null) { directoryFileObject.close(); } directoryFileObject = null; } catch (Exception e) { // Ignore } } } return fileInputList; }
From source file:org.pentaho.di.core.plugins.BasePluginType.java
protected List<FileObject> findPluginFiles(String folder, final String regex) { List<FileObject> list = new ArrayList<FileObject>(); try {/* w w w . j a va 2 s.c o m*/ FileObject folderObject = KettleVFS.getFileObject(folder); FileObject[] files = folderObject.findFiles(new FileSelector() { @Override public boolean traverseDescendents(FileSelectInfo fileSelectInfo) throws Exception { return true; } @Override public boolean includeFile(FileSelectInfo fileSelectInfo) throws Exception { return fileSelectInfo.getFile().toString().matches(regex); } }); if (files != null) { for (FileObject file : files) { list.add(file); } } } catch (Exception e) { // ignore this: unknown folder, insufficient permissions, etc } return list; }
From source file:org.pentaho.di.core.plugins.PluginFolder.java
public FileObject[] findJarFiles(final boolean includeLibJars) throws KettleFileException { try {/*from w w w. j ava 2s . com*/ // Find all the jar files in this folder... // FileObject folderObject = KettleVFS.getFileObject(this.getFolder()); FileObject[] fileObjects = folderObject.findFiles(new FileSelector() { @Override public boolean traverseDescendents(FileSelectInfo fileSelectInfo) throws Exception { FileObject fileObject = fileSelectInfo.getFile(); String folder = fileObject.getName().getBaseName(); FileObject kettleIgnore = fileObject.getChild(".kettle-ignore"); return includeLibJars || (kettleIgnore == null && !"lib".equals(folder)); } @Override public boolean includeFile(FileSelectInfo fileSelectInfo) throws Exception { return fileSelectInfo.getFile().toString().endsWith(".jar"); } }); return fileObjects; } catch (Exception e) { throw new KettleFileException("Unable to list jar files in plugin folder '" + toString() + "'", e); } }
From source file:org.pentaho.di.job.entries.addresultfilenames.JobEntryAddResultFilenames.java
private boolean processFile(String filename, String wildcard, Job parentJob, Result result) { boolean rcode = true; FileObject filefolder = null; String realFilefoldername = environmentSubstitute(filename); String realwildcard = environmentSubstitute(wildcard); try {/*from w w w.j a v a 2s . c o m*/ filefolder = KettleVFS.getFileObject(realFilefoldername, this); if (filefolder.exists()) { // the file or folder exists if (filefolder.getType() == FileType.FILE) { // Add filename to Resultfilenames ... if (log.isDetailed()) { logDetailed(BaseMessages.getString(PKG, "JobEntryAddResultFilenames.AddingFileToResult", filefolder.toString())); } ResultFile resultFile = new ResultFile(ResultFile.FILE_TYPE_GENERAL, KettleVFS.getFileObject(filefolder.toString(), this), parentJob.getJobname(), toString()); result.getResultFiles().put(resultFile.getFile().toString(), resultFile); } else { FileObject[] list = filefolder .findFiles(new TextFileSelector(filefolder.toString(), realwildcard)); for (int i = 0; i < list.length && !parentJob.isStopped(); i++) { // Add filename to Resultfilenames ... if (log.isDetailed()) { logDetailed(BaseMessages.getString(PKG, "JobEntryAddResultFilenames.AddingFileToResult", list[i].toString())); } ResultFile resultFile = new ResultFile(ResultFile.FILE_TYPE_GENERAL, KettleVFS.getFileObject(list[i].toString(), this), parentJob.getJobname(), toString()); result.getResultFiles().put(resultFile.getFile().toString(), resultFile); } } } else { // File can not be found if (log.isBasic()) { logBasic(BaseMessages.getString(PKG, "JobEntryAddResultFilenames.FileCanNotbeFound", realFilefoldername)); } rcode = false; } } catch (Exception e) { rcode = false; logError(BaseMessages.getString(PKG, "JobEntryAddResultFilenames.CouldNotProcess", realFilefoldername, e.getMessage()), e); } finally { if (filefolder != null) { try { filefolder.close(); filefolder = null; } catch (IOException ex) { // Ignore } } } return rcode; }
From source file:org.pentaho.di.job.entries.checkfilelocked.JobEntryCheckFilesLocked.java
private void ProcessFile(String filename, String wildcard) { FileObject filefolder = null; String realFilefoldername = environmentSubstitute(filename); String realwilcard = environmentSubstitute(wildcard); try {/*from w w w . java 2s . c o m*/ filefolder = KettleVFS.getFileObject(realFilefoldername); FileObject[] files = new FileObject[] { filefolder }; if (filefolder.exists()) { // the file or folder exists if (filefolder.getType() == FileType.FOLDER) { // It's a folder if (isDetailed()) { logDetailed(BaseMessages.getString(PKG, "JobEntryCheckFilesLocked.ProcessingFolder", realFilefoldername)); } // Retrieve all files files = filefolder.findFiles(new TextFileSelector(filefolder.toString(), realwilcard)); if (isDetailed()) { logDetailed(BaseMessages.getString(PKG, "JobEntryCheckFilesLocked.TotalFilesToCheck", String.valueOf(files.length))); } } else { // It's a file if (isDetailed()) { logDetailed(BaseMessages.getString(PKG, "JobEntryCheckFilesLocked.ProcessingFile", realFilefoldername)); } } // Check files locked checkFilesLocked(files); } else { // We can not find thsi file logBasic(BaseMessages.getString(PKG, "JobEntryCheckFilesLocked.FileNotExist", realFilefoldername)); } } catch (Exception e) { logError(BaseMessages.getString(PKG, "JobEntryCheckFilesLocked.CouldNotProcess", realFilefoldername, e.getMessage())); } finally { if (filefolder != null) { try { filefolder.close(); } catch (IOException ex) { // Ignore } } } }