JobResult.java 5.64 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.pdfg.logging.PDFGLogger
 */
package com.adobe.pdfg.common;

import com.adobe.pdfg.common.FileUtilities;
import com.adobe.pdfg.logging.PDFGLogger;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;

public class JobResult {
    public static final String RESULT_FILE_NAME = "_done_";
    public static final String ERROR_FILE_NAME = "_error_";
    public static final String DELETE_FILE_NAME = "_delete_";
    public static final String DEST_DIR = "destdir";
    private static final int GENERIC_ERROR = -1;
    private static final PDFGLogger logger = PDFGLogger.getPDFGLogger(JobResult.class);

    public static File getJobDestDir(String jobID) {
        return JobResult.getJobDestDir(FileUtilities.getGuidDir(jobID));
    }

    public static File getJobDestDir(File parentDir) {
        return new File(parentDir, "destdir");
    }

    public static File createJobDestDir(String jobID) {
        File destdir = new File(FileUtilities.getGuidDir(jobID), "destdir");
        destdir.mkdirs();
        return destdir;
    }

    public static void setJobDone(String jobID) throws IOException {
        File destdir = JobResult.getJobDestDir(jobID);
        File donefile = new File(destdir, "_done_");
        donefile.createNewFile();
    }

    public static boolean isJobDone(String jobID) {
        File rootdir = FileUtilities.getGuidDir(jobID);
        File destdir = new File(rootdir, "destdir");
        File[] files = destdir.listFiles(new FilenameFilter(){

            public boolean accept(File dir, String name) {
                return name.equals("_done_");
            }
        });
        return files.length > 0;
    }

    public static boolean deleteJobFiles(String jobID) {
        File directory = FileUtilities.getGuidDir(jobID);
        return FileUtilities.deleteDir(directory);
    }

    public static void cleanupJobFiles(String jobId) {
        File directory = FileUtilities.getGuidDir(jobId);
        File[] files = directory.listFiles();
        if (files != null && files.length > 0) {
            for (int count = 0; count < files.length; ++count) {
                String name;
                File candidate = files[count];
                if (!candidate.isFile() || "_done_".equals(name = candidate.getName()) || "_error_".equals(name) || "_delete_".equals(name) || candidate.delete()) continue;
                logger.debug("Unable to cleanup file: " + candidate.getAbsolutePath());
            }
        }
    }

    public static boolean isJobDeleted(String jobID) {
        boolean result = false;
        if (!JobResult.isJobDirectoryExtant(jobID)) {
            result = true;
        } else {
            File deletefile = JobResult.getDeleteFile(jobID);
            result = deletefile.exists();
        }
        return result;
    }

    private static File getDeleteFile(String jobID) {
        File deletefile = new File(FileUtilities.getGuidDir(jobID), "_delete_");
        return deletefile;
    }

    public static boolean isJobDirectoryExtant(String jobId) {
        File rootdir = FileUtilities.getGuidDir(jobId);
        boolean result = rootdir.exists();
        return result;
    }

    public static boolean markJobDeleted(String jobID) throws IOException {
        File deletefile = JobResult.getDeleteFile(jobID);
        deletefile.createNewFile();
        return true;
    }

    public static boolean hasJobError(String jobID) {
        File destdir = JobResult.getJobDestDir(jobID);
        File errorfile = new File(destdir, "_error_");
        return errorfile.exists();
    }

    public static void setJobErrCode(String jobID, int errCode) throws FileNotFoundException, IOException {
        File destdir = JobResult.getJobDestDir(jobID);
        File errorFile = new File(destdir, "_error_");
        String str = String.valueOf(errCode);
        byte[] bytes = str.getBytes("UTF-8");
        FileOutputStream fos = new FileOutputStream(errorFile);
        fos.write(bytes);
        fos.close();
    }

    public static int getJobErrCode(String jobID) {
        int errCode = -1;
        try {
            if (JobResult.hasJobError(jobID)) {
                int tmp;
                File destdir = JobResult.getJobDestDir(jobID);
                File errorFile = new File(destdir, "_error_");
                FileInputStream fis = new FileInputStream(errorFile);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                while ((tmp = fis.read()) != -1) {
                    baos.write(tmp);
                }
                fis.close();
                String errCodeStr = new String(baos.toByteArray());
                errCode = Integer.parseInt(errCodeStr);
            }
        }
        catch (Exception e) {
            logger.debug(e.getMessage(), null, (Throwable)e);
        }
        return errCode;
    }

    public static String displayTime(long msec) {
        long sec = 0;
        long min = 0;
        long hr = 0;
        if (msec < 1000) {
            return "" + msec + " millisecs";
        }
        sec = msec / 1000;
        msec %= 1000;
        if (sec >= 60) {
            min = sec / 60;
            sec %= 60;
            if (min >= 60) {
                hr = min / 60;
                min %= 60;
            }
        }
        String tmStr = "" + sec + "." + msec + " secs";
        if (min > 0) {
            tmStr = "" + min + " min " + tmStr;
        }
        if (hr > 0) {
            tmStr = "" + hr + " hr " + tmStr;
        }
        return tmStr;
    }

}