2010-01-01から1年間の記事一覧
java.util.List のDiff の準備ができたのでいよいよDiff実行するものを作成した。 先日投稿した http://blog.zaq.ne.jp/oboe2uran/article/372/ 準備を踏まえて Google collection Library の com.google.common.collect.MapDifference を利用する。 Diff実…
Google Collection Library で見つけたMapの比較にはとても重宝している http://blog.zaq.ne.jp/oboe2uran/article/352/ そこで、List の Diff 結果を求めるのはどうであろうと考えた。 準備として Google Collection Library で見つけた com.google.common.…
ここ最近iBATISの仕事をしてなかったせいか、びっくりすることが起きていたのをようやく気が付いた。 Apache プロジェクトに属していたiBATIS が Google code project になり、名前を変えている。 http://www.mybatis.org/
指定するフィールドだけ、Bean の値を入れ替えたい。 この要求が頻繁に発生したら、、、 public static <T> T replaceBean(T t1,T t2,String...fieldnames) throws Exception{ if (fieldnames.length==0) return t1; Class cls = t1.getClass(); for(String s :</t>…
Google guice に出会ってから Spring を触る機会が減った。 iBATIS3 GA版が出る前から、iBATIS3 と Spring 連携は既に論じられてる。 http://jira.springframework.org/browse/SPR-5991 このサイトを覗くのが良いのかもしれない。 この中で紹介された public…
Spring2.5 のメモを書くのは情けないが、仕事で使わなくてはならないので、不本意でも書きます。 @Resource や、@Autowired を書いてsetterの記述を無くする例。 bean生成のコンフィグXMLで、<context:annotation-config/>を書くことである。 </context:annotation-config/>
t3プロトコルでWebLogicサーバ上のサービスを実行したりするクライアントを 作成するケースは、ありそうでなかった。 バッチのために、わざわざ稼働中のWebサーバを使うという発想がないだろうし、 稼動中というリスクもあるからだろう。 コンテキストl…
JSF画面データテーブルの表を表示して入力を radio ボタンで制御する方法
Windows7 で、JavaService.exe は動くか? 答は、Yes である。ただし普通に実行しては次のようにエラーになる。 UranService という名前でサービス登録しようとすると、 Error attempting to install UranService service アクセスが拒否されました。 Window…
例外発生時、Oracle ADF には、もっと判りやすいメッセージを出して欲しいものだ。 jspx に書くrender属性を例えば、 <trh:tableLayout rendered="#{entity_foo.renderNaviButton}"> という記述に対して、以下のようにする。 エンティティ Bean // entity_foo が指す JavaBean でレンダリング private boolean renderNavi</trh:tablelayout>…
static イニシャライズのコードは組むことは少ないが、 自クラスのメソッドMap を用意すると応用がありそうだ。 import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; public class Foo{ private String color; private stati…
Excel 2003 で設定をしていたキー操作だけで、セルの結合分割を Excel 2007 で行うには。。。 Excel 2003 では、以前書いたとおり。 http://blog.zaq.ne.jp/oboe2uran/article/134/ Excel 2007 では、 一番上のクイックツールバーと称されるところに、設定し…
iBATIS3 GA版が出てた。 そこで思い立ったのが、、、 iBATIS2 で前はキュー処理化することを考えてた。 http://blog.zaq.ne.jp/oboe2uran/article/321/ ならば、iBATIS3 でも考えてみるべきと思い書いてみた。 import java.sql.SQLException; import java.ut…
Windows7 搭載PCを初めて買い、家に届いた。気になってたのが、サービスの管理である。 XP と違って見つけにくい。 「コントロールパネル」→「システムセキュリティ」→「管理ツール」 で、「サービス」のショートカットを実行する。 コマンドプロンプトで…
@Assisted 2つ以上付与した FactoryProvider の利用は、 @Assisted 付与時に、@Named でインジェクト対象を限定したように、 ユニークな文字列を指定する。 Names.named(String s) メソッドのようにコンフィグレーションで 約束するのではなく、FactoryProv…
guice-assistedinject-2.0.jar に存在する FactoryProvider を使うと、 Injector から getInstance 実行後、FactoryProvider で注入したファクトリ実行で、 任意の引数を与えることができる。Injector のバインド定義で目的の 生成に必要なインスタンス注入…
iBATIS3 と Google guice を組み合わせたとき、 SqlSession をインジェクト対象にすると罠にはまるようにバグを 埋め込みやすくなる。これは、以下2点から言える。 (1) close() を実行した SqlSession インスタンスは使えない。 Google guice のInjector で…
Java ソース中、import 文に次のようなエラーが発生、 「・・・は、必須ライブラリ jdk1.6.xx/jre/lib/rt.jar で制限されているためアクセスできません。」 こういう場合、次の対処を。 Javaのビルドパスで、JREシステムライブラリのツリーを開いて、アクセ…
Google collections Library の MapMaker は多くの課題を解決してくれる気がする。 ConcurrentMap<String,String> map = new MapMaker() .concurrencyLevel(8) .expiration(20,TimeUnit.SECONDS) .makeMap(); とすれば、mapに格納したものは、20秒で消滅、複数スレッド同</string,string>…
Mapの比較、Google Collection Library には、こんな便利なものもある。 Map<String,Integer> map1 = new HashMap<String,Integer>(); map1.put("a",1); map1.put("b",2); map1.put("c",3); Map<String,Integer> map2 = new HashMap<String,Integer>(); map2.put("A",10); map2.put("b",2); map2.put("c",30); map2.put("d",40</string,integer></string,integer></string,integer></string,integer>…
iBATIS3 beta10 を試して判ったこと。 トランザクションを使う場合にBatchSQL では、更新はできない。 org.apache.ibatis.transaction.Transaction インターフェースを見てわかるとおり getConnection() commit() rollback() close() のメソッドあるだけで、…
Google collection LibraryのImmutableMapをどう使いこなすか? Mapを戻り値とするメソッド内で生成することだろう。とにかく動作を見てみようと思う。 Map<String,Integer> map = new ImmutableMap.Builder<String,Integer>() .put("a",10) .put("b",20) .build(); for(String key : map.key</string,integer></string,integer>…
テーブルの情報を取り出すのに、Oracle では、 USER_TAB_COLUMNS や、USER_TABLES などを使うが、 MySQL では、、、 show tables で、table_name カラム情報を見たければ、、 SELECT * FROM information_schema.columns WHERE table_name = 'テーブル名' テ…
挿入時制限付きコレクション(1)の続き、挿入時、applyメソッドの戻り値 boolean に沿って コレクションの生成の実装は以下のとおり。 import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.HashMap;…
挿入時制限付きコレクション生成の提供を整理することにした。 public interface ListPredicate<E>{ public boolean apply(E e); } → ArrayList 生成に使用する Predicate public interface MapPredicate<K,V>{ public boolean apply(K k,V v); } → HashMap 生成に使</k,v></e>…
iBATIS のSQL記述でテーブル名やORDER BY句などを動的にする場合、 $ 文字で変数を書く! つまりシングルクォート括りを回避する。 SQLMap XML に書く SQL は、例えば、、、 iBATIS 2 系では、 SELECT * FROM $tblname$ WHERE price = #price# ORDER BY sale…
非Windows で動作するJava main() クラスの為に、補助するものを用意してみた。 困ったことに、Eclipse での javaw 実行では、SIGTERM シグナル送信して受け取らせることができない。 つまり Runtime.getRuntime().addShutdownHook で登録したスレッドの動作…
Google Collection Library のCollection2 filter で注意すべきは、filter 機能が動作しているタイミングである。 filter の戻り値である Collection のメソッド実行時に働くことに気をつけなければならない。 これは、次のようなサンプルコードを様々に動か…
以前、Google collection Library に感動したことを下記の投稿のとおり書いたが、 http://blog.zaq.ne.jp/oboe2uran/article/258/ ここで書いた、Collections2 の filter や、transform の実行は、対象 Collection に値を 追加する前に記述しても良い!!(…
JVM起動等、スクリプト中でCLASSPATH設定をfor文で書く場合、環境によってまとめると。 --------------- Windows ----------------- set PROJECT_HOME=C:\AAA set CLASSPATH=%PROJECT_HOME%\resource for %%i in (%PROJECT_HOME%\lib\*.jar) do call :setpat…