package com.wooki.installer.services;
import java.util.HashMap;
import java.util.Map;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.Symbol;
import com.spreadthesource.tapestry.installer.InstallerConstants;
import com.spreadthesource.tapestry.installer.services.ApplicationSettings;
import com.wooki.installer.data.DbType;
public class GlobalSettingsTaskImpl implements GlobalSettingsTask
{
private ApplicationSettings applicationSettings;
private Map<String, String> settings;
private boolean configured;
public GlobalSettingsTaskImpl(ApplicationSettings applicationSettings, @Inject @Symbol(InstallerConstants.SILENT_MODE) boolean silent)
{
this.applicationSettings = applicationSettings;
this.settings = new HashMap<String, String>();
this.configured = silent;
settings.put(UPLOAD_DIR, System.getProperty("java.io.tmpdir"));
settings.put(UPLOAD_MAX_FILE_SIZE, "3");
settings.put(DB_DRIVER, DbType.H2.getDbDriver());
settings.put(DB_DIALECT, DbType.H2.getDbDialect());
settings.put(DB_PASSWORD, DbType.H2.getDbPassword());
settings.put(DB_USERNAME, DbType.H2.getDbUsername());
settings.put(DB_URL, DbType.H2.getDbUrl());
}
public void put(String key, String value)
{
settings.put(key, value);
this.configured = true;
};
public String get(String key)
{
return settings.get(key);
};
public String getStartPage()
{
return START_PAGE;
}
public Object getStartPageContext()
{
return null;
}
public boolean isConfigured()
{
return containsKeys(
DB_DIALECT,
DB_DRIVER,
DB_PASSWORD,
DB_URL,
DB_USERNAME,
UPLOAD_DIR,
UPLOAD_MAX_FILE_SIZE) && configured;
}
public void rollback()
{
settings.clear();
}
public void run()
{
recordKeys(
DB_DIALECT,
DB_DRIVER,
DB_PASSWORD,
DB_URL,
DB_USERNAME,
UPLOAD_DIR,
UPLOAD_MAX_FILE_SIZE);
}
private boolean containsKeys(String... keys)
{
for (String key : keys)
{
if (!settings.containsKey(key)) { return false; }
}
return true;
}
private void recordKeys(String... keys)
{
for (String key : keys)
{
applicationSettings.put(key, settings.get(key));
}
}
}