# HG changeset patch
# User indvdum (gotoindvdum@gmail.com)
# Date 1322059945 -10800
# Node ID 2d6a668325f9d78daf5a88e2ab68d85f6f3a8e6a
# Parent 739f329b9e1e745082e3b6dcc44295f1fb8e7220
Separating projects
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-model/pom.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-model/pom.xml Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,104 @@
+
+
+ 4.0.0
+ ru.indvdum.mywork
+ mywork-model
+ mywork-model
+ jar
+ mywork-model
+
+ ru.indvdum.mywork
+ mywork-all
+ 0.0.1.0-SNAPSHOT
+
+
+
+
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ groovy-eclipse-compiler
+ nowarn
+ true
+
+
+
+ org.codehaus.groovy
+ groovy-eclipse-compiler
+ ${groovy-eclipse-compiler.version}
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ ${build-helper-maven-plugin.version}
+
+
+ add-source
+ generate-sources
+
+ add-source
+
+
+
+
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ openjpa-maven-plugin
+
+ **/model/**/*.class
+ true
+ true
+
+
+
+ enhancer
+ process-classes
+
+ enhance
+
+
+
+
+
+ org.apache.openjpa
+ openjpa
+ ${openjpa.version}
+
+
+
+
+
+
+
+ org.codehaus.groovy
+ groovy-all
+ ${groovy.version}
+
+
+ org.apache.openjpa
+ openjpa
+ ${openjpa.version}
+
+
+ commons-dbcp
+ commons-dbcp
+ ${commons-dbcp.version}
+ test
+
+
+ org.apache.derby
+ derby
+ ${derby.version}
+ test
+
+
+
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-model/src/main/resources/META-INF/persistence.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-model/src/main/resources/META-INF/persistence.xml Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,18 @@
+
+
+
+ org.apache.openjpa.persistence.PersistenceProviderImpl
+ jdbc/MyworkDataSource
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-model/src/main/resources/jndi.properties
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-model/src/main/resources/jndi.properties Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,1 @@
+java.naming.factory.initial=ru.indvdum.logisticssolution.jndi.SimpleContextFactory
\ No newline at end of file
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/pom.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/pom.xml Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,102 @@
+
+ 4.0.0
+ ru.indvdum.mywork
+ mywork-web
+ 0.0.1.0-SNAPSHOT
+ My Work WEB
+
+ ru.indvdum.mywork
+ mywork-all
+ 0.0.1.0-SNAPSHOT
+
+
+ 6.1.26
+ 6.5.0
+ 2.1.1
+ 10.1.0.5.0
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ ${maven-resources-plugin.version}
+
+ UTF-8
+
+
+
+ maven-source-plugin
+
+ true
+
+
+
+ generate-sources
+
+ jar
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2
+
+
+
+ exec
+
+
+
+
+ java
+
+ -classpath
+
+ ru.indvdum.mywork.MyWork
+
+
+
+
+
+
+
+ org.mortbay.jetty
+ jetty
+ ${jetty.version}
+
+
+ com.vaadin
+ vaadin
+ ${vaadin.version}
+
+
+ com.vaadin.addon
+ jpacontainer-addon-agpl-3.0
+ 1.2.0
+
+
+ javax.persistence
+ persistence-api
+
+
+
+
+ com.google.gwt
+ gwt-user
+ ${gwt.version}
+
+
+
+ org.apache.openjpa
+ openjpa
+ ${openjpa.version}
+
+
+
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/MyWork.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/MyWork.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,78 @@
+package ru.indvdum.mywork;
+
+import java.util.Date;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.mortbay.component.LifeCycle;
+import org.mortbay.component.LifeCycle.Listener;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.ServletHolder;
+
+import com.vaadin.terminal.gwt.server.ApplicationServlet;
+
+/**
+ * @author indvdum
+ * 12.08.2011 17:31:37
+ *
+ */
+public class MyWork {
+ public static EntityManagerFactory EMF = null;
+ public static EntityManager EM = null;
+
+ /**
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String[] args) throws Exception {
+ Server server = new Server();
+ Connector connector = new org.mortbay.jetty.nio.SelectChannelConnector();
+ connector.setPort(8080);
+ connector.setMaxIdleTime(720000);
+ server.addConnector(connector);
+
+ Context root = new Context(server, "/", Context.SESSIONS);
+ ServletHolder vaadinServlet = new ServletHolder(new ApplicationServlet());
+ vaadinServlet.setInitParameter("application", "ru.indvdum.mywork.vaadin.MyWorkApplication");
+ root.addServlet(vaadinServlet, "/*");
+
+ server.addLifeCycleListener(new Listener(){
+
+ @Override
+ public void lifeCycleFailure(LifeCycle event, Throwable cause) {
+
+ }
+
+ @Override
+ public void lifeCycleStarted(LifeCycle event) {
+ EMF = Persistence.createEntityManagerFactory("mywork");
+ EM = EMF.createEntityManager();
+ }
+
+ @Override
+ public void lifeCycleStarting(LifeCycle event) {
+
+ }
+
+ @Override
+ public void lifeCycleStopped(LifeCycle event) {
+
+ }
+
+ @Override
+ public void lifeCycleStopping(LifeCycle event) {
+ EM.close();
+ EMF.close();
+ }
+
+ });
+
+ server.start();
+ System.out.println("Jetty server started at " + new Date());
+ }
+
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/Day.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/Day.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,119 @@
+package ru.indvdum.mywork.openjpa.model;
+
+import java.sql.Time;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * @author indvdum
+ * 12.08.2011 17:31:00
+ *
+ */
+@Entity
+@Table(name = "DAYS")
+public class Day implements IDatabaseObject {
+
+ private static final long serialVersionUID = 1471705339524132968L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID", nullable = false)
+ private Integer id = null;
+
+ @Column(name = "DAY")
+ private Date day = null;
+
+ @Column(name = "STARTWORK")
+ private Time startWork = null;
+
+ @Column(name = "ENDWORK")
+ private Time endWork = null;
+
+ @Column(name = "HOURS")
+ private Float hours = null;
+
+ public Day(){
+
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (!(obj instanceof Day))
+ return false;
+ final Day other = (Day) obj;
+ return (getId() == other.getId() || (getId() != null && getId().equals(other.getId())));
+ }
+
+ @Override
+ public int hashCode() {
+ if(getId() != null && getId() != 0)
+ return getId().hashCode();
+ else
+ return super.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return getDateFormatter().format(getDay());
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Date getDay() {
+ return day;
+ }
+
+ public String getFormattedDay() {
+ return toString();
+ }
+
+ public void setDay(Date day) {
+ this.day = day;
+ }
+
+ public Time getStartWork() {
+ return startWork;
+ }
+
+ public void setStartWork(Time startWork) {
+ this.startWork = startWork;
+ }
+
+ public Time getEndWork() {
+ return endWork;
+ }
+
+ public void setEndWork(Time endWork) {
+ this.endWork = endWork;
+ }
+
+ public Float getHours() {
+ return hours;
+ }
+
+ public void setHours(Float hours) {
+ this.hours = hours;
+ }
+
+ protected DateFormat getDateFormatter() {
+ return new SimpleDateFormat("dd.MM.yyyy");
+ }
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/IDatabaseObject.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/IDatabaseObject.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,12 @@
+package ru.indvdum.mywork.openjpa.model;
+
+import java.io.Serializable;
+
+/**
+ * @author indvdum
+ * 12.08.2011 17:31:11
+ *
+ */
+public interface IDatabaseObject extends Serializable {
+
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/Task.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/Task.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,84 @@
+package ru.indvdum.mywork.openjpa.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/**
+ * @author indvdum
+ * 16.08.2011 9:02:32
+ *
+ */
+@Entity
+@Table(name = "TASKS")
+public class Task implements IDatabaseObject {
+
+ private static final long serialVersionUID = -4457948503094306717L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.SEQUENCE)
+ @Column(name = "ID", nullable = false)
+ private Integer id = null;
+
+ @Column(name = "NAME")
+ private String name = null;
+
+ @Column(name = "DESCRIPTION")
+ private String description = null;
+
+ 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 (getId() == other.getId() || (getId() != null && getId().equals(other.getId())));
+ }
+
+ @Override
+ public int hashCode() {
+ if(getId() != null && getId() != 0)
+ return getId().hashCode();
+ else
+ return super.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name != null ? name : "";
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description != null ? description : "";
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,84 @@
+package ru.indvdum.mywork.openjpa.model;
+
+import javax.persistence.Column;
+import javax.persistence.EmbeddedId;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.ManyToOne;
+import javax.persistence.MapsId;
+import javax.persistence.Table;
+
+/**
+ * @author indvdum
+ * 16.08.2011 13:55:51
+ *
+ */
+@Entity
+@Table(name = "WORK")
+public class Work implements IDatabaseObject {
+
+ private static final long serialVersionUID = 7138260708537798813L;
+
+ @EmbeddedId
+ private WorkId id = null;
+
+ @Column(name = "HOURS")
+ private Float hours = null;
+
+ @Column(name = "RESULT")
+ private String result = null;
+
+ @MapsId("dayId")
+ @ManyToOne(fetch = FetchType.EAGER)
+ private Day day = null;
+
+ @MapsId("taskId")
+ @ManyToOne(fetch = FetchType.EAGER)
+ private Task task = null;
+
+ public Work(){
+
+ }
+
+ 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;
+ }
+
+ public Task getTask() {
+ return task;
+ }
+
+ public void setTask(Task task) {
+ this.task = task;
+ }
+
+ public WorkId getId() {
+ return id;
+ }
+
+ public void setId(WorkId id) {
+ this.id = id;
+ }
+
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,42 @@
+package ru.indvdum.mywork.openjpa.model;
+
+import javax.persistence.Embeddable;
+
+/**
+ * @author indvdum
+ * 17.08.2011 15:00:35
+ *
+ */
+@Embeddable
+public class WorkId{
+
+ public Integer dayId;
+ public Integer taskId;
+
+ @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.dayId == other.dayId
+ && this.taskId == other.taskId
+ || (
+ this.dayId != null
+ && this.dayId.equals(other.dayId)
+ && this.taskId != null
+ && this.taskId.equals(other.taskId)
+ )
+ );
+ }
+
+ @Override
+ public int hashCode() {
+ return dayId ^ taskId;
+ }
+
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,243 @@
+package ru.indvdum.mywork.vaadin;
+
+import static ru.indvdum.mywork.MyWork.EM;
+
+import java.sql.Time;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import ru.indvdum.mywork.openjpa.model.Day;
+
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+
+/**
+ * @author indvdum
+ * 23.08.2011 19:11:35
+ *
+ */
+public class EditDayDialog extends Window implements ValueChangeListener, ClickListener {
+
+ private MyWorkApplication myApp = null;
+ private EditState state = null;
+ private Day day = null;
+ private PopupDateField dayStartTime = null;
+ private PopupDateField dayEndTime = null;
+ private PopupDateField dayDate = null;
+ private TextField dayHours = null;
+
+ public EditDayDialog(MyWorkApplication myApp, Day day) throws Exception {
+ super();
+ this.myApp = myApp;
+ if(day == null)
+ state = EditState.CREATE;
+ else
+ state = EditState.EDIT;
+ switch(state){
+ case CREATE:
+ setCaption("Creating new day");
+ day = new Day();
+ Calendar calDay = Calendar.getInstance();
+ calDay.set(Calendar.HOUR_OF_DAY, 0);
+ calDay.set(Calendar.MINUTE, 0);
+ calDay.set(Calendar.SECOND, 0);
+ calDay.set(Calendar.MILLISECOND, 0);
+ day.setDay(calDay.getTime());
+ Calendar calStart = Calendar.getInstance();
+ calStart.set(Calendar.HOUR_OF_DAY, 9);
+ calStart.set(Calendar.MINUTE, 0);
+ calStart.set(Calendar.SECOND, 0);
+ calStart.set(Calendar.MILLISECOND, 0);
+ day.setStartWork(new Time(calStart.getTime().getTime()));
+ Calendar calEnd = Calendar.getInstance();
+ calEnd.set(Calendar.HOUR_OF_DAY, 18);
+ calEnd.set(Calendar.MINUTE, 0);
+ calEnd.set(Calendar.SECOND, 0);
+ calEnd.set(Calendar.MILLISECOND, 0);
+ day.setEndWork(new Time(calEnd.getTime().getTime()));
+ day.setHours(8f);
+ this.day = day;
+ break;
+ case EDIT:
+ setCaption("Editing day");
+ this.day = day;
+ break;
+ }
+ init();
+ }
+
+ private void init(){
+ setModal(true);
+ setWidth("480px");
+ setHeight("300px");
+ VerticalLayout vl = new VerticalLayout();
+ vl.setSizeFull();
+ vl.setSpacing(true);
+ vl.setMargin(true);
+ setContent(vl);
+
+ HorizontalLayout hlDay = new HorizontalLayout();
+ hlDay.setWidth("100%");
+ Label lblDay = new Label("Day:");
+ lblDay.setWidth("100%");
+ hlDay.addComponent(lblDay);
+ hlDay.setExpandRatio(lblDay, 1f);
+ dayDate = new PopupDateField();
+ dayDate.setWidth("100%");
+ dayDate.setInputPrompt("Enter date");
+ dayDate.setResolution(PopupDateField.RESOLUTION_DAY);
+ dayDate.setImmediate(true);
+ dayDate.setValue(day.getDay());
+ dayDate.addListener(this);
+ dayDate.setDateFormat("dd.MM.yyyy");
+ hlDay.addComponent(dayDate);
+ hlDay.setExpandRatio(dayDate, 5f);
+ vl.addComponent(hlDay);
+
+ HorizontalLayout hlStart = new HorizontalLayout();
+ hlStart.setWidth("100%");
+ Label lblStart = new Label("Start time:");
+ lblStart.setWidth("100%");
+ hlStart.addComponent(lblStart);
+ hlStart.setExpandRatio(lblStart, 1f);
+ dayStartTime = new PopupDateField();
+ dayStartTime.setWidth("100%");
+ dayStartTime.setInputPrompt("Enter time");
+ dayStartTime.setResolution(PopupDateField.RESOLUTION_MIN);
+ dayStartTime.setImmediate(true);
+ dayStartTime.setValue(day.getStartWork());
+ dayStartTime.setDateFormat("HH:mm");
+ hlStart.addComponent(dayStartTime);
+ hlStart.setExpandRatio(dayStartTime, 5f);
+ vl.addComponent(hlStart);
+
+ HorizontalLayout hlEnd = new HorizontalLayout();
+ hlEnd.setWidth("100%");
+ Label lblEnd = new Label("End time:");
+ lblEnd.setWidth("100%");
+ hlEnd.addComponent(lblEnd);
+ hlEnd.setExpandRatio(lblEnd, 1f);
+ dayEndTime = new PopupDateField();
+ dayEndTime.setWidth("100%");
+ dayEndTime.setInputPrompt("Enter time");
+ dayEndTime.setResolution(PopupDateField.RESOLUTION_MIN);
+ dayEndTime.setImmediate(true);
+ dayEndTime.setValue(day.getEndWork());
+ dayEndTime.setDateFormat("HH:mm");
+ hlEnd.addComponent(dayEndTime);
+ hlEnd.setExpandRatio(dayEndTime, 5f);
+ vl.addComponent(hlEnd);
+
+ HorizontalLayout hlHours = new HorizontalLayout();
+ hlHours.setWidth("100%");
+ Label lblHours = new Label("Work hours count:");
+ lblHours.setWidth("100%");
+ hlHours.addComponent(lblHours);
+ hlHours.setExpandRatio(lblHours, 1f);
+ dayHours = new TextField();
+ dayHours.setWidth("100%");
+ dayHours.setValue(day.getHours());
+ dayHours.setImmediate(true);
+ hlHours.addComponent(dayHours);
+ hlHours.setExpandRatio(dayHours, 5f);
+ vl.addComponent(hlHours);
+
+ HorizontalLayout hlOk = new HorizontalLayout();
+ hlOk.setSizeFull();
+ Button okButton = new Button();
+ switch(state){
+ case CREATE:
+ okButton.setCaption("Create");
+ break;
+ case EDIT:
+ okButton.setCaption("Save");
+ break;
+ }
+ okButton.addListener((ClickListener)this);
+ hlOk.addComponent(okButton);
+ hlOk.setComponentAlignment(okButton, Alignment.BOTTOM_RIGHT);
+ vl.addComponent(hlOk);
+ vl.setExpandRatio(hlOk, 1f);
+ }
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ Object value = event.getProperty().getValue();
+ Object startValue = dayStartTime.getValue();
+ Object endValue = dayEndTime.getValue();
+ if (value == null || !(value instanceof Date) || !(startValue instanceof Date) || !(endValue instanceof Date)) {
+ getWindow().showNotification("Invalid date entered");
+ } else {
+ Date date = (Date)value;
+ Date start = (Date)startValue;
+ Date end = (Date)endValue;
+ Calendar calStart = Calendar.getInstance();
+ calStart.setTime(start);
+ Calendar calEnd = Calendar.getInstance();
+ calEnd.setTime(end);
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+ calStart.set(Calendar.YEAR, cal.get(Calendar.YEAR));
+ calStart.set(Calendar.MONTH, cal.get(Calendar.MONTH));
+ calStart.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
+ calStart.set(Calendar.SECOND, cal.get(Calendar.SECOND));
+ calStart.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
+ calEnd.set(Calendar.YEAR, cal.get(Calendar.YEAR));
+ calEnd.set(Calendar.MONTH, cal.get(Calendar.MONTH));
+ calEnd.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
+ calEnd.set(Calendar.SECOND, cal.get(Calendar.SECOND));
+ calEnd.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
+ dayStartTime.setValue(calStart.getTime());
+ dayEndTime.setValue(calEnd.getTime());
+ }
+ }
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ Object value = dayDate.getValue();
+ Object startValue = dayStartTime.getValue();
+ Object endValue = dayEndTime.getValue();
+ Object hoursValue = dayHours.getValue();
+ if (
+ value == null
+ || !(value instanceof Date)
+ || !(startValue instanceof Date)
+ || !(endValue instanceof Date)
+ || !(hoursValue.toString().matches("^[0-9]+[\\.]{0,1}[0-9]*"))
+ ) {
+ getWindow().showNotification("Invalid information entered");
+ } else {
+ Date date = (Date)value;
+ Date start = (Date)startValue;
+ Date end = (Date)endValue;
+ Float hours = Float.parseFloat(hoursValue.toString());
+ day.setDay(date);
+ day.setStartWork(new Time(start.getTime()));
+ day.setEndWork(new Time(end.getTime()));
+ day.setHours(hours);
+ try{
+ EM.getTransaction().begin();
+ EM.persist(day);
+ EM.getTransaction().commit();
+ EM.clear();
+ } finally {
+ if(EM.getTransaction().isActive())
+ EM.getTransaction().rollback();
+ }
+ getParent().removeWindow(this);
+ myApp.getDayTable().requestRepaint();
+ }
+ }
+
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditState.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditState.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,11 @@
+package ru.indvdum.mywork.vaadin;
+
+/**
+ * @author indvdum
+ * 23.08.2011 19:11:44
+ *
+ */
+public enum EditState {
+ CREATE,
+ EDIT,
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,116 @@
+package ru.indvdum.mywork.vaadin;
+
+import static ru.indvdum.mywork.MyWork.EM;
+import ru.indvdum.mywork.openjpa.model.Task;
+
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.RichTextArea;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+
+/**
+ * @author indvdum
+ * 23.08.2011 19:11:50
+ *
+ */
+public class EditTaskDialog extends Window implements ClickListener {
+
+ private MyWorkApplication myApp = null;
+ private EditState state = null;
+ private Task task = null;
+ private TextField taskName = null;
+ private RichTextArea taskDescription = null;
+
+ public EditTaskDialog(MyWorkApplication myApp, Task task) throws Exception {
+ super();
+ this.myApp = myApp;
+ if(task == null)
+ state = EditState.CREATE;
+ else
+ state = EditState.EDIT;
+ switch(state){
+ case CREATE:
+ setCaption("Creating new task");
+ task = new Task();
+ task.setName("");
+ task.setDescription("");
+ this.task = task;
+ break;
+ case EDIT:
+ setCaption("Editing task");
+ this.task = task;
+ break;
+ }
+ init();
+ }
+
+ private void init(){
+ setModal(true);
+ setWidth("640px");
+ setHeight("480px");
+ VerticalLayout vl = new VerticalLayout();
+ vl.setSizeFull();
+ vl.setSpacing(true);
+ vl.setMargin(true);
+ setContent(vl);
+
+ HorizontalLayout hlName = new HorizontalLayout();
+ hlName.setWidth("100%");
+ Label lblName = new Label("Name:");
+ lblName.setWidth("100%");
+ hlName.addComponent(lblName);
+ hlName.setExpandRatio(lblName, 1f);
+ taskName = new TextField();
+ taskName.setWidth("100%");
+ taskName.setValue(task.getName());
+ hlName.addComponent(taskName);
+ hlName.setExpandRatio(taskName, 5f);
+ vl.addComponent(hlName);
+
+ taskDescription = new RichTextArea("Description");
+ taskDescription.setValue(task.getDescription());
+ taskDescription.setSizeFull();
+ vl.addComponent(taskDescription);
+ vl.setExpandRatio(taskDescription, 1f);
+
+ HorizontalLayout hlOk = new HorizontalLayout();
+ hlOk.setWidth("100%");
+ Button okButton = new Button();
+ switch(state){
+ case CREATE:
+ okButton.setCaption("Create");
+ break;
+ case EDIT:
+ okButton.setCaption("Save");
+ break;
+ }
+ okButton.addListener((ClickListener)this);
+ hlOk.addComponent(okButton);
+ hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
+ vl.addComponent(hlOk);
+ }
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ task.setName(taskName.getValue().toString());
+ task.setDescription(taskDescription.getValue().toString());
+ try{
+ EM.getTransaction().begin();
+ EM.persist(task);
+ EM.getTransaction().commit();
+ EM.clear();
+ } finally {
+ if(EM.getTransaction().isActive())
+ EM.getTransaction().rollback();
+ }
+ getParent().removeWindow(this);
+ myApp.getTaskTable().requestRepaint();
+ }
+
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,234 @@
+package ru.indvdum.mywork.vaadin;
+
+import static ru.indvdum.mywork.MyWork.EM;
+
+import java.util.Calendar;
+import java.util.List;
+
+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.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.RichTextArea;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.AbstractSelect.Filtering;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+
+/**
+ * @author indvdum
+ * 23.08.2011 19:11:56
+ *
+ */
+public class EditWorkDialog extends Window implements ClickListener {
+
+ private MyWorkApplication myApp = null;
+ private EditState state = null;
+ private Work work = null;
+ private ComboBox workDay = null;
+ private ComboBox workTask = null;
+ private TextField workHours = null;
+ private RichTextArea workResult = null;
+
+ public EditWorkDialog(MyWorkApplication myApp, Work work) throws Exception {
+ super();
+ this.myApp = myApp;
+ if(work == null)
+ state = EditState.CREATE;
+ else
+ state = EditState.EDIT;
+ switch(state){
+ case CREATE:
+ setCaption("Creating new work");
+ work = new Work();
+ work.setHours(0f);
+ work.setResult("");
+ this.work = work;
+ break;
+ case EDIT:
+ setCaption("Editing work");
+ this.work = work;
+ break;
+ }
+ init();
+ }
+
+ private void init(){
+ setModal(true);
+ setWidth("640px");
+ setHeight("480px");
+ VerticalLayout vl = new VerticalLayout();
+ vl.setSizeFull();
+ vl.setSpacing(true);
+ vl.setMargin(true);
+ setContent(vl);
+
+ HorizontalLayout hlDay = new HorizontalLayout();
+ hlDay.setWidth("100%");
+ Label lblDay = new Label("Day:");
+ lblDay.setWidth("100%");
+ hlDay.addComponent(lblDay);
+ hlDay.setExpandRatio(lblDay, 1f);
+ workDay = new ComboBox();
+ workDay.setWidth("100%");
+ workDay.setImmediate(true);
+ workDay.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
+ updateDays("select d from " + Day.class.getName() + " d order by d.day");
+ workDay.addListener(new ValueChangeListener(){
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ Day day = (Day)event.getProperty().getValue();
+ if(day == null)
+ updateTasks("select t from " + Task.class.getName() + " t order by t.id desc");
+ else
+ updateTasks("select t from " + Task.class.getName() + " t where t.id not in (select w.task.id from " + Work.class.getName() + " w where w.day.id = " + day.getId() + ") order by t.id desc");
+ }
+
+ });
+ hlDay.addComponent(workDay);
+ hlDay.setExpandRatio(workDay, 5f);
+ vl.addComponent(hlDay);
+
+ HorizontalLayout hlTask = new HorizontalLayout();
+ hlTask.setWidth("100%");
+ Label lblStart = new Label("Task:");
+ lblStart.setWidth("100%");
+ hlTask.addComponent(lblStart);
+ hlTask.setExpandRatio(lblStart, 1f);
+ workTask = new ComboBox();
+ workTask.setWidth("100%");
+ workTask.setImmediate(true);
+ workTask.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
+ Day day = (Day)workDay.getValue();
+ if(day == null)
+ updateTasks("select t from " + Task.class.getName() + " t order by t.id desc");
+ else
+ updateTasks("select t from " + Task.class.getName() + " t where t.id not in (select w.task.id from " + Work.class.getName() + " w where w.day.id = " + day.getId() + ") order by t.id desc");
+ workTask.addListener(new ValueChangeListener(){
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ Task task = (Task)event.getProperty().getValue();
+ if(task == null)
+ updateDays("select d from " + Day.class.getName() + " d order by d.day");
+ else
+ updateDays("select d from " + Day.class.getName() + " d where d.id not in (select w.day.id from " + Work.class.getName() + " w where w.task.id = " + task.getId() + ") order by d.day");
+ }
+
+ });
+ hlTask.addComponent(workTask);
+ hlTask.setExpandRatio(workTask, 5f);
+ vl.addComponent(hlTask);
+
+ HorizontalLayout hlHours = new HorizontalLayout();
+ hlHours.setWidth("100%");
+ Label lblHours = new Label("Hours:");
+ lblHours.setWidth("100%");
+ hlHours.addComponent(lblHours);
+ hlHours.setExpandRatio(lblHours, 1f);
+ workHours = new TextField();
+ workHours.setWidth("100%");
+ workHours.setValue(work.getHours());
+ workHours.setImmediate(true);
+ hlHours.addComponent(workHours);
+ hlHours.setExpandRatio(workHours, 5f);
+ vl.addComponent(hlHours);
+
+ workResult = new RichTextArea("Result");
+ workResult.setValue(work.getResult());
+ workResult.setSizeFull();
+ vl.addComponent(workResult);
+ vl.setExpandRatio(workResult, 5f);
+
+ HorizontalLayout hlOk = new HorizontalLayout();
+ hlOk.setWidth("100%");
+ Button okButton = new Button();
+ switch(state){
+ case CREATE:
+ okButton.setCaption("Create");
+ break;
+ case EDIT:
+ okButton.setCaption("Save");
+ break;
+ }
+ okButton.addListener((ClickListener)this);
+ hlOk.addComponent(okButton);
+ hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
+ vl.addComponent(hlOk);
+ }
+
+ private void updateDays(String jpql){
+ if(workTask != null && workTask.getValue() != null && workDay != null && workDay.getValue() != null)
+ return;
+ workDay.removeAllItems();
+ Query query = EM.createQuery(jpql);
+ List list = query.getResultList();
+ for(Day day: (List)list){
+ workDay.addItem(day);
+ Calendar currCal = Calendar.getInstance();
+ currCal.set(Calendar.HOUR_OF_DAY, 0);
+ currCal.set(Calendar.MINUTE, 0);
+ currCal.set(Calendar.SECOND, 0);
+ currCal.set(Calendar.MILLISECOND, 0);
+ if(day.getDay().equals(currCal.getTime()))
+ workDay.select(day);
+ }
+ }
+
+ private void updateTasks(String jpql){
+ if(workTask != null && workTask.getValue() != null && workDay != null && workDay.getValue() != null)
+ return;
+ workTask.removeAllItems();
+ Query query = EM.createQuery(jpql);
+ List list = query.getResultList();
+ for(Task task: (List)list)
+ workTask.addItem(task);
+ }
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ Object dayObj = workDay.getValue();
+ Object taskObj = workTask.getValue();
+ Object hoursObj = workHours.getValue();
+ String result = workResult.getValue().toString();
+ if (
+ !(dayObj instanceof Day)
+ || !(taskObj instanceof Task)
+ || !(hoursObj.toString().matches("^[0-9]+[\\.]{0,1}[0-9]*"))
+ ) {
+ getWindow().showNotification("Invalid information entered");
+ } else {
+ Day day = (Day)dayObj;
+ Task task = (Task)taskObj;
+ Float hours = Float.parseFloat(hoursObj.toString());
+ work.setDay(day);
+ work.setTask(task);
+ work.setHours(hours);
+ work.setResult(result);
+ try{
+ EM.getTransaction().begin();
+ EM.persist(work);
+ EM.getTransaction().commit();
+ EM.clear();
+ } finally {
+ if(EM.getTransaction().isActive())
+ EM.getTransaction().rollback();
+ }
+ getParent().removeWindow(this);
+ myApp.getWorkTable().requestRepaint();
+ }
+ }
+
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,231 @@
+package ru.indvdum.mywork.vaadin;
+
+import static ru.indvdum.mywork.MyWork.EM;
+
+import java.util.List;
+
+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.EntityContainer;
+import com.vaadin.addon.jpacontainer.EntityProvider;
+import com.vaadin.addon.jpacontainer.HierarchicalEntityContainer;
+import com.vaadin.addon.jpacontainer.JPAContainer;
+import com.vaadin.addon.jpacontainer.provider.BatchableLocalEntityProvider;
+import com.vaadin.addon.jpacontainer.provider.CachingBatchableLocalEntityProvider;
+import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
+import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
+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.MenuBar;
+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;
+import com.vaadin.ui.MenuBar.Command;
+import com.vaadin.ui.MenuBar.MenuItem;
+
+/**
+ * @author indvdum
+ * 12.08.2011 17:31:53
+ *
+ */
+public class MyWorkApplication extends Application {
+
+ private MyWorkApplication thisObject = this;
+ private Table dayTable = null;
+ private Table taskTable = null;
+ private Table workTable = null;
+
+ private Command newDayCommand = new Command() {
+ public void menuSelected(MenuItem selectedItem) {
+ EditDayDialog dialog = null;
+ try {
+ dialog = new EditDayDialog(thisObject, null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ getMainWindow().addWindow(dialog);
+ }
+ };
+ private Command newTaskCommand = new Command() {
+ public void menuSelected(MenuItem selectedItem) {
+ EditTaskDialog dialog = null;
+ try {
+ dialog = new EditTaskDialog(thisObject, null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ getMainWindow().addWindow(dialog);
+ }
+ };
+ private Command newWorkCommand = new Command() {
+ public void menuSelected(MenuItem selectedItem) {
+ EditWorkDialog dialog = null;
+ try {
+ dialog = new EditWorkDialog(thisObject, null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ getMainWindow().addWindow(dialog);
+ }
+ };
+ private Command editDayCommand = new Command() {
+ public void menuSelected(MenuItem selectedItem) {
+ EditDayDialog dialog = null;
+ Day day = EM.find(Day.class, dayTable.getValue());
+ if(day == null)
+ return;
+ try {
+ dialog = new EditDayDialog(thisObject, day);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ getMainWindow().addWindow(dialog);
+ }
+ };
+ private Command editTaskCommand = new Command() {
+ public void menuSelected(MenuItem selectedItem) {
+ EditTaskDialog dialog = null;
+ Task task = EM.find(Task.class, taskTable.getValue());
+ if(task == null)
+ return;
+ try {
+ dialog = new EditTaskDialog(thisObject, task);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ getMainWindow().addWindow(dialog);
+ }
+ };
+ private Command editWorkCommand = new Command() {
+ public void menuSelected(MenuItem selectedItem) {
+ EditWorkDialog dialog = null;
+ Work work = EM.find(Work.class, workTable.getValue());
+ if(work == null)
+ return;
+ try {
+ dialog = new EditWorkDialog(thisObject, work);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ getMainWindow().addWindow(dialog);
+ }
+ };
+
+ @Override
+ public void init() {
+ Window window = new Window();
+ setMainWindow(window);
+
+ 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);
+
+ MenuBar menuBar = new MenuBar();
+ MenuItem file = menuBar.addItem("File", null);
+ MenuItem newItem = file.addItem("New", null);
+ newItem.addItem("Day...", newDayCommand);
+ newItem.addItem("Task...", newTaskCommand);
+ newItem.addItem("Work...", newWorkCommand);
+ MenuItem edit = menuBar.addItem("Edit", null);
+ edit.addItem("Day...", editDayCommand);
+ edit.addItem("Task...", editTaskCommand);
+ edit.addItem("Work...", editWorkCommand);
+ vlMain.addComponent(menuBar);
+
+ LocalEntityProvider dayProvider = new CachingLocalEntityProvider(Day.class);
+ dayProvider.setEntityManager(EM);
+ JPAContainer dayContainer = new JPAContainer(Day.class);
+ dayContainer.setEntityProvider(dayProvider);
+
+ dayTable = new Table();
+ dayTable.setSelectable(true);
+ dayTable.setEditable(false);
+ dayTable.setImmediate(true);
+ dayTable.setSizeFull();
+ dayTable.setContainerDataSource(dayContainer);
+ dayTable.setVisibleColumns(new String[]{
+ "formattedDay",
+ "startWork",
+ "endWork",
+ "hours",
+ });
+ dayTable.setSortContainerPropertyId("day");
+ dayTable.setColumnHeaders(new String[]{
+ "day",
+ "startWork",
+ "endWork",
+ "hours",
+ });
+ vlMain.addComponent(dayTable);
+ vlMain.setExpandRatio(dayTable, 1f);
+
+ LocalEntityProvider taskProvider = new CachingLocalEntityProvider(Task.class);
+ taskProvider.setEntityManager(EM);
+ JPAContainer taskContainer = new JPAContainer(Task.class);
+ taskContainer.setEntityProvider(taskProvider);
+
+ taskTable = new Table();
+ taskTable.setSelectable(true);
+ taskTable.setEditable(false);
+ 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 CachingLocalEntityProvider(Work.class);
+ workProvider.setEntityManager(EM);
+ JPAContainer workContainer = new JPAContainer(Work.class);
+ workContainer.setEntityProvider(workProvider);
+
+ workTable = new Table();
+ workTable.setSelectable(false);
+ workTable.setEditable(false);
+ workTable.setImmediate(true);
+ workTable.setSizeFull();
+ workTable.setContainerDataSource(workContainer);
+ workTable.setVisibleColumns(new String[]{
+ "day",
+ "task",
+ "hours",
+ "result",
+ });
+ workTable.setColumnWidth("result", 200);
+ workTable.setSortContainerPropertyId("day");
+ vlMain.addComponent(workTable);
+ vlMain.setExpandRatio(workTable, 1f);
+ }
+
+ public Table getDayTable() {
+ return dayTable;
+ }
+
+ public Table getTaskTable() {
+ return taskTable;
+ }
+
+ public Table getWorkTable() {
+ return workTable;
+ }
+}
diff -r 739f329b9e1e -r 2d6a668325f9 mywork-web/src/main/resources/META-INF/persistence.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mywork-web/src/main/resources/META-INF/persistence.xml Wed Nov 23 17:52:25 2011 +0300
@@ -0,0 +1,21 @@
+
+
+
+ org.apache.openjpa.persistence.PersistenceProviderImpl
+
+ ru.indvdum.mywork.openjpa.model.Day
+ ru.indvdum.mywork.openjpa.model.Task
+ ru.indvdum.mywork.openjpa.model.Work
+ ru.indvdum.mywork.openjpa.model.WorkId
+
+
+
+
+
+
+
+
+
diff -r 739f329b9e1e -r 2d6a668325f9 pom.xml
--- a/pom.xml Wed Nov 23 17:25:20 2011 +0300
+++ b/pom.xml Wed Nov 23 17:52:25 2011 +0300
@@ -1,18 +1,16 @@
-
+
+
4.0.0
- ru.indvdum
- mywork
- 0.0.1-SNAPSHOT
- My Work
+ ru.indvdum.mywork
+ mywork-all
+ mywork
+ 0.0.1.0-SNAPSHOT
+ pom
- 6.1.26
- 6.5.0
- 2.1.1
- 10.1.0.5.0
- 2.1.1
1.4
10.8.2.2
1.8.0
+ 2.1.1
2.3.2
2.5.1-1
1.5
@@ -25,70 +23,22 @@
src/main/resources
- false
+ true
+ org.apache.maven.plugins
maven-compiler-plugin
${maven-compiler-plugin.version}
- groovy-eclipse-compiler
- nowarn
- true
+
+ 1.6
+ UTF-8
+ true
+ 128m
+ 512m
-
-
- org.codehaus.groovy
- groovy-eclipse-compiler
- ${groovy-eclipse-compiler.version}
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
- ${build-helper-maven-plugin.version}
-
-
- add-source
- generate-sources
-
- add-source
-
-
-
-
-
-
-
-
-
-
-
- org.codehaus.mojo
- openjpa-maven-plugin
-
- **/model/**/*.class
- true
- true
-
-
-
- enhancer
- process-classes
-
- enhance
-
-
-
-
-
- org.apache.openjpa
- openjpa
- ${openjpa.version}
-
-
org.apache.maven.plugins
@@ -98,40 +48,6 @@
UTF-8
-
- maven-source-plugin
-
- true
-
-
-
- generate-sources
-
- jar
-
-
-
-
-
- org.codehaus.mojo
- exec-maven-plugin
- 1.2
-
-
-
- exec
-
-
-
-
- java
-
- -classpath
-
- ru.indvdum.mywork.MyWork
-
-
-
@@ -169,6 +85,20 @@
+
+
+
+ ru.indvdum.mywork
+ mywork-model
+ ${project.version}
+
+
+ ru.indvdum.mywork
+ mywork-web
+ ${project.version}
+
+
+
org.slf4j
@@ -181,58 +111,9 @@
${junit.version}
test
-
- org.mortbay.jetty
- jetty
- ${jetty.version}
-
-
- com.vaadin
- vaadin
- ${vaadin.version}
-
-
- com.vaadin.addon
- jpacontainer-addon-agpl-3.0
- 1.2.0
-
-
- javax.persistence
- persistence-api
-
-
-
-
- com.google.gwt
- gwt-user
- ${gwt.version}
-
-
- com.oracle
- ojdbc14
- ${oracle.jdbc.version}
-
-
- org.apache.openjpa
- openjpa
- ${openjpa.version}
-
-
- org.codehaus.groovy
- groovy-all
- ${groovy.version}
-
-
- commons-dbcp
- commons-dbcp
- ${commons-dbcp.version}
- test
-
-
- org.apache.derby
- derby
- ${derby.version}
- test
-
+
+ mywork-model
+ mywork-web
+
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/MyWork.java
--- a/src/main/java/ru/indvdum/mywork/MyWork.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-package ru.indvdum.mywork;
-
-import java.util.Date;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-
-import org.mortbay.component.LifeCycle;
-import org.mortbay.component.LifeCycle.Listener;
-import org.mortbay.jetty.Connector;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.servlet.Context;
-import org.mortbay.jetty.servlet.ServletHolder;
-
-import com.vaadin.terminal.gwt.server.ApplicationServlet;
-
-/**
- * @author indvdum
- * 12.08.2011 17:31:37
- *
- */
-public class MyWork {
- public static EntityManagerFactory EMF = null;
- public static EntityManager EM = null;
-
- /**
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- Server server = new Server();
- Connector connector = new org.mortbay.jetty.nio.SelectChannelConnector();
- connector.setPort(8080);
- connector.setMaxIdleTime(720000);
- server.addConnector(connector);
-
- Context root = new Context(server, "/", Context.SESSIONS);
- ServletHolder vaadinServlet = new ServletHolder(new ApplicationServlet());
- vaadinServlet.setInitParameter("application", "ru.indvdum.mywork.vaadin.MyWorkApplication");
- root.addServlet(vaadinServlet, "/*");
-
- server.addLifeCycleListener(new Listener(){
-
- @Override
- public void lifeCycleFailure(LifeCycle event, Throwable cause) {
-
- }
-
- @Override
- public void lifeCycleStarted(LifeCycle event) {
- EMF = Persistence.createEntityManagerFactory("mywork");
- EM = EMF.createEntityManager();
- }
-
- @Override
- public void lifeCycleStarting(LifeCycle event) {
-
- }
-
- @Override
- public void lifeCycleStopped(LifeCycle event) {
-
- }
-
- @Override
- public void lifeCycleStopping(LifeCycle event) {
- EM.close();
- EMF.close();
- }
-
- });
-
- server.start();
- System.out.println("Jetty server started at " + new Date());
- }
-
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/openjpa/model/Day.java
--- a/src/main/java/ru/indvdum/mywork/openjpa/model/Day.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-package ru.indvdum.mywork.openjpa.model;
-
-import java.sql.Time;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-/**
- * @author indvdum
- * 12.08.2011 17:31:00
- *
- */
-@Entity
-@Table(name = "DAYS")
-public class Day implements IDatabaseObject {
-
- private static final long serialVersionUID = 1471705339524132968L;
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "ID", nullable = false)
- private Integer id = null;
-
- @Column(name = "DAY")
- private Date day = null;
-
- @Column(name = "STARTWORK")
- private Time startWork = null;
-
- @Column(name = "ENDWORK")
- private Time endWork = null;
-
- @Column(name = "HOURS")
- private Float hours = null;
-
- public Day(){
-
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (!(obj instanceof Day))
- return false;
- final Day other = (Day) obj;
- return (getId() == other.getId() || (getId() != null && getId().equals(other.getId())));
- }
-
- @Override
- public int hashCode() {
- if(getId() != null && getId() != 0)
- return getId().hashCode();
- else
- return super.hashCode();
- }
-
- @Override
- public String toString() {
- return getDateFormatter().format(getDay());
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public Date getDay() {
- return day;
- }
-
- public String getFormattedDay() {
- return toString();
- }
-
- public void setDay(Date day) {
- this.day = day;
- }
-
- public Time getStartWork() {
- return startWork;
- }
-
- public void setStartWork(Time startWork) {
- this.startWork = startWork;
- }
-
- public Time getEndWork() {
- return endWork;
- }
-
- public void setEndWork(Time endWork) {
- this.endWork = endWork;
- }
-
- public Float getHours() {
- return hours;
- }
-
- public void setHours(Float hours) {
- this.hours = hours;
- }
-
- protected DateFormat getDateFormatter() {
- return new SimpleDateFormat("dd.MM.yyyy");
- }
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/openjpa/model/IDatabaseObject.java
--- a/src/main/java/ru/indvdum/mywork/openjpa/model/IDatabaseObject.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package ru.indvdum.mywork.openjpa.model;
-
-import java.io.Serializable;
-
-/**
- * @author indvdum
- * 12.08.2011 17:31:11
- *
- */
-public interface IDatabaseObject extends Serializable {
-
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/openjpa/model/Task.java
--- a/src/main/java/ru/indvdum/mywork/openjpa/model/Task.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-package ru.indvdum.mywork.openjpa.model;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-/**
- * @author indvdum
- * 16.08.2011 9:02:32
- *
- */
-@Entity
-@Table(name = "TASKS")
-public class Task implements IDatabaseObject {
-
- private static final long serialVersionUID = -4457948503094306717L;
-
- @Id
- @GeneratedValue(strategy = GenerationType.SEQUENCE)
- @Column(name = "ID", nullable = false)
- private Integer id = null;
-
- @Column(name = "NAME")
- private String name = null;
-
- @Column(name = "DESCRIPTION")
- private String description = null;
-
- 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 (getId() == other.getId() || (getId() != null && getId().equals(other.getId())));
- }
-
- @Override
- public int hashCode() {
- if(getId() != null && getId() != 0)
- return getId().hashCode();
- else
- return super.hashCode();
- }
-
- @Override
- public String toString() {
- return getName();
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getName() {
- return name != null ? name : "";
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description != null ? description : "";
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/openjpa/model/Work.java
--- a/src/main/java/ru/indvdum/mywork/openjpa/model/Work.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-package ru.indvdum.mywork.openjpa.model;
-
-import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.ManyToOne;
-import javax.persistence.MapsId;
-import javax.persistence.Table;
-
-/**
- * @author indvdum
- * 16.08.2011 13:55:51
- *
- */
-@Entity
-@Table(name = "WORK")
-public class Work implements IDatabaseObject {
-
- private static final long serialVersionUID = 7138260708537798813L;
-
- @EmbeddedId
- private WorkId id = null;
-
- @Column(name = "HOURS")
- private Float hours = null;
-
- @Column(name = "RESULT")
- private String result = null;
-
- @MapsId("dayId")
- @ManyToOne(fetch = FetchType.EAGER)
- private Day day = null;
-
- @MapsId("taskId")
- @ManyToOne(fetch = FetchType.EAGER)
- private Task task = null;
-
- public Work(){
-
- }
-
- 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;
- }
-
- public Task getTask() {
- return task;
- }
-
- public void setTask(Task task) {
- this.task = task;
- }
-
- public WorkId getId() {
- return id;
- }
-
- public void setId(WorkId id) {
- this.id = id;
- }
-
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java
--- a/src/main/java/ru/indvdum/mywork/openjpa/model/WorkId.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-package ru.indvdum.mywork.openjpa.model;
-
-import javax.persistence.Embeddable;
-
-/**
- * @author indvdum
- * 17.08.2011 15:00:35
- *
- */
-@Embeddable
-public class WorkId{
-
- public Integer dayId;
- public Integer taskId;
-
- @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.dayId == other.dayId
- && this.taskId == other.taskId
- || (
- this.dayId != null
- && this.dayId.equals(other.dayId)
- && this.taskId != null
- && this.taskId.equals(other.taskId)
- )
- );
- }
-
- @Override
- public int hashCode() {
- return dayId ^ taskId;
- }
-
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java
--- a/src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-package ru.indvdum.mywork.vaadin;
-
-import static ru.indvdum.mywork.MyWork.EM;
-
-import java.sql.Time;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-
-import ru.indvdum.mywork.openjpa.model.Day;
-
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.PopupDateField;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-
-/**
- * @author indvdum
- * 23.08.2011 19:11:35
- *
- */
-public class EditDayDialog extends Window implements ValueChangeListener, ClickListener {
-
- private MyWorkApplication myApp = null;
- private EditState state = null;
- private Day day = null;
- private PopupDateField dayStartTime = null;
- private PopupDateField dayEndTime = null;
- private PopupDateField dayDate = null;
- private TextField dayHours = null;
-
- public EditDayDialog(MyWorkApplication myApp, Day day) throws Exception {
- super();
- this.myApp = myApp;
- if(day == null)
- state = EditState.CREATE;
- else
- state = EditState.EDIT;
- switch(state){
- case CREATE:
- setCaption("Creating new day");
- day = new Day();
- Calendar calDay = Calendar.getInstance();
- calDay.set(Calendar.HOUR_OF_DAY, 0);
- calDay.set(Calendar.MINUTE, 0);
- calDay.set(Calendar.SECOND, 0);
- calDay.set(Calendar.MILLISECOND, 0);
- day.setDay(calDay.getTime());
- Calendar calStart = Calendar.getInstance();
- calStart.set(Calendar.HOUR_OF_DAY, 9);
- calStart.set(Calendar.MINUTE, 0);
- calStart.set(Calendar.SECOND, 0);
- calStart.set(Calendar.MILLISECOND, 0);
- day.setStartWork(new Time(calStart.getTime().getTime()));
- Calendar calEnd = Calendar.getInstance();
- calEnd.set(Calendar.HOUR_OF_DAY, 18);
- calEnd.set(Calendar.MINUTE, 0);
- calEnd.set(Calendar.SECOND, 0);
- calEnd.set(Calendar.MILLISECOND, 0);
- day.setEndWork(new Time(calEnd.getTime().getTime()));
- day.setHours(8f);
- this.day = day;
- break;
- case EDIT:
- setCaption("Editing day");
- this.day = day;
- break;
- }
- init();
- }
-
- private void init(){
- setModal(true);
- setWidth("480px");
- setHeight("300px");
- VerticalLayout vl = new VerticalLayout();
- vl.setSizeFull();
- vl.setSpacing(true);
- vl.setMargin(true);
- setContent(vl);
-
- HorizontalLayout hlDay = new HorizontalLayout();
- hlDay.setWidth("100%");
- Label lblDay = new Label("Day:");
- lblDay.setWidth("100%");
- hlDay.addComponent(lblDay);
- hlDay.setExpandRatio(lblDay, 1f);
- dayDate = new PopupDateField();
- dayDate.setWidth("100%");
- dayDate.setInputPrompt("Enter date");
- dayDate.setResolution(PopupDateField.RESOLUTION_DAY);
- dayDate.setImmediate(true);
- dayDate.setValue(day.getDay());
- dayDate.addListener(this);
- dayDate.setDateFormat("dd.MM.yyyy");
- hlDay.addComponent(dayDate);
- hlDay.setExpandRatio(dayDate, 5f);
- vl.addComponent(hlDay);
-
- HorizontalLayout hlStart = new HorizontalLayout();
- hlStart.setWidth("100%");
- Label lblStart = new Label("Start time:");
- lblStart.setWidth("100%");
- hlStart.addComponent(lblStart);
- hlStart.setExpandRatio(lblStart, 1f);
- dayStartTime = new PopupDateField();
- dayStartTime.setWidth("100%");
- dayStartTime.setInputPrompt("Enter time");
- dayStartTime.setResolution(PopupDateField.RESOLUTION_MIN);
- dayStartTime.setImmediate(true);
- dayStartTime.setValue(day.getStartWork());
- dayStartTime.setDateFormat("HH:mm");
- hlStart.addComponent(dayStartTime);
- hlStart.setExpandRatio(dayStartTime, 5f);
- vl.addComponent(hlStart);
-
- HorizontalLayout hlEnd = new HorizontalLayout();
- hlEnd.setWidth("100%");
- Label lblEnd = new Label("End time:");
- lblEnd.setWidth("100%");
- hlEnd.addComponent(lblEnd);
- hlEnd.setExpandRatio(lblEnd, 1f);
- dayEndTime = new PopupDateField();
- dayEndTime.setWidth("100%");
- dayEndTime.setInputPrompt("Enter time");
- dayEndTime.setResolution(PopupDateField.RESOLUTION_MIN);
- dayEndTime.setImmediate(true);
- dayEndTime.setValue(day.getEndWork());
- dayEndTime.setDateFormat("HH:mm");
- hlEnd.addComponent(dayEndTime);
- hlEnd.setExpandRatio(dayEndTime, 5f);
- vl.addComponent(hlEnd);
-
- HorizontalLayout hlHours = new HorizontalLayout();
- hlHours.setWidth("100%");
- Label lblHours = new Label("Work hours count:");
- lblHours.setWidth("100%");
- hlHours.addComponent(lblHours);
- hlHours.setExpandRatio(lblHours, 1f);
- dayHours = new TextField();
- dayHours.setWidth("100%");
- dayHours.setValue(day.getHours());
- dayHours.setImmediate(true);
- hlHours.addComponent(dayHours);
- hlHours.setExpandRatio(dayHours, 5f);
- vl.addComponent(hlHours);
-
- HorizontalLayout hlOk = new HorizontalLayout();
- hlOk.setSizeFull();
- Button okButton = new Button();
- switch(state){
- case CREATE:
- okButton.setCaption("Create");
- break;
- case EDIT:
- okButton.setCaption("Save");
- break;
- }
- okButton.addListener((ClickListener)this);
- hlOk.addComponent(okButton);
- hlOk.setComponentAlignment(okButton, Alignment.BOTTOM_RIGHT);
- vl.addComponent(hlOk);
- vl.setExpandRatio(hlOk, 1f);
- }
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- Object value = event.getProperty().getValue();
- Object startValue = dayStartTime.getValue();
- Object endValue = dayEndTime.getValue();
- if (value == null || !(value instanceof Date) || !(startValue instanceof Date) || !(endValue instanceof Date)) {
- getWindow().showNotification("Invalid date entered");
- } else {
- Date date = (Date)value;
- Date start = (Date)startValue;
- Date end = (Date)endValue;
- Calendar calStart = Calendar.getInstance();
- calStart.setTime(start);
- Calendar calEnd = Calendar.getInstance();
- calEnd.setTime(end);
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- calStart.set(Calendar.YEAR, cal.get(Calendar.YEAR));
- calStart.set(Calendar.MONTH, cal.get(Calendar.MONTH));
- calStart.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
- calStart.set(Calendar.SECOND, cal.get(Calendar.SECOND));
- calStart.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
- calEnd.set(Calendar.YEAR, cal.get(Calendar.YEAR));
- calEnd.set(Calendar.MONTH, cal.get(Calendar.MONTH));
- calEnd.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
- calEnd.set(Calendar.SECOND, cal.get(Calendar.SECOND));
- calEnd.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
- dayStartTime.setValue(calStart.getTime());
- dayEndTime.setValue(calEnd.getTime());
- }
- }
-
- @Override
- public void buttonClick(ClickEvent event) {
- Object value = dayDate.getValue();
- Object startValue = dayStartTime.getValue();
- Object endValue = dayEndTime.getValue();
- Object hoursValue = dayHours.getValue();
- if (
- value == null
- || !(value instanceof Date)
- || !(startValue instanceof Date)
- || !(endValue instanceof Date)
- || !(hoursValue.toString().matches("^[0-9]+[\\.]{0,1}[0-9]*"))
- ) {
- getWindow().showNotification("Invalid information entered");
- } else {
- Date date = (Date)value;
- Date start = (Date)startValue;
- Date end = (Date)endValue;
- Float hours = Float.parseFloat(hoursValue.toString());
- day.setDay(date);
- day.setStartWork(new Time(start.getTime()));
- day.setEndWork(new Time(end.getTime()));
- day.setHours(hours);
- try{
- EM.getTransaction().begin();
- EM.persist(day);
- EM.getTransaction().commit();
- EM.clear();
- } finally {
- if(EM.getTransaction().isActive())
- EM.getTransaction().rollback();
- }
- getParent().removeWindow(this);
- myApp.getDayTable().requestRepaint();
- }
- }
-
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/vaadin/EditState.java
--- a/src/main/java/ru/indvdum/mywork/vaadin/EditState.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-package ru.indvdum.mywork.vaadin;
-
-/**
- * @author indvdum
- * 23.08.2011 19:11:44
- *
- */
-public enum EditState {
- CREATE,
- EDIT,
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java
--- a/src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-package ru.indvdum.mywork.vaadin;
-
-import static ru.indvdum.mywork.MyWork.EM;
-import ru.indvdum.mywork.openjpa.model.Task;
-
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.RichTextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-
-/**
- * @author indvdum
- * 23.08.2011 19:11:50
- *
- */
-public class EditTaskDialog extends Window implements ClickListener {
-
- private MyWorkApplication myApp = null;
- private EditState state = null;
- private Task task = null;
- private TextField taskName = null;
- private RichTextArea taskDescription = null;
-
- public EditTaskDialog(MyWorkApplication myApp, Task task) throws Exception {
- super();
- this.myApp = myApp;
- if(task == null)
- state = EditState.CREATE;
- else
- state = EditState.EDIT;
- switch(state){
- case CREATE:
- setCaption("Creating new task");
- task = new Task();
- task.setName("");
- task.setDescription("");
- this.task = task;
- break;
- case EDIT:
- setCaption("Editing task");
- this.task = task;
- break;
- }
- init();
- }
-
- private void init(){
- setModal(true);
- setWidth("640px");
- setHeight("480px");
- VerticalLayout vl = new VerticalLayout();
- vl.setSizeFull();
- vl.setSpacing(true);
- vl.setMargin(true);
- setContent(vl);
-
- HorizontalLayout hlName = new HorizontalLayout();
- hlName.setWidth("100%");
- Label lblName = new Label("Name:");
- lblName.setWidth("100%");
- hlName.addComponent(lblName);
- hlName.setExpandRatio(lblName, 1f);
- taskName = new TextField();
- taskName.setWidth("100%");
- taskName.setValue(task.getName());
- hlName.addComponent(taskName);
- hlName.setExpandRatio(taskName, 5f);
- vl.addComponent(hlName);
-
- taskDescription = new RichTextArea("Description");
- taskDescription.setValue(task.getDescription());
- taskDescription.setSizeFull();
- vl.addComponent(taskDescription);
- vl.setExpandRatio(taskDescription, 1f);
-
- HorizontalLayout hlOk = new HorizontalLayout();
- hlOk.setWidth("100%");
- Button okButton = new Button();
- switch(state){
- case CREATE:
- okButton.setCaption("Create");
- break;
- case EDIT:
- okButton.setCaption("Save");
- break;
- }
- okButton.addListener((ClickListener)this);
- hlOk.addComponent(okButton);
- hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
- vl.addComponent(hlOk);
- }
-
- @Override
- public void buttonClick(ClickEvent event) {
- task.setName(taskName.getValue().toString());
- task.setDescription(taskDescription.getValue().toString());
- try{
- EM.getTransaction().begin();
- EM.persist(task);
- EM.getTransaction().commit();
- EM.clear();
- } finally {
- if(EM.getTransaction().isActive())
- EM.getTransaction().rollback();
- }
- getParent().removeWindow(this);
- myApp.getTaskTable().requestRepaint();
- }
-
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java
--- a/src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,234 +0,0 @@
-package ru.indvdum.mywork.vaadin;
-
-import static ru.indvdum.mywork.MyWork.EM;
-
-import java.util.Calendar;
-import java.util.List;
-
-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.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.RichTextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-import com.vaadin.ui.AbstractSelect.Filtering;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-
-/**
- * @author indvdum
- * 23.08.2011 19:11:56
- *
- */
-public class EditWorkDialog extends Window implements ClickListener {
-
- private MyWorkApplication myApp = null;
- private EditState state = null;
- private Work work = null;
- private ComboBox workDay = null;
- private ComboBox workTask = null;
- private TextField workHours = null;
- private RichTextArea workResult = null;
-
- public EditWorkDialog(MyWorkApplication myApp, Work work) throws Exception {
- super();
- this.myApp = myApp;
- if(work == null)
- state = EditState.CREATE;
- else
- state = EditState.EDIT;
- switch(state){
- case CREATE:
- setCaption("Creating new work");
- work = new Work();
- work.setHours(0f);
- work.setResult("");
- this.work = work;
- break;
- case EDIT:
- setCaption("Editing work");
- this.work = work;
- break;
- }
- init();
- }
-
- private void init(){
- setModal(true);
- setWidth("640px");
- setHeight("480px");
- VerticalLayout vl = new VerticalLayout();
- vl.setSizeFull();
- vl.setSpacing(true);
- vl.setMargin(true);
- setContent(vl);
-
- HorizontalLayout hlDay = new HorizontalLayout();
- hlDay.setWidth("100%");
- Label lblDay = new Label("Day:");
- lblDay.setWidth("100%");
- hlDay.addComponent(lblDay);
- hlDay.setExpandRatio(lblDay, 1f);
- workDay = new ComboBox();
- workDay.setWidth("100%");
- workDay.setImmediate(true);
- workDay.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
- updateDays("select d from " + Day.class.getName() + " d order by d.day");
- workDay.addListener(new ValueChangeListener(){
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- Day day = (Day)event.getProperty().getValue();
- if(day == null)
- updateTasks("select t from " + Task.class.getName() + " t order by t.id desc");
- else
- updateTasks("select t from " + Task.class.getName() + " t where t.id not in (select w.task.id from " + Work.class.getName() + " w where w.day.id = " + day.getId() + ") order by t.id desc");
- }
-
- });
- hlDay.addComponent(workDay);
- hlDay.setExpandRatio(workDay, 5f);
- vl.addComponent(hlDay);
-
- HorizontalLayout hlTask = new HorizontalLayout();
- hlTask.setWidth("100%");
- Label lblStart = new Label("Task:");
- lblStart.setWidth("100%");
- hlTask.addComponent(lblStart);
- hlTask.setExpandRatio(lblStart, 1f);
- workTask = new ComboBox();
- workTask.setWidth("100%");
- workTask.setImmediate(true);
- workTask.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
- Day day = (Day)workDay.getValue();
- if(day == null)
- updateTasks("select t from " + Task.class.getName() + " t order by t.id desc");
- else
- updateTasks("select t from " + Task.class.getName() + " t where t.id not in (select w.task.id from " + Work.class.getName() + " w where w.day.id = " + day.getId() + ") order by t.id desc");
- workTask.addListener(new ValueChangeListener(){
-
- @Override
- public void valueChange(ValueChangeEvent event) {
- Task task = (Task)event.getProperty().getValue();
- if(task == null)
- updateDays("select d from " + Day.class.getName() + " d order by d.day");
- else
- updateDays("select d from " + Day.class.getName() + " d where d.id not in (select w.day.id from " + Work.class.getName() + " w where w.task.id = " + task.getId() + ") order by d.day");
- }
-
- });
- hlTask.addComponent(workTask);
- hlTask.setExpandRatio(workTask, 5f);
- vl.addComponent(hlTask);
-
- HorizontalLayout hlHours = new HorizontalLayout();
- hlHours.setWidth("100%");
- Label lblHours = new Label("Hours:");
- lblHours.setWidth("100%");
- hlHours.addComponent(lblHours);
- hlHours.setExpandRatio(lblHours, 1f);
- workHours = new TextField();
- workHours.setWidth("100%");
- workHours.setValue(work.getHours());
- workHours.setImmediate(true);
- hlHours.addComponent(workHours);
- hlHours.setExpandRatio(workHours, 5f);
- vl.addComponent(hlHours);
-
- workResult = new RichTextArea("Result");
- workResult.setValue(work.getResult());
- workResult.setSizeFull();
- vl.addComponent(workResult);
- vl.setExpandRatio(workResult, 5f);
-
- HorizontalLayout hlOk = new HorizontalLayout();
- hlOk.setWidth("100%");
- Button okButton = new Button();
- switch(state){
- case CREATE:
- okButton.setCaption("Create");
- break;
- case EDIT:
- okButton.setCaption("Save");
- break;
- }
- okButton.addListener((ClickListener)this);
- hlOk.addComponent(okButton);
- hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
- vl.addComponent(hlOk);
- }
-
- private void updateDays(String jpql){
- if(workTask != null && workTask.getValue() != null && workDay != null && workDay.getValue() != null)
- return;
- workDay.removeAllItems();
- Query query = EM.createQuery(jpql);
- List list = query.getResultList();
- for(Day day: (List)list){
- workDay.addItem(day);
- Calendar currCal = Calendar.getInstance();
- currCal.set(Calendar.HOUR_OF_DAY, 0);
- currCal.set(Calendar.MINUTE, 0);
- currCal.set(Calendar.SECOND, 0);
- currCal.set(Calendar.MILLISECOND, 0);
- if(day.getDay().equals(currCal.getTime()))
- workDay.select(day);
- }
- }
-
- private void updateTasks(String jpql){
- if(workTask != null && workTask.getValue() != null && workDay != null && workDay.getValue() != null)
- return;
- workTask.removeAllItems();
- Query query = EM.createQuery(jpql);
- List list = query.getResultList();
- for(Task task: (List)list)
- workTask.addItem(task);
- }
-
- @Override
- public void buttonClick(ClickEvent event) {
- Object dayObj = workDay.getValue();
- Object taskObj = workTask.getValue();
- Object hoursObj = workHours.getValue();
- String result = workResult.getValue().toString();
- if (
- !(dayObj instanceof Day)
- || !(taskObj instanceof Task)
- || !(hoursObj.toString().matches("^[0-9]+[\\.]{0,1}[0-9]*"))
- ) {
- getWindow().showNotification("Invalid information entered");
- } else {
- Day day = (Day)dayObj;
- Task task = (Task)taskObj;
- Float hours = Float.parseFloat(hoursObj.toString());
- work.setDay(day);
- work.setTask(task);
- work.setHours(hours);
- work.setResult(result);
- try{
- EM.getTransaction().begin();
- EM.persist(work);
- EM.getTransaction().commit();
- EM.clear();
- } finally {
- if(EM.getTransaction().isActive())
- EM.getTransaction().rollback();
- }
- getParent().removeWindow(this);
- myApp.getWorkTable().requestRepaint();
- }
- }
-
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java
--- a/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-package ru.indvdum.mywork.vaadin;
-
-import static ru.indvdum.mywork.MyWork.EM;
-
-import java.util.List;
-
-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.EntityContainer;
-import com.vaadin.addon.jpacontainer.EntityProvider;
-import com.vaadin.addon.jpacontainer.HierarchicalEntityContainer;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.BatchableLocalEntityProvider;
-import com.vaadin.addon.jpacontainer.provider.CachingBatchableLocalEntityProvider;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
-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.MenuBar;
-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;
-import com.vaadin.ui.MenuBar.Command;
-import com.vaadin.ui.MenuBar.MenuItem;
-
-/**
- * @author indvdum
- * 12.08.2011 17:31:53
- *
- */
-public class MyWorkApplication extends Application {
-
- private MyWorkApplication thisObject = this;
- private Table dayTable = null;
- private Table taskTable = null;
- private Table workTable = null;
-
- private Command newDayCommand = new Command() {
- public void menuSelected(MenuItem selectedItem) {
- EditDayDialog dialog = null;
- try {
- dialog = new EditDayDialog(thisObject, null);
- } catch (Exception e) {
- e.printStackTrace();
- }
- getMainWindow().addWindow(dialog);
- }
- };
- private Command newTaskCommand = new Command() {
- public void menuSelected(MenuItem selectedItem) {
- EditTaskDialog dialog = null;
- try {
- dialog = new EditTaskDialog(thisObject, null);
- } catch (Exception e) {
- e.printStackTrace();
- }
- getMainWindow().addWindow(dialog);
- }
- };
- private Command newWorkCommand = new Command() {
- public void menuSelected(MenuItem selectedItem) {
- EditWorkDialog dialog = null;
- try {
- dialog = new EditWorkDialog(thisObject, null);
- } catch (Exception e) {
- e.printStackTrace();
- }
- getMainWindow().addWindow(dialog);
- }
- };
- private Command editDayCommand = new Command() {
- public void menuSelected(MenuItem selectedItem) {
- EditDayDialog dialog = null;
- Day day = EM.find(Day.class, dayTable.getValue());
- if(day == null)
- return;
- try {
- dialog = new EditDayDialog(thisObject, day);
- } catch (Exception e) {
- e.printStackTrace();
- }
- getMainWindow().addWindow(dialog);
- }
- };
- private Command editTaskCommand = new Command() {
- public void menuSelected(MenuItem selectedItem) {
- EditTaskDialog dialog = null;
- Task task = EM.find(Task.class, taskTable.getValue());
- if(task == null)
- return;
- try {
- dialog = new EditTaskDialog(thisObject, task);
- } catch (Exception e) {
- e.printStackTrace();
- }
- getMainWindow().addWindow(dialog);
- }
- };
- private Command editWorkCommand = new Command() {
- public void menuSelected(MenuItem selectedItem) {
- EditWorkDialog dialog = null;
- Work work = EM.find(Work.class, workTable.getValue());
- if(work == null)
- return;
- try {
- dialog = new EditWorkDialog(thisObject, work);
- } catch (Exception e) {
- e.printStackTrace();
- }
- getMainWindow().addWindow(dialog);
- }
- };
-
- @Override
- public void init() {
- Window window = new Window();
- setMainWindow(window);
-
- 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);
-
- MenuBar menuBar = new MenuBar();
- MenuItem file = menuBar.addItem("File", null);
- MenuItem newItem = file.addItem("New", null);
- newItem.addItem("Day...", newDayCommand);
- newItem.addItem("Task...", newTaskCommand);
- newItem.addItem("Work...", newWorkCommand);
- MenuItem edit = menuBar.addItem("Edit", null);
- edit.addItem("Day...", editDayCommand);
- edit.addItem("Task...", editTaskCommand);
- edit.addItem("Work...", editWorkCommand);
- vlMain.addComponent(menuBar);
-
- LocalEntityProvider dayProvider = new CachingLocalEntityProvider(Day.class);
- dayProvider.setEntityManager(EM);
- JPAContainer dayContainer = new JPAContainer(Day.class);
- dayContainer.setEntityProvider(dayProvider);
-
- dayTable = new Table();
- dayTable.setSelectable(true);
- dayTable.setEditable(false);
- dayTable.setImmediate(true);
- dayTable.setSizeFull();
- dayTable.setContainerDataSource(dayContainer);
- dayTable.setVisibleColumns(new String[]{
- "formattedDay",
- "startWork",
- "endWork",
- "hours",
- });
- dayTable.setSortContainerPropertyId("day");
- dayTable.setColumnHeaders(new String[]{
- "day",
- "startWork",
- "endWork",
- "hours",
- });
- vlMain.addComponent(dayTable);
- vlMain.setExpandRatio(dayTable, 1f);
-
- LocalEntityProvider taskProvider = new CachingLocalEntityProvider(Task.class);
- taskProvider.setEntityManager(EM);
- JPAContainer taskContainer = new JPAContainer(Task.class);
- taskContainer.setEntityProvider(taskProvider);
-
- taskTable = new Table();
- taskTable.setSelectable(true);
- taskTable.setEditable(false);
- 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 CachingLocalEntityProvider(Work.class);
- workProvider.setEntityManager(EM);
- JPAContainer workContainer = new JPAContainer(Work.class);
- workContainer.setEntityProvider(workProvider);
-
- workTable = new Table();
- workTable.setSelectable(false);
- workTable.setEditable(false);
- workTable.setImmediate(true);
- workTable.setSizeFull();
- workTable.setContainerDataSource(workContainer);
- workTable.setVisibleColumns(new String[]{
- "day",
- "task",
- "hours",
- "result",
- });
- workTable.setColumnWidth("result", 200);
- workTable.setSortContainerPropertyId("day");
- vlMain.addComponent(workTable);
- vlMain.setExpandRatio(workTable, 1f);
- }
-
- public Table getDayTable() {
- return dayTable;
- }
-
- public Table getTaskTable() {
- return taskTable;
- }
-
- public Table getWorkTable() {
- return workTable;
- }
-}
diff -r 739f329b9e1e -r 2d6a668325f9 src/main/resources/META-INF/persistence.xml
--- a/src/main/resources/META-INF/persistence.xml Wed Nov 23 17:25:20 2011 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-
-
-
- org.apache.openjpa.persistence.PersistenceProviderImpl
-
- ru.indvdum.mywork.openjpa.model.Day
- ru.indvdum.mywork.openjpa.model.Task
- ru.indvdum.mywork.openjpa.model.Work
- ru.indvdum.mywork.openjpa.model.WorkId
-
-
-
-
-
-
-
-
-