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

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

Introduction

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

Prototype

public FileContent getContent() throws FileSystemException;

Source Link

Document

Returns this file's content.

Usage

From source file:org.pentaho.di.job.entries.ssh2put.JobEntrySSH2PUT.java

private boolean putFile(FileObject localFile, String remotefilename, SFTPv3Client sftpClient) {
    long filesize = -1;
    InputStream in = null;/*from w ww. j  av  a 2  s.  co m*/
    BufferedInputStream inBuf = null;
    SFTPv3FileHandle sftpFileHandle = null;
    boolean retval = false;

    try {
        // Put file in the folder
        sftpFileHandle = sftpClient.createFileTruncate(remotefilename);

        // Associate a file input stream for the current local file
        in = KettleVFS.getInputStream(localFile);
        inBuf = new BufferedInputStream(in);
        byte[] buf = new byte[2048];
        long offset = 0;
        long length = localFile.getContent().getSize();

        if (log.isDetailed()) {
            logDetailed(BaseMessages.getString(PKG, "JobSSH2PUT.Log.SendingFile", localFile.toString(),
                    "" + length, remotefilename));
        }

        // Write to remote file
        while (true) {
            int len = in.read(buf, 0, buf.length);
            if (len <= 0) {
                break;
            }
            sftpClient.write(sftpFileHandle, offset, buf, 0, len);
            offset += len;
        }

        // Get File size
        filesize = getFileSize(sftpClient, remotefilename);

        if (log.isDetailed()) {
            logDetailed(BaseMessages.getString(PKG, "JobSSH2PUT.Log.FileOnRemoteHost", remotefilename,
                    "" + filesize));
        }

        retval = true;
    } catch (Exception e) {
        // We failed to put files
        logError(BaseMessages.getString(PKG, "JobSSH2PUT.Log.ErrorCopyingFile", localFile.toString()) + ":"
                + e.getMessage());
    } finally {
        if (in != null) {
            try {
                in.close();
                in = null;
            } catch (Exception ex) {
                // Ignore errors
            }
        }

        if (inBuf != null) {
            try {
                inBuf.close();
                inBuf = null;
            } catch (Exception ex) {
                // Ignore errors
            }
        }
        if (sftpFileHandle != null) {
            try {
                sftpClient.closeFile(sftpFileHandle);
                sftpFileHandle = null;
            } catch (Exception ex) {
                // Ignore errors
            }
        }
    }
    return retval;
}

From source file:org.pentaho.di.job.entries.unzip.JobEntryUnZip.java

