[elvystrac] r2223 - new version of reports - smarter selection of files/kiosks; 2nd mode of reports (file-oriented)

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Fri, 2 Apr 2010 18:58:26 +0200

Author: DavidK
Date: 2010-04-02 18:58:26 +0200 (Fri, 02 Apr 2010)
New Revision: 2223

Added:
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportBLTest.java
Modified:
   trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/ReportBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/categrel/CatDefAssignStep2Bean.java
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRL.java
   
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRLImpl.java
   trunk/server/webServer2/WebContent/secured/reportrel/reportFilterElvys.xhtml
   trunk/server/webServer2/WebContent/secured/reportrel/reportFilterFile.xhtml
Log:
new version of reports - smarter selection of files/kiosks; 2nd mode of reports 
(file-oriented)

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/ReportBean.java
===================================================================
--- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/ReportBean.java 
2010-03-31 16:29:05 UTC (rev 2222)
+++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/ReportBean.java 
2010-04-02 16:58:26 UTC (rev 2223)
@@ -5,8 +5,10 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import javax.faces.event.ActionEvent;
 
@@ -16,11 +18,15 @@
 import cz.elvys.webServer.HIBgen.Elvys;
 import cz.elvys.webServer.HIBgen.File;
 import cz.elvys.webServer.bl.api.Factory;
+import cz.elvys.webServer.toSpring.exception.ExecuteException;
 import cz.elvys.webServer.toSpring.report.ReportCTRL;
 import cz.elvys.webServer.toSpring.report.ReportCTRLImpl.Report;
+import cz.elvys.webServer.utils.faces.BeanManager;
 
 public class ReportBean implements Serializable {
 
+       private static final int REPORT_TYPE_FILE = 1;
+       private static final int REPORT_TYPE_ELVYS = 2;
        private static final long serialVersionUID = 8826736093998513776L;
 
        private static Logger log;
@@ -29,9 +35,11 @@
                log = Logger.getLogger(ReportBean.class);
        }
 
+       private int reportType;
        private List<Report> reports;
        private Date dateFrom;
        private Date dateTo;
+       private int companyId;
        
        private String dateFromString;
        private String dateToString;
@@ -63,6 +71,7 @@
        
        public ReportBean() {
                ctrl = Factory.getReportCTRL();
+               companyId = BeanManager.getUser().getUser().getId();
        }
        
        
@@ -73,13 +82,23 @@
         * @return
         */
        public String prepareFileReportFilter() {
+               this.reportType = REPORT_TYPE_FILE;
                ctrl.prepareReportFilter();
 
                this.dateFrom = ctrl.getDateFrom();
                this.dateTo = ctrl.getDateTo();
+               
+               // init lists
+               this.files = new ArrayList<File>();
+               this.filesFiltered = new ArrayList<File>();
+               this.filesSelected = new ArrayList<File>();
+               this.elvyses = new ArrayList<Elvys>();
+               this.elvysesFiltered = new ArrayList<Elvys>();
+               this.elvysesSelected = new ArrayList<Elvys>();
+               
 
                // prepare data for the tables
-               refreshFileReportByDate();
+               refreshFileReportByDate(null);
                
                return "showReportFilterFile";
        }
@@ -92,13 +111,22 @@
         * @return
         */
        public String prepareElvysReportFilter() {
+               this.reportType = REPORT_TYPE_ELVYS;
                ctrl.prepareReportFilter();
 
                this.dateFrom = ctrl.getDateFrom();
                this.dateTo = ctrl.getDateTo();
+               
+               // init lists
+               this.files = new ArrayList<File>();
+               this.filesFiltered = new ArrayList<File>();
+               this.filesSelected = new ArrayList<File>();
+               this.elvyses = new ArrayList<Elvys>();
+               this.elvysesFiltered = new ArrayList<Elvys>();
+               this.elvysesSelected = new ArrayList<Elvys>();
 
                // prepare data for the tables
-               refreshElvysReportByDate();
+               refreshElvysReportByDate(null);
                
                return "showReportFilterElvys";
        }
@@ -144,18 +172,25 @@
         * 1) refresh files by date
         * 2) refresh elvyses by files
         */
