N2 Groupware(仮)

JSR 168 なポータルでグループウェア的な機能を使えるにように、ということでポートレットをガツガツ作っているけど、これらのポートレット群を一つにパッケージングして、N2 Groupware(仮)として、12月初めにアルファかベータ版を出したいと考えている(アルファかも)。個々のポートレットたちは Apache ライセンスだけど、N2 Groupware は Apache ライセンスか LGPL かで迷い中。まぁ、どっちにしてもフリーで使えます(サポート有償で提供予定)。ひとまず、PALポータル(N2 Portal) で動くように作業しているけど、Liferay や JBoss Portal もサポートスコープに入れて考えてます(一応、すべての JSR 168 なポータルをターゲットにしている)。そんな感じで、初めのリリースには以下のようなものを入れるつもりでいます。

  • スケジュール (作成中)
  • アドレス帳 (DONE)
  • 施設予約 (これから)
  • 掲示板 (DONE)
  • 勤怠 (DONE)
  • TODO (DONE)
  • リンク集 (DONE)
  • お知らせ (DONE)
  • チャット (作業中)
  • ノートパッド (DONE)
  • Googleガジェット (DONE)
  • Netvibesウィジェット (DONE)
  • VFS (DONE)
  • ユーザー管理 (DONE)

DONE となっていても、まだ、調整はするかも。あとは、お知らせ以外は SAStruts で、DB が必要なものは DBFlute なので、お知らせもあわせるように書き換えるかも。個々のポートレットについては、PALプロジェクトからリリースしようかと思ってます。という感じですが、興味がありましたら、お知らせくださいませ。

ドキュメントのtex化

PALポータルの anakia なドキュメントたちを置換コマンドをいろいろとたたいて、tex に変換した。そんな感じで機械的な変換だから、画像のサイズがおかしかったり、改行がおかしかったりと、これから修正しなきゃならない点が多し・・・。pdf を作成するための tex 関連コマンドをいろいろと叩くのは面倒だから、ant で処理をラップした(今のところ、CentOS5以外でビルドできるかしらない)。eps についても、保持するとサイズがでかかったので、ビルド時に png から eps に変換して生成するようにしておいた。というわけで、ant build すれば、target の下に pdf が生成される感じ。texも記憶からかなり消えかかっている感じなので、思い出しつつやっている感じだな・・・。

DBFluteでnot like

not like って、あまり機会がないのかもしれないけど、これが必要になって、ちょっと調べる。DBFlute を確認したけど、like を not like にするようなオプションも見当たらない気がしたので、not like の ConditionKey を追加して対応した。やったことは、

ConditionKeyNotLikeSearch の作成

~/allcommon/cbean/ckey/ConditionKeyLikeSearch.java を ConditionKeyNotLikeSearch.java としてコピーして、_operand を not like にしておく。

ConditionKeyNotLikeSearchを追加

以下みたいな感じで、AbstractConditionQuery と ConditionKey を変更しておく。

--- ~/allcommon/cbean/AbstractConditionQuery.java
+++ ~/allcommon/cbean/AbstractConditionQuery.java
protected static final ConditionKey CK_LS = ConditionKey.CK_LIKE_SEARCH;
+    protected static final ConditionKey CK_NLS = ConditionKey.CK_NOT_LIKE_SEARCH;
+
protected static final ConditionKey CK_INS = ConditionKey.CK_IN_SCOPE;
protected static final ConditionKey CK_NINS = ConditionKey.CK_NOT_IN_SCOPE;
--- ~/allcommon/cbean/ckey/ConditionKey.java
+++ ~/allcommon/cbean/ckey/ConditionKey.java
/** The condition key of likeSearch. */
public static final ConditionKey CK_LIKE_SEARCH = new ConditionKeyLikeSearch();
+    /** The condition key of notLikeSearch. */
+    public static final ConditionKey CK_NOT_LIKE_SEARCH = new ConditionKeyNotLikeSearch();
+
/** The condition key of inScope. */
public static final ConditionKey CK_IN_SCOPE = new ConditionKeyInScope();

~CQ にメソッド追加

あとは、not like をしたいカラムでできるようにメソッドを追加しておく。以下みたいな感じ。

--- ~/cbean/cq/bs/AbstractBs~CQ.java
+++ ~/cbean/cq/bs/AbstractBs~CQ.java
"content", "Content", "content", likeSearchOption);
}
+    public void setContent_NotLikeSearch(
+            String content,
+            ~.allcommon.cbean.coption.LikeSearchOption likeSearchOption) {
+        registerLikeSearchQuery(CK_NLS, fRES(content), getCValueContent(),
+                "content", "Content", "content", likeSearchOption);
+    }
+
/**
* InScope(in ('a', 'b')). And NullOrEmptyIgnored,
* NullOrEmptyElementIgnored, SeveralRegistered.

あとは、like と同様にやれば良いのではないかな(いろんなLikeSearchOptionで実験とかはしてない)。