Friends - Fess+Lasta

DBFluteとは直接無関係ながらも、親和性の高いフレームワークを紹介します。

Fessの概観

TODO jflute 書き途中

fessプロジェクト

fess - src/main/java

e.g. fessプロジェクトのsrc/main/java @Directory
fess
 |-src/main/java          // Fessプロジェクト共通クラス
 |  |-org.codelibs.fess   // ★パッケージ構成要検討
 |     |-...
 |     |-lasta            // FessのLasta対応パッケージ ★名前要検討
 |     |  |-core          // SAFluteのcoreを拡張したクラスなど
 |     |  |  |-direction  // SAFluteをFessプロジェクト風にするところ☆
 |     |  |     |-sponsor // AssistantDirectorで設定する処理を切り出したクラスなど
 |     |  |     |  |-FessActionAdjustmentProvider    // 微調整
 |     |  |     |  |-FessTimeResourceProvider        // 時間リソース
 |     |  |     |  |-FessUserLocaleProcessProvider   // ロケール
 |     |  |     |  |-FessUserTimeZoneProcessProvider // タイムゾーン
 |     |  |     |-FessConfig.java // fess_config 対応クラス(自動生成)
 |     |  |     |-FessEnv.java    // fess_env 対応クラス(自動生成)
 |     |  |     |-FessFwAssistantDirector.java // Lastaの現場フィットを司る
 |     |  |       // ☆これが最強に大事
 |     |  |       // (各ドメインが継承して微調整オーバーライドする)
 |     |  |
 |     |  |-...
 |     |  |-web           // SAFluteのwebを拡張したクラスなど
 |     |     |-action     // Actionに関する拡張クラスなど
 |     |     |-login      // ログインに関する拡張クラスなど
 |     |     |-paging     // ページングに関する拡張クラスなど
 |     |-...
 |     |-web      // ActionやFormのパッケージ ★★actionとformをこっちに移行
 |     |  |-admin // 管理系のActionたち
 |     |  |-base  // Actionのスーパークラスなどの基盤 e.g. FessBaseAction
 |     |  |-AppletAction
 |     |  |-ErrorAction
 |     |  |-IndexAction   // トップページ (検索画面)
 |     |  |-LoginAction
 |
 |-src/main/resources
 |-src/test/java
 |-src/test/resources
 |-...

fess - src/main/resources