-       public void refreshFileReportByDate(){
+       public void refreshFileReportByDate(ActionEvent aev){
                
                Date from = this.dateFrom;
                Date to = this.dateTo;
                
-               // set list of files
-               this.files = ctrl.getFiles();
-               this.filesSelected = new ArrayList<File>();
-               this.filesFiltered = new ArrayList<File>();
-               this.filesFiltered.addAll(files);
-               
-               refreshElvysListByFiles(null);
+               try {
+                       // set list of files
+                       this.files = ctrl.listFilesByCompanyAndDates(
+                                       companyId, from, to);
+                       this.filesSelected = new ArrayList<File>();
+                       this.filesFiltered = new ArrayList<File>();
+                       this.filesFiltered.addAll(files);
+                       
+                       refreshElvysListByFilesBody();
+               } catch (Exception e) {
+                       String message = "couldn't prepare file report";
+                       log.error(message,e);
+                       throw new RuntimeException(message,e);
+               }
        }
        
        /**
@@ -163,20 +198,24 @@
         * 1) refresh elvyses by date
         * 2) refresh files by elvyses
         */
-       public void refreshElvysReportByDate(){
+       public void refreshElvysReportByDate(ActionEvent aev){
                
-               Date from = this.dateFrom;
-               Date to = this.dateTo;
-               
-               // set list of elvyses
-               this.elvyses = ctrl.getElvyses();
-               this.elvysesSelected = new ArrayList<Elvys>();
-               this.elvysesFiltered = new ArrayList<Elvys>();
-               this.elvysesFiltered.addAll(elvyses);
-               
-               
-               // set list of elvyses
-               refreshFileListByElvyses(null);
+               try {
+                       // set list of elvyses
+                       this.elvyses = ctrl.listElvysesByCompanyAndDates(
+                                       companyId, dateFrom, dateTo);
+                       this.elvysesSelected = new ArrayList<Elvys>();
+                       this.elvysesFiltered = new ArrayList<Elvys>();
+                       this.elvysesFiltered.addAll(elvyses);
+                       
+                       
+                       // set list of elvyses
+                       refreshFileListByElvysesBody();
+               } catch(Exception e) {
+                       String message = "couldn't prepare file report";
+                       log.error(message,e);
+                       throw new RuntimeException(message,e);
+               }
        }
        
        
@@ -185,18 +224,88 @@
         * Method for refresh elvyses
         */
        public void refreshElvysListByFiles(ActionEvent aev){
-               //this.elvyses = 
ctrl.getElvysFiltered(files,this.dateFrom,this.dateTo);
+               try {
+                       refreshElvysListByFilesBody();
+               } catch (Exception e) {
+                       String message  = "couldn't prepare list of elvyses by 
files";
+                       log.error(message);
+                       throw new RuntimeException(message);
+               }
        }
        
+       private void refreshElvysListByFilesBody() throws ExecuteException {
+               List<Integer> ints = new ArrayList<Integer>();
+               for (File file: filesSelected) {
+                       ints.add(file.getId());
+               }
+               
+               // 1) get new list of elvys by files
+               this.elvyses = ctrl.listElvysesByCompanyAndDatesAndFiles(
+                               companyId, dateFrom, dateTo, ints);     
+               
+               // 2) prepare filtered elvyses
+               this.elvysesFiltered = new ArrayList<Elvys>(this.elvyses);
+               filterValueElvys = "";
+               
+               // 3) check selected elvyses (some should disappear or some 
migh come)
+               List<Elvys> oldSelected = this.elvysesSelected;
+                       //prepare hashset containing all previously added ids..
+               Set<Integer> oldSelectedElvysIds = new HashSet<Integer>();
+               for (Elvys elvys: oldSelected) {
+                       oldSelectedElvysIds.add(elvys.getId());
+               }
+                       // fill new list as intersection of old selected files 
and new filtered files 
+               this.elvysesSelected = new ArrayList<Elvys>();
+               for (Elvys elvys : this.elvysesFiltered) {
+                       if (oldSelectedElvysIds.contains(elvys.getId())) {
+                               this.elvysesSelected.add(elvys);
+                       }
+               }
+       }
+       
        /**
         * Method for refresh files
         */
        public void refreshFileListByElvyses(ActionEvent aev){
-               //this.files = 
ctrl.getFilesFiltered(elvyses,this.dateFrom,this.dateTo);
+               try {
+                       refreshFileListByElvysesBody();
+               } catch (Exception e) {
+                       String message  = "couldn't prepare list of elvyses by 
files";
+                       log.error(message);
+                       throw new RuntimeException(message);
+               }
        }
        
+       private void refreshFileListByElvysesBody() throws ExecuteException {
+               List<Integer> ints = new ArrayList<Integer>();
+               for (Elvys elvys: this.elvysesSelected) {
+                       ints.add(elvys.getId());
+               }
+               
+               // 1) get new list of files by elvyses
+               this.files = ctrl.listFilesByCompanyAndDatesAndElvyses(
+                               companyId, dateFrom, dateTo, ints);
+               
+               // 2) prepare filtered files
+               this.filesFiltered = new ArrayList<File>(this.files);
+               filterValueFile = "";
+               
+               // 3) check selected files (some should disappear or some migh 
come)
+               List<File> oldSelected = this.filesSelected;
+                       //prepare hashset containing all previously added ids..
+               Set<Integer> oldSelectedFileIds = new HashSet<Integer>();
+               for (File file: oldSelected) {
+                       oldSelectedFileIds.add(file.getId());
+               }
+                       // fill new list as intersection of old selected files 
and new filtered files 
+               this.filesSelected = new ArrayList<File>();
+               for (File file : filesFiltered) {
+                       if (oldSelectedFileIds.contains(file.getId())) {
+                               this.filesSelected.add(file);
+                       }
+               }
+       }
        
