入門記11:動かしてみ・・・ようと思ったけど挫折。
今回は凄く長いです。
なぜならコードがいっぱいなので。
And-Split、And-Joinを使ってみましたが、これを既存の手法で実装するとどうなるか?にトライしてみます。(ぶり脳に侵される前にこういう事をしておかないと、ぶり脳になってしまった後でこういうコードを書こうとするとジンマシンが出る身体になるとかならないとか)
仕様を整理すると・・・
- 文書を登録できる
- 登録された文書は公開される
- 公開中の文書が公開を終える際、印刷指示を受けてから公開を終了する
- 印刷指示をされた文書は、印刷をされて、かつそれが確認されたら公開終了
ありそうでなさそうな感じですね。
これを「Buri使用禁止」というルールで同じようにしようとすると。。。
まずDto。
@Bean(table="OldDocument") public class OldDocumentDto { /** * S2DaoのIDアノテーション。 */ public static final String id_ID = "sequence, sequenceName=documentID"; private long id; private String title; private String content; private int docStatus; private int printStatus; private int deleteFlag; private Date createDate; private String createUser; private Date updateDate; private String updateUser; /** * コンストラクタ。 */ public OldDocumentDto() { ; } /** * コンストラクタ。 * <p> * doStatusとprintStatusはそれぞれ初期値で生成される。 * </p> * @param title * @param content */ public OldDocumentDto(String title, String content) { this.title = title; this.content = content; this.docStatus = 0; this.printStatus = 0; } // toString()メソッド割愛 // setter/getter割愛 }
以前使っていたサンプルと異なり、いくつかプロパティを増やしています。
文書のステータス、印刷のステータス、削除フラグ、レコードの登録日と登録ユーザ、更新日と更新ユーザ。業務システム開発の現場で見られるテッパンな構成なのではないか、と思います。
続いてDao。
@S2Dao(bean=OldDocumentDto.class) public interface OldDocumentDao { @Query(value = "id=?") OldDocumentDto selectById(long id); List<OldDocumentDto> selectAll(); List<OldDocumentDto> selectByDocStatus(int docStatus); List<OldDocumentDto> selectByPrintStatus(int printStatus); long selectAllCount(); void insert(OldDocumentDto oldDocument); void update(OldDocumentDto oldDocument); @Query(value = "id=?") void deleteById(long id); }
検索系のメソッドが多くなりました。
そして、Service(Seasar2 Containerの使用を前提としてインターフェイスだけ。。。)
public interface OldDocManageService { public void regist(String title, String content); public void releaseDocument(OldDocumentDto doc); public void closeDocument(OldDocumentDto doc); public void printDocument(long id); public void printExecute(long id); }
そして最後にServiceの実装。
public class OldDocManageServiceImpl implements OldDocManageService { private OldDocumentDao dao; public OldDocManageServiceImpl() { } @Override public void closeDocument(OldDocumentDto doc) { // TODO Auto-generated method stub } @Override public void printDocument(long id) { // TODO Auto-generated method stub // ここまで書いてクラスを消すw
激しくめんどい><