ProjectDefinitionLoader.java :  » Build » invicta » net » sf » invicta » project » Java Open Source

Java Open Source » Build » invicta 
invicta » net » sf » invicta » project » ProjectDefinitionLoader.java
package net.sf.invicta.project;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import net.sf.invicta.util.BetterDigester;
import net.sf.invicta.util.DTDEntityResolver;

   
/**
 * Load and parse a project definition file (using digester). 
 * 
 */
public class ProjectDefinitionLoader {
   

  protected BetterDigester reader = new BetterDigester();


  /**
   * Constructor for ProjectDefinitionLoader.
   */
  public ProjectDefinitionLoader() {
    super();

    // Enable DTD validation 
    this.reader.setValidating(true);

    // Use the rule set of the project definition.
    this.reader.addRuleSet(new ProjectDefinitionRuleSet());

    this.reader.setEntityResolver(new DTDEntityResolver());

  }

  /**
   * Loads and parses a project definition from the given file name.
   * Returns an unresolved ProjectDefinition object.
   * 
   * @param fileName
   * @return ProjectDefinition
   * @throws InvictaProjectException
   */
  public ProjectDefinition load(String fileName) throws InvictaProjectException {
    
    // Open the file for reading
    File resourceFile = new File(fileName);
    FileInputStream inputStream;
    try {
      inputStream = new FileInputStream(resourceFile);
    } catch (FileNotFoundException e) {
      throw new InvictaProjectException("Project Definition file not found:" + fileName);
    }
    
    this.reader.clearWithErrors();

    // Load the project definition file while parsing it.            
    ProjectDefinition result;
    try {
      result = (ProjectDefinition) reader.parse(inputStream);
    } catch (Exception e) {
      throw new InvictaProjectException("Project definition error: " + e.getMessage());      
    }
                    
    if (reader.getNumberOfErrors() > 0) 
      throw new InvictaProjectException("Error in loading project definition file '" + fileName +"'");      


    return result;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.