Package eu.scape_project.planning.services.characterisation.fits

Source Code of eu.scape_project.planning.services.characterisation.fits.FitsIntegration

/*******************************************************************************
* Copyright 2006 - 2012 Vienna University of Technology,
* Department of Software Technology and Interactive Systems, IFS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package eu.scape_project.planning.services.characterisation.fits;

import java.io.File;
import java.io.Serializable;

import org.dom4j.io.OutputFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import eu.scape_project.planning.exception.PlanningException;
import eu.scape_project.planning.utils.CommandExecutor;
import eu.scape_project.planning.utils.FileUtils;
import eu.scape_project.planning.utils.OS;

public class FitsIntegration implements Serializable {
    private static final long serialVersionUID = 1L;
   
    private static Logger log = LoggerFactory.getLogger(FitsIntegration.class);

   // private static final long serialVersionUID = 5183122855613215086L;
    public static OutputFormat prettyFormat = new OutputFormat(" ", true,"ISO-8859-1"); //OutputFormat.createPrettyPrint();

    private static String FITS_HOME;
   
    private static String FITS_COMMAND = "%FITS_EXEC% -i %INPUT% -o %OUTPUT%";
   
    public FitsIntegration() throws PlanningException{
        FITS_HOME = System.getenv("FITS_HOME");
        if (FITS_HOME == null) {
            log.warn("FITS is not propertly configured (FITS_HOME is not defined) - characterisation will not be available.");
        }
    }
   
    public String characterise(File input) throws PlanningException{
        if (FITS_HOME == null) {
            throw new PlanningException("FITS is not properly configured (FITS_HOME is not defined).");
        }
        CommandExecutor cmdExecutor = new CommandExecutor();
        cmdExecutor.setWorkingDirectory(FITS_HOME);
        String scriptExt;
        if ("Linux".equalsIgnoreCase(System.getProperty("os.name"))){
            scriptExt = "./fits.sh";
        } else {
            scriptExt = "cmd /c %FITS_HOME%/fits";
        }
        File output = new File(OS.getTmpPath() + "fits"+System.nanoTime()+".out");
        try {
            String commandLine = FITS_COMMAND.replace("%FITS_EXEC%", scriptExt)
                .replace("%INPUT%", input.getAbsolutePath())
                .replace("%OUTPUT%", output.getAbsolutePath());
           
            try {
                int exitcode = cmdExecutor.runCommand(commandLine);
                if (exitcode != 0) {
                    String cmdError = cmdExecutor.getCommandError();
                    throw new PlanningException("FITS characterisation for file: " + input + " failed: " + cmdError);
                }
                if (!output.exists()) {
                    throw new PlanningException("FITS characterisation for file: " + input + " failed: no output was written.");
                }
               
                return new String(FileUtils.getBytesFromFile(output));
            } catch (PlanningException e) {
                throw e;
            } catch (Throwable t) {
                throw new PlanningException("FITS characterisation for file: " + input + " failed: " + t.getMessage());           
            }
        } finally {
            output.delete();
        }
    }
   
}
TOP

Related Classes of eu.scape_project.planning.services.characterisation.fits.FitsIntegration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.