package com.wooki.installer.services;
import java.util.Properties;
import org.apache.tapestry5.hibernate.HibernateConfigurer;
import org.apache.tapestry5.ioc.Configuration;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.OrderedConfiguration;
import org.apache.tapestry5.ioc.ServiceBinder;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.SubModule;
import org.apache.tapestry5.ioc.internal.services.ClasspathResourceSymbolProvider;
import org.apache.tapestry5.ioc.services.SymbolProvider;
import com.spreadthesource.tapestry.dbmigration.MigrationSymbolConstants;
import com.spreadthesource.tapestry.dbmigration.services.MigrationModule;
import com.spreadthesource.tapestry.installer.InstallerConstants;
import com.spreadthesource.tapestry.installer.services.ApplicationSettings;
import com.spreadthesource.tapestry.installer.services.ConfigurationTask;
import com.wooki.core.services.CoreModule;
/**
* Module for installation wizard application.
*/
@SubModule(
{ CoreModule.class, MigrationModule.class,
com.spreadthesource.tapestry.installer.services.InstallerModule.class })
public class InstallerModule
{
public void contributeApplicationDefaults(MappedConfiguration<String, String> conf)
{
conf.add(MigrationSymbolConstants.DEFAULT_HIBERNATE_CONFIGURATION, "false");
conf.add(InstallerConstants.TERMINATOR_PAGE, "finish");
}
/**
* Link migration helper to application settings service.
*
* @param configurers
* @param settings
*/
public void contributeDbSource(OrderedConfiguration<HibernateConfigurer> configurers,
final ApplicationSettings settings)
{
configurers.add("AppSettings", new HibernateConfigurer()
{
public void configure(org.hibernate.cfg.Configuration configuration)
{
configuration.setProperties(new Properties()
{
@Override
public String getProperty(String key)
{
return settings.get(key);
}
});
}
});
}
public static void bind(ServiceBinder binder)
{
binder.bind(GlobalSettingsTask.class, GlobalSettingsTaskImpl.class);
binder.bind(MigrationTask.class, MigrationTaskImpl.class);
}
public static void contributeSymbolSource(OrderedConfiguration<SymbolProvider> providers)
{
providers.add("tapestryConfiguration", new ClasspathResourceSymbolProvider(
"config/installer.properties"));
}
public void contributeMigrationManager(Configuration<String> configuration)
{
configuration.add("com.wooki.installer.schema");
}
public static void contributeConfigurationManager(
OrderedConfiguration<ConfigurationTask> configuration,
@Inject GlobalSettingsTask settings, @Inject MigrationTask migrationTask)
{
configuration.add("WookiConf", settings, "before:*");
configuration.add("WookiSchema", migrationTask, "after:WookiConf");
}
}