jp.co.fujitsu.reffi.client.android.controller
クラス AbstractController

java.lang.Object
  上位を拡張 android.content.Context
      上位を拡張 android.content.ContextWrapper
          上位を拡張 android.app.Application
              上位を拡張 jp.co.fujitsu.reffi.client.android.controller.AbstractController
すべての実装されたインタフェース:
android.content.ComponentCallbacks, Controller
直系の既知のサブクラス:
BaseController

public abstract class AbstractController
extends android.app.Application
implements Controller

[概 要]

アプリケーションを制御する抽象コントローラです。

[詳 細]

JVM上のウィンドウレベルコンポーネントの開閉を監視して、 を行います。

コンポーネントに対するイベントリスナ追加

EventBinderフィールドがコンポーネントとアクションをイベントタイプ毎に紐付け管理します。
この情報は具象コントローラを作成し、bind(EventBinder)メソッドをオーバーライド、 実装することで蓄積されます。
ウィンドウコンポーネントの画面表示イベントを監視して、包含するコンポーネントを走査、 EventBinderに登録されているコンポーネント名であれば 「#handlerFacade(EventObject, Class, String, EventListener) をコールするイベントリスナプロキシ」をそのコンポーネントに対して設定します。

イベント発生時のハンドラ集約

上記イベントリスナの自動追加により、Reffi使用アプリケーションのイベントハンドラは全て、 このクラスのhandlerFacadeメソッドになります。
Swingコーディングにおけるイベントハンドラ追加の常套手段である、

        jbutton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent evt) {
                        ....
                }
        });
 
や、
        JButton button = new JButton(new LoginAction());
 
といった画面クラスで行うイベント追加と、イベントリスナ処理の実装は不要です。

[備 考]

[環 境] JDK 6.0 Update 11

Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.

作成者:
Project Reffi

フィールドの概要
static AbstractController instance
           
 
クラス android.content.Context から継承されたフィールド
ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ALARM_SERVICE, AUDIO_SERVICE, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_NOT_FOREGROUND, CLIPBOARD_SERVICE, CONNECTIVITY_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, DEVICE_POLICY_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, INPUT_METHOD_SERVICE, KEYGUARD_SERVICE, LAYOUT_INFLATER_SERVICE, LOCATION_SERVICE, MODE_APPEND, MODE_MULTI_PROCESS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NFC_SERVICE, NOTIFICATION_SERVICE, POWER_SERVICE, SEARCH_SERVICE, SENSOR_SERVICE, STORAGE_SERVICE, TELEPHONY_SERVICE, UI_MODE_SERVICE, VIBRATOR_SERVICE, WALLPAPER_SERVICE, WIFI_SERVICE, WINDOW_SERVICE
 
コンストラクタの概要
AbstractController()
          [概 要] デフォルトコンストラクタです。
 
メソッドの概要
 void addListener(android.content.Context context, java.lang.Object viewOrActivity, java.lang.Class<? extends java.lang.Object> listenerType, java.util.List<java.lang.String> eventTypes)
          [概 要] 追加されたコンポーネントに対してイベントリスナを追加します。
protected  void bind(EventBinder eventBinder)
          [概 要] UIコンポーネントとアクションを紐付ける、EventBinderオブジェクトを作成するメソッドです。
 void bindEvents(android.content.Context context, java.lang.Object viewOrActivity)
          [概 要] 追加されたコンポーネントに対して予約されているリスナ追加をaddListenerメソッドに委譲します。
protected  ParameterMapping createParameterMapping(java.lang.Object eventSource, java.lang.String eventSourceName, java.lang.Object[] eventArgs, java.lang.Class<? extends java.lang.Object> listenerType, java.lang.String eventType, java.lang.Object eventListenerProxy)
          [概 要] MVC各レイヤを巡回するParameteraMappingオブジェクトを生成、初期化します。
 ClientConfig getClientConfig()
          [概 要] フレームワーク挙動情報を保持するオブジェクトを取得します。
 EventBinder getEventBinder()
          [概 要] イベント紐付けオブジェクトを取得します。
 android.app.Activity getFrontActivity()
           
 java.util.Map<java.lang.Object,java.lang.Object> getPermanent()
          [概 要] アプリ起動~終了まで存在するデータ保存領域を取得します。
 void handlerFacade(android.content.Context context, java.lang.Object eventSource, java.lang.Object[] eventArgs, java.lang.Class<? extends java.lang.Object> listenerType, java.lang.String eventType, java.lang.Object eventListenerProxy)
          [概 要] 全ユーザ定義イベントをハンドルする入り口になるメソッドです。