private boolean unzipFile(FileObject sourceFileObject, String realTargetdirectory, String realWildcard,
        String realWildcardExclude, Result result, Job parentJob, FileObject fileObject, FileObject movetodir,
        String realMovetodirectory) {
    boolean retval = false;
    String unzipToFolder = realTargetdirectory;
    try {// w  ww.  j ava2  s.  c o m

        if (log.isDetailed()) {
            logDetailed(
                    BaseMessages.getString(PKG, "JobUnZip.Log.ProcessingFile", sourceFileObject.toString()));
        }

        // Do you create a root folder?
        //
        if (rootzip) {
            String shortSourceFilename = sourceFileObject.getName().getBaseName();
            int lenstring = shortSourceFilename.length();
            int lastindexOfDot = shortSourceFilename.lastIndexOf('.');
            if (lastindexOfDot == -1) {
                lastindexOfDot = lenstring;
            }

            String foldername = realTargetdirectory + "/" + shortSourceFilename.substring(0, lastindexOfDot);
            FileObject rootfolder = KettleVFS.getFileObject(foldername, this);
            if (!rootfolder.exists()) {
                try {
                    rootfolder.createFolder();
                    if (log.isDetailed()) {
                        logDetailed(BaseMessages.getString(PKG, "JobUnZip.Log.RootFolderCreated", foldername));
                    }
                } catch (Exception e) {
                    throw new Exception(
                            BaseMessages.getString(PKG, "JobUnZip.Error.CanNotCreateRootFolder", foldername),
                            e);
                }
            }
            unzipToFolder = foldername;
        }

        // Try to read the entries from the VFS object...
        //
        String zipFilename = "zip:" + sourceFileObject.getName().getFriendlyURI();
        FileObject zipFile = KettleVFS.getFileObject(zipFilename, this);
        FileObject[] items = zipFile.findFiles(new AllFileSelector() {
            public boolean traverseDescendents(FileSelectInfo info) {
                return true;
            }

            public boolean includeFile(FileSelectInfo info) {
                // Never return the parent directory of a file list.
                if (info.getDepth() == 0) {
                    return false;
                }

                FileObject fileObject = info.getFile();
                return fileObject != null;
            }
        });

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

        }
        Pattern patternexclude = null;
        if (!Const.isEmpty(realWildcardExclude)) {
            patternexclude = Pattern.compile(realWildcardExclude);

        }

        for (FileObject item : items) {

            if (successConditionBroken) {
                if (!successConditionBrokenExit) {
                    logError(BaseMessages.getString(PKG, "JobUnZip.Error.SuccessConditionbroken",
                            "" + NrErrors));
                    successConditionBrokenExit = true;
                }
                return false;
            }

            synchronized (KettleVFS.getInstance().getFileSystemManager()) {
                FileObject newFileObject = null;
                try {
                    if (log.isDetailed()) {
                        logDetailed(BaseMessages.getString(PKG, "JobUnZip.Log.ProcessingZipEntry",
                                item.getName().getURI(), sourceFileObject.toString()));
                    }

                    // get real destination filename
                    //
                    String newFileName = unzipToFolder + Const.FILE_SEPARATOR + getTargetFilename(item);
                    newFileObject = KettleVFS.getFileObject(newFileName, this);

                    if (item.getType().equals(FileType.FOLDER)) {
                        // Directory
                        //
                        if (log.isDetailed()) {
                            logDetailed(BaseMessages.getString(PKG, "JobUnZip.CreatingDirectory.Label",
                                    newFileName));
                        }

                        // Create Directory if necessary ...
                        //
                        if (!newFileObject.exists()) {
                            newFileObject.createFolder();
                        }
                    } else {
                        // File
                        //
                        boolean getIt = true;
                        boolean getItexclude = false;

                        // First see if the file matches the regular expression!
                        //
                        if (pattern != null) {
                            Matcher matcher = pattern.matcher(item.getName().getURI());
                            getIt = matcher.matches();
                        }

                        if (patternexclude != null) {
                            Matcher matcherexclude = patternexclude.matcher(item.getName().getURI());
                            getItexclude = matcherexclude.matches();
                        }

                        boolean take = takeThisFile(item, newFileName);

                        if (getIt && !getItexclude && take) {
                            if (log.isDetailed()) {
                                logDetailed(BaseMessages.getString(PKG, "JobUnZip.ExtractingEntry.Label",
                                        item.getName().getURI(), newFileName));
                            }

                            if (iffileexist == IF_FILE_EXISTS_UNIQ) {
                                // Create file with unique name

                                int lenstring = newFileName.length();
                                int lastindexOfDot = newFileName.lastIndexOf('.');
                                if (lastindexOfDot == -1) {
                                    lastindexOfDot = lenstring;
                                }

                                newFileName = newFileName.substring(0, lastindexOfDot)
                                        + StringUtil.getFormattedDateTimeNow(true)
                                        + newFileName.substring(lastindexOfDot, lenstring);

                                if (log.isDebug()) {
                                    logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.CreatingUniqFile",
                                            newFileName));
                                }
                            }

                            // See if the folder to the target file exists...
                            //
                            if (!newFileObject.getParent().exists()) {
                                newFileObject.getParent().createFolder(); // creates the whole path.
                            }
                            InputStream is = null;
                            OutputStream os = null;

                            try {
                                is = KettleVFS.getInputStream(item);
                                os = KettleVFS.getOutputStream(newFileObject, false);

                                if (is != null) {
                                    byte[] buff = new byte[2048];
                                    int len;

                                    while ((len = is.read(buff)) > 0) {
                                        os.write(buff, 0, len);
                                    }

                                    // Add filename to result filenames
                                    addFilenameToResultFilenames(result, parentJob, newFileName);
                                }
                            } finally {
                                if (is != null) {
                                    is.close();
                                }
                                if (os != null) {
                                    os.close();
                                }
                            }
                        } // end if take
                    }
                } catch (Exception e) {
                    updateErrors();
                    logError(BaseMessages.getString(PKG, "JobUnZip.Error.CanNotProcessZipEntry",
                            item.getName().getURI(), sourceFileObject.toString()), e);
                } finally {
                    if (newFileObject != null) {
                        try {
                            newFileObject.close();
                            if (setOriginalModificationDate) {
                                // Change last modification date
                                newFileObject.getContent()
                                        .setLastModifiedTime(item.getContent().getLastModifiedTime());
                            }
                        } catch (Exception e) { /* Ignore */
                        } // ignore this
                    }
                    // Close file object
                    // close() does not release resources!
                    KettleVFS.getInstance().getFileSystemManager().closeFileSystem(item.getFileSystem());
                    if (items != null) {
                        items = null;
                    }
                }
            } // Synchronized block on KettleVFS.getInstance().getFileSystemManager()
        } // End for

        // 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();

        // Unzip done...
        if (afterunzip == 1) {
            // delete zip file
            boolean deleted = fileObject.delete();
            if (!deleted) {
                updateErrors();
                logError(BaseMessages.getString(PKG, "JobUnZip.Cant_Delete_File.Label",
                        sourceFileObject.toString()));
            }
            // File deleted
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.File_Deleted.Label",
                        sourceFileObject.toString()));
            }
        } else if (afterunzip == 2) {
            FileObject destFile = null;
            // Move File
            try {
                String destinationFilename = movetodir + Const.FILE_SEPARATOR
                        + fileObject.getName().getBaseName();
                destFile = KettleVFS.getFileObject(destinationFilename, this);

                fileObject.moveTo(destFile);

                // File moved
                if (log.isDetailed()) {
                    logDetailed(BaseMessages.getString(PKG, "JobUnZip.Log.FileMovedTo",
                            sourceFileObject.toString(), realMovetodirectory));
                }
            } catch (Exception e) {
                updateErrors();
                logError(BaseMessages.getString(PKG, "JobUnZip.Cant_Move_File.Label",
                        sourceFileObject.toString(), realMovetodirectory, e.getMessage()));
            } finally {
                if (destFile != null) {
                    try {
                        destFile.close();
                    } catch (IOException ex) { /* Ignore */
                    }
                }
            }
        }

        retval = true;
    } catch (Exception e) {
        updateErrors();
        log.logError(BaseMessages.getString(PKG, "JobUnZip.Error.Label"), BaseMessages.getString(PKG,
                "JobUnZip.ErrorUnzip.Label", sourceFileObject.toString(), e.getMessage()), e);
    }

    return retval;
}

