blob: 91d5bc665948ec4222b716c8c200935bac1be452 [file] [log] [blame]
/*
* TestLazySchemaFactory.java
*
* Created on October 6, 2006, 1:47 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.persistence.jdbc.schema;
import java.util.*;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
import org.apache.openjpa.jdbc.schema.LazySchemaFactory;
import org.apache.openjpa.jdbc.schema.SchemaGroup;
import org.apache.openjpa.jdbc.schema.Table;
import org.apache.openjpa.persistence.jdbc.common.apps.*;
import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
import java.lang.annotation.Annotation;
import junit.framework.*;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
public class TestLazySchemaFactory extends org.apache.openjpa.persistence.jdbc.kernel.BaseJDBCTest{
private SchemaGroup _group = null;
private boolean _fks = true;
/** Creates a new instance of TestLazySchemaFactory */
public TestLazySchemaFactory() {
}
public TestLazySchemaFactory(String test) {
super(test);
}
public void setUp()
throws Exception {
// see if the dict supports foreign keys; mysql can support them, but
// can't detect keys added through alter table commands, which is what
// kodo uses
JDBCConfiguration conf = (JDBCConfiguration) getConfiguration();
_fks = conf.getDBDictionaryInstance().supportsForeignKeys
&& getCurrentPlatform() != AbstractTestCase.Platform.MYSQL;
LazySchemaFactory factory = new LazySchemaFactory();
factory.setConfiguration(conf);
factory.setPrimaryKeys(true);
factory.setIndexes(true);
factory.setForeignKeys(true);
_group = factory;
}
public void testLazySchemaFactory() {
// should read tables 1 and 2...
Table table = _group.findTable("T1");
assertNotNull(table);
Table table2 = _group.findTable("t1");
assertTrue(table == table2);
int expectedColumns = 2;
// Sybase has an extra "UNQ_INDEX" column.
if (getCurrentPlatform() == AbstractTestCase.Platform.SYBASE)
expectedColumns++;
assertEquals(expectedColumns, table.getColumns().length);
if (_fks)
assertEquals(1, table.getForeignKeys().length);
table2 = _group.findTable("T2");
assertNotNull(table2);
if (_fks)
assertTrue(table.getForeignKeys()[0].getPrimaryKeyColumns()[0].
getTable() == table2);
assertNull(table.getSchema().getTable("T3"));
// should read table 3 only...
Table table3 = _group.findTable("T3");
assertNotNull(table3);
assertTrue(table.getSchema().getTable("T3") == table3);
if (_fks)
assertTrue(table3.getForeignKeys()[0].getPrimaryKeyColumns()[0].
getTable() == table);
assertNull(table3.getSchema().getTable("T4"));
}
public static void main(String[] args) {
//main(TestLazySchemaFactory.class);
}
}