X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fspring%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fspring%2Fcomponent%2FDatasourceComponent.java;fp=system%2Fspring%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fspring%2Fcomponent%2FDatasourceComponent.java;h=96d7243685ec3a9ec849abb87d83b7e13d50261f;hb=e9aca8433f14e26edd9da6e24f213a7629d9dcca;hp=0000000000000000000000000000000000000000;hpb=6676eadc7b64f465f5a35b7802864c61fe0cef93;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. + } +}