Javaへの理解を深めるための勉強を本日からしていきます。
初めは試しにCommonsプロジェクトのLangのソースを見てみました。

はっきり言って何か全然よくわからない!!!…

普通にむかついただけで終了してしまった。

先が思いやられるけどゆっくり頑張っていこうと思う………あんま自信はないけど

vimのコマンドを新しく覚えたのでメモメモメモ

■ウィンドウを最大化するコマンド
 :simalt ~x

 それを元に戻す
 :simalt ~r

■新しいディレクトリ作成
 :mkdir ”作成したいディレクトリ名”

■小文字を大文字に変換する
 変換したい文字の上にカーソルをもってきて
 ~チルダ

■数字を1ずつ増やす
 対象数字の上にカーソルをもってきて
 [Ctrl-a]
 反対に、数字を減らしたい時には、[Ctrl-x])

■マクロを登録
 :qa ← aって言うマクロを記録開始しますよーって宣言するコマンド

 この状態から何かアクションをするとマクロに記録されていく

 :qってやるとマクロの記録終了

 んで登録したいマクロを実行したい時は

 :@a でOK!

[サンプルファイル]
1から1000まで連続した数値を入力する

:i1[ESC]qaYp[Ctrl+a]q998@a

・i1    入力モードで1を入力
・[ESC]   コマンドモードに戻る
・qa    aってマクロ記録開始
・Yp    1をコピー(Y:ヤンク)して張り付ける(p:ペースト)
・[Ctrl+a] 数値を1ずつ増やす
・q     マクロ記録終了
・998@a   登録したマクロaを998回実行

って意味

Tapestry4からpageファイルにproperty記述しなくてもよくなりました。
Javaファイルでabstractのsetter/getterを書いておけばそこを参照してくれます。
それに伴い永続化記述もJavaファイルで設定できます。


[Javaファイル]
 
@Persist
 public abstract String getHoge();

public abstract void setHoge(String val);

上記のようにPersistアノテーションを使用することにより永続化が可能になっています。
 
これをpageファイルで書くと
[pageファイル]
 

と同じです。

vimJavaのsetter/getterメソッドを自動生成してくれるプラグインがあるみたいなんでメモ!

インストール方法
①vimonlineのscriptんとこにある「java_getset.vim」をダウンロード
 これ↓
 http://vim.sourceforge.net/scripts/script.php?script_id=490

②ダウンロードしたファイルをvimのインストールフォルダにある
「%VIM_HOME%/vimfiles/plugin/」の配下にコピーすんだけ!


使用方法
 ファイルタイプがjavaの時で
 
 [javaファイル]
 public class Hoge {
private String test1;
private boolean isTest2;


}

 みたいな感じの時にsetter/getterを作成したい変数の上にカーソルを持ってきて
 コマンド
  \b → setter/getterどちらも作成する
\g → getterのみ作成
\s → setterのみ作成
 を入力すると対応するメソッドが自動的にできる

Tigerから実装された列挙型のクラスjava.lang.Enumを使ってみる

Enum型は安全な列挙型を実現するためのクラスで、このクラス型は言語仕様にも組み込まれている。

Enum型もJava にとっては他のクラスと同様に Object 型を基本とするクラスにすぎません。
でも、Enum型は言語仕様に組み込まれているため、Enumクラスを継承して同行するような
面倒なコードを記述する必要ない。
enum キーワードに続いて定数を列挙するだけで、新しい列挙型を宣言することができます。


public enum HogeEnum {
   …
   …
}

こんな感じ!

Enum型のメンバは、数値とかの定数じゃなく、全てが static な Enum 型を実装するオブジェクトです。
Enum オブジェクトは内部に name() メソッドを保有し、自分自身を識別する文字列を返す。
同様に、オーバーライドされない限り toString() メソッドが返す値も name() メソッドと同じー !

ex)
[Enumクラス]
public enum HogeEnum {
HOGE_TEST1,HOGE_TEST2,HOGE_TEST3,HOGE_TEST4,HOGE_TEST5
}

