スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

LS2J : LotusScript でJavaのクラスを呼び出してみる

2008年11月13日 23:29

 意外とDIIOPの話が受けがよかったので今日も少しJavaの話をしてみます。

 LotusScript だけを書いている人はあまり意識しないのかもしれませんが、Javaなら標準で出来るこんな事がLotusScript で出来ればいいのに・・・て思うときはないでしょうか。
 前回はそういう人のためにDIIOPを紹介したつもりですが、今自分が使っているアプリケーションのエージェントをJavaで書く、となるとなかなか勇気がいるのではないでしょうか。今回はそういう方のために簡易なJavaへの接続方法としてLS2J を利用した方法を紹介します。

「また新しい技術か・・・」と思った方もいるかもしれませんが、実質9つしかクラスが無いものですのでサンプルを見るだけでだいたい使い方が分かるのではないかと思います。

LotusScript ではLS2Jと言うLSXモジュールを使うことによってJavaのクラスを呼び出すことが出来ます。僕はLotusScript を使っていると文字列処理が弱いな、と思うことが多いのでLotusScript正規表現を使用した文字列処理が出来るように、java.util.regex.Pattern クラスやjava.util.regex.Matcher クラスを呼んで正規表現を処理させてみましょう。

とりあえず今日は正規表現を行ったマッチングを行うサンプルですが、明日は置換を行う例も紹介して、コードの解説もしてみます。(ほとんど自明ですが。。。)
 正規表現を使う意味がピンと来ない方もいるかもしれないので、LotusScript で処理しづらい例として「入力文字列が全角文字だけを含む」と言うチェックが行えるような例を取り上げてみます。利用しやすいようにLS2J を使用したマッチング処理の部分は関数化しておきました。

# あわてて自分のDBにコピペするとUSELSX宣言のところをコピーし忘れるので気をつけて下さい。。

以下はボタンスクリプトなので、デザイナーがある方は新規メールなどでメニューから[作成]-[ホットスポット]-[ボタン]等を選択する事によって利用する事が出来ます。


' LS2J で使うモジュール
Uselsx "*javacon"

Sub Click(Source As Button)
Dim b As Boolean
teststr$ = "あああ"
'「ASCII 文字を含まない」=「全角文字(半角カナを含む)のみの文字」であるかをチェック
regex$ = "[^\p{ASCII}]*"
replacedstr$ = "Test"
b = MatchString(teststr$ ,regex$)
Msgbox "Input: " & teststr$ & Chr(13) & "Pattern string: " & regex$ & Chr(13) & "Result: " & Cstr(b)
End Sub

Function MatchString( InputStr As String, RegEx As String) As Boolean
' InputStr: テストする入力文字列
' RegEx: マッチングする正規表現
' 戻り値: マッチしたらTrue を返します。
Dim j As JavaSession
Dim c As JavaClass
Dim pattern As JavaObject
Dim matcher As JavaObject
Dim e As JavaError
Set j = New JavaSession
Set c = j.GetClass("java.util.regex.Pattern")
Set pattern = c.compile(RegEx)
Set matcher = pattern.matcher(InputStr)
MatchString = matcher.matches()
End Function




 比較的呼びやすいJavaクラスを例として取り上げたので、すごく簡単に思った方もいるかもしれないですが、実際はコンストラクタとか呼ぶと案外表記が面倒だったりします。本格的に使う場合には、デザイナーヘルプにあるJavaClassクラスのcreateObject メソッドや「データ型のマッピング」の項はよく読んでおいて下さい。

 また、今までのLotusScriptと違って、JVMを使用しないといけないので実行時間やメモリ使用量には影響が出るのでパフォーマンスなどが懸念されるエージェントでは特に気をつけて使う必要があります野でその点は十分注意してご利用下さい。

参考:
Javaで使用可能な、正規表現は以下をご参照下さい。
java.util.regex Class Pattern (SDK Document)


コメント

  1. ヒロラボ | URL | -

    Re: LS2J : LotusScript でJavaのクラスを呼び出してみる

    LotusScriptで正規表現を使う方法を探してました!!

    ちょうどほしかった情報です!!

    ありがとうございますv-7

  2. 長島 広隆 | URL | -

    ありがとうございます

    実際に使ってみてパフォーマンスや使い方などに何かコツがあるようでしたら是非教えていただけると助かります。

コメントの投稿

(コメント編集・削除に必要)
(管理者にだけ表示を許可する)

トラックバック

この記事のトラックバックURL
http://hnagasim.blog8.fc2.com/tb.php/18-3caf4403
この記事へのトラックバック


最新記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。