2010年11月24日水曜日

H2 DatabaseとsardineでWebDAVサーバ上のディレクトリを列挙する関数を作成する

H2 DatabaseとsardineでWebDAVサーバ上のディレクトリを列挙する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists sardine_list_directory as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import com.googlecode.sardine.*;
@CODE
ResultSet sardine_list_directory(String url,
String user, String password)
throws Exception
{
if( url == null ){
throw new Exception("url is not specified.");
}
user = (user == null)?"":user;
password = (password == null)?"":password;

SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("NAME", Types.VARCHAR, 512, 0);
rs.addColumn("URL", Types.VARCHAR, 2048, 0);

Sardine sardine = SardineFactory.begin(user, password);
List<DavResource> resources = sardine.getResources(url);
for(DavResource resource : resources){
if( resource.isDirectory() ){
rs.addRow(resource.getNameDecoded(), resource.getAbsoluteUrl());
}
}
return rs;
}
$$


実行例
call sardine_list_directory(
'http://192.168.1.208:8080/repository/default/',
'user', 'password'
);


※システム環境変数CLASSPATHにtools.jarとSardine関連のjar
(sardine.jar, httpcore-4.0.1.jar, httpclient-4.0.1.jar,
commons-codec-1.4.jar, commons-logging-1.1.1.jar)を追加しておくこと。

動作環境
JDK6 Update 22, H2 Database 1.2.146 (2010-11-08), sardine-129

関連情報
H2 Database上でsardineでWebDAVサーバと連携するユーザ定義関数のまとめ

0 件のコメント:

コメントを投稿