-       
 
        /**
         * Method for filtering list of files in table.
@@ -221,7 +330,7 @@
         * Method for selecting object - add object to selection list.
         * @return
         */
-       public String takeFileSelection() {
+       public void takeFileSelection(ActionEvent aev) {
                Iterator<Object> iterator = selectionFiles.getKeys();
                while (iterator.hasNext()) {
                        Integer key = (Integer)iterator.next();
@@ -230,10 +339,19 @@
                                filesSelected.add(doc);
                        }                               
                }
-               return null;
+               if (reportType == REPORT_TYPE_FILE) {
+                       // primary table - need to refresh secondary table
+                       try {
+                               refreshElvysListByFilesBody();
+                       } catch (Exception e) {
+                               String message = "couldn't refresh elvyses when 
adding file from list";
+                               log.error(message,e);
+                               throw new RuntimeException(message,e);
+                       }
+               }
        }
        
-       public String clearFileSelection() {
+       public void clearFileSelection(ActionEvent aev) {
                Iterator<Object> iterator = selectionChoiceFiles.getKeys();
                List<File> filesForRemove = new ArrayList<File>();
                while (iterator.hasNext()) {
@@ -248,7 +366,16 @@
                }else{
                        filesSelected.removeAll(filesForRemove);
                }
-               return null;
+               if (reportType == REPORT_TYPE_FILE) {
+                       // primary table - need to refresh secondary table
+                       try {
+                               refreshElvysListByFilesBody();
+                       } catch (Exception e) {
+                               String message = "couldn't refresh elvyses when 
removing file from list";
+                               log.error(message,e);
+                               throw new RuntimeException(message,e);
+                       }
+               }
        }
        
        
@@ -275,7 +402,7 @@
         * Method for selecting object - add object to selection list.
         * @return
         */
-       public String takeElvysSelection() {
+       public void takeElvysSelection(ActionEvent aev) {
                Iterator<Object> iterator = selectionElvyses.getKeys();
                while (iterator.hasNext()) {
                        Integer key = (Integer)iterator.next();
@@ -284,10 +411,19 @@
                                elvysesSelected.add(elvys);
                        }                               
                }
-               return null;
+               if (reportType == REPORT_TYPE_ELVYS) {
+                       // primary table - need to refresh secondary table
+                       try {
+                               refreshFileListByElvysesBody();
+                       } catch (Exception e) {
+                               String message = "couldn't refresh files when 
adding elvys from list";
+                               log.error(message,e);
+                               throw new RuntimeException(message,e);
+                       }
+               }
        }
        
-       public String clearElvysSelection() {
+       public void clearElvysSelection(ActionEvent aev) {
                Iterator<Object> iterator = selectionChoiceElvyses.getKeys();
                List<Elvys> elvysesForRemove = new ArrayList<Elvys>();
                while (iterator.hasNext()) {
@@ -302,7 +438,16 @@
                }else{
                        elvysesSelected.removeAll(elvysesForRemove);
                }
-               return null;
+               if (reportType == REPORT_TYPE_ELVYS) {
+                       // primary table - need to refresh secondary table
+                       try {
+                               refreshFileListByElvysesBody();
+                       } catch (Exception e) {
+                               String message = "couldn't refresh files when 
removing elvys from list";
+                               log.error(message,e);
+                               throw new RuntimeException(message,e);
+                       }
+               }
        }
        
 

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/categrel/CatDefAssignStep2Bean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/categrel/CatDefAssignStep2Bean.java
     2010-03-31 16:29:05 UTC (rev 2222)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/categrel/CatDefAssignStep2Bean.java
     2010-04-02 16:58:26 UTC (rev 2223)
@@ -265,7 +265,7 @@
                        } else {
                                if (existingPlanningToSet == -2) {
                                        // ungroup and replicate
-                                       
cbl.reassignCategoryToGroup(selectedCategoryWhenModifying.getId(), null, false);
+                                       
cbl.reassignCategoryToGroup(selectedCategoryWhenModifying.getId(), null, true);
                                } else if (existingPlanningToSet == -3) {
                                        // ungroup and empty
                                        
cbl.reassignCategoryToGroup(selectedCategoryWhenModifying.getId(), null, false);

Added: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportBLTest.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportBLTest.java
                           (rev 0)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportBLTest.java
   2010-04-02 16:58:26 UTC (rev 2223)
@@ -0,0 +1,118 @@
+package cz.elvys.webServer.toSpring.report;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+import cz.elvys.webServer.HIBgen.Elvys;
+import cz.elvys.webServer.HIBgen.File;
+import cz.elvys.webServer.bl.api.Factory;
+import cz.elvys.webServer.toSpring.exception.ExecuteException;
+
+public class ReportBLTest {
+       private static ReportCTRL crtl;
+       private static Date dateFrom;
+       private static Date dateTo;
+       private static final Integer companyId = 4; 
+       
+       @BeforeClass 
+       public static void prepareMyTests() {
+               crtl = Factory.getReportCTRL();
+               
+               Calendar calendar = new GregorianCalendar();
+               calendar.setTime(new Date());
+               calendar.add(Calendar.MONTH, -10);
+
+               // start of interval - before 10 months
+               dateFrom = calendar.getTime();
+               
+               
+               // end of interval - before 1 month
+               calendar.add(Calendar.MONTH, 9);
+               dateTo = calendar.getTime();
+       }
+       
+       @Test 
+       public void testListElvysesByCompanyAndDate() throws ExecuteException {
+               List<Elvys> elvyses = crtl.listElvysesByCompanyAndDates(
+                               companyId, dateFrom, dateTo);
+               
+               assertTrue(elvyses.size()>0);
+       }
+       
+       
+       @Test 
+       public void testListElvysesByCompanyAndDateAndFileList() throws 
ExecuteException {
+               // get list of files
+               List<File> files = crtl.listFilesByCompanyAndDates(
+                               companyId, dateFrom, dateTo);
+               
+               List<Integer> ints = new ArrayList<Integer>();
+               for (File file: files) {
+                       ints.add(file.getId());
+               }
+               
+               // get list of elvyses
+               List<Elvys> elvyses = crtl.listElvysesByCompanyAndDatesAndFiles(
+                               companyId, dateFrom, dateTo, ints);
+               
+               assertTrue(elvyses.size() > 0);
+       }
+       
+       @Test 
+       public void 
testListElvysesByCompanyAndDateAndFileList_EMPTY_FILE_LIST() throws 
ExecuteException {
+               
+               
+               List<Elvys> elvyses = crtl.listElvysesByCompanyAndDatesAndFiles(
+                               companyId, dateFrom, dateTo, new 
ArrayList<Integer>());
+               
+               assertTrue(elvyses.size()==0);
+       }
+       
+       
+       
+       
+       @Test 
+       public void testListFilesByCompanyAndDate() throws ExecuteException {
+               // get list of files
+               List<File> files = crtl.listFilesByCompanyAndDates(
+                               companyId, dateFrom, dateTo);
+               assertTrue(files.size()>0);
+       }
+       
+       @Test 
+       public void testListFilesByCompanyAndDateAndElvyses() throws 
ExecuteException {
+               // get list of elvyses
+               List<Elvys> elvyses = crtl.listElvysesByCompanyAndDates(
+                               companyId, dateFrom, dateTo);
+               
+               List<Integer> ints = new ArrayList<Integer>();
+               for (Elvys elv: elvyses) {
+                       ints.add(elv.getId());
+               }
+               
+               // get list of files
+               List<File> files = crtl.listFilesByCompanyAndDatesAndElvyses(
+                               companyId, dateFrom, dateTo, ints);
+               
+               assertTrue(files.size()>0);
+       }
+       
+       @Test 
+       public void testListFilesByCompanyAndDateAndElvyses_EMPTY_ELVYS_LIST() 
throws ExecuteException {
+               // get list of files
+               List<File> files = crtl.listFilesByCompanyAndDatesAndElvyses(
+                               companyId, dateFrom, dateTo, new 
ArrayList<Integer>());
+               
+               assertTrue(files.size() == 0);
+       }
+       
+       
+}
+

Modified: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRL.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRL.java
     2010-03-31 16:29:05 UTC (rev 2222)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRL.java
     2010-04-02 16:58:26 UTC (rev 2223)
@@ -3,6 +3,7 @@
 import java.util.Date;
 import cz.elvys.webServer.HIBgen.Elvys;
 import cz.elvys.webServer.HIBgen.File;
+import cz.elvys.webServer.toSpring.exception.ExecuteException;
 import cz.elvys.webServer.toSpring.report.ReportCTRLImpl.Report;
 
 import java.util.List;
@@ -17,8 +18,6 @@
 
        public Date getDateTo();
        public Date getDateFrom();
-       public List<File> getFiles();
-       public List<Elvys> getElvyses();
        
        public void setFilesSelected(List<File> filesSelected);
        public void setElvysesSelected(List<Elvys> elvysesSelected);
@@ -27,20 +26,42 @@
        
        /**
         * Method for get list of files. Parameters restrict result.
-        * @param elvyses - elvyses, where files was showed
+        * @param companyId id of the company
         * @param dateFrom - range begin
         * @param dateTo - range end
-        * @return
+        * @return list of files
         */
-       public List<File> getFilesFiltered(List<Elvys> elvyses,Date 
dateFrom,Date dateTo);
+       public List<File> listFilesByCompanyAndDates(Integer companyId, Date 
from, Date to) throws ExecuteException;
        
        /**
         * Method for get list of elvyses. Parameters restrict result.
-        * @param files - files, which elvyses displayed
-        * @param dateFrom - range begin
-        * @param dateTo - range end
+        * @param companyId id of the company
+        * @param from - range begin
+        * @param to - range end
+        * @return list of elvyses
+        */
+       public List<Elvys> listElvysesByCompanyAndDates(Integer companyId, Date 
from, Date to) throws ExecuteException;
+       
+       
+       /**
+        * @param companyId
+        * @param from
+        * @param to
+        * @param elvyses
         * @return
+        * @throws ExecuteException
         */
-       public List<Elvys> getElvysFiltered(List<File> files,Date dateFrom,Date 
dateTo);
+       public List<File> listFilesByCompanyAndDatesAndElvyses(Integer 
companyId, Date from, Date to, List<Integer> givenElvyses) throws 
ExecuteException;
        
+       
+       /**
+        * @param companyId
+        * @param from
+        * @param to
+        * @param files
+        * @return
+        * @throws ExecuteException
+        */
+       public List<Elvys> listElvysesByCompanyAndDatesAndFiles(Integer 
companyId, Date from, Date to, List<Integer> givenFiles) throws 
ExecuteException;
+       
 }

Modified: 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRLImpl.java
===================================================================
--- 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRLImpl.java
 2010-03-31 16:29:05 UTC (rev 2222)
+++ 
trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/report/ReportCTRLImpl.java
 2010-04-02 16:58:26 UTC (rev 2223)
@@ -12,6 +12,7 @@
 import org.hibernate.Transaction;
 
 import cz.elvys.commons.utils.CommonUtils;
+import cz.elvys.commons.utils.HibUtils;
 import cz.elvys.webServer.HIBgen.CategoryDefinition;
 import cz.elvys.webServer.HIBgen.Elvys;
 import cz.elvys.webServer.HIBgen.File;
@@ -19,6 +20,7 @@
 import cz.elvys.webServer.HIBgen.Statistics;
 import cz.elvys.webServer.beans.user.UserLoginBean;
 import cz.elvys.webServer.db.InitSessionFactory;
+import cz.elvys.webServer.toSpring.exception.ExecuteException;
 import cz.elvys.webServer.utils.faces.BeanManager;
 import cz.elvys.webServer.utils.faces.MessageUtils;
 import elvys.server.bl.Fact;
@@ -47,9 +49,6 @@
         */
        private List<Report> reports;
        
-       private List<File> files = null;
-       private List<Elvys> elvyses = null;
-       
        /**
         * Lists of selected object from filter.
         */
@@ -597,25 +596,170 @@
                this.dateTo = dateTo;
        }
        
-       public boolean prepareReportFilter(){
-               UserLoginBean user = BeanManager.getUser();
-               int companyID = user.getCompanyID();
+       
+       public List<Elvys> listElvysesByCompanyAndDates(Integer companyId, Date 
from, Date to) throws ExecuteException {
+               // check
+               if (companyId == null) {
+                       throw new RuntimeException("companyId");
+               }
+               if (from == null) {
+                       throw new RuntimeException("from");
+               }
+               if (to == null) {
+                       throw new RuntimeException("to");
+               }
                
                // prepare list of documents
-               try {   
-                       FileManagerBL fileManagerBL = Fact.getFileManagerBL();  
                
-                       boolean returnAlsoDisabled = true;
-                       this.files = 
fileManagerBL.listAllFilesOfCompanyMakeSession(companyID,returnAlsoDisabled);
-               } catch (Exception e) {
-                       String message = 
CommonUtils.prepareErrorMessage("Unable to load documents for company", 
"companyID", companyID);
-                       throw new RuntimeException(message,e);
+               Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
+               Transaction tx = HibUtils.startTx(sess);
+               List<Elvys> elvyses = null;
+               try {
+                       Query q = sess.createQuery(
+                                       "select distinct elv from " +
+                                       "Statistics stat, " +
+                                       "Elvys elv " +
+                                       " where stat.actionStart < :to " +
+                                       "   and stat.actionEnd > :from " +
+                                       "   and stat.elvys = elv.id");
+                       q.setTimestamp("from", from);
+                       q.setTimestamp("to", to);
+                       elvyses = q.list();
+                       tx.commit();
+               } catch(Exception e) {
+                       tx.rollback();
+                       throw new ExecuteException(e);
                }
+               return elvyses;
+       }
+       
+       public List<File> listFilesByCompanyAndDates(Integer companyId, Date 
from, Date to) throws ExecuteException {
+               // check
+               if (companyId == null) {
+                       throw new RuntimeException("companyId");
+               }
+               if (from == null) {
+                       throw new RuntimeException("from");
+               }
+               if (to == null) {
+                       throw new RuntimeException("to");
+               }
                
-               this.elvyses = this.loadAllCompanyElvyses(companyID);
+               // prepare list of documents
+               Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
+               Transaction tx = HibUtils.startTx(sess);
+               List<File> files = null;
+               try {
+                       Query q = sess.createQuery(
+                                       "select distinct file from " +
+                                       "Statistics stat, " +
+                                       "File file " +
+                                       " where stat.actionStart < :to " +
+                                       "   and stat.actionEnd > :from " +
+                                       "   and stat.file = file.id");
+                       q.setTimestamp("from", from);
+                       q.setTimestamp("to", to);
+                       files = q.list();
+                       tx.commit();
+               } catch(Exception e) {
+                       tx.rollback();
+                       throw new ExecuteException(e);
+               }
+               return files;
+       }
+       
+       public List<File> listFilesByCompanyAndDatesAndElvyses(Integer 
companyId, Date from, Date to, List<Integer> elvyses) throws ExecuteException {
+               // check
+               if (companyId == null) {
+                       throw new RuntimeException("companyId");
+               }
+               if (from == null) {
+                       throw new RuntimeException("from");
+               }
+               if (to == null) {
+                       throw new RuntimeException("to");
+               }
+               if (elvyses == null) {
+                       throw new RuntimeException("elvyses");
+               }
+               if (elvyses.size() == 0) {
+                       return new ArrayList<File>();
+               }
                
+               // prepare list of documents
+               Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
+               Transaction tx = HibUtils.startTx(sess);
+               List<File> files = null;
+               try {
+                       Query q = sess.createQuery(
+                                       "select distinct file from " +
+                                       "Statistics stat, " +
+                                       "File file " +
+                                       " where stat.actionStart < :to " +
+                                       "   and stat.actionEnd > :from " +
+                                       "   and stat.file = file.id " +
+                                       "   and stat.elvys.id in (:elvyses)");
+                       q.setTimestamp("from", from);
+                       q.setTimestamp("to", to);
+                       q.setParameterList("elvyses", elvyses);
+                       files = q.list();
+                       tx.commit();
+               } catch(Exception e) {
+                       tx.rollback();
+                       throw new ExecuteException(e);
+               }
+               return files;
+       }
+       
+       
+       
+       public List<Elvys> listElvysesByCompanyAndDatesAndFiles(Integer 
companyId, Date from, Date to, List<Integer> givenFiles) throws 
ExecuteException {
+               // check
+               if (companyId == null) {
+                       throw new RuntimeException("companyId");
+               }
+               if (from == null) {
+                       throw new RuntimeException("from");
+               }
+               if (to == null) {
+                       throw new RuntimeException("to");
+               }
+               if (givenFiles == null) {
+                       throw new RuntimeException("givenFiles");
+               }
+               if (givenFiles.size() == 0) {
+                       return new ArrayList<Elvys>();
+               }
+               
+               // prepare list of documents
+               Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
+               Transaction tx = HibUtils.startTx(sess);
+               List<Elvys> elvyses = null;
+               try {
+                       Query q = sess.createQuery(
+                                       "select distinct elv from " +
+                                       "Statistics stat, " +
+                                       "Elvys elv " +
+                                       " where stat.actionStart < :to " +
+                                       "   and stat.actionEnd > :from " +
+                                       "   and stat.elvys = elv.id " +
+                                       "       and stat.file.id in (:files)");
+                       q.setTimestamp("from", from);
+                       q.setTimestamp("to", to);
+                       q.setParameterList("files", givenFiles);
+                       elvyses = q.list();
+                       tx.commit();
+               } catch(Exception e) {
+                       tx.rollback();
+                       throw new ExecuteException(e);
+               }
+               return elvyses;
+       }
+       
+       
+       
+       public boolean prepareReportFilter(){
                // prepare date for from/to
                this.checkInputDate();
-               
                return true;
        }
        
@@ -676,22 +820,6 @@
                return elvyses;
        }
 
-       public List<File> getFiles() {
-               return files;
-       }
-
-       public void setFiles(List<File> files) {
-               this.files = files;
-       }
-
-       public List<Elvys> getElvyses() {
-               return elvyses;
-       }
-
-       public void setElvyses(List<Elvys> elvyses) {
-               this.elvyses = elvyses;
-       }
-
        public List<File> getFilesSelected() {
                return filesSelected;
        }
@@ -779,17 +907,5 @@
                
                return totalTime;
        }
-
-       @Override
-       public List<Elvys> getElvysFiltered(List<File> files, Date dateFrom, 
Date dateTo) {
-               // TODO Auto-generated method stub
-               return null;
-       }
-
-       @Override
-       public List<File> getFilesFiltered(List<Elvys> elvyses, Date dateFrom, 
Date dateTo) {
-               // TODO Auto-generated method stub
-               return null;
-       }
        
 }

