1.1 --- a/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java Tue Aug 16 15:54:50 2011 +0300
1.2 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java Wed Aug 17 17:03:37 2011 +0300
1.3 @@ -1,11 +1,9 @@
1.4 package ru.indvdum.mywork.openjpa.model;
1.5
1.6 -import javax.persistence.CascadeType;
1.7 import javax.persistence.Column;
1.8 +import javax.persistence.EmbeddedId;
1.9 import javax.persistence.Entity;
1.10 import javax.persistence.FetchType;
1.11 -import javax.persistence.Id;
1.12 -import javax.persistence.IdClass;
1.13 import javax.persistence.ManyToOne;
1.14 import javax.persistence.MapsId;
1.15 import javax.persistence.Table;
1.16 @@ -16,21 +14,13 @@
1.17 *
1.18 */
1.19 @Entity
1.20 -@IdClass(WorkId.class)
1.21 @Table(name = "WORK")
1.22 public class Work implements IDatabaseObject {
1.23
1.24 private static final long serialVersionUID = 7138260708537798813L;
1.25
1.26 -// @Id
1.27 -// @PrimaryKeyJoinColumn
1.28 -// @Column(name = "DAYID", nullable = false)
1.29 -// private Integer dayId = null;
1.30 -//
1.31 -// @Id
1.32 -// @PrimaryKeyJoinColumn
1.33 -// @Column(name = "TASKID", nullable = false)
1.34 -// private Integer taskId = null;
1.35 + @EmbeddedId
1.36 + WorkId id;
1.37
1.38 @Column(name = "HOURS")
1.39 private Float hours = null;
1.40 @@ -38,13 +28,13 @@
1.41 @Column(name = "RESULT")
1.42 private String result = null;
1.43
1.44 - @Id
1.45 - @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST})
1.46 - Day day = null;
1.47 + @MapsId("dayId")
1.48 + @ManyToOne(fetch = FetchType.EAGER)
1.49 + private Day day = null;
1.50
1.51 - @Id
1.52 - @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST})
1.53 - Task task = null;
1.54 + @MapsId("taskId")
1.55 + @ManyToOne(fetch = FetchType.EAGER)
1.56 + private Task task = null;
1.57
1.58 public Work(){
1.59
1.60 @@ -71,22 +61,6 @@
1.61 );
1.62 }
1.63
1.64 -// public Integer getDayId() {
1.65 -// return dayId;
1.66 -// }
1.67 -//
1.68 -// public void setDayId(Integer dayId) {
1.69 -// this.dayId = dayId;
1.70 -// }
1.71 -//
1.72 -// public Integer getTaskId() {
1.73 -// return taskId;
1.74 -// }
1.75 -//
1.76 -// public void setTaskId(Integer taskId) {
1.77 -// this.taskId = taskId;
1.78 -// }
1.79 -
1.80 public Float getHours() {
1.81 return hours;
1.82 }
1.83 @@ -111,4 +85,20 @@
1.84 this.day = day;
1.85 }
1.86
1.87 + public Task getTask() {
1.88 + return task;
1.89 + }
1.90 +
1.91 + public void setTask(Task task) {
1.92 + this.task = task;
1.93 + }
1.94 +
1.95 + public String getDayName() {
1.96 + return getDay().getDay().toString();
1.97 + }
1.98 +
1.99 + public String getTaskName() {
1.100 + return getTask().getName();
1.101 + }
1.102 +
1.103 }
2.1 --- a/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java Tue Aug 16 15:54:50 2011 +0300
2.2 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java Wed Aug 17 17:03:37 2011 +0300
2.3 @@ -1,9 +1,17 @@
2.4 package ru.indvdum.mywork.openjpa.model;
2.5
2.6 +import javax.persistence.Embeddable;
2.7 +
2.8 +/**
2.9 + * @author indvdum
2.10 + * 17.08.2011 15:00:35
2.11 + *
2.12 + */
2.13 +@Embeddable
2.14 public class WorkId{
2.15
2.16 - public Integer day;
2.17 - public Integer task;
2.18 + public Integer dayId;
2.19 + public Integer taskId;
2.20
2.21 @Override
2.22 public boolean equals(Object obj) {
2.23 @@ -15,20 +23,20 @@
2.24 return false;
2.25 final WorkId other = (WorkId) obj;
2.26 return (
2.27 - this.day == other.day
2.28 - && this.task == other.task
2.29 + this.dayId == other.dayId
2.30 + && this.taskId == other.taskId
2.31 || (
2.32 - this.day != null
2.33 - && this.day.equals(other.day)
2.34 - && this.task != null
2.35 - && this.task.equals(other.task)
2.36 + this.dayId != null
2.37 + && this.dayId.equals(other.dayId)
2.38 + && this.taskId != null
2.39 + && this.taskId.equals(other.taskId)
2.40 )
2.41 );
2.42 }
2.43
2.44 @Override
2.45 public int hashCode() {
2.46 - return day ^ task;
2.47 + return dayId ^ taskId;
2.48 }
2.49
2.50 }
3.1 --- a/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Aug 16 15:54:50 2011 +0300
3.2 +++ b/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Wed Aug 17 17:03:37 2011 +0300
3.3 @@ -35,15 +35,12 @@
3.4 Window window = new Window();
3.5 setMainWindow(window);
3.6
3.7 - Query query = EM.createQuery("select x from " + Work.class.getName() + " x");
3.8 - List list = query.getResultList();
3.9 - list.size();
3.10 -
3.11 TabSheet tabSheet = new TabSheet();
3.12 tabSheet.setSizeFull();
3.13 window.setContent(tabSheet);
3.14
3.15 VerticalLayout vlMain = new VerticalLayout();
3.16 + vlMain.setSizeFull();
3.17 vlMain.setMargin(true);
3.18 vlMain.setSpacing(true);
3.19 tabSheet.addTab(vlMain, "Main page", null);
3.20 @@ -53,12 +50,18 @@
3.21 JPAContainer<Day> dayContainer = new JPAContainer(Day.class);
3.22 dayContainer.setEntityProvider(dayProvider);
3.23
3.24 - final Table dayTable = new Table();
3.25 + Table dayTable = new Table();
3.26 dayTable.setSelectable(true);
3.27 dayTable.setEditable(false);
3.28 dayTable.setImmediate(true);
3.29 dayTable.setSizeFull();
3.30 dayTable.setContainerDataSource(dayContainer);
3.31 + dayTable.setVisibleColumns(new String[]{
3.32 + "day",
3.33 + "startWork",
3.34 + "endWork",
3.35 + "hours",
3.36 + });
3.37 vlMain.addComponent(dayTable);
3.38 vlMain.setExpandRatio(dayTable, 1f);
3.39
3.40 @@ -73,7 +76,33 @@
3.41 taskTable.setImmediate(true);
3.42 taskTable.setSizeFull();
3.43 taskTable.setContainerDataSource(taskContainer);
3.44 + taskTable.setVisibleColumns(new String[]{
3.45 + "name",
3.46 + "description",
3.47 + });
3.48 + taskTable.setColumnWidth("description", 300);
3.49 vlMain.addComponent(taskTable);
3.50 vlMain.setExpandRatio(taskTable, 1f);
3.51 +
3.52 + LocalEntityProvider workProvider = new LocalEntityProvider(Work.class);
3.53 + workProvider.setEntityManager(EM);
3.54 + JPAContainer<Task> workContainer = new JPAContainer(Work.class);
3.55 + workContainer.setEntityProvider(workProvider);
3.56 +
3.57 + Table workTable = new Table();
3.58 + workTable.setSelectable(true);
3.59 + workTable.setEditable(false);
3.60 + workTable.setImmediate(true);
3.61 + workTable.setSizeFull();
3.62 + workTable.setContainerDataSource(workContainer);
3.63 + workTable.setVisibleColumns(new String[]{
3.64 + "dayName",
3.65 + "taskName",
3.66 + "hours",
3.67 + "result",
3.68 + });
3.69 + workTable.setColumnWidth("result", 200);
3.70 + vlMain.addComponent(workTable);
3.71 + vlMain.setExpandRatio(workTable, 1f);
3.72 }
3.73 }
4.1 --- a/src/main/resources/META-INF/persistence.xml Tue Aug 16 15:54:50 2011 +0300
4.2 +++ b/src/main/resources/META-INF/persistence.xml Wed Aug 17 17:03:37 2011 +0300
4.3 @@ -9,6 +9,7 @@
4.4 <class>ru.indvdum.mywork.openjpa.model.Day</class>
4.5 <class>ru.indvdum.mywork.openjpa.model.Task</class>
4.6 <class>ru.indvdum.mywork.openjpa.model.Work</class>
4.7 + <class>ru.indvdum.mywork.openjpa.model.WorkId</class>
4.8
4.9 <properties>
4.10 <property name="openjpa.ConnectionPassword" value="1"/>