r637 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search
Author: kmorin Date: 2014-09-23 21:21:15 +0200 (Tue, 23 Sep 2014) New Revision: 637 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/637 Log: - relance la recherche quand on revient d'un ?\195?\169l?\195?\169ment - am?\195?\169lioration de la r?\195?\169cup?\195?\169ration des valeurs distinctes pour le filtre Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-09-23 16:30:37 UTC (rev 636) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-09-23 19:21:15 UTC (rev 637) @@ -910,22 +910,29 @@ return result; } - public Set<Object> getDistinctValues(MailFolder folder, String property, String condition) { + public Set<Object> getDistinctValues(MailFolder folder, String[] properties, String condition) { Map<String, Object> args = new HashMap<>(); String folderAndStatusCondition = " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " = :folder" + " AND email." + Email.PROPERTY_DEMAND_STATUS + " != :archiveStatus"; args.put("folder", folder); args.put("archiveStatus", DemandStatus.ARCHIVED); - String query = "SELECT DISTINCT " + property + + String propertyList = StringUtils.join(properties, ", "); + String query = "SELECT DISTINCT " + propertyList + " FROM " + Email.class.getName() + " AS email"; - if (property.startsWith("client.")) { - query += " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client"; - - } else if (property.startsWith("rangeRow.")) { - query += " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow"; + for (String property : properties) { + if (property.startsWith("client.")) { + query += " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client"; + break; + } } + for (String property : properties) { + if (property.startsWith("rangeRow.")) { + query += " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow"; + break; + } + } query += folderAndStatusCondition; if (StringUtils.isNotBlank(condition)) { @@ -933,8 +940,19 @@ } List<Object> queryResults = findAll(query, args); - Set<Object> result = new HashSet<>(queryResults); + Set<Object> result = new HashSet<>(); + if (properties.length == 1) { + result.addAll(queryResults); + } else { + for (Object o1 : queryResults) { + Object[] objects = (Object[]) o1; + for (Object o2 : objects) { + result.add(o2); + } + } + } + // check if the property is sometimes null /*if (property.startsWith("rangeRow.")) { query = "FROM " + Email.class.getName() + " AS email" + Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-09-23 16:30:37 UTC (rev 636) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-09-23 19:21:15 UTC (rev 637) @@ -73,7 +73,7 @@ void transmitPendingDemandsToEdi(); - Set<Object> getDistinctValues(MailFolder folder, String property, String condition); + Set<Object> getDistinctValues(MailFolder folder, String[] properties, String condition); PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, EmailFilter filter, PaginationParameter page); Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-09-23 16:30:37 UTC (rev 636) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-09-23 19:21:15 UTC (rev 637) @@ -614,11 +614,11 @@ } @Override - public Set<Object> getDistinctValues(MailFolder folder, String property, String condition) { + public Set<Object> getDistinctValues(MailFolder folder, String[] properties, String condition) { Set<Object> result = null; if (folder.isFolderReadable()) { EmailTopiaDao dao = getPersistenceContext().getEmailDao(); - result = dao.getDistinctValues(folder, property, condition); + result = dao.getDistinctValues(folder, properties, condition); } return result; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-09-23 16:30:37 UTC (rev 636) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-09-23 19:21:15 UTC (rev 637) @@ -222,11 +222,9 @@ properties = new String[] { "email." + property }; } - for (String prop : properties) { - result.addAll(emailService.getDistinctValues(selectedFolder, - prop, - condition)); - } + result.addAll(emailService.getDistinctValues(selectedFolder, + properties, + condition)); if (Email.PROPERTY_RECEPTION_DATE.equals(property)) { Set<Object> filteredDates = new HashSet<>(); Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-09-23 16:30:37 UTC (rev 636) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-09-23 19:21:15 UTC (rev 637) @@ -37,11 +37,13 @@ import javax.swing.ListSelectionModel; import com.franciaflex.faxtomail.persistence.entities.SearchFilter; +import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; +import org.nuiton.jaxx.application.swing.action.ApplicationActionEngine; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.util.CloseableUI; @@ -213,15 +215,20 @@ } protected void runSearchAction() { + FaxToMailUIContext context = getContext(); try { SearchAction searchAction = new SearchAction(this); - getContext().getActionEngine().runAction(searchAction); + if (context.isActionInProgress(null)) { + context.getActionEngine().runFullInternalAction(searchAction); + } else { + context.getActionEngine().runAction(searchAction); + } } catch (Exception e) { if (log.isErrorEnabled()) { log.error("error while searching", e); } - getContext().getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); + context.getErrorHelper().showErrorDialog(t("faxtomail.search.action.error")); } }
participants (1)
-
kmorin@users.forge.codelutin.com