/*
* Copyright 2005 Werner Guttmann, Ralf Joachim
*
* Licensed 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.castor.cpa.test.test356;
import java.text.MessageFormat;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.castor.cpa.test.framework.CPATestCase;
import org.castor.cpa.test.framework.xml.types.DatabaseEngineType;
import org.castor.jdo.conf.JdoConf;
import org.castor.jdo.util.JDOConfFactory;
import org.exolab.castor.jdo.Database;
import org.exolab.castor.jdo.JDOManager;
import org.exolab.castor.jdo.OQLQuery;
import org.exolab.castor.jdo.QueryResults;
import org.exolab.castor.mapping.MappingException;
/**
* @author < a href="werner.guttmann@hmx.net">Werner Guttmann</a>
*/
public final class Test356 extends CPATestCase {
private static final Log LOG = LogFactory.getLog(Test356.class);
private static final String DBNAME = "test356";
private static final String MAPPING = "/org/castor/cpa/test/test356/mapping-{0}.xml";
public static Test suite() {
TestSuite suite = new TestSuite(Test356.class.getName());
suite.addTest(new Test356("testDoubleEntities"));
suite.addTest(new Test356("testIntEntities"));
suite.addTest(new Test356("testIntAndDoubleEntities"));
suite.addTest(new Test356("testIntAndIntegerEntities"));
suite.addTest(new Test356("testIntegerEntities"));
suite.addTest(new Test356("testIntegerAndDoubleEntities"));
suite.addTest(new Test356("testLoadNullIntAndIntegerEntities"));
return suite;
}
public Test356(final String name) {
super(name);
}
// Test are only included/excluded for engines that have been tested with this test suite.
public boolean include(final DatabaseEngineType engine) {
return (engine == DatabaseEngineType.DERBY)
|| (engine == DatabaseEngineType.HSQL)
|| (engine == DatabaseEngineType.MYSQL)
|| (engine == DatabaseEngineType.ORACLE)
|| (engine == DatabaseEngineType.POSTGRESQL)
|| (engine == DatabaseEngineType.SAPDB)
|| (engine == DatabaseEngineType.SQL_SERVER);
}
public void testDoubleEntities() throws Exception {
try {
JdoConf jdoConf = getJdoConf("double");
JDOManager.loadConfiguration(jdoConf, getJdoConfBaseURL());
fail();
} catch (MappingException ex) {
assertEquals("org.exolab.castor.mapping.MappingException",
ex.getClass().getName());
}
}
public void testIntEntities() throws Exception {
JdoConf jdoConf = getJdoConf("int");
JDOManager.loadConfiguration(jdoConf, getJdoConfBaseURL());
JDOManager jdo = JDOManager.createInstance(DBNAME + "-int");
Database db = jdo.getDatabase();
db.begin();
OQLQuery query = db.getOQLQuery("SELECT e FROM "
+ IntEntity.class.getName() + " e WHERE is_defined(property)");
QueryResults results = query.execute();
IntEntity testEntity = null;
while (results.hasMore()) {
testEntity = (IntEntity) results.next();
LOG.debug("Existing entity: " + testEntity);
}
db.commit();
jdo = null;
}
public void testIntAndDoubleEntities() throws Exception {
JdoConf jdoConf = getJdoConf("int-and-double");
JDOManager.loadConfiguration(jdoConf, getJdoConfBaseURL());
JDOManager jdo = JDOManager.createInstance(DBNAME + "-int-and-double");
Database db = jdo.getDatabase();
db.begin();
OQLQuery query = db.getOQLQuery("SELECT e FROM "
+ IntAndDoubleEntity.class.getName() + " e WHERE is_defined(property)");
QueryResults results = query.execute();
IntAndDoubleEntity testEntity = null;
while (results.hasMore()) {
testEntity = (IntAndDoubleEntity) results.next();
LOG.debug("Existing entity: " + testEntity);
}
db.commit();
jdo = null;
}
public void testIntAndIntegerEntities() throws Exception {
JdoConf jdoConf = getJdoConf("int-and-integer");
JDOManager.loadConfiguration(jdoConf, getJdoConfBaseURL());
JDOManager jdo = JDOManager.createInstance(DBNAME + "-int-and-integer");
Database db = jdo.getDatabase();
db.begin();
OQLQuery query = db.getOQLQuery("SELECT e FROM "
+ IntAndIntegerEntity.class.getName() + " e WHERE is_defined(property)");
QueryResults results = query.execute();
IntAndIntegerEntity testEntity = null;
while (results.hasMore()) {
testEntity = (IntAndIntegerEntity) results.next();
LOG.debug("Existing entity: " + testEntity);
}
db.commit();
jdo = null;
}
public void testIntegerEntities() throws Exception {
JdoConf jdoConf = getJdoConf("integer");
JDOManager.loadConfiguration(jdoConf, getJdoConfBaseURL());
JDOManager jdo = JDOManager.createInstance(DBNAME + "-integer");
Database db = jdo.getDatabase();
db.begin();
OQLQuery query = db.getOQLQuery("SELECT e FROM "
+ IntegerEntity.class.getName() + " e WHERE is_defined(property)");
QueryResults results = query.execute();
IntegerEntity testEntity = null;
while (results.hasMore()) {
testEntity = (IntegerEntity) results.next();
LOG.debug("Existing entity: " + testEntity);
}
db.commit();
jdo = null;
}
public void testIntegerAndDoubleEntities() throws Exception {
JdoConf jdoConf = getJdoConf("integer-and-double");
JDOManager.loadConfiguration(jdoConf, getJdoConfBaseURL());
JDOManager jdo = JDOManager.createInstance(DBNAME + "-integer-and-double");
Database db = jdo.getDatabase();
db.begin();
OQLQuery query = db.getOQLQuery("SELECT e FROM "
+ IntegerAndDoubleEntity.class.getName()
+ " e WHERE is_defined(property)");
QueryResults results = query.execute();
IntegerAndDoubleEntity testEntity = null;
while (results.hasMore()) {
testEntity = (IntegerAndDoubleEntity) results.next();
LOG.debug("Existing entity: " + testEntity);
}
db.commit();
jdo = null;
}
public void testLoadNullIntAndIntegerEntities() throws Exception {
JdoConf jdoConf = getJdoConf("int-and-integer");
JDOManager.loadConfiguration(jdoConf, getJdoConfBaseURL());
JDOManager jdo = JDOManager.createInstance(DBNAME + "-int-and-integer");
Database db = jdo.getDatabase();
db.begin();
IntAndIntegerEntity iEnt = db.load(IntAndIntegerEntity.class, new Integer(5));
db.commit();
assertNull(iEnt.getProperty());
assertTrue(iEnt.getId() == 5);
jdo = null;
}
private JdoConf getJdoConf(final String extension) {
String name = DBNAME + "-" + extension;
String mapping = MessageFormat.format(MAPPING, new Object[] {extension});
org.castor.jdo.conf.Database dbConfig = getDbConfig(name);
dbConfig.addMapping(JDOConfFactory.createXmlMapping(mapping));
return JDOConfFactory.createJdoConf(dbConfig, getTxConfig());
}
}