Author: kmorin Date: 2014-05-12 12:27:56 +0200 (Mon, 12 May 2014) New Revision: 63 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/63 Log: - fix referential files loading - fix attachment deletion bug - fix attachment not saved when opened before being saved Modified: trunk/faxtomail-persistence/pom.xml trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.css trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java Modified: trunk/faxtomail-persistence/pom.xml =================================================================== --- trunk/faxtomail-persistence/pom.xml 2014-05-12 09:05:34 UTC (rev 62) +++ trunk/faxtomail-persistence/pom.xml 2014-05-12 10:27:56 UTC (rev 63) @@ -92,6 +92,11 @@ <dependency> <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-05-12 09:05:34 UTC (rev 62) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-05-12 10:27:56 UTC (rev 63) @@ -65,6 +65,7 @@ import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; +import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Calendar; @@ -302,11 +303,10 @@ // email accounts try { - URL emailAccountsPropertiesURL = ClassLoader.getSystemResource("email_accounts.csv"); - if (emailAccountsPropertiesURL != null) { - File emailAccountFile = new File(emailAccountsPropertiesURL.toURI()); + InputStream emailAccountsPropertiesStream = ClassLoader.getSystemResourceAsStream("email_accounts.csv"); + if (emailAccountsPropertiesStream != null) { - List<EmailAccount> emailAccounts = getReferentielService().importEmailAccounts(emailAccountFile); + List<EmailAccount> emailAccounts = getReferentielService().importEmailAccounts(emailAccountsPropertiesStream); fx.addAllEmailAccount(emailAccounts); companyTopiaDao.update(fx); @@ -319,12 +319,10 @@ // email filters try { - URL emailFiltersPropertiesURL = ClassLoader.getSystemResource("email_filters.csv"); - if (emailFiltersPropertiesURL != null) { - File emailFilterFile = new File(emailFiltersPropertiesURL.toURI()); + InputStream emailFiltersPropertiesStream = ClassLoader.getSystemResourceAsStream("email_filters.csv"); + if (emailFiltersPropertiesStream != null) { + List<MailFilter> mailFilters = getReferentielService().importEmailFilters(emailFiltersPropertiesStream, folders); - List<MailFilter> mailFilters = getReferentielService().importEmailFilters(emailFilterFile, folders); - fx.addAllMailFilter(mailFilters); companyTopiaDao.update(fx); } @@ -342,10 +340,9 @@ // clients and emails try { - URL fxClientsURL = ClassLoader.getSystemResource("fx_clients.csv"); - if (fxClientsURL != null) { - File clientFile = new File(fxClientsURL.toURI()); - List<Client> clients = getReferentielService().importClients(clientFile); + InputStream fxClientsStream = ClassLoader.getSystemResourceAsStream("fx_clients.csv"); + if (fxClientsStream != null) { + List<Client> clients = getReferentielService().importClients(fxClientsStream); createEmails(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, priorities, cyrilFolder, cyril); createEmails(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, priorities, claireFolder, claire); Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-05-12 09:05:34 UTC (rev 62) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-05-12 10:27:56 UTC (rev 63) @@ -46,12 +46,15 @@ import com.google.common.base.Charsets; import com.google.common.io.Files; import org.apache.commons.io.IOUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.csv.Import; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.io.Reader; import java.util.ArrayList; import java.util.List; @@ -65,6 +68,8 @@ */ public class ReferentielService extends FaxToMailServiceSupport { + private static final Log log = LogFactory.getLog(ReferentielService.class); + public List<DemandType> getAllDemandType() { DemandTypeTopiaDao dao = getPersistenceContext().getDemandTypeDao(); return new ArrayList<>(dao.findAll()); @@ -90,14 +95,13 @@ return new ArrayList<>(dao.findAll()); } - public List<Client> importClients(File csvFile) throws IOException { + public List<Client> importClients(InputStream inputStream) { List<Client> result = new ArrayList<>(); ClientTopiaDao dao = getPersistenceContext().getClientDao(); - Reader reader = Files.newReader(csvFile, Charsets.UTF_8); ClientImportModel clientImportModel = new ClientImportModel(';'); try { - Import<Client> importer = Import.newImport(clientImportModel, reader); + Import<Client> importer = Import.newImport(clientImportModel, inputStream); try { for (Client client : importer) { result.add(dao.create(client)); @@ -107,11 +111,7 @@ } finally { IOUtils.closeQuietly(importer); } - reader.close(); - } catch (IOException e) { - throw new IOException(t("faxtomail.service.referential.import.clients.error", csvFile), e); - } catch (ImportRuntimeException e) { String message; if (e.getCause() != null) { @@ -122,19 +122,18 @@ throw new ApplicationTechnicalException(message, e); } finally { - IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(inputStream); } return result; } - public List<EmailAccount> importEmailAccounts(File csvFile) throws IOException { + public List<EmailAccount> importEmailAccounts(InputStream inputStream) { List<EmailAccount> result = new ArrayList<>(); EmailAccountTopiaDao dao = getPersistenceContext().getEmailAccountDao(); - Reader reader = Files.newReader(csvFile, Charsets.UTF_8); EmailAccountImportModel emailAccountImportModel = new EmailAccountImportModel(';'); try { - Import<EmailAccount> importer = Import.newImport(emailAccountImportModel, reader); + Import<EmailAccount> importer = Import.newImport(emailAccountImportModel, inputStream); try { for (EmailAccount emailAccount : importer) { result.add(dao.create(emailAccount)); @@ -144,11 +143,7 @@ } finally { IOUtils.closeQuietly(importer); } - reader.close(); - } catch (IOException e) { - throw new IOException(t("faxtomail.service.referential.import.emailAccount.error", csvFile), e); - } catch (ImportRuntimeException e) { String message; if (e.getCause() != null) { @@ -159,19 +154,18 @@ throw new ApplicationTechnicalException(message, e); } finally { - IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(inputStream); } return result; } - public List<MailFilter> importEmailFilters(File csvFile, Map<String, MailFolder> foldersByName) throws IOException { + public List<MailFilter> importEmailFilters(InputStream inputStream, Map<String, MailFolder> foldersByName) { List<MailFilter> result = new ArrayList<>(); MailFilterTopiaDao dao = getPersistenceContext().getMailFilterDao(); - Reader reader = Files.newReader(csvFile, Charsets.UTF_8); EmailFilterImportModel emailFilterImportModel = new EmailFilterImportModel(';', foldersByName); try { - Import<MailFilter> importer = Import.newImport(emailFilterImportModel, reader); + Import<MailFilter> importer = Import.newImport(emailFilterImportModel, inputStream); try { for (MailFilter emailFilter : importer) { result.add(dao.create(emailFilter)); @@ -181,11 +175,7 @@ } finally { IOUtils.closeQuietly(importer); } - reader.close(); - } catch (IOException e) { - throw new IOException(t("faxtomail.service.referential.import.emailFilter.error", csvFile), e); - } catch (ImportRuntimeException e) { String message; if (e.getCause() != null) { @@ -196,7 +186,7 @@ throw new ApplicationTechnicalException(message, e); } finally { - IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(inputStream); } return result; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2014-05-12 09:05:34 UTC (rev 62) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2014-05-12 10:27:56 UTC (rev 63) @@ -186,7 +186,7 @@ throw new ApplicationTechnicalException(t("faxtomail.attachmentEditor.fileNotFound", file.getAbsolutePath())); } - getModel().fireAttachmentOpened(attachment); + getModel().fireAttachmentEdited(attachment); String extension = FileUtil.extension(file); if (getModel().isEditable() && EDITABLE_EXTENSIONS.contains(extension.toUpperCase())) { @@ -229,6 +229,7 @@ if (answer == JOptionPane.YES_OPTION) { + ui.getAttachments().getCellEditor().stopCellEditing(); // getPersistenceService().deleteAttachment(attachment.getId()); getModel().removeAttachment(attachment); @@ -236,6 +237,15 @@ } } + public boolean isAttachmentEditable(Attachment attachment) { + String extension = FileUtil.extension(attachment.getOriginalFile()); + return EDITABLE_EXTENSIONS.contains(extension.toUpperCase()); + } + + public boolean isAttachmentRemovable(Attachment attachment) { + return attachment != null && attachment.getTopiaId() == null; + } + protected class AttachmentItemRenderer extends AttachmentItem implements TableCellRenderer { public AttachmentItemRenderer() { @@ -291,13 +301,6 @@ return attachmentItem.getAttachment(); } - public boolean stopCellEditing() { - return super.stopCellEditing(); - } -//FIXME still the error when we remove an attachment -// protected void fireEditingStopped() { -// super.fireEditingStopped(); -// } } } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.css =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.css 2014-05-12 09:05:34 UTC (rev 62) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentItem.css 2014-05-12 10:27:56 UTC (rev 63) @@ -42,11 +42,13 @@ #editAttachmentButton { actionIcon: "edit"; toolTipText: "faxtomail.attachmentEditor.action.open.tip"; + enabled: { handler != null && handler.isAttachmentEditable(getAttachment()) }; + visible: { isEditable() }; } #removeAttachmentButton { actionIcon: "delete"; toolTipText: "faxtomail.attachmentEditor.action.remove.tip"; - enabled: { getAttachment() != null && getAttachment().getTopiaId() == null }; + enabled: { handler != null && handler.isAttachmentRemovable(getAttachment()) }; visible: { isEditable() }; } \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-05-12 09:05:34 UTC (rev 62) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-05-12 10:27:56 UTC (rev 63) @@ -339,7 +339,7 @@ getContext().getCurrentUser(), new Date(), attachment.getOriginalFile().getName()); - getModel().fromEntity(email); + getModel().setHistory(email.getHistory()); } } @@ -352,7 +352,7 @@ getContext().getCurrentUser(), new Date(), attachment.getOriginalFile().getName()); - getModel().fromEntity(email); + getModel().setHistory(email.getHistory()); } }