protected  void initialize(ClientConfig config)
          [概 要] 初期化処理が記述可能なメソッドです。
protected  void postInitialize(ClientConfig config)
          [概 要] ClientConfigの値に依存するクライアント初期化設定を行います。
 void setClientConfig(ClientConfig clientConfig)
          [概 要] フレームワーク挙動情報を保持するオブジェクトを設定します。
 void setEventBinder(EventBinder eventBinder)
          [概 要] イベント紐付けオブジェクトを設定します。
 void setFrontActivity(android.app.Activity frontActivity)
           
 void setPermanent(java.util.Map<java.lang.Object,java.lang.Object> Permanent)
          [概 要] アプリ起動~終了まで存在するデータ保存領域を設定します。
protected  void shutdown()
          [概 要] JVMのシャットダウン時にコールされるフックハンドラです。
 
クラス android.app.Application から継承されたメソッド
onConfigurationChanged, onCreate, onLowMemory, onTerminate
 
クラス android.content.ContextWrapper から継承されたメソッド
attachBaseContext, bindService, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingPermission, checkCallingUriPermission, checkPermission, checkUriPermission, checkUriPermission, clearWallpaper, createPackageContext, databaseList, deleteDatabase, deleteFile, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getBaseContext, getCacheDir, getClassLoader, getContentResolver, getDatabasePath, getDir, getExternalCacheDir, getExternalFilesDir, getFilesDir, getFileStreamPath, getMainLooper, getObbDir, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getResources, getSharedPreferences, getSystemService, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isRestricted, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerReceiver, registerReceiver, removeStickyBroadcast, revokeUriPermission, sendBroadcast, sendBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendStickyBroadcast, sendStickyOrderedBroadcast, setTheme, setWallpaper, setWallpaper, startActivities, startActivity, startInstrumentation, startIntentSender, startService, stopService, unbindService, unregisterReceiver
 
クラス android.content.Context から継承されたメソッド
getString, getString, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース jp.co.fujitsu.reffi.client.android.controller.Controller から継承されたメソッド
invoke
 

フィールドの詳細

instance

public static AbstractController instance
コンストラクタの詳細

AbstractController

public AbstractController()

[概 要]

デフォルトコンストラクタです。

[詳 細]

コントローラの初期化を行います。

を行った後、イベント紐付け登録読込みの為、bind(EventBinder)メソッドを テンプレートコールします。

イベント紐付け情報が正常に読み込まれた後、アプリケーション初期化の為のinitialize がコールされます。

[備 考]

メソッドの詳細

getEventBinder

public EventBinder getEventBinder()

[概 要]

イベント紐付けオブジェクトを取得します。

[詳 細]

eventBinderフィールドオブジェクトを返却します。

[備 考]

戻り値:
イベント紐付けオブジェクト

setEventBinder

public void setEventBinder(EventBinder eventBinder)

[概 要]

イベント紐付けオブジェクトを設定します。

[詳 細]

eventBinderフィールドオブジェクトを設定します。

[備 考]

パラメータ:
eventBinder - イベント紐付けオブジェクト

getPermanent

public java.util.Map<java.lang.Object,java.lang.Object> getPermanent()

[概 要]

アプリ起動~終了まで存在するデータ保存領域を取得します。

[詳 細]

permanentフィールドオブジェトを返却します。

[備 考]

戻り値:
アプリ起動~終了まで存在するデータ保存領域

setPermanent

public void setPermanent(java.util.Map<java.lang.Object,java.lang.Object> Permanent)

