Package org.byteliberi.easydriver.generator.model

Source Code of org.byteliberi.easydriver.generator.model.Preparation

/*
* EasyDriver is a library that let a programmer build queries easier
* than using plain JDBC.
* Copyright (C) 2011 Paolo Proni
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/
package org.byteliberi.easydriver.generator.model;

import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Logger;

import org.byteliberi.easydriver.generator.BeanFactoryGeneration;
import org.byteliberi.easydriver.generator.GenerationException;
import org.byteliberi.easydriver.generator.ObjectModelGeneration;
import org.byteliberi.easydriver.generator.ServiceGeneration;
import org.byteliberi.easydriver.generator.StructureGeneration;

/**
* Loads the database driver, instantiates it and starts the
* creation of the source code.
*
* @author Paolo Proni
*/
public class Preparation implements DBParameterAPI {
  private String connection;
  private String destDir;
  private String driver;
  private String packageName;
  private String password;
  private String userName;
 
  @Override
  public void generate() throws MalformedURLException, SQLException, GenerationException, FileNotFoundException, UnsupportedEncodingException, ClassNotFoundException, InstantiationException, IllegalAccessException {
    Logger logger = Logger.getAnonymousLogger();
    logger.info("Generation button pressed");
    logger.info(connection);
    logger.info(destDir);
    logger.info(driver);
    logger.info(packageName);
    logger.info(password);
    logger.info(userName);
   
    URL u = new URL( "jar:file:" + driver + "!/");       
    String classname = "org.postgresql.Driver";
    URLClassLoader ucl = new URLClassLoader(new URL[] { u });
    Driver d = (Driver)Class.forName(classname, true, ucl).newInstance();
    DriverManager.registerDriver(new DriverShim(d));
    DriverManager.getConnection(connection, userName, password);
       
    Connection con = null;
   
    try {
      con = DriverManager.getConnection(connection, userName, password);
      final List<MetaEasyDriver> metaData = MetaEasyDriverFactory.readMetaData(con);         
           
      final String baseDir = MetaEasyDriverFactory.createDir(destDir, packageName);
                  
      final StructureGeneration structure = new StructureGeneration(metaData, packageName);
      structure.generate(baseDir);
     
      final ObjectModelGeneration omGen = new ObjectModelGeneration(metaData, packageName);
      omGen.generate(baseDir);
     
      final BeanFactoryGeneration beanGen = new BeanFactoryGeneration(metaData, packageName);
      beanGen.generate(baseDir);
     
      final ServiceGeneration serviceGen = new ServiceGeneration(metaData, packageName);
      serviceGen.generate(baseDir);
    }
    finally {
      if (con != null)
        con.close();
    }
  }
   
  @Override
  public void setCon(String connection)  {
    this.connection = connection;
  }

  @Override
  public void setDestinationDir(String destDir) {
    this.destDir = destDir;
  }

  @Override
  public void setDriver(String driver) {
    this.driver = driver;
  }

  @Override
  public void setPackage(String packageName) {
    this.packageName = packageName;
  }

  @Override
  public void setPassword(String password) {
    this.password = password;
  }

  @Override
  public void setUser(String userName) {
    this.userName = userName;
  }
}
TOP

Related Classes of org.byteliberi.easydriver.generator.model.Preparation

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.