2011年6月30日木曜日

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

WebDAVサーバ上のリソース情報の取得


WebDAVサーバ上のファイルを列挙する関数を作成する
WebDAVサーバ上のファイルの最終更新日時を取得する関数を作成する
WebDAVサーバ上のファイルの作成日時を取得する関数を作成する
WebDAVサーバ上のファイルのサイズを取得する関数を作成する
WebDAVサーバ上のファイルのコンテントタイプを取得する関数を作成する
WebDAVサーバのディレクトリ上のファイルのURLを列挙する関数を作成する
WebDAVサーバ上のリソースが存在するか調べる関数を作成する
WebDAVサーバ上のディレクトリを列挙する関数を作成する


WebDAVサーバ上のリソースの操作


BLOBをWebDAVサーバ上のファイルとしてアップロードする関数を作成する
CLOBをWebDAVサーバ上のファイルとしてアップロードする関数を作成する
WebDAVサーバ上のファイルをBLOBとして返す関数を作成する
WebDAVサーバ上のファイルをCLOBとして返す関数を作成する
WebDAVサーバ上のファイルをリネームする関数を作成する
WebDAVサーバ上のファイルをコピーする関数を作成する
WebDAVサーバ上のファイルを削除する関数を作成する

2011年4月4日月曜日

H2 DatabaseとSchemaCrawlerでテーブルのカラムを列挙する関数を作成する

H2 DatabaseとSchemaCrawlerでテーブルのカラムを列挙する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists sc_get_columns as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import schemacrawler.schema.*;
import schemacrawler.schemacrawler.*;
import schemacrawler.utility.*;
@CODE
ResultSet sc_get_columns(String jdbcDriver, String url,
String user, String password, String schemaName,
String tableName)
throws Exception
{
if( jdbcDriver == null ){
throw new Exception("jdbcDriver is not specified.");
}
if( url == null ){
throw new Exception("url is not specified.");
}
if( user == null ){
throw new Exception("user is not specified.");
}
if( password == null ){
throw new Exception("password is not specified.");
}
if( schemaName == null ){
throw new Exception("schemaName is not specified.");
}
if( tableName == null ){
throw new Exception("tableName is not specified.");
}
Class.forName(jdbcDriver);
Connection conn = null;
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("POS", Types.NUMERIC, 4, 0);
rs.addColumn("NAME", Types.VARCHAR, 4096, 0);
rs.addColumn("TYPENAME", Types.VARCHAR, 4096, 0);
rs.addColumn("DECIMAL_DIGITS", Types.NUMERIC, 4, 0);
rs.addColumn("SIZE", Types.NUMERIC, 10, 0);
rs.addColumn("WIDTH", Types.VARCHAR, 4096, 0);
rs.addColumn("NULLABLE", Types.BOOLEAN, 1, 0);
try
{
conn = DriverManager.getConnection(url, user, password);
SchemaCrawlerOptions options = new SchemaCrawlerOptions();
options.setSchemaInfoLevel(SchemaInfoLevel.maximum());
Database db = SchemaCrawlerUtility.getDatabase(conn, options);
Schema schema = db.getSchema(schemaName);
if( schema != null ){
Table table = schema.getTable(tableName);
if( table != null ){
Column columns[] = table.getColumns();
for(int li=0;li<columns.length;li++){
rs.addRow(columns[li].getOrdinalPosition(),
columns[li].getName(),
columns[li].getType().getTypeName(),
columns[li].getDecimalDigits(),
columns[li].getSize(),
columns[li].getWidth(),
columns[li].isNullable());
}
}
}
}
finally
{
if( conn != null )conn.close();
}
return rs;
}
$$

実行例
select * from
sc_get_columns('org.postgresql.Driver',
'jdbc:postgresql://localhost:5432/postgres',
'postgres', 'postgres', 'public', 'test1');

※以下のjarをCLASSPATH環境変数に追加
schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1

関連情報
SchemaCrawlerのウェブサイト
http://schemacrawler.sourceforge.net/

2011年4月3日日曜日

H2 DatabaseとJRedisでキー値が存在しない場合のみ値を設定する関数を作成する

