Example usage for org.apache.commons.vfs FileObject close

List of usage examples for org.apache.commons.vfs FileObject close

Introduction

In this page you can find the example usage for org.apache.commons.vfs FileObject close.

Prototype

public void close() throws FileSystemException;

Source Link

Document

Closes this file, and its content.

Usage

From source file:com.panet.imeta.job.entries.zipfile.JobEntryZipFile.java

private boolean createParentFolder(String filename) {
    // Check for parent folder
    FileObject parentfolder = null;

    boolean result = false;
    LogWriter log = LogWriter.getInstance();
    try {//  w  w w . j  a  va 2 s .  c om
        // Get parent folder
        parentfolder = KettleVFS.getFileObject(filename).getParent();

        if (!parentfolder.exists()) {
            if (log.isDetailed())
                log.logDetailed(toString(), "Folder" + parentfolder.getName() + " does not exist !");
            parentfolder.createFolder();
            if (log.isDetailed())
                log.logDetailed(toString(), "Folder was created.");
        } else {
            if (log.isDetailed())
                log.logDetailed(toString(), "Folder" + parentfolder.getName() + " exist !");
        }
        result = true;
    } catch (Exception e) {
        log.logError(toString(), "Couldn't created folder " + parentfolder.getName());
    } finally {
        if (parentfolder != null) {
            try {
                parentfolder.close();
            } catch (Exception ex) {
            }
            ;
        }
    }

    return result;
}

From source file:com.panet.imeta.job.entries.folderisempty.JobEntryFolderIsEmpty.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  .java 2  s  .co  m*/
    result.setNrErrors(1);

    filescount = 0;
    folderscount = 0;
    pattern = null;

    if (!Const.isEmpty(getWildcard()))
        pattern = Pattern.compile(getRealWildcard());

    if (foldername != null) {
        String realFoldername = getRealFoldername();
        FileObject FolderObject = null;
        try {
            FolderObject = KettleVFS.getFileObject(realFoldername);

            if (FolderObject.exists()) {
                //Check if it's a folder
                if (FolderObject.getType() == FileType.FOLDER) {
                    // File provided is a folder, so we can process ...
                    FolderObject.findFiles(new TextFileSelector(FolderObject.toString()));
                    if (log.isBasic())
                        log.logBasic("Total files", "We found : " + filescount + " file(s)");
                    if (filescount == 0) {
                        result.setResult(true);
                        result.setNrErrors(0);
                    }
                } else {
                    // Not a folder, fail
                    log.logError("Found files", "[" + realFoldername + "] is not a folder, failing.");
                }
            } else {
                //  No Folder found   
                if (log.isBasic())
                    log.logBasic(toString(), "we can not find [" + realFoldername + "] !");
            }
        } catch (IOException e) {
            log.logError(toString(),
                    "Could not create Folder [" + realFoldername + "], exception: " + e.getMessage());
            result.setResult(false);
            result.setNrErrors(1);
        } finally {
            if (FolderObject != null) {
                try {
                    FolderObject.close();
                } catch (IOException ex) {
                }
                ;
            }
        }
    } else {
        log.logError(toString(), "No Foldername is defined.");
    }

    return result;
}

From source file:com.panet.imeta.job.entries.createfile.JobEntryCreateFile.java

public Result execute(Result previousResult, int nr, Repository rep, Job parentJob) throws KettleException {
    LogWriter log = LogWriter.getInstance();
    Result result = previousResult;
    result.setResult(false);//from w w  w.j  a v  a 2s  .  c  om

    if (filename != null) {
        String realFilename = getRealFilename();
        FileObject fileObject = null;
        try {
            fileObject = KettleVFS.getFileObject(realFilename);

            if (fileObject.exists()) {
                if (isFailIfFileExists()) {
                    // File exists and fail flag is on.
                    result.setResult(false);
                    log.logError(toString(), "File [" + realFilename + "] exists, failing.");
                } else {
                    // File already exists, no reason to try to create it
                    result.setResult(true);
                    log.logBasic(toString(), "File [" + realFilename + "] already exists, not recreating.");
                }
                // add filename to result filenames if needed
                if (isAddFilenameToResult())
                    addFilenameToResult(realFilename, log, result, parentJob);
            } else {
                //  No file yet, create an empty file.
                fileObject.createFile();
                log.logBasic(toString(), "File [" + realFilename + "] created!");
                // add filename to result filenames if needed
                if (isAddFilenameToResult())
                    addFilenameToResult(realFilename, log, result, parentJob);
                result.setResult(true);
            }
        } catch (IOException e) {
            log.logError(toString(),
                    "Could not create file [" + realFilename + "], exception: " + e.getMessage());
            result.setResult(false);
            result.setNrErrors(1);
        } finally {
            if (fileObject != null) {
                try {
                    fileObject.close();
                } catch (IOException ex) {
                }
                ;
            }
        }
    } else {
        log.logError(toString(), "No filename is defined.");
    }

    return result;
}

