# HG changeset patch # User indvdum # Date 1313499290 -10800 # Node ID aaae4f8055f4ab3b06b05681675072d8f20bc1ce # Parent a0d8aa779e50e63e6832f28556f228252d3951ea More JPA objects diff -r a0d8aa779e50 -r aaae4f8055f4 pom.xml --- a/pom.xml Tue Aug 16 09:09:18 2011 +0300 +++ b/pom.xml Tue Aug 16 15:54:50 2011 +0300 @@ -9,7 +9,7 @@ 6.5.0 2.1.1 10.1.0.5.0 - 2.0.1 + 2.1.1 @@ -106,6 +106,27 @@ + + org.codehaus.mojo + exec-maven-plugin + 1.2 + + + + exec + + + + + java + + -classpath + + -javaagent:${settings.localRepository}/org/apache/openjpa/openjpa/${openjpa.version}/openjpa-${openjpa.version}.jar + ru.indvdum.mywork.MyWork + + + @@ -128,6 +149,12 @@ com.vaadin.addon jpacontainer-addon-agpl-3.0 1.2.0 + + + javax.persistence + persistence-api + + com.google.gwt diff -r a0d8aa779e50 -r aaae4f8055f4 src/main/java/ru/indvdum/mywork/openjpa/model/Task.java --- a/src/main/java/ru/indvdum/mywork/openjpa/model/Task.java Tue Aug 16 09:09:18 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/Task.java Tue Aug 16 15:54:50 2011 +0300 @@ -32,6 +32,18 @@ public Task(){ } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof Task)) + return false; + final Task other = (Task) obj; + return (this.id == other.id || (this.id != null && this.id.equals(other.id))); + } public Integer getId() { return id; diff -r a0d8aa779e50 -r aaae4f8055f4 src/main/java/ru/indvdum/mywork/openjpa/model/Work.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java Tue Aug 16 15:54:50 2011 +0300 @@ -0,0 +1,114 @@ +package ru.indvdum.mywork.openjpa.model; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.ManyToOne; +import javax.persistence.MapsId; +import javax.persistence.Table; + +/** + * @author indvdum + * 16.08.2011 13:55:51 + * + */ +@Entity +@IdClass(WorkId.class) +@Table(name = "WORK") +public class Work implements IDatabaseObject { + + private static final long serialVersionUID = 7138260708537798813L; + +// @Id +// @PrimaryKeyJoinColumn +// @Column(name = "DAYID", nullable = false) +// private Integer dayId = null; +// +// @Id +// @PrimaryKeyJoinColumn +// @Column(name = "TASKID", nullable = false) +// private Integer taskId = null; + + @Column(name = "HOURS") + private Float hours = null; + + @Column(name = "RESULT") + private String result = null; + + @Id + @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST}) + Day day = null; + + @Id + @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST}) + Task task = null; + + public Work(){ + + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof Work)) + return false; + final Work other = (Work) obj; + return ( + this.day == other.day + && this.task == other.task + || ( + this.day != null + && this.day.equals(other.day) + && this.task != null + && this.task.equals(other.task) + ) + ); + } + +// public Integer getDayId() { +// return dayId; +// } +// +// public void setDayId(Integer dayId) { +// this.dayId = dayId; +// } +// +// public Integer getTaskId() { +// return taskId; +// } +// +// public void setTaskId(Integer taskId) { +// this.taskId = taskId; +// } + + public Float getHours() { + return hours; + } + + public void setHours(Float hours) { + this.hours = hours; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public Day getDay() { + return day; + } + + public void setDay(Day day) { + this.day = day; + } + +} diff -r a0d8aa779e50 -r aaae4f8055f4 src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java Tue Aug 16 15:54:50 2011 +0300 @@ -0,0 +1,34 @@ +package ru.indvdum.mywork.openjpa.model; + +public class WorkId{ + + public Integer day; + public Integer task; + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof WorkId)) + return false; + final WorkId other = (WorkId) obj; + return ( + this.day == other.day + && this.task == other.task + || ( + this.day != null + && this.day.equals(other.day) + && this.task != null + && this.task.equals(other.task) + ) + ); + } + + @Override + public int hashCode() { + return day ^ task; + } + +} diff -r a0d8aa779e50 -r aaae4f8055f4 src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java --- a/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Aug 16 09:09:18 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Aug 16 15:54:50 2011 +0300 @@ -7,13 +7,21 @@ import javax.persistence.Query; import ru.indvdum.mywork.openjpa.model.Day; +import ru.indvdum.mywork.openjpa.model.Task; +import ru.indvdum.mywork.openjpa.model.Work; import com.vaadin.Application; import com.vaadin.addon.jpacontainer.JPAContainer; import com.vaadin.addon.jpacontainer.provider.LocalEntityProvider; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.Button; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.TabSheet; import com.vaadin.ui.Table; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; /** * @author indvdum @@ -27,21 +35,45 @@ Window window = new Window(); setMainWindow(window); - VerticalLayout vl = new VerticalLayout(); - window.setContent(vl); - - Query query = EM.createQuery("select x from " + Day.class.getName() + " x"); + Query query = EM.createQuery("select x from " + Work.class.getName() + " x"); List list = query.getResultList(); list.size(); -// LocalEntityProvider entityProvider = new LocalEntityProvider(Day.class); -// entityProvider.setEntityManager(EM); -// JPAContainer dayContainer = new JPAContainer(Day.class); -// dayContainer.setEntityProvider(entityProvider); -// -// Table dayTable = new Table(); -// dayTable.setSizeFull(); -// dayTable.setContainerDataSource(dayContainer); -// vl.addComponent(dayTable); + TabSheet tabSheet = new TabSheet(); + tabSheet.setSizeFull(); + window.setContent(tabSheet); + + VerticalLayout vlMain = new VerticalLayout(); + vlMain.setMargin(true); + vlMain.setSpacing(true); + tabSheet.addTab(vlMain, "Main page", null); + + LocalEntityProvider dayProvider = new LocalEntityProvider(Day.class); + dayProvider.setEntityManager(EM); + JPAContainer dayContainer = new JPAContainer(Day.class); + dayContainer.setEntityProvider(dayProvider); + + final Table dayTable = new Table(); + dayTable.setSelectable(true); + dayTable.setEditable(false); + dayTable.setImmediate(true); + dayTable.setSizeFull(); + dayTable.setContainerDataSource(dayContainer); + vlMain.addComponent(dayTable); + vlMain.setExpandRatio(dayTable, 1f); + + LocalEntityProvider taskProvider = new LocalEntityProvider(Task.class); + taskProvider.setEntityManager(EM); + JPAContainer taskContainer = new JPAContainer(Task.class); + taskContainer.setEntityProvider(taskProvider); + + Table taskTable = new Table(); + taskTable.setSelectable(true); + taskTable.setEditable(false); + taskTable.setImmediate(true); + taskTable.setSizeFull(); + taskTable.setContainerDataSource(taskContainer); + vlMain.addComponent(taskTable); + vlMain.setExpandRatio(taskTable, 1f); } } diff -r a0d8aa779e50 -r aaae4f8055f4 src/main/resources/META-INF/persistence.xml --- a/src/main/resources/META-INF/persistence.xml Tue Aug 16 09:09:18 2011 +0300 +++ b/src/main/resources/META-INF/persistence.xml Tue Aug 16 15:54:50 2011 +0300 @@ -1,10 +1,14 @@ - + org.apache.openjpa.persistence.PersistenceProviderImpl ru.indvdum.mywork.openjpa.model.Day + ru.indvdum.mywork.openjpa.model.Task + ru.indvdum.mywork.openjpa.model.Work