H2 DatabaseとJRedisでキー値が存在しない場合のみ値を設定する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_setnx as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Boolean jredis_setnx(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.setnx(key, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'key1');
select jredis_del('192.168.1.25', 6379, 'key2');
select jredis_set('192.168.1.25', 6379, 'key1', 'value1');
select jredis_setnx('192.168.1.25', 6379, 'key1', 'modified');
select jredis_setnx('192.168.1.25', 6379, 'key2', 'modified');
select jredis_get('192.168.1.25', 6379, 'key1');
select jredis_get('192.168.1.25', 6379, 'key2');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年4月2日土曜日

H2 DatabaseとSchemaCrawlerでテーブルを列挙する関数を作成する

H2 DatabaseとSchemaCrawlerでテーブルを列挙する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists sc_get_tables as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import schemacrawler.schema.*;
import schemacrawler.schemacrawler.*;
import schemacrawler.utility.*;
@CODE
ResultSet sc_get_tables(String jdbcDriver, String url,
String user, String password, String schemaName)
throws Exception
{
if( jdbcDriver == null ){
throw new Exception("jdbcDriver is not specified.");
}
if( url == null ){
throw new Exception("url is not specified.");
}
if( user == null ){
throw new Exception("user is not specified.");
}
if( password == null ){
throw new Exception("password is not specified.");
}
if( schemaName == null ){
throw new Exception("schemaName is not specified.");
}
Class.forName(jdbcDriver);
Connection conn = null;
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("NAME", Types.VARCHAR, 4096, 0);
rs.addColumn("FULLNAME", Types.VARCHAR, 4096, 0);
rs.addColumn("REMARKS", Types.VARCHAR, 4096, 0);
try
{
conn = DriverManager.getConnection(url, user, password);
SchemaCrawlerOptions options = new SchemaCrawlerOptions();
Database db = SchemaCrawlerUtility.getDatabase(conn, options);
Schema schema = db.getSchema(schemaName);
if( schema != null ){
Table tables[] = schema.getTables();
for(int li=0;li<tables.length;li++){
rs.addRow(tables[li].getName(),
tables[li].getFullName(),
tables[li].getRemarks());
}
}
}
finally
{
if( conn != null )conn.close();
}
return rs;
}
$$

実行例
select * from
sc_get_tables('org.postgresql.Driver',
'jdbc:postgresql://localhost:5432/postgres',
'postgres', 'postgres', 'public');

※以下のjarをCLASSPATH環境変数に追加
schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1

関連情報
SchemaCrawlerのウェブサイト
http://schemacrawler.sourceforge.net/

2011年4月1日金曜日

H2 DatabaseとJRedisで新しい値を設定して古い値を返す関数を作成する

H2 DatabaseとJRedisで新しい値を設定して古い値を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_getset as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
String jredis_getset(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
byte result[] = jrc.getset(key, value);
return result==null?null:DefaultCodec.toStr(result);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'key1');
select jredis_set('192.168.1.25', 6379, 'key1', 'value1');
select jredis_getset('192.168.1.25', 6379, 'key1', 'modified');
select jredis_get('192.168.1.25', 6379, 'key1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月31日木曜日

H2 DatabaseとJRedisでSorted Setの値のスコアを取得する関数を作成する

H2 DatabaseとJRedisでSorted Setの値のスコアを取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_zscore as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Double jredis_zscore(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.zscore(key, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');
select jredis_zscore('192.168.1.25', 6379, 'sset1', 'value3');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月30日水曜日

H2 DatabaseとJRedisでSorted Setから値を削除する関数を作成する

H2 DatabaseとJRedisでSorted Setから値を削除する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_zrem as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Boolean jredis_zrem(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.zrem(key, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');
select jredis_zrem('192.168.1.25', 6379, 'sset1', 'value3');
select * from jredis_zrange('192.168.1.25', 6379, 'sset1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月29日火曜日

H2 DatabaseとJRedisでSorted Setからインデックスの範囲で逆順で値を取得する関数を作成する

H2 DatabaseとJRedisでSorted Setからインデックスの範囲で逆順で値を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_zrevrange as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_zrevrange(String host, Integer intPort,
String key, Long from, Long to)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( from == null ){
throw new Exception("from is not specified.");
}
if( to == null ){
throw new Exception("to is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.zrevrange(key, from, to)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');
select * from jredis_zrevrange('192.168.1.25', 6379, 'sset1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月28日月曜日

H2 DatabaseとJRedisでスコアの範囲でSorted Setの値を取得する

H2 DatabaseとJRedisでスコアの範囲でSorted Setの値を取得するには、以下のスクリプトを実行します。

create alias if not exists jredis_zrangebyscore as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_zrangebyscore(String host, Integer intPort,
String key, Double from, Double to)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( from == null ){
throw new Exception("from is not specified.");
}
if( to == null ){
throw new Exception("to is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.zrangebyscore(key, from, to)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');
select * from jredis_zrangebyscore('192.168.1.25', 6379, 'sset1', 200, 300);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月27日日曜日

H2 DatabaseとJRedisでSorted Setの要素数を取得する関数を作成する

H2 DatabaseとJRedisでSorted Setの要素数を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_zcard as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Long jredis_zcard(String host, Integer intPort,
String key)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.zcard(key);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');
select jredis_zcard('192.168.1.25', 6379, 'sset1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月26日土曜日

H2 DatabaseとJRedisでSorted Setの値のスコアをインクリメントする関数を作成する

H2 DatabaseとJRedisでSorted Setの値のスコアをインクリメントする関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_zincrby as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Double jredis_zincrby(String host, Integer intPort,
String key, Double score, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( score == null ){
throw new Exception("score is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.zincrby(key, score, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');
select jredis_zincrby('192.168.1.25', 6379, 'sset1', 1000, 'value2');
select * from jredis_zrange('192.168.1.25', 6379, 'sset1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月25日金曜日

H2 DatabaseとJRedisでSorted Setからインデックスの範囲で値を取得する関数を作成する

H2 DatabaseとJRedisでSorted Setからインデックスの範囲で値を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_zrange as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_zrange(String host, Integer intPort,
String key, Long from, Long to)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( from == null ){
throw new Exception("from is not specified.");
}
if( to == null ){
throw new Exception("to is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.zrange(key, from, to)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');
select * from jredis_zrange('192.168.1.25', 6379, 'sset1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月24日木曜日

H2 DatabaseとJRedisでSorted Setに値を追加する関数を作成する

H2 DatabaseとJRedisでSorted Setに値を追加する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_zadd as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Boolean jredis_zadd(String host, Integer intPort,
String key, Double score, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( score == null ){
throw new Exception("score is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.zadd(key, score, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'sset1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 100, 'value1');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 200, 'value2');
select jredis_zadd('192.168.1.25', 6379, 'sset1', 300, 'value3');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月23日水曜日

H2 DatabaseとJRedisでセットから値を削除する関数を作成する

H2 DatabaseとJRedisでセットから値を削除する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_srem as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Boolean jredis_srem(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.srem(key, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_srem('192.168.1.25', 6379, 'set1', 'value1');
select * from jredis_smembers('192.168.1.25', 6379, 'set1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月22日火曜日

H2 DatabaseとSchemaCrawlerでスキーマを列挙する関数を作成する

H2 DatabaseとSchemaCrawlerでスキーマを列挙する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists sc_get_schemas as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import schemacrawler.schema.*;
import schemacrawler.schemacrawler.*;
import schemacrawler.utility.*;
@CODE
ResultSet sc_get_schemas(String jdbcDriver, String url,
String user, String password)
throws Exception
{
if( jdbcDriver == null ){
throw new Exception("jdbcDriver is not specified.");
}
if( url == null ){
throw new Exception("url is not specified.");
}
if( user == null ){
throw new Exception("user is not specified.");
}
if( password == null ){
throw new Exception("password is not specified.");
}
Class.forName(jdbcDriver);
Connection conn = null;
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("CATALOG", Types.VARCHAR, 4096, 0);
rs.addColumn("SCHEMA", Types.VARCHAR, 4096, 0);
try
{
conn = DriverManager.getConnection(url, user, password);
SchemaCrawlerOptions options = new SchemaCrawlerOptions();
Database db = SchemaCrawlerUtility.getDatabase(conn, options);
Schema schemas[] = db.getSchemas();
for(int li=0;li<schemas.length;li++){
rs.addRow(schemas[li].getCatalogName(),
schemas[li].getSchemaName());
}
}
finally
{
if( conn != null )conn.close();
}
return rs;
}
$$

実行例
select * from
sc_get_schemas('org.postgresql.Driver',
'jdbc:postgresql://localhost:5432/postgres',
'postgres', 'postgres');

※以下のjarをCLASSPATH環境変数に追加
schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1

関連情報
SchemaCrawlerのウェブサイト
http://schemacrawler.sourceforge.net/

H2 DatabaseとJRedisでサーバの情報を返す関数を作成する

H2 DatabaseとJRedisでサーバの情報を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_info as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_info(String host, Integer intPort)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("KEY", Types.VARCHAR, 4096, 0);
rs.addColumn("VALUE", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(Map.Entry elem : jrc.info().entrySet()){
rs.addRow(elem.getKey(), elem.getValue());
}

return rs;
}
$$

実行例
select * from jredis_info('192.168.1.25', 6379);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月21日月曜日

H2 DatabaseとJRedisで複数のセットから差集合を作成する関数を作成する

H2 DatabaseとJRedisで複数のセットから差集合を作成する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sdiffstore as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_sdiffstore(String host, Integer intPort,
String dest, String set1, String set2)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( dest == null ){
throw new Exception("dest is not specified.");
}
if( set1 == null ){
throw new Exception("set1 is not specified.");
}
if( set2 == null ){
throw new Exception("set2 is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.sdiffstore(dest, set1, set2);
return new Integer(0);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_del('192.168.1.25', 6379, 'set2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');
select jredis_sdiffstore('192.168.1.25', 6379, 'rs', 'set1', 'set2');
select * from jredis_smembers('192.168.1.25', 6379, 'rs');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月20日日曜日

H2 DatabaseとJRedisで複数のセットから和集合を作成する関数を作成する

H2 DatabaseとJRedisで複数のセットから和集合を作成する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sunionstore as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_sunionstore(String host, Integer intPort,
String dest, String set1, String set2)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( dest == null ){
throw new Exception("dest is not specified.");
}
if( set1 == null ){
throw new Exception("set1 is not specified.");
}
if( set2 == null ){
throw new Exception("set2 is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.sunionstore(dest, set1, set2);
return new Integer(0);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_del('192.168.1.25', 6379, 'set2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');
select jredis_sunionstore('192.168.1.25', 6379, 'rs', 'set1', 'set2');
select * from jredis_smembers('192.168.1.25', 6379, 'rs');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月19日土曜日

H2 DatabaseとJRedisで複数のセットから積集合を作成する関数を作成する

H2 DatabaseとJRedisで複数のセットから積集合を作成する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sinterstore as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_sinterstore(String host, Integer intPort,
String dest, String set1, String set2)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( dest == null ){
throw new Exception("dest is not specified.");
}
if( set1 == null ){
throw new Exception("set1 is not specified.");
}
if( set2 == null ){
throw new Exception("set2 is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.sinterstore(dest, set1, set2);
return new Integer(0);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_del('192.168.1.25', 6379, 'set2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');
select jredis_sinterstore('192.168.1.25', 6379, 'rs', 'set1', 'set2');
select * from jredis_smembers('192.168.1.25', 6379, 'rs');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月18日金曜日

H2 DatabaseとJRedisで複数のセットから差集合を返す関数を作成する

H2 DatabaseとJRedisで複数のセットから差集合を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sdiff as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_sdiff(String host, Integer intPort,
String key1, String key2)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key1 == null ){
throw new Exception("key1 is not specified.");
}
if( key2 == null ){
throw new Exception("key2 is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.sdiff(key1, key2)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_del('192.168.1.25', 6379, 'set2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');
select * from jredis_sdiff('192.168.1.25', 6379, 'set1', 'set2');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月17日木曜日

H2 DatabaseとJRedisで複数のセットから和集合を返す関数を作成する

H2 DatabaseとJRedisで複数のセットから和集合を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sunion as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_sunion(String host, Integer intPort,
String key1, String key2)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key1 == null ){
throw new Exception("key1 is not specified.");
}
if( key2 == null ){
throw new Exception("key2 is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.sunion(key1, key2)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_del('192.168.1.25', 6379, 'set2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');
select * from jredis_sunion('192.168.1.25', 6379, 'set1', 'set2');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月16日水曜日

H2 DatabaseとJRedisで複数のセットから積集合を返す関数を作成する

H2 DatabaseとJRedisで複数のセットから積集合を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sinter as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_sinter(String host, Integer intPort,
String key1, String key2)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key1 == null ){
throw new Exception("key1 is not specified.");
}
if( key2 == null ){
throw new Exception("key2 is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.sinter(key1, key2)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_del('192.168.1.25', 6379, 'set2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set2', 'value5');
select * from jredis_sinter('192.168.1.25', 6379, 'set1', 'set2');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月15日火曜日

H2 DatabaseとJRedisでセットからランダムに値を返す関数を作成する

H2 DatabaseとJRedisでセットからランダムに値を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_srandmember as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
String jredis_srandmember(String host, Integer intPort,
String key)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
byte result[] = jrc.srandmember(key);
return result==null?null:DefaultCodec.toStr(result);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_srandmember('192.168.1.25', 6379, 'set1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月14日月曜日

H2 DatabaseとJRedisでセットの値を別のセットに移動させる関数を作成する

H2 DatabaseとJRedisでセットの値を別のセットに移動させる関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_smove as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Boolean jredis_smove(String host, Integer intPort,
String srcKey, String destKey, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( srcKey == null ){
throw new Exception("srcKey is not specified.");
}
if( destKey == null ){
throw new Exception("destKey is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.smove(srcKey, destKey, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_del('192.168.1.25', 6379, 'set2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select jredis_smove('192.168.1.25', 6379, 'set1', 'set2', 'value2');
select * from jredis_smembers('192.168.1.25', 6379, 'set1');
select * from jredis_smembers('192.168.1.25', 6379, 'set2');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月13日日曜日

H2 DatabaseとJRedisでセットに含まれる値を返す関数を作成する

H2 DatabaseとJRedisでセットに含まれる値を返す関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_smembers as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_smembers(String host, Integer intPort,
String key)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.smembers(key)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value3');
select * from jredis_smembers('192.168.1.25', 6379, 'set1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月12日土曜日

H2 DatabaseでSchemaCrawlerの情報を取得する関数を作成する

H2 DatabaseでSchemaCrawlerの情報を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists sc_get_scinfo as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import schemacrawler.schema.*;
import schemacrawler.schemacrawler.*;
import schemacrawler.utility.*;
@CODE
ResultSet sc_get_scinfo(String jdbcDriver, String url,
String user, String password)
throws Exception
{
if( jdbcDriver == null ){
throw new Exception("jdbcDriver is not specified.");
}
if( url == null ){
throw new Exception("url is not specified.");
}
if( user == null ){
throw new Exception("user is not specified.");
}
if( password == null ){
throw new Exception("password is not specified.");
}
Class.forName(jdbcDriver);
Connection conn = null;
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("NAME", Types.VARCHAR, 4096, 0);
rs.addColumn("VALUE", Types.VARCHAR, 4096, 0);
try
{
conn = DriverManager.getConnection(url, user, password);
SchemaCrawlerOptions options = new SchemaCrawlerOptions();
Database db = SchemaCrawlerUtility.getDatabase(conn, options);
SchemaCrawlerInfo sci = db.getSchemaCrawlerInfo();
rs.addRow("About", sci.getSchemaCrawlerAbout());
rs.addRow("ProductName", sci.getSchemaCrawlerProductName());
rs.addRow("Version", sci.getSchemaCrawlerVersion());
}
finally
{
if( conn != null )conn.close();
}
return rs;
}
$$

実行例
select * from
sc_get_scinfo('org.postgresql.Driver',
'jdbc:postgresql://localhost:5432/postgres',
'postgres', 'postgres');

※以下のjarをCLASSPATH環境変数に追加
schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1

関連情報
SchemaCrawlerのウェブサイト
http://schemacrawler.sourceforge.net/

H2 DatabaseとJRedisでセットに値が含まれるか確認する関数を作成する

H2 DatabaseとJRedisでセットに値が含まれるか確認する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sismember as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Boolean jredis_sismember(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.sismember(key, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value2');
select jredis_sismember('192.168.1.25', 6379, 'set1', 'value1') as result1,
jredis_sismember('192.168.1.25', 6379, 'set1', 'value0') as result2;

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月11日金曜日

H2 DatabaseとJRedisでセットに値を追加する関数を作成する

H2 DatabaseとJRedisでセットに値を追加する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_sadd as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Boolean jredis_sadd(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.sadd(key, value);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'set1');
select jredis_sadd('192.168.1.25', 6379, 'set1', 'value1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月10日木曜日

H2 DatabaseとJRedisでバックグラウンドでDBを保存する関数を作成する

H2 DatabaseとJRedisでバックグラウンドでDBを保存する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_bgsave as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Long jredis_bgsave(String host, Integer intPort)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.bgsave();
return new Long(0);
}
$$

実行例
select jredis_bgsave('192.168.1.25', 6379);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月9日水曜日

H2 DatabaseとJRedisでソースリストから最後の要素を取得・削除して値を別のリストの最初に追加する関数を作成する

H2 DatabaseとJRedisでソースリストから最後の要素を取得・削除して値を別のリストの最初に追加する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_rpoplpush as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
String jredis_rpoplpush(String host, Integer intPort,
String srcKey, String destKey)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( srcKey == null ){
throw new Exception("srcKey is not specified.");
}
if( destKey == null ){
throw new Exception("destKey is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
byte result[] = jrc.rpoplpush(srcKey, destKey);
return result==null?null:DefaultCodec.toStr(result);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'list1');
select jredis_del('192.168.1.25', 6379, 'list2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');
select jredis_rpoplpush('192.168.1.25', 6379, 'list1', 'list2');
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);
select * from jredis_lrange('192.168.1.25', 6379, 'list2', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月8日火曜日

H2 DatabaseとJRedisでリストから指定のインデックスの要素を取得する関数を作成する

H2 DatabaseとJRedisでリストから指定のインデックスの要素を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_lindex as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
String jredis_lindex(String host, Integer intPort,
String key, Long index)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( index == null ){
throw new Exception("index is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
byte result[] = jrc.lindex(key, index);
return result==null?null:DefaultCodec.toStr(result);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'list1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');
select jredis_lindex('192.168.1.25', 6379, 'list1', 1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月7日月曜日

H2 DatabaseとJRedisでリストの最後の要素を取得して削除する関数を作成する

H2 DatabaseとJRedisでリストの最後の要素を取得して削除する関数を作成するには、以下のコードを実行します。

create alias if not exists jredis_rpop as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
String jredis_rpop(String host, Integer intPort,
String key)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
byte result[] = jrc.rpop(key);
return result==null?null:DefaultCodec.toStr(result);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'list1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');
select jredis_rpop('192.168.1.25', 6379, 'list1');
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月6日日曜日

H2 DatabaseとJRedisでリストの最初の要素を取得して削除する関数を作成する

H2 DatabaseとJRedisでリストの最初の要素を取得して削除する関数を作成するには、以下のコードを実行します。

create alias if not exists jredis_lpop as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
String jredis_lpop(String host, Integer intPort,
String key)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
byte result[] = jrc.lpop(key);
return result==null?null:DefaultCodec.toStr(result);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'list1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');
select jredis_lpop('192.168.1.25', 6379, 'list1');
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月5日土曜日

H2 DatabaseとJRedisでリストの指定した要素を削除する関数を作成する

H2 DatabaseとJRedisでリストの指定した要素を削除する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_lrem as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Long jredis_lrem(String host, Integer intPort,
String key, String value, Integer count)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}
if( count == null ){
throw new Exception("count is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.lrem(key, value, count);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'list1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');
select jredis_lrem('192.168.1.25', 6379, 'list1', 'value1', 0);
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月4日金曜日

H2 DatabaseとJRedisでリストの指定した範囲の要素のみを残す関数を作成する

H2 DatabaseとJRedisでリストの指定した範囲の要素のみを残す関数を作成するには、以下のスクリプトを実行します。
create alias if not exists jredis_ltrim as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_ltrim(String host, Integer intPort,
String key, Long keepFrom, Long keepTo)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( keepFrom == null ){
throw new Exception("keepFrom is not specified.");
}
if( keepTo == null ){
throw new Exception("keepTo is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.ltrim(key, keepFrom, keepTo);
return new Integer(0);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'list1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value4');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value5');
select jredis_ltrim('192.168.1.25', 6379, 'list1', 1, 3);
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月3日木曜日

H2 DatabaseとJRedisでリストのインデックスを指定して値を設定する関数を作成する

H2 DatabaseとJRedisでリストのインデックスを指定して値を設定する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_lset as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_lset(String host, Integer intPort,
String key, Long index, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( index == null ){
throw new Exception("index is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.lset(key, index, value);
return new Integer(0);
}
$$

実行例
select jredis_del('192.168.1.25', 6379, 'list1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value2');
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value3');
select jredis_lset('192.168.1.25', 6379, 'list1', 1, 'modified');
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月2日水曜日

H2 DatabaseとSchemaCrawlerでデータベースのプロパティ情報を取得する関数を作成する

H2 DatabaseとSchemaCrawlerでデータベースのプロパティ情報を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists sc_get_dbprops as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import schemacrawler.schema.*;
import schemacrawler.schemacrawler.*;
import schemacrawler.utility.*;
@CODE
ResultSet sc_get_dbprops(String jdbcDriver, String url,
String user, String password)
throws Exception
{
if( jdbcDriver == null ){
throw new Exception("jdbcDriver is not specified.");
}
if( url == null ){
throw new Exception("url is not specified.");
}
if( user == null ){
throw new Exception("user is not specified.");
}
if( password == null ){
throw new Exception("password is not specified.");
}
Class.forName(jdbcDriver);
Connection conn = null;
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("NAME", Types.VARCHAR, 4096, 0);
rs.addColumn("VALUE", Types.VARCHAR, 4096, 0);
rs.addColumn("DESCRIPTION", Types.VARCHAR, 4096, 0);
try
{
conn = DriverManager.getConnection(url, user, password);
SchemaCrawlerOptions options = new SchemaCrawlerOptions();
options.setSchemaInfoLevel(SchemaInfoLevel.maximum());
Database db = SchemaCrawlerUtility.getDatabase(conn, options);
DatabaseInfo dbi = db.getDatabaseInfo();
DatabaseProperty props[] = dbi.getProperties();
for(int pl=0;pl<props.length;pl++){
rs.addRow(props[pl].getName(),
props[pl].getValue(), props[pl].getDescription());
}
}
finally
{
if( conn != null )conn.close();
}
return rs;
}
$$

実行例
select * from
sc_get_dbprops('org.postgresql.Driver',
'jdbc:postgresql://localhost:5432/postgres',
'postgres', 'postgres');

※以下のjarをCLASSPATH環境変数に追加
schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1

関連情報
SchemaCrawlerのウェブサイト
http://schemacrawler.sourceforge.net/

H2 DatabaseとJRedisでリストの要素数を返す関数を作成する

H2 DatabaseとJRedisでリストの要素数を返す関数を作成するには、以下のコードを実行します。

create alias if not exists jredis_llen as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
long jredis_llen(String host, Integer intPort,
String key)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.llen(key);
}
$$

実行例
select jredis_lpush('192.168.1.25', 6379, 'list1', 'value1');
select jredis_llen('192.168.1.25', 6379, 'list1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年3月1日火曜日

H2 DatabaseとJRedisでリストの最初に値を追加する関数を作成する

H2 DatabaseとJRedisでリストの最初に値を追加する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_lpush as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_lpush(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.lpush(key, value);
return new Integer(0);
}
$$

実行例
select jredis_lpush('192.168.1.25', 6379, 'list1', 'value1');
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月28日月曜日

H2 DatabaseとJRedisでリストの指定した範囲の値を列挙する関数を作成する

H2 DatabaseとJRedisでリストの指定した範囲の値を列挙する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_lrange as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
ResultSet jredis_lrange(String host, Integer intPort,
String key, Long from, Long to)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( from == null ){
throw new Exception("from is not specified.");
}
if( to == null ){
throw new Exception("to is not specified.");
}
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ELEMENT", Types.VARCHAR, 4096, 0);

JRedisClient jrc = new JRedisClient(host, port);
for(byte elem[] : jrc.lrange(key, from, to)){
rs.addRow(elem==null?null:DefaultCodec.toStr(elem));
}
return rs;
}
$$

実行例
select * from jredis_lrange('192.168.1.25', 6379, 'list1', 0, -1)

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月27日日曜日

H2 DatabaseとJRedisでリストの最後に値を追加する関数を作成する

H2 DatabaseとJRedisでリストの最後に値を追加する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_rpush as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_rpush(String host, Integer intPort,
String key, String value)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( value == null ){
throw new Exception("value is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.rpush(key, value);
return new Integer(0);
}
$$

実行例
select jredis_rpush('192.168.1.25', 6379, 'list1', 'value1')

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月26日土曜日

H2 DatabaseとJRedisでキーを削除する関数を作成する

H2 DatabaseとJRedisでキーを削除する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_del as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
boolean jredis_del(String host, Integer intPort,
String key)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.del(key);
}
$$

実行例
select jredis_set('192.168.1.25', 6379, 'key1', 'value1');
select jredis_del('192.168.1.25', 6379, 'key1');
select jredis_exists('192.168.1.25', 6379, 'key1');

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月25日金曜日

H2 DatabaseとJRedisで最後にディスクに保存した日付を取得する関数を作成する

H2 DatabaseとJRedisで最後にディスクに保存した日付を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_lastsave as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
java.sql.Date jredis_lastsave(String host, Integer intPort)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}

JRedisClient jrc = new JRedisClient(host, port);
return new java.sql.Date(jrc.lastsave());
}
$$

実行例
select jredis_lastsave('192.168.1.25', 6379);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月24日木曜日

H2 DatabaseとJRedisでkeyの数を取得する関数を作成する

H2 DatabaseとJRedisでkeyの数を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_dbsize as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
long jredis_dbsize(String host, Integer intPort)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.dbsize();
}
$$

実行例
select jredis_dbsize('192.168.1.25', 6379);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月23日水曜日

H2 DatabaseとJRedisでkeyの値をデクリメントする関数を作成する

H2 DatabaseとJRedisでkeyの値をデクリメントする関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_decrby as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
long jredis_decrby(String host, Integer intPort,
String key, Integer delta)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( delta == null ){
throw new Exception("delta is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.decrby(key, delta.intValue());
}
$$

実行例
select jredis_set('192.168.1.25', 6379, 'key1', '10');
select jredis_decrby('192.168.1.25', 6379, 'key1', 2);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月22日火曜日

H2 DatabaseとTwitter4Jを使用してフォローしているユーザ名を取得する関数を作成する

H2 DatabaseとTwitter4Jを使用してフォローしているユーザ名を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists twitter_get_friends_ids as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import twitter4j.*;
import twitter4j.http.*;
import twitter4j.conf.*;
@CODE
ResultSet twitter_get_friends_ids(String consumerKey,
String consumerSecret, String accessToken,
String accessTokenSecret)
throws Exception
{
if( consumerKey == null ){
throw new Exception("consumerKey is not specified.");
}
if( consumerSecret == null ){
throw new Exception("consumerSecret is not specified.");
}
if( accessToken == null ){
throw new Exception("accessToken is not specified.");
}
if( accessTokenSecret == null ){
throw new Exception("accessTokenSecret is not specified.");
}

SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ID", Types.NUMERIC, 20, 0);
rs.addColumn("NAME", Types.VARCHAR, 100, 0);

Properties prop = new Properties();
prop.put("oauth.consumerKey", consumerKey);
prop.put("oauth.consumerSecret", consumerSecret);
prop.put("oauth.accessToken", accessToken);
prop.put("oauth.accessTokenSecret", accessTokenSecret);
PropertyConfiguration pc =
new PropertyConfiguration(prop);

OAuthAuthorization oauth = new OAuthAuthorization(pc);
TwitterFactory tf = new TwitterFactory();
Twitter twitter = tf.getInstance(oauth);
IDs ids = twitter.getFriendsIDs();
int idns[] = ids.getIDs();
for(int idx=0;idx<idns.length;idx++){
User user = twitter.showUser(idns[idx]);
rs.addRow(user.getId(), user.getScreenName());
}
return rs;
}
$$

実行例
select * from twitter_get_friends_ids('xxxx',
'xxxx',
'xxxx',
'xxxx');


関連情報
H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ

2011年2月21日月曜日

H2 DatabaseとJRedisでkeyの値をインクリメントする関数を作成する

H2 DatabaseとJRedisでkeyの値をインクリメントする関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_incrby as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
long jredis_incrby(String host, Integer intPort,
String key, Integer delta)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( key == null ){
throw new Exception("key is not specified.");
}
if( delta == null ){
throw new Exception("delta is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
return jrc.incrby(key, delta.intValue());
}
$$

実行例
select jredis_set('192.168.1.25', 6379, 'key1', '10');
select jredis_incrby('192.168.1.25', 6379, 'key1', 1);

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月20日日曜日

H2 DatabaseとSchemaCrawlerでデータベースの情報を取得する関数を作成する

H2 DatabaseとSchemaCrawlerでデータベースの情報を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists sc_get_dbinfo as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import schemacrawler.schema.*;
import schemacrawler.schemacrawler.*;
import schemacrawler.utility.*;
@CODE
ResultSet sc_get_dbinfo(String jdbcDriver, String url,
String user, String password)
throws Exception
{
if( jdbcDriver == null ){
throw new Exception("jdbcDriver is not specified.");
}
if( url == null ){
throw new Exception("url is not specified.");
}
if( user == null ){
throw new Exception("user is not specified.");
}
if( password == null ){
throw new Exception("password is not specified.");
}
Class.forName(jdbcDriver);
Connection conn = null;
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("NAME", Types.VARCHAR, 4096, 0);
rs.addColumn("VALUE", Types.VARCHAR, 4096, 0);
try
{
conn = DriverManager.getConnection(url, user, password);
SchemaCrawlerOptions options = new SchemaCrawlerOptions();
Database db = SchemaCrawlerUtility.getDatabase(conn, options);
DatabaseInfo dbi = db.getDatabaseInfo();
rs.addRow("ProductName", dbi.getProductName());
rs.addRow("ProductVersion", dbi.getProductVersion());
rs.addRow("UserName", dbi.getUserName());
}
finally
{
if( conn != null )conn.close();
}
return rs;
}
$$

実行例
select * from
sc_get_dbinfo('org.postgresql.Driver',
'jdbc:postgresql://localhost:5432/postgres',
'postgres', 'postgres');

※以下のjarをCLASSPATH環境変数に追加
schemacrawler-8.5.1.jar, schemacrawler-postgresql-8.5.1.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), SchemaCrawler 8.5.1

関連情報
SchemaCrawlerのウェブサイト
http://schemacrawler.sourceforge.net/

H2 DatabaseとTwitter4Jを使用してフォロワーのユーザ名を取得する関数を作成する

H2 DatabaseとTwitter4Jを使用してフォロワーのユーザ名を取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists twitter_get_follower_ids as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import twitter4j.*;
import twitter4j.http.*;
import twitter4j.conf.*;
@CODE
ResultSet twitter_get_follower_ids(String consumerKey,
String consumerSecret, String accessToken,
String accessTokenSecret)
throws Exception
{
if( consumerKey == null ){
throw new Exception("consumerKey is not specified.");
}
if( consumerSecret == null ){
throw new Exception("consumerSecret is not specified.");
}
if( accessToken == null ){
throw new Exception("accessToken is not specified.");
}
if( accessTokenSecret == null ){
throw new Exception("accessTokenSecret is not specified.");
}

SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ID", Types.NUMERIC, 20, 0);
rs.addColumn("NAME", Types.VARCHAR, 100, 0);

Properties prop = new Properties();
prop.put("oauth.consumerKey", consumerKey);
prop.put("oauth.consumerSecret", consumerSecret);
prop.put("oauth.accessToken", accessToken);
prop.put("oauth.accessTokenSecret", accessTokenSecret);
PropertyConfiguration pc =
new PropertyConfiguration(prop);

OAuthAuthorization oauth = new OAuthAuthorization(pc);
TwitterFactory tf = new TwitterFactory();
Twitter twitter = tf.getInstance(oauth);
IDs ids = twitter.getFollowersIDs();
int idns[] = ids.getIDs();
for(int idx=0;idx<idns.length;idx++){
User user = twitter.showUser(idns[idx]);
rs.addRow(user.getId(), user.getScreenName());
}
return rs;
}
$$

実行例
select * from twitter_get_follower_ids('xxxx',
'xxxx',
'xxxx',
'xxxx');

※以下のjarをCLASSPATH環境変数に追加
twitter4j-core-2.1.12-SNAPSHOT.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT

関連情報
H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ

2011年2月19日土曜日

H2 DatabaseとJRedisでkeyをリネームする関数を作成する

H2 DatabaseとJRedisでkeyをリネームする関数を作成するには、以下のスクリプトを実行します。

create alias if not exists jredis_rename as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import java.net.*;
import org.jredis.ri.alphazero.*;
import org.jredis.ri.alphazero.support.*;
@CODE
Integer jredis_rename(String host, Integer intPort,
String oldkey, String newkey)
throws Exception
{
if( host == null ){
throw new Exception("host is not specified.");
}
int port = 6379;
if( intPort != null ){
port = intPort.intValue();
}
if( oldkey == null ){
throw new Exception("old key is not specified.");
}
if( newkey == null ){
throw new Exception("new key is not specified.");
}

JRedisClient jrc = new JRedisClient(host, port);
jrc.rename(oldkey, newkey);
return new Integer(0);
}
$$

実行例
select jredis_rename('192.168.1.25', 6379, 'key1', 'newkey1')

※以下のjarをCLASSPATH環境変数に追加
jredis-core-all-a.0-SNAPSHOT-jar-with-dependencies.jar

動作環境
JDK6 Update23, H2 Database 1.3.149 (2011-01-07), JRedis2.0.0

2011年2月18日金曜日

H2 DatabaseとTwitter4Jを使用して接続ユーザーのタイムラインを取得する関数を作成する

H2 DatabaseとTwitter4Jを使用して接続ユーザーのタイムラインを取得する関数を作成するには、以下のスクリプトを実行します。

create alias if not exists twitter_get_user_timeline as $$ 
import java.io.*;
import java.util.*;
import java.sql.*;
import org.h2.tools.*;
import twitter4j.*;
import twitter4j.http.*;
import twitter4j.conf.*;
@CODE
ResultSet twitter_get_user_timeline(String consumerKey,
String consumerSecret, String accessToken,
String accessTokenSecret, Integer page)
throws Exception
{
if( consumerKey == null ){
throw new Exception("consumerKey is not specified.");
}
if( consumerSecret == null ){
throw new Exception("consumerSecret is not specified.");
}
if( accessToken == null ){
throw new Exception("accessToken is not specified.");
}
if( accessTokenSecret == null ){
throw new Exception("accessTokenSecret is not specified.");
}
if( page == null ){
return null;
}

SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("ID", Types.NUMERIC, 20, 0);
rs.addColumn("CREATEDAT", Types.TIMESTAMP, 0, 0);
rs.addColumn("NAME", Types.VARCHAR, 100, 0);
rs.addColumn("TWEET", Types.VARCHAR, 140, 0);

Properties prop = new Properties();
prop.put("oauth.consumerKey", consumerKey);
prop.put("oauth.consumerSecret", consumerSecret);
prop.put("oauth.accessToken", accessToken);
prop.put("oauth.accessTokenSecret", accessTokenSecret);
PropertyConfiguration pc =
new PropertyConfiguration(prop);

OAuthAuthorization oauth = new OAuthAuthorization(pc);
TwitterFactory tf = new TwitterFactory();
Twitter twitter = tf.getInstance(oauth);
ResponseList<Status> rl = twitter.getUserTimeline(new Paging(page));
for(Status status : rl){
rs.addRow(status.getId(),
new Timestamp(status.getCreatedAt().getTime()),
status.getUser().getScreenName(),
status.getText());
}
return rs;
}
$$

実行例
select * from twitter_get_user_timeline('xxxx',
'xxxx',
'xxxx',
'xxxx', 1);

※以下のjarをCLASSPATH環境変数に追加
twitter4j-core-2.1.12-SNAPSHOT.jar

動作環境
JDK6 Update23, H2 Database 1.2.149 (2011-01-07), twitter4j-2.1.12-SNAPSHOT

関連情報
H2 Database上でTwitter4Jを使用するユーザー定義関数のまとめ