From source file:org.pentaho.di.job.entries.unzip.JobEntryUnZip.java

private boolean takeThisFile(FileObject sourceFile, String destinationFile) throws FileSystemException {
    boolean retval = false;
    File destination = new File(destinationFile);
    if (!destination.exists()) {
        if (log.isDebug()) {
            logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.CanNotFindFile", destinationFile));
        }//from w  w w  .jav a  2s  .c  o  m
        return true;
    }
    if (log.isDebug()) {
        logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileExists", destinationFile));
    }
    if (iffileexist == IF_FILE_EXISTS_SKIP) {
        if (log.isDebug()) {
            logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileSkip", destinationFile));
        }
        return false;
    }
    if (iffileexist == IF_FILE_EXISTS_FAIL) {
        updateErrors();
        logError(BaseMessages.getString(PKG, "JobUnZip.Log.FileError", destinationFile, "" + NrErrors));
        return false;
    }

    if (iffileexist == IF_FILE_EXISTS_OVERWRITE) {
        if (log.isDebug()) {
            logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileOverwrite", destinationFile));
        }
        return true;
    }

    Long entrySize = sourceFile.getContent().getSize();
    Long destinationSize = destination.length();

    if (iffileexist == IF_FILE_EXISTS_OVERWRITE_DIFF_SIZE) {
        if (entrySize != destinationSize) {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileDiffSize.Diff",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return true;
        } else {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileDiffSize.Same",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return false;
        }
    }
    if (iffileexist == IF_FILE_EXISTS_OVERWRITE_EQUAL_SIZE) {
        if (entrySize == destinationSize) {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileEqualSize.Same",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return true;
        } else {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileEqualSize.Diff",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return false;
        }
    }
    if (iffileexist == IF_FILE_EXISTS_OVERWRITE_ZIP_BIG) {
        if (entrySize > destinationSize) {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileBigSize.Big",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return true;
        } else {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileBigSize.Small",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return false;
        }
    }
    if (iffileexist == IF_FILE_EXISTS_OVERWRITE_ZIP_BIG_EQUAL) {
        if (entrySize >= destinationSize) {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileBigEqualSize.Big",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return true;
        } else {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileBigEqualSize.Small",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return false;
        }
    }
    if (iffileexist == IF_FILE_EXISTS_OVERWRITE_ZIP_SMALL) {
        if (entrySize < destinationSize) {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileSmallSize.Small",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return true;
        } else {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileSmallSize.Big",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return false;
        }
    }
    if (iffileexist == IF_FILE_EXISTS_OVERWRITE_ZIP_SMALL_EQUAL) {
        if (entrySize <= destinationSize) {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileSmallEqualSize.Small",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return true;
        } else {
            if (log.isDebug()) {
                logDebug(BaseMessages.getString(PKG, "JobUnZip.Log.FileSmallEqualSize.Big",
                        sourceFile.getName().getURI(), "" + entrySize, destinationFile, "" + destinationSize));
            }
            return false;
        }
    }
    if (iffileexist == IF_FILE_EXISTS_UNIQ) {
        // Create file with unique name
        return true;
    }

    return retval;
}

