[elvystrac] r1855 - planning (not-modal part of) component upgraded-

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Wed, 24 Feb 2010 20:27:00 +0100

Author: DavidK
Date: 2010-02-24 20:27:00 +0100 (Wed, 24 Feb 2010)
New Revision: 1855

Modified:
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/FilePlanningBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/bl/api/elvysrel/PlanDocumentBL.java
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/Rectangle.java
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java
   trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml
   trunk/server/webServer2/WebContent/styles/planning/planDocuments.css
Log:
planning (not-modal part of) component upgraded-
1) disabling rectangles that are whole in past
2) modification improved - new dateFrom can be in past, but not further in past 
than original dateFrom

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/FilePlanningBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/FilePlanningBean.java
   2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/FilePlanningBean.java
   2010-02-24 19:27:00 UTC (rev 1855)
@@ -624,6 +624,9 @@
                
                List<PanelOfRect> planningsOfAllPanels = new 
ArrayList<PanelOfRect>();
 
+               // prepare now date - point of date when entering planning 
component
+               Date now = new Date();
+               
                // Timelines -> Planning Rectangles
                // iterate through each panel
                for (int i=0; i< panelsToShow.size(); i++) {
@@ -641,7 +644,8 @@
                                                oneSlot, 
                                                segmentFrom, 
                                                segmentTo, 
-                                               componentWidth);
+                                               componentWidth,
+                                               now);
                                RectangleLine newLine = new RectangleLine();
                                newLine.setLineId(lineId);
                                newLine.setRectangleList(rectList);

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java
    2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java
    2010-02-24 19:27:00 UTC (rev 1855)
@@ -167,6 +167,7 @@
                Date begin = new Date();
                Date end = calendar.getTime();
                