Modified: 
trunk/server/webServer2/WebContent/secured/reportrel/reportFilterElvys.xhtml
===================================================================
--- 
trunk/server/webServer2/WebContent/secured/reportrel/reportFilterElvys.xhtml    
    2010-03-31 16:29:05 UTC (rev 2222)
+++ 
trunk/server/webServer2/WebContent/secured/reportrel/reportFilterElvys.xhtml    
    2010-04-02 16:58:26 UTC (rev 2223)
@@ -83,9 +83,9 @@
                                        
                                        <rich:panel>                            
                                                
                                                <a4j:commandButton 
value="&gt;&gt;" reRender="filterPanel"
-                                                       
action="#{reportBean.takeElvysSelection}" />
+                                                       
actionListener="#{reportBean.takeElvysSelection}" immediate="true"/>
                                                <a4j:commandButton 
value="&lt;&lt;" reRender="filterPanel" 
-                                                       
action="#{reportBean.clearElvysSelection}" />                                   
                                                                                
        
+                                                       
actionListener="#{reportBean.clearElvysSelection}" immediate="true"/>           
                                                                                
                                
                                        </rich:panel>
                                        
                                        
@@ -129,9 +129,9 @@
                                        
                                        <rich:panel>                            
                                                
                                                <a4j:commandButton 
