2012年8月26日日曜日

AutoItを利用して定期的に処理を実行する

あるbatファイルの処理を10分に一回実行させたいなと思ったのですが、
標準のDOSコマンドではそれらしきものがなかったのでAutoItを利用してやってみた


下記がサンプルです。 10分に1回exec.batを起動するというのを100回繰り返す というサンプルです。 SW_HIDEを指定しているのは、画面を出したくないためです。

For $i = 1 to 100 Step 1
RunWait('exec.bat','.',@SW_HIDE)
sleep(1000*60*10)
Next
MsgBox(0, "情報","ループ終了")

2012年7月22日日曜日

GWTのCellTableで行選択をする

GWTのCellTableで行選択をする方法。 SelectionModelをCellTableに割り当てるという方法をとる
final SelectionModel gsm=new SingleSelectionModel();
celtable.setSelectionModel(gsm);
もしも複数選択可能なタイプならばSingleSelectionModelではなく MultiSelectionModelを利用する。
final SelectionModel gsm=new MultiSelectionModel();
celtable.setSelectionModel(gsm);
その後、プログラム内で選択行にするには下記のような感じになる。
//giはCellTableに表示されたオブジェクトをさします。
gsm.setSelected(gi, true);

GWTで終了時にメッセージを出す

GWTで終了時(またはページ移動時)にメッセージを出す方法のサンプル たとえば、変更を保存する前に終了させてしまった場合にメッセージを出すような場合に 下記のように書く。
 Window.ClosingHandler  closingHandler = new Window.ClosingHandler(){
   @Override
   public void onWindowClosing(ClosingEvent event) {
     if (isModified()){
       event.setMessage("変更した内容が保存されていません。");
     }else{
       event.setMessage(null);
     }
           
   };
 };
Window.addWindowClosingHandler(closingHandler);

GWT Cell Tableで値を直接編集するときの扱い

GWT Cell Tableを用いたときEditTextCellを用いると
Cell上で直接編集できるようになる。
ここで編集した値をオブジェクトに更新を書けるためには、FieldUpdaterという仕組みを用いる必要がある。

サンプルとしては下記のように記述することになる


//CellTableにカラムを追加する。
Column col = new Column(new EditTextCell()) {
        @Override
        public String getValue(GridInfo object) {
                return object.getColValue();
        }
};
dataGrid.addColumn(col, "カラム");
//追加したカラムにFieldUpdaterを設定する。
col.setFieldUpdater(new FieldUpdater() {
        @Override
        public void update(int index, GridInfo object, String value) {
           object.setColValue(value);
        }
});
これでCellTableに対応するオブジェクトのGridInfoに値をセットすることができる。

2011年10月22日土曜日

SVNWCClientの利用方法

SVNkitの使用方法がよく分からず今までよく知らなかったのだけど、

SVNWCClientあたりにというクラスを利用すると、SVNクライアントと
同じような操作ができるということを知った。

例えば、最新のSVNの最終更新者を表示する場合には、下記のような感じで
書けばいける。



SVNInfo info = client.doInfo(new File(filePath),SVNRevision.HEAD);
SVNWCClient client = new SVNWCClient((ISVNAuthenticationManager)null,null);
System.out.println(info.getAuthor());

他にもSVNBasicClientあたりを継承しているクラスを利用すると他にも
いろいろなことができそうな感じです。
http://svnkit.com/kb/javadoc/org/tmatesoft/svn/core/wc/SVNBasicClient.html


今度いろいろと試してみることにしよう。

ちなみに、現在のSVNKit (1.3.6.1)では、まだSubversion 1.7.0には未対応で
現在開発中とのこと。

http://svnkit.com/download.php

11月にリリース予定とのことなので、こちらも対応したら試してみようと思う。


2011年7月26日火曜日

GWTでURLのパラメータの取得

GWTでURLのパラメータの取得ってどうやるのかと
調べていたら意外に簡単に出来ることがわかった。


Window.Locationというクラスを利用すれば出来る。

Location.getParameter(”val”)

と書けば、

http://hoge/?val=xxxx

というようなURLのvalの値を取得することが出来る。

2011年7月25日月曜日

GWTのログ機能

GWTにはログ機能がある。
それをいじってみた。
本家のドキュメントはこちら。

http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html


java.util.loggingクラスをエミュレートしたログクラスが用意されており、
クライアント側、サーバ側の両方にログを出力することが出来るようです。

手順は簡単で、下記の2ポイントだけ。

.gwt.xmlファイルに下記の記述の追加。

<inherits name="com.google.gwt.logging.Logging"/>

 <set-property name="gwt.logging.logLevel" value="SEVERE"/>
 <set-property name="gwt.logging.enabled" value="FALSE"/> 
 <set-property name="gwt.logging.consoleHandler" value="DISABLED"/>


ログハンドラの種類は、
SystemLogHandler
DevelopmentModeLogHandler
ConsoleLogHandler
FirebugLogHandler
PopupLogHandler
SimpleRemoteLogHandler
などがあり、必要に応じてENABLE,DISABLEを設定する。


ソースには、通常の java.util.loggingクラスを利用した方法と同様に記述
 Logger logger = Logger.getLogger("NameOfYourLogger");
 logger.log(Level.SEVERE, "ログ");


SimpleRemoteLogHandler をENABLEにするとサーバ側にログが記録されるようになる。

これをこのまま実行するとサーブレットが定義されていないというようなエラーが
出てしまうので、web.xmlにログ記録用のサーブレットを定義しておく必要がある。

< servlet >
< servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl </servlet-class > 
< servlet-name >logger < /servlet-name >
< /servlet >
< servlet-mapping >
< servlet-name>logger </servlet-name >
< url-pattern>/(ここは、環境によって変更する)/remote_logging </url-pattern >
< /servlet-mapping >