# 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