From source file:org.pentaho.di.job.entries.unzip.JobEntryUnZip.java

/**
 * @param string//from   w ww.  j  a  va  2 s.c  om
 *          the filename from
 *
 * @return the calculated target filename
 */
protected String getTargetFilename(FileObject file) throws FileSystemException {

    String retval = "";
    String filename = file.getName().getPath();
    // Replace possible environment variables...
    if (filename != null) {
        retval = filename;
    }
    if (file.getType() != FileType.FILE) {
        return retval;
    }

    if (!SpecifyFormat && !adddate && !addtime) {
        return retval;
    }

    int lenstring = retval.length();
    int lastindexOfDot = retval.lastIndexOf('.');
    if (lastindexOfDot == -1) {
        lastindexOfDot = lenstring;
    }

    retval = retval.substring(0, lastindexOfDot);

    if (daf == null) {
        daf = new SimpleDateFormat();
    }

    Date timestamp = new Date();
    if (addOriginalTimestamp) {
        timestamp = new Date(file.getContent().getLastModifiedTime());
    }

    if (SpecifyFormat && !Const.isEmpty(date_time_format)) {
        if (!dateFormatSet) {
            daf.applyPattern(date_time_format);
        }
        String dt = daf.format(timestamp);
        retval += dt;
    } else {

        if (adddate) {
            if (!dateFormatSet) {
                daf.applyPattern("yyyyMMdd");
            }
            String d = daf.format(timestamp);
            retval += "_" + d;
        }
        if (addtime) {
            if (!dateFormatSet) {
                daf.applyPattern("HHmmssSSS");
            }
            String t = daf.format(timestamp);
            retval += "_" + t;
        }
    }

    if (daf != null) {
        dateFormatSet = true;
    }

    retval += filename.substring(lastindexOfDot, lenstring);

    return retval;

}

From source file:org.pentaho.di.job.entries.waitforfile.JobEntryWaitForFile.java

