From: Erik Brakkee Date: Thu, 15 May 2008 20:29:21 +0000 (+0000) Subject: (no commit message) X-Git-Tag: wamblee-utils-0.7~714 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=e9aca8433f14e26edd9da6e24f213a7629d9dcca;p=utils --- diff --git a/system/spring/src/main/java/org/wamblee/system/spring/component/DatasourceComponent.java b/system/spring/src/main/java/org/wamblee/system/spring/component/DatasourceComponent.java new file mode 100644 index 00000000..96d72436 --- /dev/null +++ b/system/spring/src/main/java/org/wamblee/system/spring/component/DatasourceComponent.java @@ -0,0 +1,77 @@ +/* + * Copyright 2008 the original author or authors. + * + * 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.wamblee.system.spring.component; + +import java.io.IOException; +import java.util.Map; +import java.util.Properties; +import java.util.TreeMap; + +import javax.sql.DataSource; + +import org.springframework.core.io.ClassPathResource; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.wamblee.system.components.ORMappingConfig; +import org.wamblee.system.components.ORMappingConfig.DatabaseType; +import org.wamblee.system.core.AbstractComponent; +import org.wamblee.system.core.DefaultProvidedInterface; +import org.wamblee.system.core.DefaultRequiredInterface; +import org.wamblee.system.core.ProvidedInterface; +import org.wamblee.system.core.RequiredInterface; +import org.wamblee.system.core.Scope; +import org.wamblee.system.spring.SpringComponent; + +public class DatasourceComponent extends AbstractComponent { + + private static RequiredInterface PROPS = new DefaultRequiredInterface("dbprops", Properties.class); + private static ProvidedInterface DATASOURCE = new DefaultProvidedInterface("datasource", + DataSource.class); + private static ProvidedInterface ORM_CONFIG = new DefaultProvidedInterface("ormconfig", + ORMappingConfig.class); + + public DatasourceComponent(String aName) throws IOException { + super(aName); + + addRequiredInterface(PROPS); + addProvidedInterface(DATASOURCE); + addProvidedInterface(ORM_CONFIG); + } + + + @Override + protected DataSource doStart(Scope aScope) { + Properties dbProps = aScope.getInterfaceImplementation( + PROPS.getProvider(), Properties.class); + DriverManagerDataSource ds = new DriverManagerDataSource( + dbProps.getProperty("database.driver"), + dbProps.getProperty("database.url"), + dbProps.getProperty("database.username"), + dbProps.getProperty("database.password")); + addInterface(DATASOURCE, ds, aScope); + DatabaseType type = DatabaseType.valueOf(dbProps.getProperty("database.type")); + + ORMappingConfig config = new ORMappingConfig(true, type); + + addInterface(ORM_CONFIG, config, aScope); + + return ds; + } + + @Override + protected void doStop(DataSource aRuntime) { + // Empty. + } +} diff --git a/system/spring/src/main/java/org/wamblee/system/spring/component/HibernateComponent.java b/system/spring/src/main/java/org/wamblee/system/spring/component/HibernateComponent.java index 56fda2f0..6f5c0a95 100644 --- a/system/spring/src/main/java/org/wamblee/system/spring/component/HibernateComponent.java +++ b/system/spring/src/main/java/org/wamblee/system/spring/component/HibernateComponent.java @@ -28,13 +28,14 @@ import org.hibernate.dialect.MySQLInnoDBDialect; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.transaction.PlatformTransactionManager; import org.wamblee.persistence.hibernate.HibernateMappingFiles; +import org.wamblee.system.components.ORMappingConfig; +import org.wamblee.system.components.ORMappingConfig.DatabaseType; import org.wamblee.system.core.DefaultProvidedInterface; import org.wamblee.system.core.DefaultRequiredInterface; import org.wamblee.system.core.ProvidedInterface; import org.wamblee.system.core.RequiredInterface; import org.wamblee.system.core.Scope; import org.wamblee.system.spring.SpringComponent; -import org.wamblee.system.spring.component.ORMappingConfig.DatabaseType; public class HibernateComponent extends SpringComponent { diff --git a/system/spring/src/main/java/org/wamblee/system/spring/component/ORMappingConfig.java b/system/spring/src/main/java/org/wamblee/system/spring/component/ORMappingConfig.java deleted file mode 100644 index cf34da38..00000000 --- a/system/spring/src/main/java/org/wamblee/system/spring/component/ORMappingConfig.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2008 the original author or authors. - * - * 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.wamblee.system.spring.component; - -public class ORMappingConfig { - - public enum DatabaseType { - MYSQL_INNO_DB, DERBY; - - public static interface Switch { - T handleMySqlInnoDb(); - - T handleDerby(); - } - - public T handleCases(Switch aSwitch) { - - switch (this) { - case MYSQL_INNO_DB: { - return aSwitch.handleMySqlInnoDb(); - } - case DERBY: { - return aSwitch.handleDerby(); - } - default: { - throw new RuntimeException("Unhandled case " + this); - } - } - } - }; - - private boolean _schemaUpdate; - private DatabaseType _type; - - public ORMappingConfig(boolean aSchemaUpdate, DatabaseType aType) { - _schemaUpdate = aSchemaUpdate; - _type = aType; - } - - public boolean isSchemaUpdate() { - return _schemaUpdate; - } - - public DatabaseType getType() { - return _type; - } - -}