e.g. fessプロジェクトのsrc/main/resources @Directory
fess
 |-src/main/java
 |  |-...
 |-src/main/h2/resources/sql // H2のときだけ変な!?情報が残っちゃうから
 |  |-robot.ddl              // fessの中でs2robotのDBを置き換え (手動同期)
 |-src/main/resources            // ★フォルダ分けするか要検討
 |  |-device                     // ★★削除 (がらけー)
 |  |-META-INF                   // ★★削除
 |  |-app.dicon                  // ★整理: アプリ情報が埋め込まれている
 |  |-application_ja.properties  // ★fess_message_ja.propertiesに移行
 |  |-application.properties     // ★fess_message.propertiesに移行
 |  |-convention.dicon    // Seasarのスマートデプロイのルートパッケージを決める dicon
 |  |-creator.dicon       // SeasarのスマートデプロイのCreatorを定義した dicon (web用)
 |  |-customizer.dicon    // ★taskが不要? SeasarのスマートデプロイのCustomizerを定義した dicon (web用)
 |  |-env.txt           // Seasarのアプリ実行時の環境タイプ (ローカル環境用なのでut)
 |  |-fess_api.dicon      // JSONとXMLを戻すためのコンポーネント (Filterから呼ばれる)
 |  |-fess_config.properties // Fessプロジェクト共通のコンフィグ
 |  |-fess_dist.dicon     // 辞書管理系のコンポーネント
 |  |-fess_ds.dicon       // Web以外のデータをクロールするコンポーネント
 |  |-fess_env.properties    // Fessプロジェクト共通の環境依存コンフィグ
 |  |-fess_job.dicon      // FessのJobのコンポーネント
 |  |-fess_message_ja.properties // Fessプロジェクト共通の日本語リソース
 |  |-fess_message.properties    // Fessプロジェクト共通の英語リソース
 |  |-fess_label_ja.properties   // ★★まだない
 |  |-fess_label.properties      // ★★まだない
 |  |-fess_suggest.dicon  // Fessのサジェスト機能のコンポーネント
 |  |-fess.dicon          // Webとコマンドで共通の入り口となるfessのdicon
 |  |-FESSMessages.properties // エラーログのメッセージリソース
 |  |-jdbc.dicon          // JDBCの接続 (ユーザーが利用するDBMSに合わせて変更する)
 |  |-log4j.xml           // そのまんまLog4j
 |  |-quartz.properties   // そのまんまQuartz
 |  |-jdbc.dicon        // DB接続dicon (URLなどはConfigから取得するようにしている)
 |  |-s2container.dicon // Seasarの大事なdicon (S2ClassBuilder定義含む)
 |  |-s2robot_contentlength.dicon // 以下、S2Robotの定義でFessで差し替えの必要なものだけ
 |  |-s2robot_db.dicon
 |  |-s2robot_interval.dicon
 |  |-s2robot_jdbc.dicon
 |  |-s2robot_log.dicon
 |  |-s2robot_rule.dicon
 |  |-s2robot_transformer.dicon
 |  |-saflute_assist++.dicon // Config や AssistantDirector を追加するdicon
 |  |-solrlib.dicon // Solrのためのコンポーネント
 |
 |-src/test/java
 |-src/test/resources
 |-...

fess - others (webapp)

e.g. fessプロジェクトのsrc/main/[others] @Directory
fess
 |-src/main/java
 |-src/main/resources
 |-src/test/java
 |-src/test/resources
 |-.settings
 |-solr                  // テスト用のSolr
 |  |-conf
 |     |-elevate.xml     // キーワードブーストの設定
 |     |-protwords.txt   // 英語の活用変換に関する設定
 |     |-schema.xml      // Solrのスキーマ情報、fieldの定義など
 |     |-solrconfig.xml  // Solrの設定
 |     |-stopwords.txt   // 英語のStopword設定
 |     |-synonyms.txt    // シノニム定義
 |-src
 |  |-config
 |  |  |-eclipse
 |  |     |-formatter         // mavenのcompileで最終的にフォーマットするためのもの
 |  |        |-java.xml       // Javaのフォーマッター (DBFluteと同じ)
 |  |        |-javascript.xml // JavaScriptのフォーマッター
 |  |-etc    // mavenのpluginから呼ばれる
 |  |  |-header-definition.xml // ソースコードのヘッダーの定義 ★誰から呼ばれる?
 |  |  |-header.txt            // ソースコードのライセンスヘッダー
 |  |-main
 |     |-config // ★★消す
 |     |  |-h2
 |     |  |  |-fess.ddl             // H2用のFessDBのDDL
 |     |  |-mysql
 |     |  |  |-fess.ddl             // MySQL用のFessDBのDDL
 |     |  |-oracle
 |     |  |  |-build-create.xml     // fess.ddlを実行するためのAntタスク
 |     |  |  |-fess.ddl             // Oracle用のFessDBのDDL
 |     |  |  |-update-schema-xml.sh // TODO jflute
 |     |  |-tablemeta.properties    // TODO jflute
 |     |-h2
 |     |  |-resources/sql
 |     |  |  |-robot.ddl            // H2用のS2RobotDBのDDL
 |     |  |-webapp/WEB-INF/db
 |     |     |-fess.mv.db
 |     |     |-robot.mv.db
 |     |-mysql
 |     |  |-resources
 |     |  |  |-jdbc.dicon              // TODO jflute
 |     |  |  |-s2robot_jdbc.dicon      // TODO jflute
 |     |  |-webapp/WEB-INF
 |     |  |  |-cmd/resources/app.dicon // TODO jflute
 |     |  |  |-web.xml
 |     |-webapp                // fess本体のWebアプリ
 |        |-css
 |        |-images
 |        |-js
 |        |-WEB-INF
 |           |-cachedirs       // 検索結果のスクリーンショットの一時置き
 |           |-cmd             // コマンドのホームディレクトリ
 |           |  |-lib          // コマンドで必要なjarたち
 |           |  |  |-geronimo-servlet_2.4_spec-1.0.jar  // ★Lastaで不要になるか!?
 |           |  |-resources    // コマンドで優先するresources
 |           |     |-app.dicon        // コマンドのapp.dicon、コマンド用のコンポーネント定義
 |           |     |-creator.dicon    // 画面用のものを除外
 |           |     |-customizer.dicon // 画面用のものを除外
 |           |-conf   // 動的に書き換えるプロパティなどを置くところ e.g. 失敗したSolrサーバー名とか
 |           |-logs   // 画面とクロールで吐いたログの置き場
 |           |-mail   // メールのテンプレート ★MailFluteで置き換え
 |           |  |-crawler.hbs
 |           |  |-solr_status.hbs
 |           |-orig            // JSPの復元のため
 |           |  |-jnlp                 // ★★これはなくなる
 |           |  |-open-search/osdd.xml // ★OSDD: あとで調べる
 |           |  |-view                 // 復元用のJSPたち
 |           |-view         // JSPたち
 |           |-fe.tld       // Fessのタグリブ定義?ここに置いておけばTomcatから読まれる
 |           |-struts-config.xml      // ★消える運命
 |           |-validator-rules.xml    // ★消える運命
 |           |-web.xml
 |
 |-target
 |-.classpath      // コミット対象外、mavenで自動生成される
 |-.gitattributes  // Gitの改行コードの制御
 |-.gitignore
 |-.project
 |-LICENSE
 |-pom.xml
 |-README.md