public Result execute(Result previousResult, int nr) {
    Result result = previousResult;
    result.setResult(false);//ww  w  .  ja v a  2 s .c  o m

    // starttime (in seconds)
    long timeStart = System.currentTimeMillis() / 1000;

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

            long iMaximumTimeout = Const.toInt(getRealMaximumTimeout(),
                    Const.toInt(DEFAULT_MAXIMUM_TIMEOUT, 0));
            long iCycleTime = Const.toInt(getRealCheckCycleTime(), Const.toInt(DEFAULT_CHECK_CYCLE_TIME, 0));

            //
            // Sanity check on some values, and complain on insanity
            //
            if (iMaximumTimeout < 0) {
                iMaximumTimeout = Const.toInt(DEFAULT_MAXIMUM_TIMEOUT, 0);
                if (log.isBasic()) {
                    logBasic("Maximum timeout invalid, reset to " + iMaximumTimeout);
                }
            }

            if (iCycleTime < 1) {
                // If lower than 1 set to the default
                iCycleTime = Const.toInt(DEFAULT_CHECK_CYCLE_TIME, 1);
                if (log.isBasic()) {
                    logBasic("Check cycle time invalid, reset to " + iCycleTime);
                }
            }

            if (iMaximumTimeout == 0) {
                if (log.isBasic()) {
                    logBasic("Waiting indefinitely for file [" + realFilename + "]");
                }
            } else {
                if (log.isBasic()) {
                    logBasic("Waiting " + iMaximumTimeout + " seconds for file [" + realFilename + "]");
                }
            }

            boolean continueLoop = true;
            while (continueLoop && !parentJob.isStopped()) {
                fileObject = KettleVFS.getFileObject(realFilename, this);

                if (fileObject.exists()) {
                    // file exists, we're happy to exit
                    if (log.isBasic()) {
                        logBasic("Detected file [" + realFilename + "] within timeout");
                    }
                    result.setResult(true);
                    continueLoop = false;

                    // add filename to result filenames
                    if (addFilenameToResult && fileObject.getType() == FileType.FILE) {
                        ResultFile resultFile = new ResultFile(ResultFile.FILE_TYPE_GENERAL, fileObject,
                                parentJob.getJobname(), toString());
                        resultFile.setComment(BaseMessages.getString(PKG, "JobWaitForFile.FilenameAdded"));
                        result.getResultFiles().put(resultFile.getFile().toString(), resultFile);
                    }
                } else {
                    long now = System.currentTimeMillis() / 1000;

                    if ((iMaximumTimeout > 0) && (now > (timeStart + iMaximumTimeout))) {
                        continueLoop = false;

                        // file doesn't exist after timeout, either true or false
                        if (isSuccessOnTimeout()) {
                            if (log.isBasic()) {
                                logBasic("Didn't detect file [" + realFilename + "] before timeout, success");
                            }
                            result.setResult(true);
                        } else {
                            if (log.isBasic()) {
                                logBasic("Didn't detect file [" + realFilename + "] before timeout, failure");
                            }
                            result.setResult(false);
                        }
                    }

                    // sleep algorithm
                    long sleepTime = 0;

                    if (iMaximumTimeout == 0) {
                        sleepTime = iCycleTime;
                    } else {
                        if ((now + iCycleTime) < (timeStart + iMaximumTimeout)) {
                            sleepTime = iCycleTime;
                        } else {
                            sleepTime = iCycleTime - ((now + iCycleTime) - (timeStart + iMaximumTimeout));
                        }
                    }

                    try {
                        if (sleepTime > 0) {
                            if (log.isDetailed()) {
                                logDetailed("Sleeping " + sleepTime + " seconds before next check for file ["
                                        + realFilename + "]");
                            }
                            Thread.sleep(sleepTime * 1000);
                        }
                    } catch (InterruptedException e) {
                        // something strange happened
                        result.setResult(false);
                        continueLoop = false;
                    }
                }
            }

            if (!parentJob.isStopped() && fileObject.exists() && isFileSizeCheck()) {
                long oldSize = -1;
                long newSize = fileObject.getContent().getSize();

                if (log.isDetailed()) {
                    logDetailed("File [" + realFilename + "] is " + newSize + " bytes long");
                }
                if (log.isBasic()) {
                    logBasic("Waiting until file [" + realFilename + "] stops growing for " + iCycleTime
                            + " seconds");
                }
                while (oldSize != newSize && !parentJob.isStopped()) {
                    try {
                        if (log.isDetailed()) {
                            logDetailed("Sleeping " + iCycleTime + " seconds, waiting for file [" + realFilename
                                    + "] to stop growing");
                        }
                        Thread.sleep(iCycleTime * 1000);
                    } catch (InterruptedException e) {
                        // something strange happened
                        result.setResult(false);
                        continueLoop = false;
                    }
                    oldSize = newSize;
                    newSize = fileObject.getContent().getSize();
                    if (log.isDetailed()) {
                        logDetailed("File [" + realFilename + "] is " + newSize + " bytes long");
                    }
                }
                if (log.isBasic()) {
                    logBasic("Stopped waiting for file [" + realFilename + "] to stop growing");
                }
            }

            if (parentJob.isStopped()) {
                result.setResult(false);
            }
        } catch (Exception e) {
            logBasic("Exception while waiting for file [" + realFilename + "] to stop growing", e);
        } finally {
            if (fileObject != null) {
                try {
                    fileObject.close();
                } catch (Exception e) {
                    // Ignore errors
                }
            }
        }
    } else {
        logError("No filename is defined.");
    }

    return result;
}