value="&lt;&lt;" reRender="filterPanel"
-                                                       
action="#{reportBean.takeFileSelection}" immediate="true" />
+                                                       
actionListener="#{reportBean.takeFileSelection}" immediate="true" />
                                                <a4j:commandButton 
value="&gt;&gt;" reRender="filterPanel" 
-                                                       
action="#{reportBean.clearFileSelection}" immediate="true" />                   
                                                                                
                        
+                                                       
actionListener="#{reportBean.clearFileSelection}" immediate="true" />           
                                                                                
                                
                                        </rich:panel>
                                        
                                        <rich:extendedDataTable 
value="#{reportBean.filesFiltered}"
@@ -169,17 +169,21 @@
                                <h:outputLabel 
value="#{lbl['report.filter.date.from']}"></h:outputLabel>
                                <rich:calendar id="DateFromID" 
value="#{reportBean.dateFrom}"
                                        required="false" popup="true" 
locale="#{user.locale}"
-                                       datePattern="dd.MM.yyyy" 
showApplyButton="false"
-                                        >
-                                        <a4j:support event="onchange" 
reRender="filterPanel, tableElvys"
+                                       datePattern="dd.MM.yyyy" 
showApplyButton="false" >
+                                        <a4j:support event="onchanged" 
+                                               reRender="filterPanel, 
tableElvys"
                                                ignoreDupResponses="true"
