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=">>" reRender="filterPanel" - action="#{reportBean.takeElvysSelection}" /> + actionListener="#{reportBean.takeElvysSelection}" immediate="true"/> <a4j:commandButton value="<<" reRender="filterPanel" - action="#{reportBean.clearElvysSelection}" /> + actionListener="#{reportBean.clearElvysSelection}" immediate="true"/> </rich:panel> @@ -129,9 +129,9 @@ <rich:panel> <a4j:commandButton value="<<" reRender="filterPanel" - action="#{reportBean.takeFileSelection}" immediate="true" /> + actionListener="#{reportBean.takeFileSelection}" immediate="true" /> <a4j:commandButton value=">>" 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=">>" reRender="filterPanel" - action="#{reportBean.takeFileSelection}" immediate="true" /> + actionListener="#{reportBean.takeFileSelection}" immediate="true" /> <a4j:commandButton value="<<" reRender="filterPanel" - action="#{reportBean.clearFileSelection}" immediate="true" /> + actionListener="#{reportBean.clearFileSelection}" immediate="true" /> </rich:panel> @@ -125,9 +125,9 @@ <rich:panel> <a4j:commandButton value="<<" reRender="filterPanel" - action="#{reportBean.takeElvysSelection}" /> + actionListener="#{reportBean.takeElvysSelection}" immediate="true"/> <a4j:commandButton value=">>" 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']}" />