+               
                // planning panel1
                File file1 = (File)HibUtils.findByID(Document.class, 
documentId1);
                if (file1 != null && file1 instanceof Document) {
@@ -181,7 +182,6 @@
                                                1, 
                                                layout.getId(), 
                                                1, 
-                                               null, 
                                                begin, 
                                                end, 
                                                new Date(), 
@@ -203,7 +203,6 @@
                                                1, 
                                                layout.getId(), 
                                                2, 
-                                               null, 
                                                begin, 
                                                end, 
                                                new Date(), 
@@ -227,7 +226,6 @@
                                                2, 
                                                layout.getId(), 
                                                3, 
-                                               null, 
                                                begin, 
                                                end, 
                                                new Date(), 
@@ -249,7 +247,6 @@
                                                2, 
                                                layout.getId(), 
                                                4, 
-                                               null, 
                                                begin, 
                                                end, 
                                                new Date(), 

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java
      2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java
      2010-02-24 19:27:00 UTC (rev 1855)
@@ -275,6 +275,8 @@
                        if (permittedTypes.size() >= 0) {
                                // TODO nejakou heuristiku dodelat
                                formContentType = permittedTypes.get(0);
+                               // string representation of selectedContentType
+                               selectedTypeOfPlanning = 
formContentType.getType();
                                innerBean = 
PlugablePlanningTypeBeanUtils.getInstance().chooseActiveByType(formContentType.getType(),
 companyId);
                                
innerBean.initPlanningModalSpecBean(formContentType);
                                // no former planning
@@ -430,17 +432,30 @@
                // list of validation messages
                List<ValidationMessageHolder> messages;
                try {
-                       messages = bl.store(formName,
-                                       panelPl,
-                                       panelOrd,
-                                       layoutID, 
-                                       positionID,
-                                       modifying == true ? formerTimeline : 
null, 
-                                       formShowStart, 
-                                       formShowEnd,
-                                       nowDate,
-                                       formValues,
-                                       modifyingUser);
+                       if (modifying) {
+                               messages = bl.modify(formName,
+                                               panelPl,
+                                               panelOrd,
+                                               layoutID, 
+                                               positionID,
+                                               formerTimeline, 
+                                               formShowStart, 
+                                               formShowEnd,
+                                               nowDate,
+                                               formValues,
+                                               modifyingUser);
+                       }  else {
+                               messages = bl.store(formName,
+                                               panelPl,
+                                               panelOrd,
+                                               layoutID, 
+                                               positionID,
+                                               formShowStart, 
+                                               formShowEnd,
+                                               nowDate,
+                                               formValues,
+                                               modifyingUser);
+                       }
                } catch (Exception e) {
                        String message = ERR_NOT_STORED;
                        log.error(message,e);

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
       2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties
       2010-02-24 19:27:00 UTC (rev 1855)
@@ -23,6 +23,7 @@
 
 elvys.plan.modal.crossdates=Datum "od" mus\u00ED b\u00FDt p\u0159ed datumem 
"do".
 elvys.plan.modal.inpast=Datum "od" nesm\u00ED b\u00FDt v minulosti.
+elvys.plan.modal.modifying.before.last=P\u0159i modifikaci 
pl\u00E1nov\u00E1n\u00ED nem\u016F\u017Ee b\u00FDt \u010Das za\u010D\u00E1tku 
v\u00EDce v minulosti ne\u017E p\u016Fvodn\u00ED \u010Das za\u010D\u00E1tku\: 
{0}
 elvys.plan.modal.conflict.begin.inside=Kolize se za\u010D\u00E1tkem 
jin\u00E9ho pl\u00E1nov\u00E1n\u00ED\: {0}.
 elvys.plan.modal.conflict.end.inside=Kolize s koncem jin\u00E9ho 
pl\u00E1nov\u00E1n\u00ED\: {0}.
 elvys.plan.modal.conflict.embrace=Pl\u00E1nov\u00E1n\u00ED je uvnit\u0159 
jin\u00E9ho pl\u00E1nov\u00E1n\u00ED. Start\: {0}; Konec\: {1}.

Modified: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/bl/api/elvysrel/PlanDocumentBL.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/bl/api/elvysrel/PlanDocumentBL.java
 2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/bl/api/elvysrel/PlanDocumentBL.java
 2010-02-24 19:27:00 UTC (rev 1855)
@@ -22,9 +22,19 @@
         * @param scheduleFrom start of interval
         * @param scheduleTo end of interval
         * @param componentWidth width of the planning component
+        * @param now point of date when entering planning component
         * @return
         */
-       public List<Rectangle> prepareRectanglesForOneLayoutPosition(Integer 
panelPl, Integer panelOrd, Integer layoutPos, Integer layoutId, List<Timeline> 
timelines, Date scheduleFrom, Date scheduleTo, int componentWidth) throws 
ExecutionException;
+       public List<Rectangle> prepareRectanglesForOneLayoutPosition(
+                       Integer panelPl, 
+                       Integer panelOrd, 
+                       Integer layoutPos, 
+                       Integer layoutId, 
+                       List<Timeline> timelines, 
+                       Date scheduleFrom, 
+                       Date scheduleTo, 
+                       int componentWidth,
+                       Date now) throws ExecutionException;
        
        /**
         * Prepares time axis labels

Modified: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java
   2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java
   2010-02-24 19:27:00 UTC (rev 1855)
@@ -38,7 +38,8 @@
                        List<Timeline> timelines, 
                        Date scheduleFrom, 
                        Date scheduleTo, 
-                       int componentWidth) throws ExecutionException {
+                       int componentWidth,
+                       Date now) throws ExecutionException {
                List<Rectangle> result = new ArrayList<Rectangle>();
                
                if(timelines.size() == 0) {
@@ -57,7 +58,8 @@
                                gapStart, 
                                gapEnd,
                                componentWidth, 
-                               null);
+                               null,
+                               now);
                        result.add(wholePeriod);
                        return result;
                }
@@ -80,7 +82,8 @@
                                gapStart, 
                                timelines.get(0).getShowStart(), 
                                widthBefore, 
-                               null);
+                               null,
+                               now);
                        result.add(spaceBeforeFirst);
                }
                
@@ -122,7 +125,8 @@
                                realStart, 
                                realEnd,
                                width, 
-                               frc);
+                               frc,
+                               now);
                        result.add(plannedDocument);
                        
                        if (i!= last){
@@ -139,7 +143,8 @@
                                                timelines.get(i).getShowEnd(),
                                                
timelines.get(i+1).getShowStart(),
                                                widthBetween,
-                                               null);
+                                               null,
+                                               now);
                                        result.add(spaceBetween);
                                }
                        }
@@ -162,7 +167,8 @@
                                timelines.get(last).getShowEnd(),
                                gapEnd, 
                                widthAfter, 
-                               null);
+                               null,
+                               now);
                        result.add(spaceAfter);
                }
                

Modified: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/Rectangle.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/Rectangle.java
    2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/Rectangle.java
    2010-02-24 19:27:00 UTC (rev 1855)
@@ -38,6 +38,8 @@
        private Date lastModificationDate;
        // describes CONTENT. If it's null, then deals with free rectangle
        FrameContent frameContent = null;
+       // whether is whole in the past - then cannot be modified
+       private Boolean wholeInPast = true; 
        
        // some other data
        Timeline origTimeline;
@@ -165,8 +167,16 @@
        public void setLastModificationDate(Date lastModificationDate) {
                this.lastModificationDate = lastModificationDate;
        }
+       public Boolean getWholeInPast() {
+               return wholeInPast;
+       }
 
 
+       public void setWholeInPast(Boolean wholeInPast) {
+               this.wholeInPast = wholeInPast;
+       }
+
+
        /**
         * TODO do i need both? timeline and content??
         * Don't be afraid of this constructor. There's nothing bad :). Just 
info, what is needed by planning..
@@ -192,7 +202,8 @@
                        Date realStart,
                        Date realEnd, 
                        int width, 
-                       FrameContent content) throws ClassCastException {
+                       FrameContent content, 
+                       Date now) throws ClassCastException {
                
                this.panelPl = panelPl;
                this.panelOrd = panelOrd;
@@ -211,6 +222,12 @@
                this.realFromText = realFrom == null? "-" : 
makeStringFromDate(realFrom);
                this.realToText = realTo == null? "-" : 
makeStringFromDate(realTo);
                
+               // is rectangle whole in past?
+               if (this.to.before(now)) {
+                       wholeInPast = true;
+               } else {
+                       wholeInPast = false;
+               }
                
                this.frameContent = content;
                if (frameContent != null) {

Modified: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java
  2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java
  2010-02-24 19:27:00 UTC (rev 1855)
@@ -71,15 +71,44 @@
                Session sess,
                Integer modifyingTimelineId) throws ExecuteException;
        
+       
        /**
-        * Stores planning. Stores either new planning or modified planning.
+        * Updates planning in DB.
+        * @param formName name of the form
+        * @param panelPl identifier of panel #1
+        * @param panelOrd identifier of panel #2 
+        * @param layoutId identifier of layout
+        * @param positionId id of position
+        * @param oldTimeline old timeline (which is to be modified)
+        * @param valueDateFrom new dateFrom value
+        * @param valueDateTo new dateTo value
+        * @param now now timestamp (is not really now, is from the past)
+        * @param formValues type-specific values
+        * @param modifyingUser User object of modifying user
+        * @return List of validation messages
+        * @throws ExecuteException exception
+        */
+       public List<ValidationMessageHolder> modify(String formName,
+                       Integer panelPl,
+                       Integer panelOrd,
+                       Integer layoutId,
+                       Integer positionId,
+                       Timeline oldTimeline,
+                       Date valueDateFrom,
+                       Date valueDateTo,
+                       Date now,
+                       FrameContent formValues,
+                       User modifyingUser) throws ExecuteException;
+       
+       
+       /**
+        * Stores new planning.
         * It depends on attributte oldFrameContent.
         * @param formName name of the formular (can be null, only for 
correctness of validation messages)  
         * @param panelPl identifier of panel 1)
         * @param panelOrd identifier of panel 2)
         * @param layoutID id of the actual layout
         * @param positionID id of the actual position
-        * @param oldTimeline old frame content- null if you're not modifiyng 
planning (i.e. new planning)
         * @param valueDateFrom value of the form - planning from
         * @param valueDateTo value of the form - planning to
         * @param now point in time when planning started (e.g. showing 
planning component or sth. like this)
@@ -93,7 +122,6 @@
                        Integer panelOrd,
                        Integer layoutID,
                        Integer positionID,
-                       Timeline oldTimeline,
                        Date valueDateFrom,
                        Date valueDateTo,
                        Date now,

Modified: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java
     2010-02-24 18:36:02 UTC (rev 1854)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java
     2010-02-24 19:27:00 UTC (rev 1855)
@@ -4,7 +4,6 @@
 import java.util.Date;
 import java.util.List;
 
-import org.hibernate.HibernateException;
 import org.hibernate.Query;
 import org.hibernate.Session;
 import org.hibernate.Transaction;
@@ -78,14 +77,43 @@
                        return messages;
                }
                
-               // validate dateFrom is not in the past (comparing to the now 
parameter)
-               if (valueDateFrom.before(now)) {
-                       ValidationMessageHolder message = new 
ValidationMessageHolder();
-                       message.setMessageRef("elvys.plan.modal.inpast");
-                       message.setComponentId(formDateStartId);
-                       messages.add(message);
+               if (oldTimeline != null) {
+                       // modifying
+                       // validate dateFrom is not in past AND is not older 
than last dateFrom
+                       Date oldDateFrom = oldTimeline.getShowStart();
+                       if (oldDateFrom.before(now)) {
+                               // old dateFrom is already in past
+                               // new dateFrom can be in past (but not before 
old dateFrom
+                               if (valueDateFrom.before(oldDateFrom)) {
+                                       ValidationMessageHolder message = new 
ValidationMessageHolder();
+                                       
message.setMessageRef("elvys.plan.modal.modifying.before.last");
+                                       message.setComponentId(formDateStartId);
+                                       message.setParams(new 
Object[]{oldDateFrom});
+                                       messages.add(message);
+                               }
+                       } else {
+                               // old dateFrom is not in past
+                               // new dateFrom cannot be in past
+                               if (valueDateFrom.before(now)) {
+                                       ValidationMessageHolder message = new 
ValidationMessageHolder();
+                                       
message.setMessageRef("elvys.plan.modal.inpast");
+                                       message.setComponentId(formDateStartId);
+                                       messages.add(message);
+                               }
+                       }
+                       
+               } else {
+                       // creating new
+                       // validate dateFrom is not in the past (comparing to 
the now parameter)
+                       if (valueDateFrom.before(now)) {
+                               ValidationMessageHolder message = new 
ValidationMessageHolder();
+                               
message.setMessageRef("elvys.plan.modal.inpast");
+                               message.setComponentId(formDateStartId);
+                               messages.add(message);
+                       }
                }
                
+               
                // validate crossing of dates
                if (!valueDateFrom.before(valueDateTo)) {
                        ValidationMessageHolder message = new 
ValidationMessageHolder();
@@ -251,94 +279,116 @@
        }
 
        
+       public List<ValidationMessageHolder> modify(String formName,
+                       Integer panelPl,
+                       Integer panelOrd,
+                       Integer layoutId,
+                       Integer positionId,
+                       Timeline oldTimeline,
+                       Date valueDateFrom,
+                       Date valueDateTo,
+                       Date now,
+                       FrameContent formValues,
+                       User modifyingUser) throws ExecuteException {
+               
+               // 1) validate
+               List<ValidationMessageHolder> messages = validate(formName,
+                               panelPl, panelOrd, layoutId, positionId, 
oldTimeline, valueDateFrom,
+                               valueDateTo, now, formValues);
+               if (messages != null && messages.size() > 0) {
+                       return messages;
+               }
+               
+               // 2) update in DB
+               // updating
+               Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
+               Transaction tx = HibUtils.startTx(sess);
+               
+               try {
+                       FrameContent oldFrameContent = 
oldTimeline.getFrameContent();
+                       // delete old content 
+                       sess.delete(oldFrameContent);
+                       // save new content, with new ID (I couldn't found any 
way to create new FrameContent with the same ID :( )
+                       sess.save(formValues);
+                       // update reference and field values in old Timeline 
object
+                       oldTimeline.setFrameContent(formValues);
+                       oldTimeline.setShowStart(valueDateFrom);
+                       oldTimeline.setShowEnd(valueDateTo);
+                       oldTimeline.setUser(modifyingUser);
+                       oldTimeline.setModified(new Date());
+                       sess.update(oldTimeline);
+                       
+                       // TODO do db udelat nejaky trigger. nebo aspon 
zacistovaci metodu, ktera to po ulozeni jeste jednou projede a kdyztak smaze 
vlozeny Timeline
+                       tx.commit();
+               } catch(Exception e) {
+                       tx.rollback();
+                       String message = ERR_UPDATING_FAILED;
+                       throw new Error(message,e);
+               }
+               
+               // return empty list of validation, everything went ok
+               List<ValidationMessageHolder> emptyList = new 
ArrayList<ValidationMessageHolder>();
+               return emptyList;
+       }
+       
+       
+       
+       
+       @Override
        public List<ValidationMessageHolder> store(String formName,
                        Integer panelPl, 
                        Integer panelOrd, 
                        Integer layoutID, 
                        Integer positionID,
-                       Timeline oldTimeline, 
                        Date valueDateFrom, 
                        Date valueDateTo, 
                        Date now,
                        FrameContent formValues,
                        User modifyingUser) throws ExecuteException {
                
-               // validation
+               // 1) validate
                List<ValidationMessageHolder> messages = validate(formName,
-                               panelPl, panelOrd, layoutID, positionID, 
oldTimeline, valueDateFrom,
+                               panelPl, panelOrd, layoutID, positionID, null, 
valueDateFrom,
                                valueDateTo, now, formValues);
                if (messages != null && messages.size()>0) {
                        return messages;
                }
                                
-               if (oldTimeline == null) {
-                       // Not updating - creating new
-                       Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
-                       Transaction tx = HibUtils.startTx(sess);
-                       
-                       // TODO do db udelat nejaky trigger. nebo aspon 
zacistovaci metodu, ktera to po ulozeni jeste jednou projede a kdyztak smaze 
vlozeny Timeline
-                       try {
-                               sess.save(formValues);
-                       } catch(Exception e) {
-                               tx.rollback();
-                               throw new Error("",e);
-                       }
-                       Timeline timeline = new Timeline();
-                       timeline.setFrameContent(formValues);
-                       timeline.setId(formValues.getId());
-                       
-                       Panel panel = cbl.getPanelById(panelPl, panelOrd, sess);
-                       
-                       Layout layout = new Layout();
-                       layout.setId(layoutID);
-                       timeline.setLayout(layout);
-                       timeline.setPanel(panel);
-                       timeline.setLayoutPos(positionID.byteValue());
-                       timeline.setShowStart(valueDateFrom);
-                       timeline.setShowEnd(valueDateTo);
-                       timeline.setUser(modifyingUser);
-                       timeline.setModified(new Date());
-                       try {
-                               sess.save(timeline);
-                               tx.commit();
-                       } catch(Exception e) {
-                               tx.rollback();
-                               String message = ERR_STORING_FAILED; 
-                               throw new Error(message,e);
-                       }
-               } else {
-                       // updating
-                       Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
-                       Transaction tx = sess.getTransaction();
-                       try {
-                               tx.begin();
-                       } catch(HibernateException e) {
-                               throw new Error("error occured when 
initializing hibernate session",e);
-                       }
-                       
-                       try {
-                               FrameContent oldFrameContent = 
oldTimeline.getFrameContent();
-                               // delete old content 
-                               sess.delete(oldFrameContent);
-                               // save new content, with new ID (I couldn't 
found any way to create new FrameContent with the same ID :( )
-                               sess.save(formValues);
-                               // update reference and field values in old 
Timeline object
-                               oldTimeline.setFrameContent(formValues);
-                               oldTimeline.setShowStart(valueDateFrom);
-                               oldTimeline.setShowEnd(valueDateTo);
-                               oldTimeline.setUser(modifyingUser);
-                               oldTimeline.setModified(new Date());
-                               sess.update(oldTimeline);
-                               
-                               // TODO do db udelat nejaky trigger. nebo aspon 
zacistovaci metodu, ktera to po ulozeni jeste jednou projede a kdyztak smaze 
vlozeny Timeline
-                               tx.commit();
-                       } catch(Exception e) {
-                               tx.rollback();
-                               String message = ERR_UPDATING_FAILED;
-                               throw new Error(message,e);
-                       }
+               // 2) create new planning
+               Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
+               Transaction tx = HibUtils.startTx(sess);
+               
+               // TODO do db udelat nejaky trigger. nebo aspon zacistovaci 
metodu, ktera to po ulozeni jeste jednou projede a kdyztak smaze vlozeny 
Timeline
+               try {
+                       sess.save(formValues);
+               } catch(Exception e) {
+                       tx.rollback();
+                       throw new Error("",e);
                }
+               Timeline timeline = new Timeline();
+               timeline.setFrameContent(formValues);
+               timeline.setId(formValues.getId());
                
+               Panel panel = cbl.getPanelById(panelPl, panelOrd, sess);
+               
+               Layout layout = new Layout();
+               layout.setId(layoutID);
+               timeline.setLayout(layout);
+               timeline.setPanel(panel);
+               timeline.setLayoutPos(positionID.byteValue());
+               timeline.setShowStart(valueDateFrom);
+               timeline.setShowEnd(valueDateTo);
+               timeline.setUser(modifyingUser);
+               timeline.setModified(new Date());
+               try {
+                       sess.save(timeline);
+                       tx.commit();
+               } catch(Exception e) {
+                       tx.rollback();
+                       String message = ERR_STORING_FAILED; 
+                       throw new Error(message,e);
+               }
+               
                // return empty list of validation, everything went ok
                List<ValidationMessageHolder> emptyList = new 
ArrayList<ValidationMessageHolder>();
                return emptyList;

Modified: 
trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml     
2010-02-24 18:36:02 UTC (rev 1854)
+++ trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml     
2010-02-24 19:27:00 UTC (rev 1855)
@@ -217,11 +217,13 @@
                                                                
styleClass="sch-body-line-id"/>
                                                        <a4j:repeat id="L3" 
value="#{rectangles.rectangleList}" var="rect">
                                                                <span 
class="rectangle_outer" style="width: #{rect.width}px;"> 
+                                                                       
+                                                                       <!-- 
VACANT NOT IN PAST -->
                                                                        
<a4j:commandLink
                                                                        id="VRL"
                                                                        
reRender="planningModalForm_content"
                                                                        
onclick="Richfaces.showModalPanel('planningModalForm_modal')"
-                                                                       
rendered="#{rect.frameContent == null}"
+                                                                       
rendered="#{rect.frameContent == null and !rect.wholeInPast}"
                                                                        
onmouseover="moveVac(this.id)" >
                                                                                
<h:panelGroup 
                                                                                
id="VR" 
@@ -244,6 +246,15 @@
                                                                                
</div>
                                                                                
<h:panelGroup id="VPR"></h:panelGroup>
                                                                        
</rich:toolTip>
+                                                                       
+                                                                       <!-- 
VACANT IN PAST -->
+                                                                       
<h:panelGroup 
+                                                                               
id="VR_Past" 
+                                                                               
rendered="#{rect.frameContent == null and rect.wholeInPast}"
+                                                                               
styleClass="rectangle grey" 
+                                                                               
style="width: #{rect.width}px;"/>
+                                                                       
+                                                                       <!-- 
OCCUPIED -->
                                                                        
<a4j:commandLink
                                                                                
        id="ORL"
                                                                                
        reRender="planningModalForm_content"

Modified: trunk/server/webServer2/WebContent/styles/planning/planDocuments.css
===================================================================
--- trunk/server/webServer2/WebContent/styles/planning/planDocuments.css        
2010-02-24 18:36:02 UTC (rev 1854)
+++ trunk/server/webServer2/WebContent/styles/planning/planDocuments.css        
2010-02-24 19:27:00 UTC (rev 1855)
@@ -106,7 +106,9 @@
 a .grey { background-color: #BBBBBB; }
 a:hover .grey { background-color: #C2C2C2; }
 a:link { text-decoration: none; color: black; }
+.grey { background-color: #BBBBBB; }
 
+
 /* tooltips */
 .short_tooltip { width: 200px; }
 


Other related posts:

  • » [elvystrac] r1855 - planning (not-modal part of) component upgraded- - elvys