[Mainクラス]
public class Test {
public static void main(String args[]) {
System.out.println(HogeEnum.HOGE_TEST1);
System.out.println(HogeEnum.HOGE_TEST2);
System.out.println(HogeEnum.HOGE_TEST3);
System.out.println(HogeEnum.HOGE_TEST4);
System.out.println(HogeEnum.HOGE_TEST5);
}
}

[実行結果]
HOGE_TEST1
HOGE_TEST2
HOGE_TEST3
HOGE_TEST4
HOGE_TEST5

自身のname()メソッドにより上記のように値が返ってきて表示される。

JakartaのパッケージのCommons BeanUtilsクラスを使用

■サンプルケース■

[Bean]
public class hoge implements Serializable {

private String value1;
private String value2;
private String value3;
private String value4;
private String value5;

/**
* @return value1 を戻します。
*/
public String getValue1() {
return value1;
}

/**
* @param value1 設定する value1。
*/
public void setValue1(String value1) {
this.value1 = value1;
}

/**
* @return value2 を戻します。
*/
public String getValue2() {
return value2;
}

/**
* @param value2 設定する value2。
*/
public void setValue2(String value2) {
this.value2 = value2;
}

/**
* @return value3 を戻します。
*/
public String getValue3() {
return value3;
}

/**
* @param value3 設定する value3。
*/
public void setValue3(String value3) {
this.value3 = value3;
}

/**
* @return value4 を戻します。
*/
public String getValue4() {
return value4;
}

/**
* @param value4 設定する value4。
*/
public void setValue4(String value4) {
this.value4 = value4;
}

/**
* @return value5 を戻します。
*/
public String getValue5() {
return value5;
}

/**
* @param value5 設定する value5。
*/
public void setValue5(String value5) {
this.value5 = value5;
}
}

上記のクラスhogeのsetterにリストから取得した値を順にセットしたい時

hogeにあるメソッド名    : methodName (String)
セットしたい値格納リスト  : valueList (ArrayList)

for (int i = 0; i < valueList.size(); i++) {
String methodName = new String();

methodName = "value" + String.valueOf(i);

PropertyUtils.setProperty(hoge,methodName,(String)valueList.get(i));

}

赤字部分のように書くだけでhogeの指定したメソッド名に当てはまるsetterメソッドに値がセットされる

要は
hoge.setValue1(value);
hoge.setValue2(value);
hoge.setValue3(value);
してるのと同じになる。

今回のはメソッド名に単純に連続した数値がついてるからメソッド名を作るんが楽チンやし便利でした。
  

Tapestryの公式HPのコンポーネント説明部分のメモ

例はPageLinkコンポーネントの仕様部分

①Body: allowed

②Informal parameters: allowed

③Reserved parameters: href


上記の記述の意味を簡単に説明


①Bodyとはタグで囲まれた中の部分をいうらしい
 ex):
[HTMLファイル]
<a jwcid="hoge" target="_blank">あいうえお</a>

   「あいうえお」の部分がBodyに相当する
   
PageLinkの場合これがallowedになっているのでHTMLファイルでの記述が生きたまま表示される
   これがremovedになっているコンポーネントはHTMLファイルで何か書いててもTapestryのエンジンが
   自動的に削除しちゃう!!

②Informal parameters
 コンポーネントのParametersには定義されてなくても独自のパラメータを設定したい!
 allowedの場合それをPageファイルで設定してもいいよーって意味っぽい!!

 例えば
  GenericLinkにはtargetっていうパラメータはないんだけどtartgetパラメータをつけてみる!
 
[Pageファイル]
  

   

 [HTMLファイル]
 <a jwcid="hoge" >テスト</a>
  
こーやって書いたら
    [実際ブラウザで表示されるソース]
    <a href="http://test.co.jp#001" target="_blank" >テスト</a>

ってなるみたい。

③はとりあえず保留…