/* 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.activiti.explorer.ui.management.admin;
import org.activiti.engine.IdentityService;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.impl.ProcessEngineImpl;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.explorer.ExplorerApp;
import org.activiti.explorer.I18nManager;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.Images;
import org.activiti.explorer.ui.custom.DetailPanel;
import org.activiti.explorer.ui.mainlayout.ExplorerLayout;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.Reindeer;
/**
* @author Tijs Rademakers
*/
public class AdminDatabaseSettingsPanel extends DetailPanel {
private static final long serialVersionUID = 1L;
protected IdentityService identityService;
protected I18nManager i18nManager;
protected ProcessEngineConfigurationImpl engineConfiguration;
protected VerticalLayout panelLayout;
protected HorizontalLayout detailLayout;
protected GridLayout detailsGrid;
public AdminDatabaseSettingsPanel() {
ProcessEngineImpl processEngine = (ProcessEngineImpl) ProcessEngines.getDefaultProcessEngine();
engineConfiguration = (ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration();
this.i18nManager = ExplorerApp.get().getI18nManager();
init();
}
protected void init() {
setSizeFull();
addStyleName(Reindeer.PANEL_LIGHT);
initPageTitle();
initDatabaseSettingsDetails();
}
protected void initPageTitle() {
HorizontalLayout layout = new HorizontalLayout();
layout.setWidth(100, UNITS_PERCENTAGE);
layout.addStyleName(ExplorerLayout.STYLE_TITLE_BLOCK);
layout.setSpacing(true);
layout.setMargin(false, false, true, false);
addDetailComponent(layout);
Embedded databaseImage = new Embedded(null, Images.DATABASE_50);
layout.addComponent(databaseImage);
Label groupName = new Label(i18nManager.getMessage(Messages.DATABASE_TITLE));
groupName.setSizeUndefined();
groupName.addStyleName(Reindeer.LABEL_H2);
layout.addComponent(groupName);
layout.setComponentAlignment(groupName, Alignment.MIDDLE_LEFT);
layout.setExpandRatio(groupName, 1.0f);
}
protected void initDatabaseSettingsDetails() {
Label settingsHeader = new Label(i18nManager.getMessage(Messages.MGMT_MENU_DATABASE));
settingsHeader.addStyleName(ExplorerLayout.STYLE_H3);
settingsHeader.addStyleName(ExplorerLayout.STYLE_DETAIL_BLOCK);
addDetailComponent(settingsHeader);
detailLayout = new HorizontalLayout();
detailLayout.setSpacing(true);
detailLayout.setMargin(true, false, true, false);
addDetailComponent(detailLayout);
initSettingsProperties();
}
protected void initSettingsProperties() {
detailsGrid = new GridLayout(2, 3);
detailsGrid.setSpacing(true);
detailLayout.setMargin(true, true, true, false);
detailLayout.addComponent(detailsGrid);
// Database type
Label typeLabel = new Label(i18nManager.getMessage(Messages.DATABASE_TYPE) + ": ");
typeLabel.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
detailsGrid.addComponent(typeLabel);
Label typeValueLabel = new Label(engineConfiguration.getDatabaseType());
detailsGrid.addComponent(typeValueLabel);
// Database schema update
Label schemaUpdateLabel = new Label(i18nManager.getMessage(Messages.DATABASE_UPDATE) + ": ");
schemaUpdateLabel.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
detailsGrid.addComponent(schemaUpdateLabel);
Label schemaUpdateValueLabel = new Label(engineConfiguration.getDatabaseSchemaUpdate());
detailsGrid.addComponent(schemaUpdateValueLabel);
// Config type
Label configTypeLabel = new Label(i18nManager.getMessage(Messages.DATABASE_CONFIG_TYPE) + ": ");
configTypeLabel.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
detailsGrid.addComponent(configTypeLabel);
String databaseConfigType = getDatabaseType();
Label configTypeValueLabel = new Label(databaseConfigType);
detailsGrid.addComponent(configTypeValueLabel);
if("JNDI".equals(databaseConfigType)) {
// JNDI
Label jndiLabel = new Label(i18nManager.getMessage(Messages.DATABASE_JNDI) + ": ");
jndiLabel.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
detailsGrid.addComponent(jndiLabel);
Label jndiValueLabel = new Label(engineConfiguration.getDataSourceJndiName());
detailsGrid.addComponent(jndiValueLabel);
} else if("Datasource".equals(databaseConfigType)){
// Datasource class
Label datasourceLabel = new Label(i18nManager.getMessage(Messages.DATABASE_DATASOURCE_CLASS) + ": ");
datasourceLabel.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
detailsGrid.addComponent(datasourceLabel);
Label datasourceValueLabel = new Label(engineConfiguration.getDataSource().getClass().getName());
detailsGrid.addComponent(datasourceValueLabel);
} else {
// JDBC URL
Label jdbcURLLabel = new Label(i18nManager.getMessage(Messages.DATABASE_JDBC_URL) + ": ");
jdbcURLLabel.addStyleName(ExplorerLayout.STYLE_LABEL_BOLD);
detailsGrid.addComponent(jdbcURLLabel);
Label jdbcURLValueLabel = new Label(engineConfiguration.getJdbcUrl());
detailsGrid.addComponent(jdbcURLValueLabel);
}
}
protected String getDatabaseType() {
String databaseType = null;
if(engineConfiguration.getDataSourceJndiName() != null) {
databaseType = "JNDI";
} else if(engineConfiguration.getDataSource() != null) {
databaseType = "Datasource";
} else {
databaseType = "JDBC config";
}
return databaseType;
}
}