Package modTransf.model.factory

Source Code of modTransf.model.factory.RepositoryConfigReader

//Source file: H:\\TEMP\\generated\\ispuml\\mdaTransformation\\model\\factory\\RepositoryConfigReader.java

package modTransf.model.factory;

import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.net.URL;


/**
* Read a configuration for the repository.
*/
public class RepositoryConfigReader
{
     /** The rules to read config files */
  protected RepositoryConfigReaderRules rules;
  protected boolean useContextClassLoader = true;
  protected boolean validateParsing = true;
  protected Digester digester;

  protected String registeredUri[]={
              "http://www.lifl.fr/~dumoulin/mdaTransf/resources/metamodelConfig_1_0.dtd",
              "/modTransf/model/factory/resources/metamodelConfig_1_0.dtd",
              "-//MDATransf Meta Model config 1.0//EN",
              "/modTransf/model/factory/resources/metamodelConfig_1_0.dtd",
  };


   public RepositoryConfigReader()
   {

   }

   /**
    * Clear the digester object stack
    */
   public void clear()
   {
     if(digester!=null)
     {
       digester.clear();
     }
   }
   /**
    * @param reader
    */
   public void readConfigFile(ModelFactoryRepository repository, InputStream input)
     throws ModelFactoryException
   {
    try
      {
      parse( repository, input );
      }
     catch(Exception ex)
      {
      throw new ModelFactoryException( "Error while parsing input." , ex );
    }
   }

   /**
    * @param filename
    */
   public void readConfigFile(ModelFactoryRepository repository, String filename)
     throws FileNotFoundException, ModelFactoryException
   {
   InputStream input;
   try
     {
       // Try to get the input as a regular file
     input = new FileInputStream(filename);
     }
    catch(FileNotFoundException ex)
     {
       // try as a resource
     input = this.getClass().getResourceAsStream(filename);
     if(input==null)
       input = System.class.getClassLoader().getSystemResourceAsStream(filename);

     if(input==null)
        throw new FileNotFoundException( "rule file '" + filename + "' not found.");
     }

  try
    {
    parse( repository, input );
    }
   catch(Exception ex)
    {
    throw new ModelFactoryException( "Error while parsing file '" + filename + "'." , ex );
    }

   }

  /**
   * Load the rules
   * @param engine
   * @param engineContext
   */
  protected void createDigester( ModelFactoryRepository repository)
  {
  if( digester != null )
    return;

    // initialize the digester
  digester = new Digester();
  digester.setUseContextClassLoader(useContextClassLoader);

  //digester.setSchema( registeredUri[1] );
    // Register local schema and DTD
  for(int i=0;i<registeredUri.length; i+=2 )
    {
      URL url = this.getClass().getResource(registeredUri[i+1]);
      if (url != null)
          {
          digester.register(registeredUri[i], url.toString());
          }
         else
          {
          System.out.println("WARNING: Can't get URI for '" + registeredUri[i+1] + "'" );
          }
    } // end loop

    // set validation
  //System.out.println("Set rule validation to '" + validateParsing  + "'" );
  digester.setValidating(validateParsing);
    // set the rules
  digester.addRuleSet(new RepositoryConfigReaderRules(repository));
  }

  protected void parse( ModelFactoryRepository repository, InputStream input )
    throws IOException, SAXException, ModelFactoryException
  {
  createDigester(repository);
  digester.parse(input);

  //digester.clear();
  digester=null;
  }
  public void setUseContextClassLoader(boolean useContextClassLoader)
  {
    this.useContextClassLoader = useContextClassLoader;
  }
  public void setValidateParsing(boolean validateParsing)
  {
    this.validateParsing = validateParsing;
  }


}
TOP

Related Classes of modTransf.model.factory.RepositoryConfigReader

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.