-                                               
actionListener="reportBean.refreshLists" />
+                                               
actionListener="#{reportBean.refreshElvysReportByDate}" />
                                </rich:calendar>
                                <h:outputLabel 
value="#{lbl['report.filter.date.to']}"></h:outputLabel>
                                <rich:calendar id="DateToID" 
value="#{reportBean.dateTo}"
                                        required="false" popup="true" 
locale="#{user.locale}"
-                                       datePattern="dd.MM.yyyy" 
showApplyButton="false" />
-       
+                                       datePattern="dd.MM.yyyy" 
showApplyButton="false" >
+                                       <a4j:support event="onchanged" 
+                                               reRender="filterPanel, 
tableElvys"
+                                               ignoreDupResponses="true"
+                                               
actionListener="#{reportBean.refreshElvysReportByDate}" />
+                               </rich:calendar>
                                <a4j:commandButton 
action="#{reportBean.prepareReportResult}"
                                        value="#{lbl['report.filter.submit']}" 
/>                       
                        </rich:panel>

Modified: 
trunk/server/webServer2/WebContent/secured/reportrel/reportFilterFile.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/secured/reportrel/reportFilterFile.xhtml 
2010-03-31 16:29:05 UTC (rev 2222)
+++ trunk/server/webServer2/WebContent/secured/reportrel/reportFilterFile.xhtml 
2010-04-02 16:58:26 UTC (rev 2223)
@@ -81,9 +81,9 @@
                                        
                                        <rich:panel>                            
                                                
                                                <a4j:commandButton 
