2012年3月9日金曜日

自社用業務システムを簡単に作ってみる AIR+BlazeDS+Spring その5

JDOもOneToManyが必要なんだ...

OneToManyに難癖をつけて、JPAからJDOに変えましたが、JDOでもOneToManyが必要のようです。腹をくくるしかないようですね。

SiteMaking.java
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
public class SiteMaking implements IWork,Serializable{
	private static final long serialVersionUID = -2668621914571969922L;
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;
	@Persistent
	@Unique
	private String name;
	@Persistent
	private Calendar deliveryDate;
	@Persistent(mappedBy = "siteMaking")
	private List jobs;
	@Persistent
	private String remark;
..

Job.java
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
public class Job implements IJob,Serializable {
	private static final long serialVersionUID = 5763990372991734275L;
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;
	@Persistent
	private String name;
	@Persistent
	private Calendar startDate;
	@Persistent
	private Calendar endDate;
	@Persistent
	@Enumerated(EnumType.STRING)
	private Enum jobStatus;
	@Persistent
	private Calendar lastUpdated;
	@Persistent
	private SiteMaking siteMaking;

そして、DAOですが、前回はとりあえず保存まででしたので、もう少し書き加えてみます。
新規にお仕事を登録する際のメソッドとして、newSiteMakingPersistというものを作ってみました。

SiteMakingDAO.java
public interface SiteMakingDAO {
	public void newSiteMakingPersist(SiteMaking siteMaking);
	public List getSiteMakingNow();
}

SiteMakingDAOImpl.java 抜粋
public void newSiteMakingPersist(SiteMaking siteMaking){
        PersistenceManager pm = this.persistenceManagerFactory.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        try {
            tx.begin();
   		List list = new ArrayList();
   		for(SiteMakingJob j : SiteMakingJob.values()){
			Job job = new Job(j.toString(),siteMaking);
			list.add(job);
    	}
    	siteMaking.setJobs(list);
            pm.makePersistent(siteMaking);
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
        }
}

クライアント側は、ジョブステータスを一覧から簡単に変えられるようにアイテムレンダラーを作成してみました。
JobItem.mxml


	
だんだんとそれっぽくなってきました。
	
	
	





0 件のコメント:

コメントを投稿