ActiveObjectsの操作を楽にする対話型インチキスクリプト
注意事項
完全に環境依存です。使用する場合は、パス等変更して使用してください。
使い方
まず、シェルで./iaoと入力しシェルスクリプトを起動します。
すると、「> 」が表示されるので、実行したいJavaのコードを入力します。
最後に、「go」を入力すると、これまで入力したJavaのコードが実行されます。
使用例1 文字列の出力
$ ./iao
> System.out.println( "hello" );
> System.out.println( "world");
> go
hello
world
使用例2 ActiveObjectsのEnittyの作成
ここでは、スクリプト内でmanager変数にEntityManagerのインスタンスを用意しています。
$ ./iao
> User user = manager.create( User.class );
> user.setName( "nattou" );
> user.setPassword( "nattou" );
> user.setType( 1 );
> user.save();
> go
何のメッセージも出ないので、ひとまずエラーは発生していません。次の例で、結果を確認します。
使用例3 ActiveObjectsのEntityの取得&表示
$ ./iao
> User[] users = manager.find( User.class );
> for ( User user: users ) {
> System.out.println( "name: " + user.getName() + ", password; " + user.getPassword() + ", type: " + user.getType() );
> }
> go
name: admin, password; admin, type: 1
name: nattou, password; nattou, type: 1
使用例2でユーザが追加できていることが確認できました。
ネタばれ
これらは以下のようなインチキで実現しています。
シェルスクリプト iao
#!/bin/bash #依存ライブラリのあるディレクトリ LIB_DIR=AOStyleWiki/WEB-INF/lib # 依存ライブラリ LIBS=$LIB_DIR/slf4j-api-1.5.6.jar LIBS=$LIBS:$LIB_DIR/slf4j-jdk14-1.5.6.jar LIBS=$LIBS:$LIB_DIR/wicket-1.3.5.jar LIBS=$LIBS:$LIB_DIR/activeobjects-0.8.2.jar LIBS=$LIBS:$LIB_DIR/mysql-connector-java-5.1.0-bin.jar # クラスパス CLASSPATH=$LIBS:AOStyleWiki/WEB-INF/classes # 作業用クラス CLASS_NAME=Temp # 作業用ソースファイル SRC_NAME=Temp.java # 作業用ソースファイル作成 rm $SRC_NAME echo 'import net.java.ao.EntityManager;' >> $SRC_NAME echo >> $SRC_NAME echo 'public class '$CLASS_NAME' {' >> $SRC_NAME echo 'public static void main( String args[] ) throws Exception {' >> $SRC_NAME echo 'EntityManager manager = new EntityManager( "jdbc:mysql://localhost/aotest", "root", null );' >> $SRC_NAME while true; do echo -n '> ' read LINE case $LINE in go ) break;; esac echo $LINE >> $SRC_NAME done echo '}' >> $SRC_NAME echo '}' >> $SRC_NAME # 作業用クラスのコンパイル&実行 javac -classpath $CLASSPATH $SRC_NAME && java -classpath .:$CLASSPATH $CLASS_NAME