Package org.hibernate.tool.test.jdbc2cfg

Source Code of org.hibernate.tool.test.jdbc2cfg.CompositeIdJPATest

/*
* Created on 13-Jan-2005
*
*/
package org.hibernate.tool.test.jdbc2cfg;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.JDBCMetaDataConfiguration;
import org.hibernate.mapping.ForeignKey;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
import org.hibernate.mapping.Table;
import org.hibernate.tool.JDBCMetaDataBinderTestCase;
import org.hibernate.tool.hbm2x.Cfg2JavaTool;
import org.hibernate.tool.hbm2x.POJOExporter;
import org.hibernate.tool.hbm2x.pojo.EntityPOJOClass;

/**
* @author max
*
*/
public class CompositeIdJPATest extends JDBCMetaDataBinderTestCase {

 
  protected void configure(JDBCMetaDataConfiguration configuration) {
    super.configure( configuration );   
  }
    protected String[] getCreateSQL() {
       
        return new String[] {
            "CREATE TABLE Person ( id identity, name varchar(100) NOT NULL, address varchar(255), city varchar(20) default NULL, PRIMARY KEY  (id))"
            ,
            "create table modelyear ( make varchar(20), model varchar(30), year int, name varchar(30), primary key (make, model, year))",
            "CREATE TABLE Vehicle ( " +
            "        state varchar(2) NOT NULL, " +
            "        registration varchar(8) NOT NULL, " +
            "          v_make varchar(20) , " +
            "        v_model varchar(30) , " +
            "        v_year int , " +
            "            owner int , " +
            "          PRIMARY KEY  (registration), " +
            //"        KEY  (make,model,year), " +
            //"            KEY  (owner), " +
            "            constraint vehicle_owner FOREIGN KEY (owner) REFERENCES person (id), " +
            "            constraint vehicle_modelyear FOREIGN KEY (v_make, v_model, v_year) REFERENCES modelyear (make, model, year) " +
            "          )" ,
               };
    }
   
      protected String[] getDropSQL() {
        return new String[] {  
            "drop table Vehicle",
            "drop table modelyear",   
            "drop table Person",
           
                           
        };
    }
    
     public void testMultiColumnForeignKeys() {
       
       Table vehicleTable = getTable(identifier("Vehicle"));
      
       Iterator foreignKeyIterator = vehicleTable.getForeignKeyIterator();
       assertHasNext(2, foreignKeyIterator);

       ForeignKey foreignKey = getForeignKey(vehicleTable, identifier("vehicle_owner"));
       assertEquals(foreignKey.getColumnSpan(), 1);
      
       foreignKey = getForeignKey(vehicleTable, identifier("vehicle_modelyear"));
       assertEquals(foreignKey.getColumnSpan(), 3);
      
       PersistentClass vehicle = getConfiguration().getClassMapping("Vehicle");
       EntityPOJOClass vechiclePojo = new EntityPOJOClass(vehicle, new Cfg2JavaTool());
       assertNotNull(vechiclePojo.getDecoratedObject());
      
       Property property = vehicle.getProperty("modelyear");
       assertNotNull(property);
       String generateJoinColumnsAnnotation = vechiclePojo.generateJoinColumnsAnnotation(property, cfg);
       assertTrue(generateJoinColumnsAnnotation.indexOf("referencedColumnName=\"MAKE\"")>0);
     
      
     }
    
    public void testJPAGeneration() throws Exception {
      getConfiguration().buildMappings();
       POJOExporter exporter = new POJOExporter(getConfiguration(), getOutputDir());
       Properties p = new Properties();
       p.setProperty("jdk5", "true");
       p.setProperty("ejb3", "true");
      
       exporter.setProperties(p);
       exporter.start();
      
       File file = new File( "ejb3compilable" );
     file.mkdir();

     ArrayList list = new ArrayList();
     List jars = new ArrayList();
     addAnnotationJars(jars);
    
     new ExecuteContext(getOutputDir(), file, jars) {

       protected void execute() throws Exception {
         AnnotationConfiguration configuration = new AnnotationConfiguration();
         configuration.addAnnotatedClass( getUcl().loadClass( "Vehicle" ) );
         configuration.addAnnotatedClass( getUcl().loadClass( "Person" ) );
         configuration.addAnnotatedClass( getUcl().loadClass( "Modelyear" ) );

         SessionFactory sf = configuration.buildSessionFactory();
         Session s = sf.openSession();
                 Query createQuery = s.createQuery("from java.lang.Object");
                 createQuery.list();
         s.close();
         sf.close();
        
       }
      
     }.run();
     }
    
    private void addAnnotationJars(List jars) {
      jars.add( "hibernate-jpa-2.0-api-1.0.1.Final.jar" );
    jars.add( "hibernate-commons-annotations-4.0.1.Final.jar" );
    jars.add( "hibernate-core-4.0.0.Final.jar" );
    jars.add( "dom4j-1.6.1.jar" );
    jars.add( "commons-logging-1.0.4.jar" );
   
  }

    
     protected void tearDown() throws Exception {
      // TODO Auto-generated method stub
      super.tearDown();
    }
   public static Test suite() {
      return new TestSuite(CompositeIdJPATest.class);
    }
}
    
TOP

Related Classes of org.hibernate.tool.test.jdbc2cfg.CompositeIdJPATest

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.