[概 要]

アプリ起動~終了まで存在するデータ保存領域を設定します。

[詳 細]

permanentフィールドオブジェクトを設定します。

[備 考]

パラメータ:
permanent - アプリ起動~終了まで存在するデータ保存領域

getClientConfig

public ClientConfig getClientConfig()

[概 要]

フレームワーク挙動情報を保持するオブジェクトを取得します。

[詳 細]

clientConfigフィールドを返却します。

[備 考]

戻り値:
フレームワーク挙動情報を保持するオブジェクト

setClientConfig

public void setClientConfig(ClientConfig clientConfig)

[概 要]

フレームワーク挙動情報を保持するオブジェクトを設定します。

[詳 細]

clientConfigフィールドを設定します。

[備 考]

パラメータ:
clientConfig - フレームワーク挙動情報を保持するオブジェクト

getFrontActivity

public android.app.Activity getFrontActivity()

setFrontActivity

public void setFrontActivity(android.app.Activity frontActivity)

initialize

protected void initialize(ClientConfig config)

[概 要]

初期化処理が記述可能なメソッドです。

[詳 細]

Document、ClientSessionが生成されるタイミングでテンプレートコールされます。 デフォルトの処理は有りません。

[備 考]

業務固有の初期化処理が必要な場合は、具象コントローラ内でこのメソッドを オーバーライドして下さい。
又、Reffiの挙動設定をこのタイミングで設定することが出来ます。

使用例)

        protected void initialize(ClientConfig config){
                // デフォルトJMS接続環境を設定
                Hashtable jmsEnvironment = new Hashtable();
                jmsEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
                jmsEnvironment.put(Context.PROVIDER_URL, "localhost:1099");
                jmsEnvironment.put("java.naming.rmi.security.manager", "yes");
                jmsEnvironment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");
                config.setDefaultJmsEnvironment(jmsEnvironment);
                
                // デフォルトEJB接続環境を設定
                Hashtable ejbEnvironment = new Hashtable();
                ejbEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.NamingContextFactory");
                ejbEnvironment.put(Context.PROVIDER_URL, "jnp://localhost:1099");
                config.setDefaultEjbEnvironment(ejbEnvironment);
                
                // デフォルトDatabase接続環境を設定
                Hashtable dbEnvironment = new Hashtable();
                dbEnvironment.put(DatabaseCore.DB_DRIVER_FQCN, "org.postgresql.Driver");
                dbEnvironment.put(DatabaseCore.DB_URL, "jdbc:postgresql://localhost:5432/RFD");
                dbEnvironment.put(DatabaseCore.DB_USER, "nakanishi");
                dbEnvironment.put(DatabaseCore.DB_PASSWORD, "shingon");
                dbEnvironment.put(DatabaseCore.DB_AUTO_COMMIT, "true");
                config.setDefaultDatabaseEnvironment(dbEnvironment);
                
                Hashtable httpEnvironment = new Hashtable();
                httpEnvironment.put(HTTPRequestCore.HTTP_URL_PREFIX, "http://localhost:8080/RFDforSwingWeb/");
                config.setDefaultHttpEnvironment(httpEnvironment);
        }
 

パラメータ:
config - フレームワーク挙動情報を保持するオブジェクト

postInitialize

protected void postInitialize(ClientConfig config)

[概 要]

ClientConfigの値に依存するクライアント初期化設定を行います。

[詳 細]

[備 考]

パラメータ:
config - フレームワーク挙動情報を保持するオブジェクト

bindEvents

public void bindEvents(android.content.Context context,
                       java.lang.Object viewOrActivity)

[概 要]

追加されたコンポーネントに対して予約されているリスナ追加をaddListenerメソッドに委譲します。

[詳 細]

ContainerListenerImplが検知したコンポーネント追加イベント時にコールされます。
追加されたコンポーネントの名前がEventBinderに紐付け予約されているものである場合、
追加すべきイベントリスナ分addListenerメソッドを呼び出します。

[備 考]

