/** * @version $Id: UIActivator.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2011/09/07 18:43:02 * @author kousuke-morishima * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.ui; import java.util.HashMap; import java.util.Map; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ProjectScope; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.ui.preferences.ScopedPreferenceStore; import org.osgi.framework.BundleContext; import com.tida_okinawa.corona.CoronaActivator; import com.tida_okinawa.corona.correction.CorrectionActivator; import com.tida_okinawa.corona.internal.ui.PersistentPropertyKeys; import com.tida_okinawa.corona.internal.ui.util.MessageConsoleLogger; import com.tida_okinawa.corona.internal.ui.util.PreferenceUtils; import com.tida_okinawa.corona.internal.ui.views.model.impl.CoronaModel; import com.tida_okinawa.corona.license.LicenseActivator; import com.tida_okinawa.corona.ui.data.ConnectionParameter; /** * The activator class controls the plug-in life cycle */ public class UIActivator extends AbstractUIPlugin { /** The plug-in ID */ public static final String PLUGIN_ID = "com.tida_okinawa.corona.ui"; //$NON-NLS-1$ // The shared instance private static UIActivator plugin; /** * The constructor */ public UIActivator() { } @Override public void start(BundleContext context) throws Exception { super.start(context); plugin = this; /* ライセンス確認プラグインを有効にする */ LicenseActivator.getDefault(); CorrectionActivator.initAutoSchedules(); /* * 設定から接続パラメータを取得してくる * 取得できなかった場合、情報を持たないインスタンスを作って * 以降の処理で DB に接続できなかった時と同じ状況にしている */ ConnectionParameter cp = PreferenceUtils.getCurrentConnectionParameter(); if (cp == null) { cp = new ConnectionParameter("", "", "", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } // testH25 20130806 互換性テスト // /* DBへの接続 */ // com.tida_okinawa.corona.io.IoActivator.getService().connect(cp.url, cp.user, cp.passwd); // boolean isConnect = false; try { isConnect = com.tida_okinawa.corona.io.IoActivator.getService().connect(cp.url, cp.user, cp.passwd); } catch (Exception e) { /* コネクト失敗の場合(ユーザ/パスワードが不一致など) */ e.getStackTrace(); } // testH25 20130806 互換性テスト String name = cp.name; String dburl = cp.url; String dbname = cp.url; String lastSep = Messages.UIActivator_LastSep; int index = dbname.lastIndexOf(lastSep); if (index != -1) { dbname = dburl.substring(index + 1); } if (isConnect) { /* DBへの接続は成功 */ int result[] = { 0 }; String dbValue = com.tida_okinawa.corona.io.IoActivator.getService().getDbVersion(result).trim(); LicenseActivator license = LicenseActivator.getDefault(); String dbVersion = license.getDbVersion().trim(); /* DBより取得のデータが空文字列 */ if (dbValue.isEmpty()) { /* * SQLでのエラー発生(テーブルがない、レコードがない) →DB定義で「NOT * NULL」属性を付加しているので、正常時での空文字列の取得はない */ String title = Messages.UIActivator_VerErrTitle; String dialogMessage = Messages.UIActivator_VerErrMessage; Object args[] = { name, dbname }; String dialogMessageSub0 = String.format(Messages.UIActivator_VerErrDbInfo, args); String dialogMessageSub1 = String.format(Messages.UIActivator_VerErrValue, dbVersion); String dialogMessageSub2 = String.format(Messages.UIActivator_VerErrDBValue, dbValue); if (result[0] == 2) { /* テーブルなし */ dialogMessage = Messages.UIActivator_VerErrMessageNonTable; } if (result[0] == 1) { /* カラムなし 等のエラー発生 */ dialogMessage = Messages.UIActivator_VerErrMessageSqlErr; } dialogMessage += dialogMessageSub0 + dialogMessageSub1 + dialogMessageSub2; // ダイアログ表示(Error) MessageDialog.openError(new Shell(), title, dialogMessage); } /* DBバージョンの確認(アプリ内でのDBVerとDB内のDBVer情報の比較) */ else if (dbVersion.compareTo(dbValue) != 0) { /* DBバージョンが異なっている */ String title = Messages.UIActivator_VerWarTitle; String dialogMessage = Messages.UIActivator_VerWarMessage; Object args[] = { name, dbname }; String dialogMessageSub0 = String.format(Messages.UIActivator_VerErrDbInfo, args); String dialogMessageSub1 = String.format(Messages.UIActivator_VerErrValue, dbVersion); String dialogMessageSub2 = String.format(Messages.UIActivator_VerErrDBValue, dbValue); dialogMessage += dialogMessageSub0 + dialogMessageSub1 + dialogMessageSub2; // ダイアログ表示(Warning) MessageDialog.openWarning(new Shell(), title, dialogMessage); } } else { /* DBへの接続は失敗 */ String title = Messages.UIActivator_connectErrTitle; String dialogMessage = Messages.UIActivator_connectErrMessage; Object args[] = { name, dbname, cp.user }; String dialogMessageSub0 = String.format(Messages.UIActivator_connectErrDbInfo, args); dialogMessage += dialogMessageSub0; // ダイアログ表示(Error) MessageDialog.openError(new Shell(), title, dialogMessage); } /* コンソールの利用 */ CoronaActivator.getDefault().setLogger(MessageConsoleLogger.getInstance()); /* Logリスナー */ /* 動きが不安定なので、まだ使わない */ // CoronaActivator.getDefault().getLog().addLogListener(logListener); /* 有効な(DBに登録されている)CoronaProjectのみを開く */ CoronaModel.INSTANCE.openCoronaProject(); } @Override public void stop(BundleContext context) throws Exception { plugin = null; /* DBから切断 */ com.tida_okinawa.corona.io.IoActivator.getService().disConnect(); super.stop(context); } /** * Returns the shared instance * * @return the shared instance */ public static UIActivator getDefault() { return plugin; } private Map<IProject, IPreferenceStore> stores = new HashMap<IProject, IPreferenceStore>(); public IPreferenceStore getPreferenceStore(IProject project) { IPreferenceStore store = stores.get(project); if (store == null) { store = new ScopedPreferenceStore(new ProjectScope(project), PLUGIN_ID + "." + project.getName()); //$NON-NLS-1$ store.setDefault(PersistentPropertyKeys.DB_CONNECT_NAME.toString(), ""); //$NON-NLS-1$ store.setDefault(PersistentPropertyKeys.DB_CONNECT_URL.toString(), ""); //$NON-NLS-1$ store.setDefault(PersistentPropertyKeys.PROJECT_ID.toString(), -1); stores.put(project, store); } return store; } /* **************************************** * Image関連 */ @Override protected void initializeImageRegistry(ImageRegistry registry) { Icons.INSTANCE.init(registry); } /* **************************************** * フラグ */ public static final boolean isAlpha() { return true; } }