value="&gt;&gt;" reRender="filterPanel"
-                                                       
action="#{reportBean.takeFileSelection}" immediate="true" />
+                                                       
actionListener="#{reportBean.takeFileSelection}" immediate="true" />
                                                <a4j:commandButton 
value="&lt;&lt;" reRender="filterPanel" 
-                                                       
action="#{reportBean.clearFileSelection}" immediate="true" />                   
                        
+                                                       
actionListener="#{reportBean.clearFileSelection}" immediate="true" />           
                                
                                        </rich:panel>
                                                                                
                                                                                
                
@@ -125,9 +125,9 @@
                                                                                
                        
                                        <rich:panel>                            
                                                
                                                <a4j:commandButton 
value="&lt;&lt;" reRender="filterPanel"
-                                                       
action="#{reportBean.takeElvysSelection}" />
+                                                       
actionListener="#{reportBean.takeElvysSelection}" immediate="true"/>
                                                <a4j:commandButton 
value="&gt;&gt;" reRender="filterPanel" 
-                                                       
action="#{reportBean.clearElvysSelection}" />                                   
        
+                                                       
actionListener="#{reportBean.clearElvysSelection}" immediate="true"/>           
                                
                                        </rich:panel>
                                        
                                        
@@ -168,16 +168,21 @@
                                <h:outputLabel 