From source file:org.pentaho.di.repository.filerep.KettleFileRepository.java

public List<RepositoryElementMetaInterface> getTransformationObjects(ObjectId idDirectory,
        boolean includeDeleted) throws KettleException {

    try {//  w  ww.  j a  va 2  s.  c  om
        List<RepositoryElementMetaInterface> list = new ArrayList<RepositoryElementMetaInterface>();

        RepositoryDirectoryInterface tree = loadRepositoryDirectoryTree();
        RepositoryDirectoryInterface directory = tree.findDirectory(idDirectory);

        String folderName = calcDirectoryName(directory);
        FileObject folder = KettleVFS.getFileObject(folderName);

        for (FileObject child : folder.getChildren()) {
            if (child.getType().equals(FileType.FILE)) {
                if (!child.isHidden() || !repositoryMeta.isHidingHiddenFiles()) {

                    String name = child.getName().getBaseName();

                    if (name.endsWith(EXT_TRANSFORMATION)) {

                        String transName = name.substring(0, name.length() - 4);

                        ObjectId id = new StringObjectId(
                                calcObjectId(directory, transName, EXT_TRANSFORMATION));
                        Date date = new Date(child.getContent().getLastModifiedTime());
                        list.add(new RepositoryObject(id, transName, directory, "-", date,
                                RepositoryObjectType.TRANSFORMATION, "", false));
                    }
                }
            }
        }

        return list;
    } catch (Exception e) {
        throw new KettleException("Unable to get list of transformations in folder with id : " + idDirectory,
                e);
    }
}

From source file:org.pentaho.di.repository.filerep.KettleFileRepository.java

public List<RepositoryElementMetaInterface> getJobObjects(ObjectId id_directory, boolean includeDeleted)
        throws KettleException {

    try {//www  . j av  a  2 s  . c o m
        List<RepositoryElementMetaInterface> list = new ArrayList<RepositoryElementMetaInterface>();

        RepositoryDirectoryInterface tree = loadRepositoryDirectoryTree();
        RepositoryDirectoryInterface directory = tree.findDirectory(id_directory);

        String folderName = calcDirectoryName(directory);
        FileObject folder = KettleVFS.getFileObject(folderName);

        for (FileObject child : folder.getChildren()) {
            if (child.getType().equals(FileType.FILE)) {
                if (!child.isHidden() || !repositoryMeta.isHidingHiddenFiles()) {
                    String name = child.getName().getBaseName();

                    if (name.endsWith(EXT_JOB)) {

                        String jobName = name.substring(0, name.length() - 4);

                        ObjectId id = new StringObjectId(calcObjectId(directory, jobName, EXT_JOB));
                        Date date = new Date(child.getContent().getLastModifiedTime());
                        list.add(new RepositoryObject(id, jobName, directory, "-", date,
                                RepositoryObjectType.JOB, "", false));
                    }
                }
            }
        }

        return list;
    } catch (Exception e) {
        throw new KettleException("Unable to get list of jobs in folder with id : " + id_directory, e);
    }
}

From source file:org.pentaho.di.repository.filerep.KettleFileRepository.java

