Work-table JPA model
authorindvdum
Wed, 17 Aug 2011 17:03:37 +0300
changeset 856338d6d58c2
parent 7 aaae4f8055f4
child 9 6a02cfcc7460
Work-table JPA model
src/main/java/ru/indvdum/mywork/openjpa/model/Work.java
src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java
src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java
src/main/resources/META-INF/persistence.xml
     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"/>