value="#{lbl['report.filter.date.from']}"></h:outputLabel>
                                <rich:calendar id="DateFromID" 
value="#{reportBean.dateFrom}"
                                        required="false" popup="true" 
locale="#{user.locale}"
-                                       datePattern="dd.MM.yyyy" 
showApplyButton="false"
-                                        >
-                                        <a4j:support event="onchange" 
reRender="filterPanel, tableElvys"
+                                       datePattern="dd.MM.yyyy" 
showApplyButton="false" >
+                                        <a4j:support event="onchanged" 
+                                               reRender="filterPanel, 
tableElvys"
                                                ignoreDupResponses="true"
-                                               
actionListener="reportBean.refreshLists" />
+                                               
actionListener="#{reportBean.refreshFileReportByDate}" />
                                </rich:calendar>
                                <h:outputLabel 
value="#{lbl['report.filter.date.to']}"></h:outputLabel>
                                <rich:calendar id="DateToID" 
value="#{reportBean.dateTo}"
                                        required="false" popup="true" 
locale="#{user.locale}"
-                                       datePattern="dd.MM.yyyy" 
showApplyButton="false" />
+                                       datePattern="dd.MM.yyyy" 
showApplyButton="false" >
+                                        <a4j:support event="onchanged" 
+                                               reRender="filterPanel, 
tableElvys"
+                                               ignoreDupResponses="true"
+                                               
actionListener="#{reportBean.refreshFileReportByDate}" />
+                               </rich:calendar>
        
                                <a4j:commandButton 
action="#{reportBean.prepareReportResult}"
                                        value="#{lbl['report.filter.submit']}" 
/>                       


Other related posts:

  • » [elvystrac] r2223 - new version of reports - smarter selection of files/kiosks; 2nd mode of reports (file-oriented) - elvys