From source file:com.panet.imeta.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;
        FileObject directoryFileObject = null;

        try {/*from w  w  w  .  ja v  a2s  .c  o  m*/
            // Find all folder names  in this directory
            //
            directoryFileObject = KettleVFS.getFileObject(onefile);
            if (directoryFileObject != null && directoryFileObject.getType() == FileType.FOLDER) // it's a directory
            {

                FileObject[] fileObjects = directoryFileObject.findFiles(new AllFileSelector() {
                    public boolean traverseDescendents(FileSelectInfo info) {
                        return info.getDepth() == 0 || subdirs;
                    }

                    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 (FileSystemException 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) {
            LogWriter.getInstance().logError("FileInputList", Const.getStackTracker(e));
        } finally {
            try {
                if (directoryFileObject != null)
                    directoryFileObject.close();
                directoryFileObject = null;
            } catch (Exception e) {
            }
            ;
        }
    }

    return fileInputList;
}

From source file:com.panet.imeta.job.entries.copyfiles.JobEntryCopyFiles.java

private boolean CreateDestinationFolder(FileObject filefolder) {
    LogWriter log = LogWriter.getInstance();
    FileObject folder = null;
    try {//w  w w.j a  va  2 s  . c  om
        if (destination_is_a_file)
            folder = filefolder.getParent();
        else
            folder = filefolder;

        if (!folder.exists()) {
            if (create_destination_folder) {
                if (log.isDetailed())
                    log.logDetailed("Folder", "Folder  " + folder.getName() + " does not exist !");
                folder.createFolder();
                if (log.isDetailed())
                    log.logDetailed("Folder", "Folder parent was created.");
            } else {
                log.logError("Folder", "Folder  " + folder.getName() + " does not exist !");
                return false;
            }
        }
        return true;
    } catch (Exception e) {
        log.logError(toString(), "Couldn't created parent folder " + folder.getName());

    } finally {
        if (folder != null) {
            try {
                folder.close();
            } catch (Exception ex) {
            }
            ;
        }
    }
    return false;
}

From source file:com.panet.imeta.trans.steps.getxmldata.GetXMLData.java

private boolean ReadNextString() {

    try {//from   w  w  w.ja va2  s  .c o m
        data.readrow = getRow(); // Grab another row ...

        if (data.readrow == null) // finished processing!
        {
            if (log.isDetailed())
                logDetailed(Messages.getString("GetXMLData.Log.FinishedProcessing"));
            return false;
        }

        if (first) {
            first = false;

            if (meta.getIsInFields()) {
                data.inputRowMeta = getInputRowMeta();
                data.outputRowMeta = data.inputRowMeta.clone();
                meta.getFields(data.outputRowMeta, getStepname(), null, null, this);

                // Get total previous fields
                data.totalpreviousfields = data.inputRowMeta.size();

                // Create convert meta-data objects that will contain Date &
                // Number formatters
                data.convertRowMeta = data.outputRowMeta.clone();
                for (int i = 0; i < data.convertRowMeta.size(); i++)
                    data.convertRowMeta.getValueMeta(i).setType(ValueMetaInterface.TYPE_STRING);

                // For String to <type> conversions, we allocate a
                // conversion meta data row as well...
                //
                data.convertRowMeta = data.outputRowMeta.clone();
                for (int i = 0; i < data.convertRowMeta.size(); i++) {
                    data.convertRowMeta.getValueMeta(i).setType(ValueMetaInterface.TYPE_STRING);
                }

                // Check is XML field is provided
                if (Const.isEmpty(meta.getXMLField())) {
                    logError(Messages.getString("GetXMLData.Log.NoField"));
                    throw new KettleException(Messages.getString("GetXMLData.Log.NoField"));
                }

                // cache the position of the field
                if (data.indexOfXmlField < 0) {
                    data.indexOfXmlField = getInputRowMeta().indexOfValue(meta.getXMLField());
                    if (data.indexOfXmlField < 0) {
                        // The field is unreachable !
                        logError(Messages.getString("GetXMLData.Log.ErrorFindingField") + "[" //$NON-NLS-1$//$NON-NLS-2$
                                + meta.getXMLField() + "]");
                        throw new KettleException(Messages.getString("GetXMLData.Exception.CouldnotFindField", //$NON-NLS-1$
                                meta.getXMLField())); //$NON-NLS-2$
                    }
                }
            }
        }

        if (meta.getIsInFields()) {
            // get XML field value
            String Fieldvalue = getInputRowMeta().getString(data.readrow, data.indexOfXmlField);

            if (log.isDetailed())
                log.logDetailed(toString(),
                        Messages.getString("GetXMLData.Log.XMLStream", meta.getXMLField(), Fieldvalue));

            if (meta.getIsAFile()) {
                FileObject file = null;
                try {
                    // XML source is a file.
                    file = KettleVFS.getFileObject(Fieldvalue);
                    // Open the XML document
                    if (!setDocument(null, file, false, false)) {
                        throw new KettleException(Messages.getString("GetXMLData.Log.UnableCreateDocument"));
                    }

                    if (!applyXPath()) {
                        throw new KettleException(Messages.getString("GetXMLData.Log.UnableApplyXPath"));
                    }

                    addFileToResultFilesname(file);

                    if (log.isDetailed())
                        log.logDetailed(toString(), Messages.getString("GetXMLData.Log.LoopFileOccurences",
                                "" + data.nodesize, file.getName().getBaseName()));

                } catch (Exception e) {
                    throw new KettleException(e);
                } finally {
                    try {
                        if (file != null)
                            file.close();
                    } catch (Exception e) {
                    }
                }
            } else {
                boolean url = false;
                boolean xmltring = true;
                if (meta.isReadUrl()) {
                    url = true;
                    xmltring = false;
                }

                // Open the XML document
                if (!setDocument(Fieldvalue, null, xmltring, url)) {
                    throw new KettleException(Messages.getString("GetXMLData.Log.UnableCreateDocument"));
                }

                // Apply XPath and set node list
                if (!applyXPath()) {
                    throw new KettleException(Messages.getString("GetXMLData.Log.UnableApplyXPath"));
                }
                if (log.isDetailed())
                    log.logDetailed(toString(),
                            Messages.getString("GetXMLData.Log.LoopFileOccurences", "" + data.nodesize));
            }
        }
    } catch (Exception e) {
        logError(Messages.getString("GetXMLData.Log.UnexpectedError", e.toString()));
        stopAll();
        logError(Const.getStackTracker(e));
        setErrors(1);
        return false;
    }
    return true;

}

From source file:com.panet.imeta.job.entries.ssh2get.JobEntrySSH2GET.java

private boolean CreateFolder(String filefolder) {
    FileObject folder = null;
    try {//from   w  w  w  .j  ava  2 s  . co  m
        folder = KettleVFS.getFileObject(filefolder);

        if (!folder.exists()) {
            if (createtargetfolder) {
                folder.createFolder();
                if (log.isDetailed())
                    log.logDetailed(toString(),
                            Messages.getString("JobSSH2GET.Log.FolderCreated", folder.toString()));
            } else
                return false;

        }
        return true;
    } catch (Exception e) {
        log.logError(toString(), Messages.getString("JobSSH2GET.Log.CanNotCreateFolder", folder.toString()));

    } finally {
        if (folder != null) {
            try {
                folder.close();
            } catch (Exception ex) {
            }
            ;
        }
    }
    return false;
}

From source file:com.akretion.kettle.steps.terminatooor.ScriptValuesAddedFunctions.java

public static void createFolder(ScriptEngine actualContext, Bindings actualObject, Object[] ArgList,
        Object FunctionContext) {

    try {//from   w  ww.ja v  a 2 s. c om
        if (ArgList.length == 1 && !isNull(ArgList[0]) && !isUndefined(ArgList[0])) {
            FileObject fileObject = null;

            try {
                fileObject = KettleVFS.getFileObject((String) ArgList[0]);
                if (!fileObject.exists()) {
                    fileObject.createFolder();
                } else {
                    new RuntimeException("folder [" + (String) ArgList[0] + "] already exist!");
                }
            } catch (IOException e) {
                throw new RuntimeException("The function call createFolder is not valid.");
            } finally {
                if (fileObject != null)
                    try {
                        fileObject.close();
                    } catch (Exception e) {
                    }
            }

        } else {
            throw new RuntimeException("The function call createFolder is not valid.");
        }
    } catch (Exception e) {
        throw new RuntimeException(e.toString());
    }
}

From source file:com.panet.imeta.job.entries.sftp.JobEntrySFTP.java

public Result execute(Result previousResult, int nr, Repository rep, Job parentJob) {
    LogWriter log = LogWriter.getInstance();

    Result result = previousResult;
    List<RowMetaAndData> rows = result.getRows();
    RowMetaAndData resultRow = null;/*ww w . java2 s. com*/

    result.setResult(false);
    long filesRetrieved = 0;

    if (log.isDetailed())
        log.logDetailed(toString(), Messages.getString("JobSFTP.Log.StartJobEntry"));
    HashSet<String> list_previous_filenames = new HashSet<String>();

    if (copyprevious) {
        if (rows.size() == 0) {
            if (log.isDetailed())
                log.logDetailed(toString(), Messages.getString("JobSFTP.ArgsFromPreviousNothing"));
            result.setResult(true);
            return result;
        }
        try {

            // Copy the input row to the (command line) arguments
            for (int iteration = 0; iteration < rows.size(); iteration++) {
                resultRow = rows.get(iteration);

                // Get file names
                String file_previous = resultRow.getString(0, null);
                if (!Const.isEmpty(file_previous)) {
                    list_previous_filenames.add(file_previous);
                    if (log.isDebug())
                        log.logDebug(toString(),
                                Messages.getString("JobSFTP.Log.FilenameFromResult", file_previous));
                }
            }
        } catch (Exception e) {
            log.logError(toString(), Messages.getString("JobSFTP.Error.ArgFromPrevious"));
            result.setNrErrors(1);
            return result;
        }
    }

    SFTPClient sftpclient = null;

    // String substitution..
    String realServerName = environmentSubstitute(serverName);
    String realServerPort = environmentSubstitute(serverPort);
    String realUsername = environmentSubstitute(userName);
    String realPassword = environmentSubstitute(password);
    String realSftpDirString = environmentSubstitute(sftpDirectory);
    String realWildcard = environmentSubstitute(wildcard);
    String realTargetDirectory = environmentSubstitute(targetDirectory);

    FileObject TargetFolder = null;

    try {
        // Let's perform some checks before starting
        if (!Const.isEmpty(realTargetDirectory)) {
            TargetFolder = KettleVFS.getFileObject(realTargetDirectory);
            boolean TargetFolderExists = TargetFolder.exists();
            if (TargetFolderExists) {
                if (log.isDetailed())
                    log.logDetailed(toString(),
                            Messages.getString("JobSFTP.Log.TargetFolderExists", realTargetDirectory));
            } else {
                log.logError(toString(),
                        Messages.getString("JobSFTP.Error.TargetFolderNotExists", realTargetDirectory));
                if (!createtargetfolder) {
                    // Error..Target folder can not be found !
                    result.setNrErrors(1);
                    return result;
                } else {
                    // create target folder
                    TargetFolder.createFolder();
                    if (log.isDetailed())
                        log.logDetailed(toString(),
                                Messages.getString("JobSFTP.Log.TargetFolderCreated", realTargetDirectory));
                }
            }
        }

        if (TargetFolder != null) {
            TargetFolder.close();
            TargetFolder = null;
        }

        // Create sftp client to host ...
        sftpclient = new SFTPClient(InetAddress.getByName(realServerName), Const.toInt(realServerPort, 22),
                realUsername);
        if (log.isDetailed())
            log.logDetailed(toString(), Messages.getString("JobSFTP.Log.OpenedConnection", realServerName,
                    realServerPort, realUsername));

        // login to ftp host ...
        sftpclient.login(realPassword);
        // Passwords should not appear in log files.
        //log.logDetailed(toString(), "logged in using password "+realPassword); // Logging this seems a bad idea! Oh well.

        // move to spool dir ...
        if (!Const.isEmpty(realSftpDirString)) {
            try {
                sftpclient.chdir(realSftpDirString);
            } catch (Exception e) {
                log.logError(toString(),
                        Messages.getString("JobSFTP.Error.CanNotFindRemoteFolder", realSftpDirString));
                throw new Exception(e);
            }
            if (log.isDetailed())
                log.logDetailed(toString(),
                        Messages.getString("JobSFTP.Log.ChangedDirectory", realSftpDirString));
        }
        Pattern pattern = null;
        // Get all the files in the current directory...
        String[] filelist = sftpclient.dir();
        if (filelist == null) {
            // Nothing was found !!! exit
            result.setResult(true);
            if (log.isDetailed())
                log.logDetailed(toString(), Messages.getString("JobSFTP.Log.Found", "" + 0));
            return result;
        }
        if (log.isDetailed())
            log.logDetailed(toString(), Messages.getString("JobSFTP.Log.Found", "" + filelist.length));

        if (!copyprevious) {
            if (!Const.isEmpty(realWildcard))
                pattern = Pattern.compile(realWildcard);
        }

        // Get the files in the list...
        for (int i = 0; i < filelist.length && !parentJob.isStopped(); i++) {
            boolean getIt = true;
            // First see if the file matches the regular expression!
            if (!copyprevious && pattern != null) {
                Matcher matcher = pattern.matcher(filelist[i]);
                getIt = matcher.matches();
            }

            if (getIt || list_previous_filenames.contains(filelist[i])) {
                if (log.isDebug())
                    log.logDebug(toString(),
                            Messages.getString("JobSFTP.Log.GettingFiles", filelist[i], realTargetDirectory));

                String targetFilename = realTargetDirectory + Const.FILE_SEPARATOR + filelist[i];
                sftpclient.get(targetFilename, filelist[i]);
                filesRetrieved++;

                if (isaddresult) {
                    // Add to the result files...
                    ResultFile resultFile = new ResultFile(ResultFile.FILE_TYPE_GENERAL,
                            KettleVFS.getFileObject(targetFilename), parentJob.getJobname(), toString());
                    result.getResultFiles().put(resultFile.getFile().toString(), resultFile);
                    if (log.isDetailed())
                        log.logDetailed(toString(),
                                Messages.getString("JobSFTP.Log.FilenameAddedToResultFilenames", filelist[i]));
                }
                if (log.isDetailed())
                    log.logDetailed(toString(), Messages.getString("JobSFTP.Log.TransferedFile", filelist[i]));

                // Delete the file if this is needed!
                if (remove) {
                    sftpclient.delete(filelist[i]);
                    if (log.isDetailed())
                        log.logDetailed(toString(), Messages.getString("JobSFTP.Log.DeletedFile", filelist[i]));
                }
            }
        }

        result.setResult(true);
        result.setNrFilesRetrieved(filesRetrieved);
    } catch (Exception e) {
        result.setNrErrors(1);
        log.logError(toString(), Messages.getString("JobSFTP.Error.GettingFiles", e.getMessage()));
        log.logError(toString(), Const.getStackTracker(e));
    } finally {
        // close connection, if possible
        try {
            if (sftpclient != null)
                sftpclient.disconnect();
        } catch (Exception e) {
            // just ignore this, makes no big difference
        }

        try {
            if (TargetFolder != null) {
                TargetFolder.close();
                TargetFolder = null;
            }
            if (list_previous_filenames != null)
                list_previous_filenames = null;
        } catch (Exception e) {
        }

    }

    return result;
}

From source file:com.panet.imeta.trans.steps.scriptvalues_mod.ScriptValuesAddedFunctions.java

public static void createFolder(Context actualContext, Scriptable actualObject, Object[] ArgList,
        Function FunctionContext) {

    try {/*from  w w w .  ja v a 2 s.co m*/
        if (ArgList.length == 1 && !isNull(ArgList[0]) && !isUndefined(ArgList[0])) {
            FileObject fileObject = null;

            try {
                fileObject = KettleVFS.getFileObject(Context.toString(ArgList[0]));
                if (!fileObject.exists()) {
                    fileObject.createFolder();
                } else {
                    Context.reportRuntimeError("folder [" + Context.toString(ArgList[0]) + "] already exist!");
                }
            } catch (IOException e) {
                throw Context.reportRuntimeError("The function call createFolder is not valid.");
            } finally {
                if (fileObject != null)
                    try {
                        fileObject.close();
                    } catch (Exception e) {
                    }
            }

        } else {
            throw Context.reportRuntimeError("The function call createFolder is not valid.");
        }
    } catch (Exception e) {
        throw Context.reportRuntimeError(e.toString());
    }
}