fess-dbプロジェクト

fess-db-h2の全体

e.g. fessプロジェクトのsrc/main/java @Directory
fess
 |-src/main/java
 |  |-org.codelibs.fess.db // DBFluteのパッケージ
 |-src/main/resources
 |  |-org.codelibs.fess.db.exbhv // DBFluteの外だしSQL
 |  |-dbflute.dicon // DBFluteのBehaviorのコンポーネント定義
 |
 |-dbflute_fess
 |  |-dfprop
 |  |  |-...
 |  |  |-basicInfoMap.dfprop // DBFluteの基本となる設定 (自動生成パッケージなど)
 |  |  |-...
 |  |  |-databaseInfoMap.dfprop // DBFluteエンジンの接続DB情報
 |  |  |-...
 |  |  |-documentDefinitionMap.dfprop // ドキュメントの設定 (PropertiesHTMLも)
 |  |  |-...
 |  |  |-freeGenDefinitionMap.dfprop // FreeGenの設定 (propertiesなど)
 |  |  |-...
 |  |  |-replaceSchemaDefinitionMap.dfprop // ReplaceSchemaの設定
 |  |  |-...
 |  |-extlib
 |  |-freegen              // FreeGenのテンプレート置き場
 |  |  |-ControlFreeGen.vm // FreeGen実行時のコントロールファイル
 |  |  |-JspPath.vm        // JSPパスの定数のテンプレート
 |  |  |-SystemConfig.vm   // Configインターフェースのテンプレート
 |  |  |-UserMessages.vm   // ActionMessagesのテンプレート
 |  |-log
 |  |-output
 |  |-playsql // ActionMessagesのテンプレート
 |  |  |-replace-schema.sql // fessのDDL (drop文は不要)
 |  |  |-take-finally.sql   // テストデータ登録後のDDL
 |  |-schema
 |  |-_project.bat
 |  |-_project.sh
 |  |-_readme.txt
 |  |-build.properties
 |  |-manage.bat
 |  |-manage.sh
 |-...