public RepositoryObject getObjectInformation(ObjectId objectId, RepositoryObjectType objectType)
        throws KettleException {
    try {//from   w  w  w .  j  a  va  2s  .c o  m
        String filename = calcDirectoryName(null);
        if (objectId.getId().startsWith("/")) {
            filename += objectId.getId().substring(1);
        } else {
            filename += objectId.getId();
        }
        FileObject fileObject = KettleVFS.getFileObject(filename);
        if (!fileObject.exists()) {
            return null;
        }
        FileName fname = fileObject.getName();
        String name = fname.getBaseName();
        if (!Const.isEmpty(fname.getExtension()) && name.length() > fname.getExtension().length()) {
            name = name.substring(0, name.length() - fname.getExtension().length() - 1);
        }

        String filePath = fileObject.getParent().getName().getPath();
        final FileObject baseDirObject = KettleVFS.getFileObject(repositoryMeta.getBaseDirectory());
        final int baseDirObjectPathLength = baseDirObject.getName().getPath().length();
        final String dirPath = baseDirObjectPathLength <= filePath.length()
                ? filePath.substring(baseDirObjectPathLength)
                : "/";
        RepositoryDirectoryInterface directory = loadRepositoryDirectoryTree().findDirectory(dirPath);
        Date lastModified = new Date(fileObject.getContent().getLastModifiedTime());

        return new RepositoryObject(objectId, name, directory, "-", lastModified, objectType, "", false);

    } catch (Exception e) {
        throw new KettleException("Unable to get object information for object with id=" + objectId, e);
    }
}

From source file:org.pentaho.di.trans.steps.exceloutput.ExcelOutput.java

private void setFonts() throws Exception {
    // --- Set Header font
    int headerFontSize = Const.toInt(environmentSubstitute(meta.getHeaderFontSize()),
            ExcelOutputMeta.DEFAULT_FONT_SIZE);
    // Set font name
    FontName headerFontName = ExcelFontMap.getFontName(meta.getHeaderFontName());
    // Set UnderlineStyle
    UnderlineStyle underline = ExcelFontMap.getUnderlineStyle(meta.getHeaderFontUnderline());

    WritableFont writableHeaderFont = null;
    if (meta.isHeaderFontBold()) {
        writableHeaderFont = new WritableFont(headerFontName, headerFontSize, WritableFont.BOLD,
                meta.isHeaderFontItalic(), underline);
    } else {/*  w w w.  j  a v  a 2  s.c o m*/
        writableHeaderFont = new WritableFont(headerFontName, headerFontSize, WritableFont.NO_BOLD,
                meta.isHeaderFontItalic(), underline);
    }

    // Header font color
    Colour fontHeaderColour = ExcelFontMap.getColour(meta.getHeaderFontColor(), Colour.BLACK);
    if (!fontHeaderColour.equals(Colour.BLACK)) {
        writableHeaderFont.setColour(fontHeaderColour);
    }
    data.headerCellFormat = new WritableCellFormat(writableHeaderFont);

    // Header background color
    if (meta.getHeaderBackGroundColor() != ExcelOutputMeta.FONT_COLOR_NONE) {
        data.headerCellFormat.setBackground(ExcelFontMap.getColour(meta.getHeaderBackGroundColor(), null));
    }

    // Set alignment
    data.headerCellFormat = ExcelFontMap.getAlignment(meta.getHeaderAlignment(), data.headerCellFormat);
    data.headerCellFormat = ExcelFontMap.getOrientation(meta.getHeaderFontOrientation(), data.headerCellFormat);

    // Do we need to put a image on the header
    if (!Const.isEmpty(data.realHeaderImage)) {
        FileObject imageFile = null;
        try {
            imageFile = KettleVFS.getFileObject(data.realHeaderImage);
            if (!imageFile.exists()) {
                throw new KettleException(
                        BaseMessages.getString(PKG, "ExcelInputLog.ImageFileNotExists", data.realHeaderImage));
            }
            data.realHeaderImage = KettleVFS.getFilename(imageFile);
            // Put an image
            Dimension m = ExcelFontMap.getImageDimension(data.realHeaderImage);
            data.headerImageWidth = m.getWidth() * 0.016;
            data.headerImageHeight = m.getHeight() * 0.0625;

            byte[] imageData = new byte[(int) imageFile.getContent().getSize()];
            KettleVFS.getInputStream(imageFile).read(imageData);

            data.headerImage = new WritableImage(0, 0, data.headerImageWidth, data.headerImageHeight,
                    imageData);
        } catch (Exception e) {
            throw new KettleException(e);
        } finally {
            if (imageFile != null) {
                try {
                    imageFile.close();
                } catch (Exception e) {
                    // Ignore;
                }
            }
        }
    }

    // --- Set rows font
    // Set font size
    int rowFontSize = Const.toInt(environmentSubstitute(meta.getRowFontSize()),
            ExcelOutputMeta.DEFAULT_FONT_SIZE);
    // Set font name
    FontName rowFontName = ExcelFontMap.getFontName(meta.getRowFontName());

    data.writableFont = new WritableFont(rowFontName, rowFontSize, WritableFont.NO_BOLD, false,
            UnderlineStyle.NO_UNDERLINE);

    // Row font color
    Colour rowFontColour = ExcelFontMap.getColour(meta.getRowFontColor(), Colour.BLACK);
    if (!fontHeaderColour.equals(Colour.BLACK)) {
        data.writableFont.setColour(rowFontColour);
    }

    // Set rows background color if needed
    if (meta.getRowBackGroundColor() != ExcelOutputMeta.FONT_COLOR_NONE) {
        data.rowFontBackgoundColour = ExcelFontMap.getColour(meta.getRowBackGroundColor(), null);
    }
}