パラメータ:
addedComponent - 画面に追加されたコンポーネント

addListener

public void addListener(android.content.Context context,
                        java.lang.Object viewOrActivity,
                        java.lang.Class<? extends java.lang.Object> listenerType,
                        java.util.List<java.lang.String> eventTypes)
                 throws java.lang.Exception

[概 要]

追加されたコンポーネントに対してイベントリスナを追加します。

[詳 細]

引数listenerTypeのプロキシオブジェクトを生成して、 引数componentにイベントリスナとして追加します。

Swingコンポーネントはイベントタイプによってイベント追加メソッド名が異なります。
生成されたプロキシはJavaの命名規則「"add" + listenerTypeクラス名」に沿って 追加メソッド名を以下のように動的判別します。

                String addMethodName = "add" + listenerType.getSimpleName();
                Method addMethod = component.getClass().getMethod(addMethodName, listenerType);
                addMethod.invoke(component, eventListener);
 

[備 考]

プロキシ内のハンドラでは発生したイベントタイプを引数eventTypesと比較、 eventTypesに含まれるハンドラメソッドが呼ばれる場合は #handlerFacade(EventObject, Class, String, EventListener) をコールします。

パラメータ:
component - イベントリスナプロキシを追加するコンポーネント
listenerType - プロキシの原型
eventTypes - イベントハンドラメソッド名リスト
例外:
java.lang.Exception

handlerFacade

public void handlerFacade(android.content.Context context,
                          java.lang.Object eventSource,
                          java.lang.Object[] eventArgs,
                          java.lang.Class<? extends java.lang.Object> listenerType,
                          java.lang.String eventType,
                          java.lang.Object eventListenerProxy)

[概 要]

全ユーザ定義イベントをハンドルする入り口になるメソッドです。

[詳 細]

発生したイベントタイプ、イベントを起こしたコンポーネント名を元に、
イベント紐付けオブジェクト(EventBinder)から対応するアクションクラス型を取得します。
取得したアクションクラス型を引数にしてController.invoke(Class, ParameterMapping)に処理委譲します。

[備 考]

パラメータ:
e -
listenerType -
eventType -
eventListenerProxy -

createParameterMapping

protected ParameterMapping createParameterMapping(java.lang.Object eventSource,
                                                  java.lang.String eventSourceName,
                                                  java.lang.Object[] eventArgs,
                                                  java.lang.Class<? extends java.lang.Object> listenerType,
                                                  java.lang.String eventType,
                                                  java.lang.Object eventListenerProxy)

[概 要]

MVC各レイヤを巡回するParameteraMappingオブジェクトを生成、初期化します。

[詳 細]

イベント発生の際、Controller、Action、Modelを流れるデータマップを作成します。
このメソッドによって、以下の情報がParameterMappingオブジェクトに設定されます。

[備 考]

パラメータ:
e - イベントオブジェクト
listenerType - イベントリスナクラス型
eventType - イベントタイプ(イベントハンドラメソッド名)
eventListenerProxy - イベントリスナインスタンス
戻り値:
MVC各レイヤを巡回するパラメータオブジェクト

bind

protected void bind(EventBinder eventBinder)

[概 要]

UIコンポーネントとアクションを紐付ける、EventBinderオブジェクトを作成するメソッドです。

[詳 細]

コントローラ実装クラスでこのメソッドをオーバーライドして、
eventBinder.addEventBinding("コンポーネント名", "イベントリスナ型", "イベントハンドラメソッド名", BaseAction継承クラス);
のように紐付け処理を列挙して下さい。
ex.)eventBinder.addEventBinding("loginFrame.jbLogin", ActionListener.class, "actionPerformed", LoginAction.class);

[備 考]

パラメータ:
eventBinder - イベント紐付けオブジェクト

shutdown

protected void shutdown()

[概 要]

JVMのシャットダウン時にコールされるフックハンドラです。

[詳 細]

具象コントローラでこのメソッドをオーバーライドして、 アプリケーションの終末処理を記述します。

[備 考]



Copyright © 2008-2011. All Rights Reserved.