package com.wooki.installer.pages;
import org.apache.tapestry5.Block;
import org.apache.tapestry5.EventConstants;
import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.beaneditor.Validate;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.util.EnumSelectModel;
import org.apache.tapestry5.util.EnumValueEncoder;
import com.spreadthesource.tapestry.installer.services.ConfigurationManager;
import com.spreadthesource.tapestry.installer.services.ConfigurationTask;
import com.spreadthesource.tapestry.installer.services.Restart;
import com.wooki.installer.data.DbType;
import com.wooki.installer.services.GlobalSettingsTask;
public class Index
{
@Inject
private ConfigurationManager manager;
@Inject
private GlobalSettingsTask settings;
@Inject
private Messages messages;
@Inject
@Property
private Block dbDetails;
@Property
@Validate("required")
private String uploadDir;
@Property
@Validate("required")
private Integer uploadMaxFileSize;
@Property
@Validate("required")
private DbType dbType;
@Property
@Validate("required")
private String dbUsername;
@Property
private String dbPassword;
@Property
@Validate("required")
private String dbUrl;
@Property
@Validate("required")
private String dbDriver;
@Property
@Validate("required")
private String dbDialect;
@OnEvent(value = EventConstants.ACTIVATE)
public void initValues()
{
if (dbType == null)
{
dbType = DbType.H2;
}
uploadMaxFileSize = 3;
initDbValues(dbType);
}
@OnEvent(value = EventConstants.ACTION)
public Object addConfiguration()
{
return new Restart();
}
@OnEvent(value = EventConstants.VALUE_CHANGED)
public Object dbSelectionChanged(final DbType selectedDbType)
{
initDbValues(selectedDbType);
return dbDetails;
}
@OnEvent(value = EventConstants.SUBMIT)
public Object submitConfiguration()
{
settings.put(GlobalSettingsTask.UPLOAD_DIR, uploadDir);
settings.put(GlobalSettingsTask.UPLOAD_MAX_FILE_SIZE, uploadMaxFileSize.toString());
settings.put(GlobalSettingsTask.DB_DIALECT, dbDialect);
settings.put(GlobalSettingsTask.DB_DRIVER, dbDriver);
settings.put(GlobalSettingsTask.DB_PASSWORD, dbPassword);
settings.put(GlobalSettingsTask.DB_URL, dbUrl);
settings.put(GlobalSettingsTask.DB_USERNAME, dbUsername);
manager.configure();
ConfigurationTask task = manager.getCurrentTask();
return task.getStartPage();
}
public SelectModel getDbSelectionModel()
{
return new EnumSelectModel(DbType.class, messages);
}
public ValueEncoder<DbType> getDbSelectionEncoder()
{
return new EnumValueEncoder<DbType>(DbType.class);
}
private void initDbValues(DbType dbType)
{
dbDialect = dbType.getDbDialect();
dbUrl = dbType.getDbUrl();
dbDriver = dbType.getDbDriver();
dbUsername = dbType.getDbUsername();
dbPassword = dbType.getDbPassword();
}
}