2010年11月30日火曜日

H2 DatabaseとsardineでBLOBをWebDAVサーバ上のファイルとしてアップロードする関数を作成する

H2 DatabaseとsardineでBLOBをWebDAVサーバ上のファイルとしてアップロードする関数を作成するには、以下のスクリプトを実行します。

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

Sardine sardine = SardineFactory.begin(user, password);
InputStream bis = null;
try
{
bis = blob.getBinaryStream();
sardine.put(url, bis);
}
finally
{
if( bis != null )bis.close();
}

return 0;
}
$$

実行例
drop table if exists blobtest;
create table blobtest (c1 numeric(4), c2 blob);
insert into blobtest values (1,
sardine_get_binary(
'http://192.168.1.208:8080/repository/default/SF.JPG',
'user', 'password')
);
select sardine_put_binary(
'http://192.168.1.208:8080/repository/default/sf2.jpg',
'user', 'password', c2)
from blobtest
where c1 = 1;


※システム環境変数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サーバと連携するユーザ定義関数のまとめ
・H2 Databaseに関する他の記事はこちらを参照してください。

0 件のコメント:

コメントを投稿