LotusScriptでJavaを利用するLS2J

LotusScriptには、Javaクラスを操作する為の「LS2J」という仕組みがあります。これを利用すると、LotusScriptの中で部分的に、Javaを簡単に利用することができます。

今回は正規表現による文字列の置換を例に、使い方をご紹介します。

サンプルコード

'「height="16"」の数値部分を「32」に置換する
Option Public
Option Declare

UseLSX "*javacon"

Sub Initialize
	Dim regEx			As String
	Dim strRep			As String
	
	Const strText = |height="16"|
	regex = |\d\d|
	strRep = |32|
	MsgBox ReplaceStr(strText, regEx, strRep)
End Sub

Function ReplaceStr(strText As String , regEx As String, strRep As String) As String
	Dim js			As JavaSession
	Dim jc			As JavaClass
	Dim pattern		As JavaObject
	Dim matcher		As JavaObject
	
	Set js = New JavaSession
	Set jc = js.GetClass("java.util.regex.Pattern")
	Set pattern = jc.compile(regEx)
	Set matcher = pattern.matcher(strText)
	ReplaceStr = matcher.replaceAll(strRep)
End Function

プログラムの解説

まず、LS2Jを利用する為に、「UseLSX "*javacon"」を記載します。
※「(Options)」に記載するとよいでしょう。

続いて、Javaの記述です。「LS2J」にはJavaを利用する為のいくつかのクラスが用意されています。主要なものは、以下のとおりです。
 ・JavaSession :Java用のセッション
 ・JavaClass  :Javaのクラスオブジェクト
 ・JavaObject  :Javaオブジェクトのインスタンス

あとは、これらを利用してJavaを記載するだけです。

スクリプトライブラリを利用する場合

Javaのスクリプトライブラリに、クラスや関数を作成して利用することが可能です。先程の文字列の置換を処理を例に、使い方をご紹介します。

まず、Javaのスクリプトライブラリを準備します。
ここではスクリプトライブラリ名を「TestJava」としています。

import java.util.regex.*;

public class orgStrClass {
	public String ReplaceStr(String strText, String regEx, String strRep) {
		Pattern  p = Pattern.compile(regEx);
		Matcher m = p.matcher(strText);
		return m.replaceAll(strRep);
	}
}

LotusScriptのエージェント

Option Public
Option Declare
Use "TestJava"
UseLSX "*javacon"

Sub Initialize
	Dim regEx			As String
	Dim strRep			As String
	
	Const strText = |height="16"|
	regex = |\d\d|
	strRep = |32|
	
	Dim js			As JavaSession
	Dim jc			As JavaClass
	Dim jobj		As JavaObject

	Set js = New JavaSession
	Set jc = js.GetClass("orgStrClass")
	Set jObj = jc.CreateObject
	MsgBox jObj.ReplaceStr(strText, regEx, strRep)
End Sub

先程のプログラムとの違いは、まず「Use "TestJava"」でスクリプトライブラリを読み込んでいます。また、「orgStrClass」クラスのオブジェクトを取得後、そのインスタンスをJavaObjectクラスで取得し、「ReplaceStr」関数を実行ます。

注意点

Nomad Mobile、Nomad Webについては、制限によりLS2Jを利用することはできません。※これは2023年8月時点の情報です。バージョンアップにより改善される可能性がある為、詳細はHCL社の公式サイトの情報をご確認ください。

この記事が気に入ったらサポートをしてみませんか?