# HG changeset patch # User indvdum # Date 1313589817 -10800 # Node ID 56338d6d58c2d93a391128c7a914187c1c52ab5c # Parent aaae4f8055f4ab3b06b05681675072d8f20bc1ce Work-table JPA model diff -r aaae4f8055f4 -r 56338d6d58c2 src/main/java/ru/indvdum/mywork/openjpa/model/Work.java --- a/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java Tue Aug 16 15:54:50 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java Wed Aug 17 17:03:37 2011 +0300 @@ -1,11 +1,9 @@ package ru.indvdum.mywork.openjpa.model; -import javax.persistence.CascadeType; import javax.persistence.Column; +import javax.persistence.EmbeddedId; 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; @@ -16,21 +14,13 @@ * */ @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; + @EmbeddedId + WorkId id; @Column(name = "HOURS") private Float hours = null; @@ -38,13 +28,13 @@ @Column(name = "RESULT") private String result = null; - @Id - @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST}) - Day day = null; + @MapsId("dayId") + @ManyToOne(fetch = FetchType.EAGER) + private Day day = null; - @Id - @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST}) - Task task = null; + @MapsId("taskId") + @ManyToOne(fetch = FetchType.EAGER) + private Task task = null; public Work(){ @@ -71,22 +61,6 @@ ); } -// 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; } @@ -111,4 +85,20 @@ this.day = day; } + public Task getTask() { + return task; + } + + public void setTask(Task task) { + this.task = task; + } + + public String getDayName() { + return getDay().getDay().toString(); + } + + public String getTaskName() { + return getTask().getName(); + } + } diff -r aaae4f8055f4 -r 56338d6d58c2 src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java --- a/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java Tue Aug 16 15:54:50 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java Wed Aug 17 17:03:37 2011 +0300 @@ -1,9 +1,17 @@ package ru.indvdum.mywork.openjpa.model; +import javax.persistence.Embeddable; + +/** + * @author indvdum + * 17.08.2011 15:00:35 + * + */ +@Embeddable public class WorkId{ - public Integer day; - public Integer task; + public Integer dayId; + public Integer taskId; @Override public boolean equals(Object obj) { @@ -15,20 +23,20 @@ return false; final WorkId other = (WorkId) obj; return ( - this.day == other.day - && this.task == other.task + this.dayId == other.dayId + && this.taskId == other.taskId || ( - this.day != null - && this.day.equals(other.day) - && this.task != null - && this.task.equals(other.task) + this.dayId != null + && this.dayId.equals(other.dayId) + && this.taskId != null + && this.taskId.equals(other.taskId) ) ); } @Override public int hashCode() { - return day ^ task; + return dayId ^ taskId; } } diff -r aaae4f8055f4 -r 56338d6d58c2 src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java --- a/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Aug 16 15:54:50 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Wed Aug 17 17:03:37 2011 +0300 @@ -35,15 +35,12 @@ Window window = new Window(); setMainWindow(window); - Query query = EM.createQuery("select x from " + Work.class.getName() + " x"); - List list = query.getResultList(); - list.size(); - TabSheet tabSheet = new TabSheet(); tabSheet.setSizeFull(); window.setContent(tabSheet); VerticalLayout vlMain = new VerticalLayout(); + vlMain.setSizeFull(); vlMain.setMargin(true); vlMain.setSpacing(true); tabSheet.addTab(vlMain, "Main page", null); @@ -53,12 +50,18 @@ JPAContainer dayContainer = new JPAContainer(Day.class); dayContainer.setEntityProvider(dayProvider); - final Table dayTable = new Table(); + Table dayTable = new Table(); dayTable.setSelectable(true); dayTable.setEditable(false); dayTable.setImmediate(true); dayTable.setSizeFull(); dayTable.setContainerDataSource(dayContainer); + dayTable.setVisibleColumns(new String[]{ + "day", + "startWork", + "endWork", + "hours", + }); vlMain.addComponent(dayTable); vlMain.setExpandRatio(dayTable, 1f); @@ -73,7 +76,33 @@ taskTable.setImmediate(true); taskTable.setSizeFull(); taskTable.setContainerDataSource(taskContainer); + taskTable.setVisibleColumns(new String[]{ + "name", + "description", + }); + taskTable.setColumnWidth("description", 300); vlMain.addComponent(taskTable); vlMain.setExpandRatio(taskTable, 1f); + + LocalEntityProvider workProvider = new LocalEntityProvider(Work.class); + workProvider.setEntityManager(EM); + JPAContainer workContainer = new JPAContainer(Work.class); + workContainer.setEntityProvider(workProvider); + + Table workTable = new Table(); + workTable.setSelectable(true); + workTable.setEditable(false); + workTable.setImmediate(true); + workTable.setSizeFull(); + workTable.setContainerDataSource(workContainer); + workTable.setVisibleColumns(new String[]{ + "dayName", + "taskName", + "hours", + "result", + }); + workTable.setColumnWidth("result", 200); + vlMain.addComponent(workTable); + vlMain.setExpandRatio(workTable, 1f); } } diff -r aaae4f8055f4 -r 56338d6d58c2 src/main/resources/META-INF/persistence.xml --- a/src/main/resources/META-INF/persistence.xml Tue Aug 16 15:54:50 2011 +0300 +++ b/src/main/resources/META-INF/persistence.xml Wed Aug 17 17:03:37 2011 +0300 @@ -9,6 +9,7 @@ ru.indvdum.mywork.openjpa.model.Day ru.indvdum.mywork.openjpa.model.Task ru.indvdum.mywork.openjpa.model.Work + ru.indvdum.mywork.openjpa.model.WorkId