From source file:org.pentaho.di.trans.steps.fixedinput.FixedInput.java

public boolean init(StepMetaInterface smi, StepDataInterface sdi) {
    meta = (FixedInputMeta) smi;//from   www. j  a  va 2 s  .  co m
    data = (FixedInputData) sdi;

    if (super.init(smi, sdi)) {
        try {
            data.preferredBufferSize = Integer.parseInt(environmentSubstitute(meta.getBufferSize()));
            data.lineWidth = Integer.parseInt(environmentSubstitute(meta.getLineWidth()));
            data.filename = environmentSubstitute(meta.getFilename());

            if (Const.isEmpty(data.filename)) {
                logError(BaseMessages.getString(PKG, "FixedInput.MissingFilename.Message"));
                return false;
            }

            FileObject fileObject = KettleVFS.getFileObject(data.filename, getTransMeta());
            try {
                data.fis = getFileInputStream(fileObject.getURL());
                data.fc = data.fis.getChannel();
                data.bb = ByteBuffer.allocateDirect(data.preferredBufferSize);
            } catch (IOException e) {
                logError(e.toString());
                return false;
            }

            // Add filename to result filenames ?
            if (meta.isAddResultFile()) {
                ResultFile resultFile = new ResultFile(ResultFile.FILE_TYPE_GENERAL, fileObject,
                        getTransMeta().getName(), toString());
                resultFile.setComment("File was read by a Fixed input step");
                addResultFile(resultFile);
            }

            logBasic("Opened file with name [" + data.filename + "]");

            data.stopReading = false;

            if (meta.isRunningInParallel()) {
                data.stepNumber = getUniqueStepNrAcrossSlaves();
                data.totalNumberOfSteps = getUniqueStepCountAcrossSlaves();
                data.fileSize = fileObject.getContent().getSize();
            }

            // OK, now we need to skip a number of bytes in case we're doing a parallel read.
            //
            if (meta.isRunningInParallel()) {

                int totalLineWidth = data.lineWidth + meta.getLineSeparatorLength(); // including line separator bytes
                long nrRows = data.fileSize / totalLineWidth; // 100.000 / 100 = 1000 rows
                long rowsToSkip = Math.round(data.stepNumber * nrRows / (double) data.totalNumberOfSteps); // 0, 333, 667
                // 333, 667, 1000
                long nextRowsToSkip = Math
                        .round((data.stepNumber + 1) * nrRows / (double) data.totalNumberOfSteps);
                data.rowsToRead = nextRowsToSkip - rowsToSkip;
                long bytesToSkip = rowsToSkip * totalLineWidth;

                logBasic("Step #" + data.stepNumber + " is skipping " + bytesToSkip
                        + " to position in file, then it's reading " + data.rowsToRead + " rows.");

                data.fc.position(bytesToSkip);
            }

            return true;
        } catch (Exception e) {
            logError("Error opening file '" + meta.getFilename() + "'", e);
        }
    }
    return false;
}