Package edu.harvard.hul.ois.fits.tools

Source Code of edu.harvard.hul.ois.fits.tools.ToolBelt

/*
* Copyright 2009 Harvard University Library
*
* This file is part of FITS (File Information Tool Set).
*
* FITS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FITS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with FITS.  If not, see <http://www.gnu.org/licenses/>.
*/
package edu.harvard.hul.ois.fits.tools;

import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;

import edu.harvard.hul.ois.fits.exceptions.FitsConfigurationException;

public class ToolBelt {
 
  private List<Tool> tools;
 
  public ToolBelt(String configFile) throws FitsConfigurationException {
    XMLConfiguration config = null;
    try {
      config = new XMLConfiguration(configFile);
    } catch (ConfigurationException e) {
      throw new FitsConfigurationException("Error reading "+configFile,e);
    }
 
    tools = new ArrayList<Tool>();
   
    // get number of tools
    int size = config.getList("tools.tool[@class]").size();
    // for each tools get the class path and any excluded extensions
    for(int i=0;i<size;i++) {
      String tClass = config.getString("tools.tool("+i+")[@class]");
      @SuppressWarnings("unchecked")
      List<String> excludes = config.getList("tools.tool("+i+")[@exclude-exts]");
      @SuppressWarnings("unchecked")
      List<String> includes = config.getList("tools.tool("+i+")[@include-exts]");
      Tool t = null;
      try {
        Class c = Class.forName(tClass);
        t = (Tool)c.newInstance();
      }
      catch(Exception e) {
        throw new FitsConfigurationException("Error initializing "+tClass,e);
      }
      if(t != null) {
        for(String ext : excludes) {
          t.addExcludedExtension(ext);
        }
        for(String ext : includes) {
          t.addIncludedExtension(ext);
        }
        tools.add(t);
      }
    }
  }
 
  public List<Tool> getTools() {
    return tools;
  }
 
  public void printToolInfo() {
    printToolInfo(false,System.out);
  }
  public void printToolInfo(boolean sysInfo, PrintStream p) {
    if(sysInfo) {
      //system info
      p.println("OS Name = "+System.getProperty("os.name"));
      p.println("OS Arch = "+System.getProperty("os.arch"));
      p.println("OS Version = "+System.getProperty("os.version"));
      p.println("------------------------------------");
    }
   
    for(Tool t : tools) {
      p.print(t.getToolInfo().print());
    }

  }
}
TOP

Related Classes of edu.harvard.hul.ois.fits.tools.ToolBelt

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.