/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.application;
import java.util.Locale;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.application.EntryPoint;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.WorkbenchAdvisor;
import com.hangum.tadpole.application.initialize.wizard.SystemInitializeWizard;
import com.hangum.tadpole.application.start.ApplicationWorkbenchAdvisor;
import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine;
import com.hangum.tadpole.commons.libs.core.message.CommonMessages;
import com.hangum.tadpole.commons.util.LoadConfigFile;
import com.hangum.tadpole.engine.initialize.ApplicationLicenseInitialize;
import com.hangum.tadpole.engine.initialize.TadpoleSystemInitializer;
import com.hangum.tadpole.engine.manager.TadpoleApplicationContextManager;
import com.hangum.tadpole.engine.query.dao.system.UserInfoDataDAO;
import com.hangum.tadpole.engine.query.sql.TadpoleSystem_UserInfoData;
import com.hangum.tadpole.preference.define.AdminPreferenceDefine;
import com.hangum.tadpole.preference.define.GetAdminPreference;
/**
* This class controls all aspects of the application's execution
* and is contributed through the plugin.xml.
*/
public class Application implements EntryPoint {
private static final Logger logger = Logger.getLogger(Application.class);
public int createUI() {
Display display = PlatformUI.createDisplay();
Locale locale = RWT.getLocale();
Locale.setDefault(locale);
RWT.getUISession().setLocale(locale);
RWT.setLocale(locale);
systemInitialize();
WorkbenchAdvisor advisor = new ApplicationWorkbenchAdvisor();
return PlatformUI.createAndRunWorkbench( display, advisor );
}
/**
* System initialize
*
* 0. License load
* 1. jdbc driver load
* 2. If the system table does not exist, create a table.
* 2.1 System initialize
*/
private void systemInitialize() {
if(TadpoleApplicationContextManager.isSystemInitialize()) return;
try {
// load license
ApplicationLicenseInitialize.load();
// load default config file
LoadConfigFile.initializeConfigFile();
// initialize system
if(!TadpoleSystemInitializer.initSystem()) {
if(logger.isInfoEnabled()) logger.info("Initialize System default setting.");
WizardDialog dialog = new WizardDialog(null, new SystemInitializeWizard());
if(Dialog.OK != dialog.open()) {
throw new Exception("System initialization failed. Please restart system.\n");
}
}
/* define login type */
Properties prop = LoadConfigFile.getConfigFile();
String txtLoginMethod = prop.getProperty("LOGIN_METHOD", AdminPreferenceDefine.SYSTEM_LOGIN_METHOD_VALUE);
UserInfoDataDAO userInfoDao = TadpoleSystem_UserInfoData.updateAdminValue(AdminPreferenceDefine.SYSTEM_LOGIN_METHOD, txtLoginMethod);
GetAdminPreference.updateAdminSessionData(AdminPreferenceDefine.SYSTEM_LOGIN_METHOD, userInfoDao);
/** 뷰에 보여주어야할 필터 값을 가져온다 */
String strProductFilter = prop.getProperty("tadpole.db.producttype.remove.filter", "");
userInfoDao = TadpoleSystem_UserInfoData.updateAdminValue(AdminPreferenceDefine.SYSTEM_VIEW_PRODUCT_TYPE_FILTER, strProductFilter);
GetAdminPreference.updateAdminSessionData(AdminPreferenceDefine.SYSTEM_VIEW_PRODUCT_TYPE_FILTER, userInfoDao);
/** cert user info */
PublicTadpoleDefine.CERT_USER_INFO = prop.getProperty("CERT_USER_INFO", "");
} catch(Exception e) {
logger.error("Initialization failed.", e); //$NON-NLS-1$
MessageDialog.openError(null, CommonMessages.get().Error, com.hangum.tadpole.application.start.Messages.get().ApplicationWorkbenchWindowAdvisor_2);
System.exit(0);
}
}
}