Faxtomail-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- 1934 discussions
14 Mar '14
Author: kmorin
Date: 2014-03-14 18:07:36 +0100 (Fri, 14 Mar 2014)
New Revision: 19
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/19
Log:
refs #4654 [ECRAN] Liste des mails / fax
refs #4655 [ECRAN] D?\195?\169tail d'un mail / fax
Added:
trunk/faxtomail-persistence/src/main/resources/faxToMail.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java
Removed:
trunk/faxtomail-persistence/src/main/resources/faxtomail.properties
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java
trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties
trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.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/InitFaxToMailService.java
trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
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/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java
trunk/pom.xml
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -1,12 +1,24 @@
package com.franciaflex.faxtomail.persistence.entities;
+import static org.nuiton.i18n.I18n.n;
+
/**
* @author Kevin Morin (Code Lutin)
* @since x.x
*/
public enum HistoryType {
- CREATION,
- OPENING,
- MODIFICATION
+ CREATION(n("faxtomail.historyType.creation")),
+ OPENING(n("faxtomail.historyType.opening")),
+ MODIFICATION(n("faxtomail.historyType.modification"));
+
+ protected String labelKey;
+
+ private HistoryType(String labelKey) {
+ this.labelKey = labelKey;
+ }
+
+ public String getLabelKey() {
+ return labelKey;
+ }
}
Copied: trunk/faxtomail-persistence/src/main/resources/faxToMail.properties (from rev 17, trunk/faxtomail-persistence/src/main/resources/faxtomail.properties)
===================================================================
--- trunk/faxtomail-persistence/src/main/resources/faxToMail.properties (rev 0)
+++ trunk/faxtomail-persistence/src/main/resources/faxToMail.properties 2014-03-14 17:07:36 UTC (rev 19)
@@ -0,0 +1,17 @@
+hibernate.connection.driver_class=org.h2.Driver
+hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data
+hibernate.connection.username=sa
+hibernate.connection.password=
+
+hibernate.dialect=org.hibernate.dialect.H2Dialect
+hibernate.hbm2ddl.auto=update
+hibernate.show_sql=false
+hibernate.format_sql=true
+hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
+
+hibernate.c3p0.min_size=5
+hibernate.c3p0.max_size=20
+hibernate.c3p0.timeout=1800
+hibernate.c3p0.max_statements=50
+
+# hibernate.connection.provider_class=org.nuiton.topia.framework.TopiaConnectionProvider
Deleted: trunk/faxtomail-persistence/src/main/resources/faxtomail.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-03-14 17:07:36 UTC (rev 19)
@@ -1,17 +0,0 @@
-hibernate.connection.driver_class=org.h2.Driver
-hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data
-hibernate.connection.username=sa
-hibernate.connection.password=
-
-hibernate.dialect=org.hibernate.dialect.H2Dialect
-hibernate.hbm2ddl.auto=update
-hibernate.show_sql=false
-hibernate.format_sql=true
-hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
-
-hibernate.c3p0.min_size=5
-hibernate.c3p0.max_size=20
-hibernate.c3p0.timeout=1800
-hibernate.c3p0.max_statements=50
-
-# hibernate.connection.provider_class=org.nuiton.topia.framework.TopiaConnectionProvider
Modified: trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_en_GB.properties 2014-03-14 17:07:36 UTC (rev 19)
@@ -20,6 +20,9 @@
faxtomail.config.option.ui.showNumberEditorButton.description=
faxtomail.config.option.version.description=
faxtomail.config.parse.error=
+faxtomail.historyType.creation=
+faxtomail.historyType.modification=
+faxtomail.historyType.opening=
faxtomail.persistence.loader.error=
faxtomail.persistence.mkDir.error=
faxtomail.service.config.deleteTempDirectory.error=
Modified: trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-persistence/src/main/resources/i18n/faxtomail-persistence_fr_FR.properties 2014-03-14 17:07:36 UTC (rev 19)
@@ -20,6 +20,9 @@
faxtomail.config.option.ui.showNumberEditorButton.description=
faxtomail.config.option.version.description=
faxtomail.config.parse.error=
+faxtomail.historyType.creation=Création
+faxtomail.historyType.modification=Modification
+faxtomail.historyType.opening=Ouverture
faxtomail.persistence.loader.error=
faxtomail.persistence.mkDir.error=
faxtomail.service.config.deleteTempDirectory.error=
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -27,6 +27,7 @@
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.HasLabel;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.LogFactory;
import org.nuiton.decorator.Decorator;
import org.nuiton.decorator.DecoratorProvider;
@@ -34,7 +35,10 @@
import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
+import java.util.List;
import static org.nuiton.i18n.I18n.n;
import static org.nuiton.i18n.I18n.t;
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-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -12,17 +12,22 @@
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
+import com.google.common.collect.Sets;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.TopiaEntityVisitor;
import org.nuiton.topia.persistence.pager.TopiaPagerBean;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* @author kmorin <kmorin(a)codelutin.com>
@@ -33,10 +38,11 @@
private static final Log log = LogFactory.getLog(EmailService.class);
public Email getEmailById(String id) {
- return getPersistenceContext().getEmailDao().findByTopiaId(id);
+ Email email = getPersistenceContext().getEmailDao().findByTopiaId(id);
+ return email;
}
- public Email saveEmail(Email email, FaxToMailUser user) {
+ public Email saveEmail(Email email, FaxToMailUser user, String... modifiedFields) {
Date now = getNow();
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
@@ -73,6 +79,7 @@
History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
History.PROPERTY_FAX_TO_MAIL_USER, user,
+ History.PROPERTY_FIELDS, Sets.newHashSet(modifiedFields),
History.PROPERTY_MODIFICATION_DATE, now);
email.addHistory(history);
@@ -120,7 +127,12 @@
email.addHistory(history);
if (email.getTakenBy() == null) {
+ history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
+ History.PROPERTY_FAX_TO_MAIL_USER, user,
+ History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_TAKEN_BY),
+ History.PROPERTY_MODIFICATION_DATE, date);
email.setTakenBy(user);
+ email.addHistory(history);
}
email = emailDao.update(email);
@@ -137,6 +149,7 @@
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
History.PROPERTY_FAX_TO_MAIL_USER, user,
+ History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_TAKEN_BY),
History.PROPERTY_MODIFICATION_DATE, new Date());
email.addHistory(history);
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-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -55,6 +55,7 @@
import com.franciaflex.faxtomail.services.DecoratorService;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -338,6 +339,13 @@
Date now = new Date();
History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION,
+ History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_SENDER,
+ Email.PROPERTY_CLIENT_CODE,
+ Email.PROPERTY_PROJECT_REFERENCE,
+ Email.PROPERTY_OBJECT,
+ Email.PROPERTY_RECEPTION_DATE,
+ Email.PROPERTY_MAIL_FOLDER,
+ Email.PROPERTY_DEMAND_STATUS),
History.PROPERTY_MODIFICATION_DATE, now);
String projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(now));
@@ -357,13 +365,20 @@
email.setDemandType(types.get(random.nextInt(types.size())));
email.setPriority(priorities.get(random.nextInt(priorities.size())));
email.setRangeRow(rangeRows);
- getEmailService().saveEmail(email, user);
+ getEmailService().saveEmail(email, user, Email.PROPERTY_DEMAND_TYPE, Email.PROPERTY_PRIORITY, Email.PROPERTY_RANGE_ROW);
}
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -1);
Date yesterday = cal.getTime();
history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION,
+ History.PROPERTY_FIELDS, Sets.newHashSet(Email.PROPERTY_SENDER,
+ Email.PROPERTY_CLIENT_CODE,
+ Email.PROPERTY_PROJECT_REFERENCE,
+ Email.PROPERTY_OBJECT,
+ Email.PROPERTY_RECEPTION_DATE,
+ Email.PROPERTY_MAIL_FOLDER,
+ Email.PROPERTY_DEMAND_STATUS),
History.PROPERTY_MODIFICATION_DATE, yesterday);
projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(yesterday));
@@ -383,7 +398,7 @@
email.setDemandType(types.get(random.nextInt(types.size())));
email.setPriority(priorities.get(random.nextInt(priorities.size())));
email.setRangeRow(rangeRows);
- getEmailService().saveEmail(email, user);
+ getEmailService().saveEmail(email, user, Email.PROPERTY_DEMAND_TYPE, Email.PROPERTY_PRIORITY, Email.PROPERTY_RANGE_ROW);
}
}
Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties
===================================================================
--- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-03-14 17:07:36 UTC (rev 19)
@@ -1 +1,5 @@
faxtomail.email.projectReference.default=Votre demande du %s
+faxtomail.service.referential.import.clients.error=
+faxtomail.validator.error.email.clientCode.required=
+faxtomail.validator.error.email.demandType.required=
+faxtomail.validator.error.email.projectReference.required=
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -38,6 +38,7 @@
import com.franciaflex.faxtomail.services.service.MailFolderService;
import com.franciaflex.faxtomail.services.service.ReferentielService;
import com.franciaflex.faxtomail.services.service.UserService;
+import com.franciaflex.faxtomail.services.service.ValidationService;
import com.franciaflex.faxtomail.ui.swing.content.MainUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.UIMessageNotifier;
@@ -512,6 +513,10 @@
return serviceContext.newService(DecoratorService.class);
}
+ public ValidationService getValidationService() {
+ return serviceContext.newService(ValidationService.class);
+ }
+
public MailFolderService getMailFolderService() {
return serviceContext.newService(MailFolderService.class);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/RunFaxToMail.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -57,7 +57,7 @@
// Create configuration
FaxToMailConfiguration config =
- new FaxToMailConfiguration("faxtomail.properties", args);
+ new FaxToMailConfiguration("faxToMail.properties", args);
// Create application context
FaxToMailUIContext context = FaxToMailUIContext.newContext(config);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -1,6 +1,7 @@
package com.franciaflex.faxtomail.ui.swing.actions;
import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
@@ -12,8 +13,12 @@
import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel;
import com.franciaflex.faxtomail.ui.swing.content.demande.RangeTableModel;
import com.google.common.collect.Maps;
+import org.apache.commons.lang3.StringUtils;
import org.nuiton.topia.persistence.TopiaEntities;
+import org.nuiton.util.beans.BeanMonitor;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -32,12 +37,23 @@
DemandeUIModel model = getModel();
FaxToMailUIContext context = getContext();
- Email persistedEmail = context.getEmailService().getEmailById(model.getTopiaId());
-
+ Email persistedEmail;
+ String topiaId = model.getTopiaId();
+ if (!StringUtils.isBlank(topiaId)) {
+ persistedEmail = context.getEmailService().getEmailById(topiaId);
+ } else {
+ persistedEmail = new EmailImpl();
+ }
+
RangeTableModel rtm = (RangeTableModel) getUI().getRangeTable().getModel();
List<RangeRowModel> rows = rtm.getRows();
- Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(model.getRangeRow(), TopiaEntities.getTopiaIdFunction());
+ Collection<RangeRow> rangeRows = model.getRangeRow();
+ if (rangeRows == null) {
+ rangeRows = new ArrayList<>();
+ }
+ Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(rangeRows, TopiaEntities.getTopiaIdFunction());
+
for (RangeRowModel rangeRowModel : rows) {
if (rangeRowModel.isValid()) {
RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId());
@@ -52,7 +68,8 @@
FaxToMailUser currentUser = context.getCurrentUser();
Email email = model.toEntity(persistedEmail);
- context.getEmailService().saveEmail(email, currentUser);
+ String[] modifiedProperties = getHandler().getMonitor().getModifiedProperties();
+ context.getEmailService().saveEmail(email, currentUser, modifiedProperties);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -74,12 +74,13 @@
break;
case JOptionPane.NO_OPTION:
- // TODO kmorin 201410305 how to set the email in readonly
+ currentEmail.setEditable(false);
break;
case JOptionPane.YES_OPTION:
- getContext().getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser);
- // TODO kmorin 201410305 how to update on screen
+ Email email = getContext().getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser);
+ currentEmail.fromEntity(email);
+ currentEmail.setEditable(true);
break;
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -107,6 +107,7 @@
for (Email email : emails) {
DemandeUIModel demand = new DemandeUIModel();
demand.fromEntity(email);
+ demand.setValid(isDemandeValid(demand));
demands.add(demand);
}
model.setEmails(demands);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-14 17:07:36 UTC (rev 19)
@@ -23,12 +23,17 @@
showReset: false;
showDecorator: false;
bean: {model};
+ enabled: { model.isEditable() };
}
JXDatePicker {
_selectOnFocus: { true };
}
+JTextField, JXTable, BeanFilterableComboBox, #messageField, ButtonAttachment {
+ editable: { model.isEditable() };
+}
+
.rightLabel {
horizontalAlignment: { SwingConstants.RIGHT };
font-style: "italic";
@@ -70,27 +75,19 @@
#clientField {
text: {model.getClientCode()};
- _validatorLabel: { t("faxtomail.demande.client.label") };
+ _validatorLabel: { t("faxtomail.demande.clientCode.label") };
}
#docTypeLabel {
- text: "faxtomail.demande.docType.label";
+ text: "faxtomail.demande.demandType.label";
}
#docTypeComboBox {
property: demandType;
selectedItem: { model.getDemandType() };
- _validatorLabel: { t("faxtomail.demande.docType.label") };
+ _validatorLabel: { t("faxtomail.demande.demandType.label") };
}
-#ediCodeNumberLabel {
- text: "faxtomail.demande.ediCodeNumber.label";
-}
-
-#ediCodeNumberField {
- text: { model.getEdiCodeNumber() };
-}
-
#priorityLabel {
text: "faxtomail.demande.priority.label";
}
@@ -102,7 +99,7 @@
}
#statusLabel {
- text: "faxtomail.demande.status.label";
+ text: "faxtomail.demande.demandStatus.label";
}
#statusField {
@@ -190,6 +187,17 @@
text: { handler.decorate(model.getLastModificationDate()) };
}
+#ediCodeNumberLabel {
+ text: "faxtomail.demande.ediCodeNumber.label";
+ visible: { model.getEdiCodeNumber() != null };
+}
+
+#ediCodeNumberField {
+ text: { model.getEdiCodeNumber() };
+ visible: { model.getEdiCodeNumber() != null };
+}
+
+
.horizontal-separator {
text: " | ";
}
@@ -225,29 +233,29 @@
#saveButton {
text: "faxtomail.demande.save.button.label";
actionIcon: save;
- enabled: { model.isValid() };
+ enabled: { model.isValid() && model.isEditable() };
_applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction.class };
}
#transmitButton {
text: "faxtomail.demande.transmit.button.label";
actionIcon: transmit;
- enabled: { model.isValid() };
+ enabled: { model.isValid() && model.isEditable() };
}
#printButton {
text: "faxtomail.demande.print.button.label";
actionIcon: print;
- enabled: { model.isValid() };
+ enabled: { model.isValid() && model.isEditable() };
}
#archiveButton {
text: "faxtomail.demande.archive.button.label";
- enabled: { model.isValid() };
+ enabled: { model.isValid() && model.isEditable() };
}
#replyButton {
text: "faxtomail.demande.reply.button.label";
actionIcon: reply;
- enabled: { model.isValid() };
+ enabled: { model.isValid() && model.isEditable() };
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-03-14 17:07:36 UTC (rev 19)
@@ -164,26 +164,7 @@
<JLabel id='statusField'/>
</cell>
</row>
- <row>
- <cell>
- <JLabel id='ediCodeNumberLabel'/>
- </cell>
- <cell weightx='1'>
- <JTextField id='ediCodeNumberField'
- onKeyReleased='handler.setText(event, "ediCodeNumber")'/>
- </cell>
- </row>
- <!--<row>-->
- <!--<cell anchor='east'>-->
- <!--<JLabel id='gammeLabel'/>-->
- <!--</cell>-->
- <!--<cell weightx='1' columns='6'>-->
- <!--<BeanFilterableComboBox id='gammeComboBox'-->
- <!--constructorParams='this'-->
- <!--genericType="Range"/>-->
- <!--</cell>-->
- <!--</row>-->
<row>
<cell>
<JLabel id="takenByLabel"/>
@@ -235,6 +216,16 @@
</cell>
</row>
+ <row>
+ <cell>
+ <JLabel id='ediCodeNumberLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id='ediCodeNumberField'
+ onKeyReleased='handler.setText(event, "ediCodeNumber")'/>
+ </cell>
+ </row>
+
</Table>
</JScrollPane>
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-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -48,6 +48,7 @@
import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableCellAction;
import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableRowAction;
import org.nuiton.topia.persistence.TopiaEntities;
+import org.nuiton.util.beans.BeanMonitor;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
@@ -71,8 +72,10 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -89,6 +92,8 @@
/** Logger. */
private static final Log log = LogFactory.getLog(DemandeUIHandler.class);
+ protected BeanMonitor monitor;
+
/**
* Persistence service.
*
@@ -103,6 +108,9 @@
DemandeUIModel model = getContext().getCurrentEmail();
listModelIsModify(model);
+ Set<String> propertiesToIgnore = getPropertiesToIgnore();
+ monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()]));
+ monitor.setBean(model);
this.ui.setContextValue(model);
}
@@ -162,11 +170,15 @@
// init range model
final RangeTableModel rangeTableModel = new RangeTableModel(columnModel);
List<RangeRowModel> rangeRowModels = new ArrayList<RangeRowModel>();
- for (RangeRow rangeRow : model.getRangeRow()) {
- RangeRowModel rangeRowModel = new RangeRowModel();
- rangeRowModel.fromEntity(rangeRow);
- rangeRowModel.setValid(isRangeRowValid(rangeRowModel));
- rangeRowModels.add(rangeRowModel);
+
+ Collection<RangeRow> rangeRows = model.getRangeRow();
+ if (rangeRows != null) {
+ for (RangeRow rangeRow : rangeRows) {
+ RangeRowModel rangeRowModel = new RangeRowModel();
+ rangeRowModel.fromEntity(rangeRow);
+ rangeRowModel.setValid(isRangeRowValid(rangeRowModel));
+ rangeRowModels.add(rangeRowModel);
+ }
}
rangeTableModel.setRows(rangeRowModels);
@@ -279,18 +291,16 @@
@Override
public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
boolean result = false;
- if (adapter.isEditable()) {
- AbstractApplicationTableModel model = (AbstractApplicationTableModel) table.getModel();
- int viewRow = adapter.row;
- int modelRow = adapter.convertRowIndexToModel(viewRow);
- RangeRowModel row = (RangeRowModel) model.getEntry(modelRow);
- result = !row.isValid();
- }
+ AbstractApplicationTableModel model = (AbstractApplicationTableModel) table.getModel();
+ int viewRow = adapter.row;
+ int modelRow = adapter.convertRowIndexToModel(viewRow);
+ RangeRowModel row = (RangeRowModel) model.getEntry(modelRow);
+ result = !row.isValid();
return result;
}
};
Color color = new Color(255, 51, 51);
- table.addHighlighter(new ColorHighlighter(rowIsInvalidPredicate, color, null, color.darker(), null));
+ table.addHighlighter(new ColorHighlighter(rowIsInvalidPredicate, color, Color.WHITE, color.darker(), Color.WHITE));
SwingValidator validator = this.ui.getValidator();
listenValidatorValid(validator, model);
@@ -308,11 +318,20 @@
}
@Override
+ protected Set<String> getPropertiesToIgnore() {
+ Set<String> result = super.getPropertiesToIgnore();
+ result.add(DemandeUIModel.PROPERTY_EDITABLE);
+ return result;
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
}
clearValidators();
+ ui.getAttachmentsButton().setSelected(false);
+ ui.getHistoryButton().setSelected(false);
}
@Override
@@ -332,6 +351,10 @@
return ui.getValidator();
}
+ public BeanMonitor getMonitor() {
+ return monitor;
+ }
+
protected boolean isRangeRowValid(RangeRowModel rangeRow) {
return (rangeRow.getProductQuantity() != null && rangeRow.getProductQuantity() > 0
|| rangeRow.getSavQuantity() != null && rangeRow.getSavQuantity() > 0)
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -23,7 +23,6 @@
*/
import com.franciaflex.faxtomail.persistence.entities.Attachment;
-import com.franciaflex.faxtomail.persistence.entities.Client;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.DemandType;
import com.franciaflex.faxtomail.persistence.entities.Email;
@@ -36,7 +35,6 @@
import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
-import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -48,7 +46,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
-import java.util.List;
import static org.nuiton.i18n.I18n.t;
@@ -62,6 +59,7 @@
public static final String PROPERTY_PF_NB = "pfNb";
public static final String PROPERTY_SAV_NB = "savNb";
+ public static final String PROPERTY_EDITABLE = "editable";
protected final Email editObject = new EmailImpl();
@@ -73,6 +71,8 @@
protected int savNb;
+ protected boolean editable = true;
+
protected static Binder<DemandeUIModel, Email> toBeanBinder =
BinderFactory.newBinder(DemandeUIModel.class,
Email.class);
@@ -113,6 +113,7 @@
setSavNb(savNb);
}
});
+
}
public Boolean getFax() {
@@ -411,6 +412,16 @@
firePropertyChange(PROPERTY_SAV_NB, oldValue, savNb);
}
+ public boolean isEditable() {
+ return editable;
+ }
+
+ public void setEditable(boolean editable) {
+ Object oldValue = isEditable();
+ this.editable = editable;
+ firePropertyChange(PROPERTY_EDITABLE, oldValue, editable);
+ }
+
@Override
protected Email newEntity() {
return new EmailImpl();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -6,9 +6,11 @@
import com.franciaflex.faxtomail.persistence.entities.HasLabel;
import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.services.service.ValidationService;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel;
import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellEditor;
import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellRenderer;
import com.google.common.base.Function;
@@ -17,12 +19,16 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.decorator.ColorHighlighter;
import org.jdesktop.swingx.decorator.ComponentAdapter;
+import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.jdesktop.swingx.decorator.Highlighter;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.jdesktop.swingx.table.TableColumnModelExt;
import org.nuiton.decorator.Decorator;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.validator.NuitonValidatorFactory;
+import org.nuiton.validator.NuitonValidatorResult;
import javax.swing.*;
import javax.swing.event.ChangeListener;
@@ -161,6 +167,18 @@
};
table.addHighlighter(highlighter);
+ HighlightPredicate rowIsInvalidPredicate = new HighlightPredicate() {
+ @Override
+ public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
+ int viewRow = adapter.row;
+ int modelRow = adapter.convertRowIndexToModel(viewRow);
+ DemandeUIModel row = tableModel.getEntry(modelRow);
+ return !row.isValid() && row.getTakenBy()!= null;
+ }
+ };
+ Color color = new Color(255, 51, 51);
+ table.addHighlighter(new ColorHighlighter(rowIsInvalidPredicate, color, Color.WHITE, color.darker(), Color.WHITE));
+
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
JXTable table = (JXTable) evt.getSource();
@@ -188,6 +206,11 @@
context.getActionEngine().runAction(new ShowDemandeAction(context.getMainUI().getHandler()));
}
+ protected boolean isDemandeValid(DemandeUIModel d) {
+ NuitonValidatorResult result = NuitonValidatorFactory.newValidator(DemandeUIModel.class).validate(d);
+ return result.isValid();
+ }
+
public class QuantityTableCellRenderer extends DefaultTableCellRenderer {
protected Function<RangeRow, Integer> getQuantityFunction;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -129,14 +129,14 @@
public boolean stopCellEditing() {
boolean b = super.stopCellEditing();
if (b) {
- editorButton.setBean(null);
+ editorButton.init(null);
}
return b;
}
@Override
public void cancelCellEditing() {
- editorButton.setBean(null);
+ editorButton.init(null);
super.cancelCellEditing();
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-03-14 17:07:36 UTC (rev 19)
@@ -2,23 +2,22 @@
title: "faxtomail.attachmentEditor.title";
}
+#attachments {
+ editable: true;
+}
+
#fileLabel {
text: "faxtomail.attachmentEditor.field.file";
- labelFor: {file};
+ labelFor: { file };
}
-#fileNameLabel {
- text: "faxtomail.attachmentEditor.field.fileName";
- labelFor: {fileName};
+#file {
+ enabled: { model.isEditable() };
}
-#fileCommentLabel {
- text: "faxtomail.attachmentEditor.field.fileComment";
- labelFor: {fileComment};
-}
-
#addButton {
actionIcon: add;
toolTipText: "faxtomail.attachmentEditor.action.add.tip";
+ enabled: { model.isEditable() };
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2014-03-14 17:07:36 UTC (rev 19)
@@ -1,11 +1,14 @@
<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI
- superGenericType="FaxToMailUIContext, AttachmentEditorUIHandler"
+ superGenericType="AttachmentEditorUIModel, AttachmentEditorUIHandler"
id='attachmentDialog'>
<import>
- com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext
+ com.franciaflex.faxtomail.persistence.entities.Attachment
jaxx.runtime.swing.editor.FileEditor
+ jaxx.runtime.swing.model.JaxxDefaultListModel
+
+ org.jdesktop.swingx.JXTable
org.jdesktop.swingx.JXTitledPanel
javax.swing.JComponent
</import>
@@ -14,19 +17,16 @@
and the button to remove existing attachments -->
<Boolean id='editable' javaBean='true'/>
- <!-- bean property -->
- <AttachmentModelAware id='bean' javaBean='null'/>
+ <AttachmentEditorUIModel id='model'
+ initializer='new AttachmentEditorUIModel()'/>
- <FaxToMailUIContext id='model'
- initializer='getContextValue(FaxToMailUIContext.class)'/>
-
<JXTitledPanel id='body'>
<JScrollPane id='attachmentBodyScrollPane'>
<Table id='mainPanel'>
<row fill='both' weighty='1'>
<cell fill='both' weightx='1' columns='3'>
- <JPanel id='attachments' layout='{new GridLayout(0, 1)}'></JPanel>
+ <JXTable id='attachments' />
</cell>
</row>
<row fill='both'>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -3,26 +3,45 @@
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
-import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
import jaxx.runtime.SwingUtil;
-import jaxx.runtime.swing.ComponentMover;
-import jaxx.runtime.swing.ComponentResizer;
+import jaxx.runtime.swing.model.JaxxDefaultListModel;
import jaxx.runtime.validator.swing.SwingValidator;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.jdesktop.swingx.JXList;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.decorator.HighlighterFactory;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import org.jdesktop.swingx.table.TableColumnExt;
+import org.jdesktop.swingx.table.TableColumnModelExt;
import org.nuiton.jaxx.application.ApplicationTechnicalException;
+import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.jaxx.application.swing.table.ColumnIdentifier;
import javax.swing.*;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
+import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
import static org.nuiton.i18n.I18n.t;
@@ -31,24 +50,65 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.2
*/
-public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<FaxToMailUIContext, AttachmentEditorUI> {
+public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<AttachmentEditorUIModel, AttachmentEditorUI> {
@Override
- public void beforeInit(AttachmentEditorUI ui) {
- super.beforeInit(ui);
+ public void afterInit(AttachmentEditorUI ui) {
- getUI().addPropertyChangeListener(AttachmentEditorUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ ui.getFile().setDialogOwner(ui);
+ super.afterInit(ui);
+
+ initTable(ui.getAttachments());
+
+ getModel().addPropertyChangeListener(AttachmentEditorUIModel.PROPERTY_ATTACHMENT, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
- init();
+ AbstractTableModel tableModel = (AbstractTableModel) getUI().getAttachments().getModel();
+ tableModel.fireTableDataChanged();
}
});
}
- @Override
- public void afterInit(AttachmentEditorUI ui) {
- ui.getFile().setDialogOwner(ui);
- super.afterInit(ui);
+ protected void initTable(JXTable table) {
+
+ TableModel attachmentTableModel = new AbstractTableModel() {
+ @Override
+ public int getRowCount() {
+ return CollectionUtils.size(getModel().getAttachment());
+ }
+
+ @Override
+ public int getColumnCount() {
+ return 1;
+ }
+
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ return Iterables.get(getModel().getAttachment(), rowIndex);
+ }
+
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return true;
+ }
+ };
+
+ attachmentTableModel.addTableModelListener(new TableModelListener() {
+ @Override
+ public void tableChanged(TableModelEvent e) {
+ getUI().pack();
+ }
+ });
+
+ TableColumnModel columnModel = new DefaultTableColumnModel();
+ TableColumn column = new TableColumn();
+ column.setCellRenderer(new AttachmentItemRenderer());
+ column.setCellEditor(new AttachmentItemEditor());
+ columnModel.addColumn(column);
+
+ table.setModel(attachmentTableModel);
+ table.setColumnModel(columnModel);
+ table.addHighlighter(HighlighterFactory.createAlternateStriping());
}
@Override
@@ -61,24 +121,10 @@
}
@Override
- public SwingValidator<FaxToMailUIContext> getValidator() {
+ public SwingValidator<AttachmentEditorUIModel> getValidator() {
return null;
}
- public void init() {
- resetFields();
- ui.getAttachments().removeAll();
- AttachmentModelAware bean = ui.getBean();
- if (bean != null) {
- Collection<Attachment> attachments = bean.getAttachment();
- if (attachments != null) {
- for (Attachment attachment : attachments) {
- addAttachment(attachment);
- }
- }
- }
- }
-
public void place(JComponent component) {
// Computes the location of bottom left corner of the cell
Component comp = component;
@@ -100,42 +146,18 @@
}
public void addAttachment() {
- AttachmentModelAware bean = ui.getBean();
Attachment attachment = new AttachmentImpl();
File file = ui.getFile().getSelectedFile();
if (file != null) {
-// String name = ui.getFileName().getText();
-// if (StringUtils.isEmpty(name)) {
- String name = file.getName();
-// }
-// attachment.setObjectType(bean.getObjectType());
-// attachment.setObjectId(bean.getObjectId());
-// attachment.setName(name);
-// attachment.setComment(ui.getFileComment().getText());
attachment.setFile(file);
-
-// attachment = getPersistenceService().createAttachment(attachment, file);
- bean.addAttachment(attachment);
-
+ getModel().addAttachment(attachment);
resetFields();
- addAttachment(attachment);
-
- ui.pack();
}
}
- protected void addAttachment(final Attachment attachment) {
- AttachmentItem item = new AttachmentItem();
- item.setAttachment(attachment);
- item.setHandler(this);
- ui.getAttachments().add(item);
- }
-
protected void resetFields() {
ui.getFile().setSelectedFilePath(null);
-// ui.getFileName().setText("");
-// ui.getFileComment().setText("");
}
public void openAttachment(Attachment attachment) {
@@ -155,14 +177,6 @@
}
}
- public void saveAttachment(Attachment attachment) {
-
- SaveAttachmentAction action = getContext().getActionFactory().createLogicAction(
- this, SaveAttachmentAction.class);
- action.setAttachment(attachment);
- getContext().getActionEngine().runAction(action);
- }
-
public void removeAttachment(AttachmentItem attachmentItem) {
Attachment attachment = attachmentItem.getAttachment();
boolean hackDialog = ui.isAlwaysOnTop();
@@ -178,13 +192,56 @@
}
if (answer == JOptionPane.YES_OPTION) {
- AttachmentModelAware bean = ui.getBean();
// getPersistenceService().deleteAttachment(attachment.getId());
- bean.removeAttachment(attachment);
- ui.getAttachments().remove(attachmentItem);
+ getModel().removeAttachment(attachment);
ui.pack();
}
}
+
+ protected class AttachmentItemRenderer extends AttachmentItem implements TableCellRenderer {
+
+ public AttachmentItemRenderer() {
+ setHandler(AttachmentEditorUIHandler.this);
+ }
+
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+ Attachment attachment = (Attachment) value;
+ setAttachment(attachment);
+ return this;
+ }
+ }
+
+ protected class AttachmentItemEditor extends AbstractCellEditor implements TableCellEditor {
+
+ protected AttachmentItem attachmentItem;
+
+ public AttachmentItemEditor() {
+ attachmentItem = new AttachmentItem();
+ attachmentItem.setHandler(AttachmentEditorUIHandler.this);
+ }
+
+ public Component getTableCellEditorComponent(JTable table, Object value,
+ boolean isSelected, int row, int column) {
+ Attachment attachment = (Attachment) value;
+ attachmentItem.setAttachment(attachment);
+ return attachmentItem;
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ return attachmentItem.getAttachment();
+ }
+
+ public boolean stopCellEditing() {
+ return super.stopCellEditing();
+ }
+
+ protected void fireEditingStopped() {
+ super.fireEditingStopped();
+ }
+ }
+
}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIModel.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -0,0 +1,91 @@
+package com.franciaflex.faxtomail.ui.swing.util.attachment;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class AttachmentEditorUIModel extends AbstractFaxToMailBeanUIModel<AttachmentModelAware, AttachmentEditorUIModel>
+ implements AttachmentModelAware {
+
+ public static final String PROPERTY_FILE = "file";
+ public static final String PROPERTY_EDITABLE = "editable";
+
+ protected File file;
+ protected boolean editable = true;
+
+ protected final Collection<Attachment> attachments = new ArrayList<Attachment>();
+
+ protected static Binder<AttachmentEditorUIModel, AttachmentModelAware> toBeanBinder =
+ BinderFactory.newBinder(AttachmentEditorUIModel.class,
+ AttachmentModelAware.class);
+
+ protected static Binder<AttachmentModelAware, AttachmentEditorUIModel> fromBeanBinder =
+ BinderFactory.newBinder(AttachmentModelAware.class, AttachmentEditorUIModel.class);
+
+ protected AttachmentEditorUIModel() {
+ super(fromBeanBinder, toBeanBinder);
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ public void setFile(File file) {
+ Object oldValue = getFile();
+ this.file = file;
+ firePropertyChange(PROPERTY_FILE, oldValue, file);
+ }
+
+ public boolean isEditable() {
+ return editable;
+ }
+
+ public void setEditable(boolean editable) {
+ Object oldValue = isEditable();
+ this.editable = editable;
+ firePropertyChange(PROPERTY_EDITABLE, oldValue, editable);
+ }
+
+ @Override
+ public Collection<Attachment> getAttachment() {
+ return attachments;
+ }
+
+ @Override
+ public void addAllAttachment(Collection<Attachment> attachments) {
+ this.attachments.addAll(attachments);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, this.attachments);
+ }
+
+ @Override
+ public void addAttachment(Attachment attachment) {
+ attachments.add(attachment);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, attachments);
+ }
+
+ @Override
+ public void removeAttachment(Attachment attachment) {
+ attachments.remove(attachment);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, attachments);
+ }
+
+ public void setAttachments(Collection<Attachment> attachments) {
+ this.attachments.clear();
+ this.attachments.addAll(attachments);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, this.attachments);
+ }
+
+ @Override
+ protected AttachmentModelAware newEntity() {
+ return null;
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-03-14 17:07:36 UTC (rev 19)
@@ -12,11 +12,6 @@
toolTipText: "faxtomail.attachmentEditor.action.open.tip";
}
-#saveAttachmentButton {
- actionIcon: "import";
- toolTipText: "faxtomail.attachmentEditor.action.save.tip";
-}
-
#removeAttachmentButton {
actionIcon: "delete";
toolTipText: "faxtomail.attachmentEditor.action.remove.tip";
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx 2014-03-14 17:07:36 UTC (rev 19)
@@ -15,8 +15,6 @@
<JToolBar id='toolbar' constraints='BorderLayout.EAST'>
<JButton id='openAttachmentButton'
onActionPerformed='handler.openAttachment(attachment)'/>
- <JButton id='saveAttachmentButton'
- onActionPerformed='handler.saveAttachment(attachment)'/>
<JButton id='removeAttachmentButton'
onActionPerformed='handler.removeAttachment(this)'/>
</JToolBar>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -30,11 +30,17 @@
*/
public class ButtonAttachment extends AbstractToolbarPopupButton<AttachmentEditorUI> {
- private transient PropertyChangeListener listenAttachmentsChanged;
public ButtonAttachment(AttachmentModelAware model) {
setToolTipText(t("faxtomail.attachmentEditor.action.tip"));
- setBean(model);
+ popup.getModel().addPropertyChangeListener(AttachmentEditorUIModel.PROPERTY_ATTACHMENT, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ List<Attachment> attachment = (List<Attachment>) evt.getNewValue();
+ setText(getButtonText(attachment));
+ }
+ });
+ init(model);
}
@Override
@@ -52,47 +58,17 @@
return t("faxtomail.attachmentEditor.text", attachmentNb);
}
- public void init() {
- popup.getHandler().init();
- }
-
public void init(AttachmentModelAware model) {
- setBean(model);
- init();
+ popup.getModel().fromEntity(model);
+ setText(getButtonText(model != null ? model.getAttachment() : null));
}
public AttachmentModelAware getBean() {
- return popup.getBean();
+ return popup.getModel();
}
- protected void setBean(AttachmentModelAware model) {
- AttachmentModelAware bean = popup.getBean();
- if (bean != null) {
- ((AbstractSerializableBean) bean).removePropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, getListenAttachmentsChanged());
- }
- popup.setBean(model);
-
- if (model != null) {
-
- ((AbstractSerializableBean) model).addPropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, getListenAttachmentsChanged());
- Collection<Attachment> attachments = model.getAttachment();
- setText(ButtonAttachment.getButtonText(attachments));
- }
+ public void setEditable(boolean editable) {
+ popup.getModel().setEditable(editable);
}
- protected PropertyChangeListener getListenAttachmentsChanged() {
- if (listenAttachmentsChanged == null) {
- listenAttachmentsChanged = new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- List<Attachment> attachment = (List<Attachment>) evt.getNewValue();
- setText(getButtonText(attachment));
- if (!popup.isVisible()) {
- init();
- }
- }
- };
- }
- return listenAttachmentsChanged;
- }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -15,7 +15,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 2.4
*/
-public class SaveAttachmentAction extends AbstractFaxToMailAction<FaxToMailUIContext, AttachmentEditorUI, AttachmentEditorUIHandler> {
+public class SaveAttachmentAction extends AbstractFaxToMailAction<AttachmentEditorUIModel, AttachmentEditorUI, AttachmentEditorUIHandler> {
private Attachment attachment;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-03-14 17:07:36 UTC (rev 19)
@@ -1,8 +1,20 @@
+#historyItemPanel {
+ border: { BorderFactory.createEmptyBorder(2, 3, 2, 3) };
+}
+
#type {
- text : { JAXXUtil.getStringValue(model.getType()) };
+ text : { JAXXUtil.getStringValue(model.getType().getLabelKey()) };
font-weight: "bold";
}
+#fields {
+ text : { handler.decorateFields(model.getFields()) };
+}
+
+#data {
+ opaque: false;
+}
+
#userLabel {
text : "faxtomail.common.by.label";
font-style: "italic";
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-03-14 17:07:36 UTC (rev 19)
@@ -11,20 +11,22 @@
static jaxx.runtime.JAXXUtil.getStringValue
</import>
- <HistoryItemModel id='model' initializer="new HistoryItemModel(getContextValue(History.class))" />
+ <HistoryItemModel id='model' initializer="new HistoryItemModel()" />
<HistoryListUIHandler id="handler" initializer="getContextValue(HistoryListUIHandler.class)" />
<script><![CDATA[
-public HistoryItem(History history, HistoryListUIHandler handler) {
- setContextValue(history);
+public HistoryItem(HistoryListUIHandler handler) {
setContextValue(handler);
}
]]></script>
<JLabel id='type'/>
- <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}">
+ <JLabel id='fields'/>
+
+ <JPanel id="data"
+ layout="{new FlowLayout(FlowLayout.LEADING)}">
<JLabel id='userLabel'/>
<JLabel id='user'/>
<JLabel id='dateLabel'/>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -6,12 +6,18 @@
import com.franciaflex.faxtomail.persistence.entities.HistoryImpl;
import com.franciaflex.faxtomail.persistence.entities.HistoryType;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import org.apache.commons.lang3.StringUtils;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
+import java.util.List;
+import static org.nuiton.i18n.I18n.t;
+
/**
* @author Kevin Morin (Code Lutin)
* @since x.x
@@ -27,9 +33,8 @@
protected final History editObject = new HistoryImpl();
- public HistoryItemModel(History history) {
+ public HistoryItemModel() {
super(fromBeanBinder, toBeanBinder);
- fromEntity(history);
}
public HistoryType getType() {
@@ -42,6 +47,15 @@
firePropertyChanged(History.PROPERTY_TYPE, oldValue, type);
}
+ public void setFields(Collection<String> fields) {
+ editObject.setFields(fields);
+ firePropertyChanged(History.PROPERTY_FIELDS, null, fields);
+ }
+
+ public Collection<String> getFields() {
+ return editObject.getFields();
+ }
+
public Date getModificationDate() {
return editObject.getModificationDate();
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css 2014-03-14 17:07:36 UTC (rev 19)
@@ -1,3 +1,7 @@
#body {
title: "faxtomail.historyList.title";
}
+
+#histories {
+ enabled: false;
+}
\ No newline at end of file
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx 2014-03-14 17:07:36 UTC (rev 19)
@@ -3,6 +3,7 @@
id='historyListDialog'>
<import>
+ org.jdesktop.swingx.JXList
org.jdesktop.swingx.JXTitledPanel
</import>
@@ -11,7 +12,7 @@
<JXTitledPanel id='body'>
<JScrollPane id='attachmentBodyScrollPane'>
- <JPanel id='histories' layout='{new GridLayout(0, 1)}'></JPanel>
+ <JXList id='histories' />
</JScrollPane>
</JXTitledPanel>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -1,19 +1,30 @@
package com.franciaflex.faxtomail.ui.swing.util.history;
-import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.History;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
-import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler;
-import jaxx.runtime.JAXXUtil;
+import com.google.common.collect.Iterables;
+import jaxx.runtime.swing.model.JaxxDefaultListModel;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXList;
+import org.jdesktop.swingx.decorator.HighlighterFactory;
+import org.nuiton.util.StringUtil;
import javax.swing.*;
+import javax.swing.text.Highlighter;
import java.awt.*;
-import java.util.Collection;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.*;
+import java.util.List;
+import static org.nuiton.i18n.I18n.n;
+import static org.nuiton.i18n.I18n.t;
+
/**
* @author Kevin Morin (Code Lutin)
* @since x.x
@@ -22,6 +33,25 @@
private final static Log log = LogFactory.getLog(HistoryListUIHandler.class);
+ static {
+ n("faxtomail.demande.receptionDate.label");
+ n("faxtomail.demande.ediCodeNumber.label");
+ n("faxtomail.demande.projectReference.label");
+ n("faxtomail.demande.sender.label");
+ n("faxtomail.demande.fax.label");
+ n("faxtomail.demande.recipient.label");
+ n("faxtomail.demande.object.label");
+ n("faxtomail.demande.clientCode.label");
+ n("faxtomail.demande.mailFolder.label");
+ n("faxtomail.demande.attachment.label");
+ n("faxtomail.demande.demandStatus.label");
+ n("faxtomail.demande.demandType.label");
+ n("faxtomail.demande.priority.label");
+ n("faxtomail.demande.etatAttente.label");
+ n("faxtomail.demande.takenBy.label");
+ n("faxtomail.demande.rangeRow.label");
+ }
+
@Override
public void beforeInit(HistoryListUI ui) {
super.beforeInit(ui);
@@ -37,13 +67,12 @@
public void afterInit(HistoryListUI ui) {
super.afterInit(ui);
- Collection<History> histories = getModel().getHistory();
- if (histories != null) {
- for (History history : histories) {
- HistoryItem item = new HistoryItem(history, this);
- ui.getHistories().add(item);
- }
- }
+ JXList list = ui.getHistories();
+ list.setCellRenderer(new HistoryListCellRenderer());
+ JaxxDefaultListModel listModel = new JaxxDefaultListModel<History>();
+ listModel.setAllElements(getModel().getHistory());
+ list.setModel(listModel);
+ list.addHighlighter(HighlighterFactory.createAlternateStriping());
}
@Override
@@ -59,4 +88,43 @@
protected JComponent getComponentToFocus() {
return null;
}
+
+ public String decorateFields(Collection<String> fields) {
+ List<String> fieldLabels = new ArrayList<String>();
+ if (fields != null) {
+ for (String field : fields) {
+ fieldLabels.add(t("faxtomail.demande." + field + ".label"));
+ }
+ }
+ return StringUtils.join(fieldLabels, ", ");
+ }
+
+ protected class HistoryListCellRenderer extends HistoryItem
+ implements ListCellRenderer {
+
+ public HistoryListCellRenderer() {
+ super(HistoryListUIHandler.this);
+
+ getModel().addPropertyChangeListener(History.PROPERTY_FIELDS, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getNewValue() != null) {
+ add(getFields(), 1);
+ } else {
+ remove(getFields());
+ }
+ }
+ });
+ }
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ History history = (History) value;
+ getModel().fromEntity(history);
+ if (CollectionUtils.isEmpty(getModel().getFields())) {
+ remove(getFields());
+ }
+ return this;
+ }
+ }
}
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-14 17:07:36 UTC (rev 19)
@@ -103,22 +103,30 @@
faxtomail.demande.archive.button.mnemonic=
faxtomail.demande.askCancelEditBeforeLeaving.cancelSave=
faxtomail.demande.askSaveBeforeLeaving.save=
+faxtomail.demande.attachment.label=
faxtomail.demande.back.button.label=
faxtomail.demande.back.button.mnemonic=
faxtomail.demande.client.label=
+faxtomail.demande.clientCode.label=
+faxtomail.demande.demandStatus.label=
+faxtomail.demande.demandType.label=
faxtomail.demande.demandeNumber.label=
+faxtomail.demande.demandeType.label=
faxtomail.demande.docType.label=
faxtomail.demande.ediCodeNumber.label=
faxtomail.demande.etatAttente.label=
+faxtomail.demande.fax.label=
faxtomail.demande.finishedProducts.label=
faxtomail.demande.firstOpened.label=
faxtomail.demande.firstOpenedBy.label=
faxtomail.demande.firstOpeningDate.label=
faxtomail.demande.gamme.label=
+faxtomail.demande.history.label=
faxtomail.demande.lastModificationDate.label=
faxtomail.demande.lastModified.label=
faxtomail.demande.lastModifiedBy.label=
faxtomail.demande.mailBody.label=
+faxtomail.demande.mailFolder.label=
faxtomail.demande.message.label=
faxtomail.demande.object.label=
faxtomail.demande.print.button.label=
@@ -126,8 +134,12 @@
faxtomail.demande.priority.label=
faxtomail.demande.projectReference.default=
faxtomail.demande.projectReference.label=
+faxtomail.demande.rangeRow.label=
faxtomail.demande.received.label=
faxtomail.demande.receivedDate.label=
+faxtomail.demande.receptionDate=
+faxtomail.demande.receptionDate.label=
+faxtomail.demande.recipient.label=
faxtomail.demande.ref.label=
faxtomail.demande.reply.button.label=
faxtomail.demande.reply.button.mnemonic=
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-14 17:07:36 UTC (rev 19)
@@ -37,25 +37,32 @@
faxtomail.demande.archive.button.label=Archiver
faxtomail.demande.askCancelEditBeforeLeaving.cancelSave=L'élément n'est pas valide et ne peut être sauvé.
faxtomail.demande.askSaveBeforeLeaving.save=Vous avez modifié l'élément mais vous n'avez pas enregistré ces modifications.
+faxtomail.demande.attachment.label=
faxtomail.demande.back.button.label=Quitter
-faxtomail.demande.client.label=Client
-faxtomail.demande.docType.label=Type
+faxtomail.demande.client.label=
+faxtomail.demande.clientCode.label=Client
+faxtomail.demande.demandStatus.label=Statut
+faxtomail.demande.demandType.label=Type
faxtomail.demande.ediCodeNumber.label=Retour EDI
faxtomail.demande.etatAttente.label=État attente
+faxtomail.demande.fax.label=
faxtomail.demande.firstOpened.label=Première ouverture
faxtomail.demande.lastModified.label=Dernière modification
faxtomail.demande.mailBody.label=Corps du mail
+faxtomail.demande.mailFolder.label=Dossier
faxtomail.demande.message.label=Message
faxtomail.demande.object.label=Objet
faxtomail.demande.print.button.label=Imprimer
faxtomail.demande.priority.label=Priorité
faxtomail.demande.projectReference.label=Référence chantier
+faxtomail.demande.rangeRow.label=Gammes
faxtomail.demande.receivedDate.label=Reçu le
+faxtomail.demande.receptionDate.label=Date de réception
+faxtomail.demande.recipient.label=Destinataire
faxtomail.demande.reply.button.label=Répondre
faxtomail.demande.save.button.label=Enregistrer
faxtomail.demande.sender.label=Émetteur
faxtomail.demande.sender.manualCreation=Création manuelle
-faxtomail.demande.status.label=Statut
faxtomail.demande.takenBy.label=Pris par
faxtomail.demande.transmit.button.label=Transmettre
faxtomail.demandeList.action.archive=Archiver
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/FaxToMailApplicationContext.java 2014-03-14 17:07:36 UTC (rev 19)
@@ -25,7 +25,7 @@
public static FaxToMailConfiguration getApplicationConfig() {
if (applicationConfig == null) {
- applicationConfig = new FaxToMailConfiguration("faxtomail.properties");
+ applicationConfig = new FaxToMailConfiguration("faxToMail.properties");
}
return applicationConfig;
}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-12 18:14:43 UTC (rev 18)
+++ trunk/pom.xml 2014-03-14 17:07:36 UTC (rev 19)
@@ -83,7 +83,7 @@
<nuitonCsvVersion>3.0-alpha-3</nuitonCsvVersion>
<nuitonDecoratorVersion>3.0-alpha-3</nuitonDecoratorVersion>
<nuitonUpdaterVersion>3.0-alpha-2</nuitonUpdaterVersion>
- <nuitonUtilsVersion>3.0-rc-2</nuitonUtilsVersion>
+ <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion>
<nuitonValidatorVersion>3.0-alpha-3</nuitonValidatorVersion>
<nuitonWebVersion>1.15-alpha-3</nuitonWebVersion>
1
0
12 Mar '14
Author: kmorin
Date: 2014-03-12 19:14:43 +0100 (Wed, 12 Mar 2014)
New Revision: 18
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/18
Log:
refs #4654 [ECRAN] Liste des mails / fax
refs #4655 [ECRAN] D?\195?\169tail d'un mail / fax
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/InitFaxToMailService.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
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/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java
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/SearchUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
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-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -14,12 +14,15 @@
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.persistence.TopiaEntityVisitor;
import org.nuiton.topia.persistence.pager.TopiaPagerBean;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @author kmorin <kmorin(a)codelutin.com>
@@ -29,6 +32,10 @@
private static final Log log = LogFactory.getLog(EmailService.class);
+ public Email getEmailById(String id) {
+ return getPersistenceContext().getEmailDao().findByTopiaId(id);
+ }
+
public Email saveEmail(Email email, FaxToMailUser user) {
Date now = getNow();
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
@@ -77,9 +84,10 @@
public List<Email> getEmailForFolder(MailFolder folder) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
- return new ArrayList<>(dao.forMailFolderEquals(folder)
+ List<Email> result = new ArrayList<>(dao.forMailFolderEquals(folder)
.setOrderByArguments(Email.PROPERTY_RECEPTION_DATE)
.findAll());
+ return result;
}
public List<Email> getEmailForFolderAndSubfolders(MailFolder folder) {
@@ -100,7 +108,10 @@
return folders;
}
- public Email addToOpeningHistory(Email email, FaxToMailUser user, Date date) {
+ public Email addToOpeningHistory(String emailId, FaxToMailUser user, Date date) {
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ Email email = emailDao.findByTopiaId(emailId);
+
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.OPENING,
History.PROPERTY_FAX_TO_MAIL_USER, user,
@@ -112,14 +123,15 @@
email.setTakenBy(user);
}
- EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
email = emailDao.update(email);
getPersistenceContext().commit();
return email;
}
- public Email takeEmail(Email email, FaxToMailUser user) {
+ public Email takeEmail(String emailId, FaxToMailUser user) {
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ Email email = emailDao.findByTopiaId(emailId);
email.setTakenBy(user);
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
@@ -128,7 +140,6 @@
History.PROPERTY_MODIFICATION_DATE, new Date());
email.addHistory(history);
- EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
email = emailDao.update(email);
getPersistenceContext().commit();
return email;
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-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -353,7 +353,7 @@
if (opened) {
- getEmailService().addToOpeningHistory(email, user, now);
+ getEmailService().addToOpeningHistory(email.getTopiaId(), user, now);
email.setDemandType(types.get(random.nextInt(types.size())));
email.setPriority(priorities.get(random.nextInt(priorities.size())));
email.setRangeRow(rangeRows);
@@ -379,7 +379,7 @@
if (opened) {
- getEmailService().addToOpeningHistory(email, user, now);
+ getEmailService().addToOpeningHistory(email.getTopiaId(), user, now);
email.setDemandType(types.get(random.nextInt(types.size())));
email.setPriority(priorities.get(random.nextInt(priorities.size())));
email.setRangeRow(rangeRows);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -39,6 +39,7 @@
import com.franciaflex.faxtomail.services.service.ReferentielService;
import com.franciaflex.faxtomail.services.service.UserService;
import com.franciaflex.faxtomail.ui.swing.content.MainUI;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.UIMessageNotifier;
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
@@ -215,7 +216,7 @@
protected MailFolder currentMailFolder;
- protected Email currentEmail;
+ protected DemandeUIModel currentEmail;
protected List<MailFolder> expandedFolders = new ArrayList<MailFolder>();
@@ -700,11 +701,11 @@
this.currentMailFolder = currentMailFolder;
}
- public Email getCurrentEmail() {
+ public DemandeUIModel getCurrentEmail() {
return currentEmail;
}
- public void setCurrentEmail(Email currentEmail) {
+ public void setCurrentEmail(DemandeUIModel currentEmail) {
this.currentEmail = currentEmail;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -4,6 +4,7 @@
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
@@ -28,22 +29,30 @@
@Override
public void doAction() throws Exception {
+ DemandeUIModel model = getModel();
+ FaxToMailUIContext context = getContext();
+
+ Email persistedEmail = context.getEmailService().getEmailById(model.getTopiaId());
+
RangeTableModel rtm = (RangeTableModel) getUI().getRangeTable().getModel();
List<RangeRowModel> rows = rtm.getRows();
- Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(getModel().getRangeRow(), TopiaEntities.getTopiaIdFunction());
+ Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(model.getRangeRow(), TopiaEntities.getTopiaIdFunction());
+
for (RangeRowModel rangeRowModel : rows) {
- RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId());
- if (rangeRow == null) {
- getModel().addRangeRow(rangeRowModel.toEntity());
- } else {
- rangeRowModel.toEntity(rangeRow);
+ if (rangeRowModel.isValid()) {
+ RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId());
+ if (rangeRow == null) {
+ model.addRangeRow(rangeRowModel.toEntity());
+ } else {
+ rangeRowModel.toEntity(rangeRow);
+ }
}
}
- FaxToMailUser currentUser = getContext().getCurrentUser();
- Email currentEmail = getContext().getCurrentEmail();
- Email email = getModel().toEntity(currentEmail);
- getContext().getEmailService().saveEmail(email, currentUser);
+ FaxToMailUser currentUser = context.getCurrentUser();
+ Email email = model.toEntity(persistedEmail);
+
+ context.getEmailService().saveEmail(email, currentUser);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -1,10 +1,12 @@
package com.franciaflex.faxtomail.ui.swing.actions;
import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUI;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIModel;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -21,7 +23,13 @@
@Override
public void doAction() throws Exception {
Email email = getModel().toEntity();
- List<Email> result = getContext().getEmailService().search(email);
+ List<Email> emails = getContext().getEmailService().search(email);
+ List<DemandeUIModel> result = new ArrayList<>();
+ for (Email mail : emails) {
+ DemandeUIModel demand = new DemandeUIModel();
+ demand.fromEntity(email);
+ result.add(demand);
+ }
getModel().setResults(result);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -26,6 +26,7 @@
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
import javax.swing.*;
@@ -51,13 +52,11 @@
public void postSuccessAction() {
super.postSuccessAction();
- Email currentEmail = getContext().getCurrentEmail();
+ DemandeUIModel currentEmail = getContext().getCurrentEmail();
FaxToMailUser takenBy = currentEmail.getTakenBy();
FaxToMailUser currentUser = getContext().getCurrentUser();
if (takenBy != null && !currentUser.equals(takenBy)) {
-// displayWarningMessage(t("faxtomail.alert.alreadyTakenBy.title"),
-// t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)));
String htmlMessage = String.format(
AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
@@ -79,7 +78,7 @@
break;
case JOptionPane.YES_OPTION:
- getContext().getEmailService().takeEmail(currentEmail, currentUser);
+ getContext().getEmailService().takeEmail(currentEmail.getTopiaId(), currentUser);
// TODO kmorin 201410305 how to update on screen
break;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -29,6 +29,7 @@
import com.franciaflex.faxtomail.ui.swing.content.config.FaxToMailConfigUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUI;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUI;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
@@ -338,7 +339,7 @@
case DEMANDE:
screenUI = new DemandeUI(ui);
- Email currentEmail = getContext().getCurrentEmail();
+ DemandeUIModel currentEmail = getContext().getCurrentEmail();
screenTitle = currentEmail.getObject();
icon = JAXXWidgetUtil.createActionIcon("email");
rightDecoration = ((DemandeUI) screenUI).getTopToolBar();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-03-12 18:14:43 UTC (rev 18)
@@ -84,18 +84,17 @@
actionIcon: reply;
text: "faxtomail.demandeList.action.reply";
toolTipText: "faxtomail.demandeList.action.reply.tip";
- enabled: {model.isReplyEnabled()};
+ enabled: { model.isReplyEnabled() };
}
#addAttachmentMenu {
actionIcon: attachment;
text: "faxtomail.demandeList.action.attachment";
toolTipText: "faxtomail.demandeList.action.attachment.tip";
- enabled: {model.isAddAttachmentEnabled()};
+ enabled: { model.isAddAttachmentEnabled() };
}
#archiveMenu {
text: "faxtomail.demandeList.action.archive";
toolTipText: "faxtomail.demandeList.action.archive.tip";
- enabled: {model.isArchiveEnabled()};
}
\ No newline at end of file
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -103,7 +103,13 @@
MailFolder folder = (MailFolder) evt.getNewValue();
List<Email> emails = getContext().getEmailService().getEmailForFolder(folder);
log.info(emails.size() + " emails in folder " + folder.getName());
- model.setEmails(emails);
+ List<DemandeUIModel> demands = new ArrayList<DemandeUIModel>();
+ for (Email email : emails) {
+ DemandeUIModel demand = new DemandeUIModel();
+ demand.fromEntity(email);
+ demands.add(demand);
+ }
+ model.setEmails(demands);
}
});
@@ -117,18 +123,24 @@
// init table
final JXTable dataTable = getUI().getDataTable();
- final AbstractApplicationTableModel<Email> tableModel = initDemandeTable(dataTable);
+ final AbstractApplicationTableModel<DemandeUIModel> tableModel = initDemandeTable(dataTable);
getModel().addPropertyChangeListener(DemandeListUIModel.PROPERTY_EMAILS, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
- List<Email> emails = (List<Email>) evt.getNewValue();
+ List<DemandeUIModel> emails = (List<DemandeUIModel>) evt.getNewValue();
tableModel.setRows(emails);
- int[] quantities = FaxToMailUIUtil.computeQuantities(emails);
+ int pfNb = 0;
+ int savNb = 0;
+ for (DemandeUIModel email : emails) {
+ pfNb += email.getPfNb();
+ savNb += email.getSavNb();
+ }
- getModel().setPfNb(quantities[0]);
- getModel().setSavNb(quantities[1]);
+ DemandeListUIModel model = getModel();
+ model.setPfNb(pfNb);
+ model.setSavNb(savNb);
}
});
@@ -144,7 +156,7 @@
getModel().setSelectedFolder(folder);
getContext().setCurrentMailFolder(folder);
- Email currentEmail = getContext().getCurrentEmail();
+ DemandeUIModel currentEmail = getContext().getCurrentEmail();
if (currentEmail != null) {
int row = tableModel.getRowIndex(currentEmail);
if (row > 0) {
@@ -155,7 +167,7 @@
});
MailFolder currentMailFolder = getContext().getCurrentMailFolder();
- Email currentEmail = getContext().getCurrentEmail();
+ DemandeUIModel currentEmail = getContext().getCurrentEmail();
if (currentMailFolder == null && currentEmail != null) {
currentMailFolder = currentEmail.getMailFolder();
@@ -218,10 +230,34 @@
super.beforeOpenPopup(rowIndex, columnIndex);
int selectedRowCount = getUI().getDataTable().getSelectedRowCount();
- getModel().setAddAttachmentEnabled(selectedRowCount == 1);
- getModel().setReplyEnabled(selectedRowCount == 1);
+ log.info(selectedRowCount == 1);
+
+ DemandeListUIModel model = getModel();
+ model.setAddAttachmentEnabled(selectedRowCount == 1);
+ model.setReplyEnabled(selectedRowCount == 1);
}
+ @Override
+ public void autoSelectRowInTable(MouseEvent e, JPopupMenu popup) {
+ boolean rightClick = SwingUtilities.isRightMouseButton(e);
+ if (rightClick) {
+ // get the coordinates of the mouse click
+ Point p = e.getPoint();
+
+ JXTable source = (JXTable) e.getSource();
+
+ int[] selectedRows = source.getSelectedRows();
+
+ // get the row index at this point
+ int rowIndex = source.rowAtPoint(p);
+ if (rowIndex == -1 || !ArrayUtils.contains(selectedRows, rowIndex)) {
+ source.clearSelection();
+ }
+ }
+
+ super.autoSelectRowInTable(e, popup);
+ }
+
public void autoSelectNodeInTree(MouseEvent e, JPopupMenu popup) {
boolean rightClick = SwingUtilities.isRightMouseButton(e);
@@ -239,7 +275,7 @@
// select row (could empty selection)
if (rowIndex == -1) {
- source.clearSelection();
+ source.clearSelection();
} else {
// set selection
source.setSelectionRow(rowIndex);
@@ -260,23 +296,24 @@
FaxToMailUser currentUser = getContext().getCurrentUser();
Date now = new Date();
- Email email = new EmailImpl();
-
+ List<History> histories = new ArrayList<History>();
+ DemandeUIModel email = new DemandeUIModel();
History history = new HistoryImpl();
history.setFaxToMailUser(currentUser);
history.setType(HistoryType.CREATION);
history.setModificationDate(now);
- email.addHistory(history);
+ histories.add(history);
history = new HistoryImpl();
history.setFaxToMailUser(currentUser);
history.setType(HistoryType.OPENING);
history.setModificationDate(now);
- email.addHistory(history);
+ histories.add(history);
email.setMailFolder(getModel().getSelectedFolder());
email.setReceptionDate(now);
email.setTakenBy(currentUser);
+ email.setHistory(histories);
openDemand(email);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -41,10 +41,12 @@
public static final String PROPERTY_SELECTED_FOLDER = "selectedFolder";
public static final String PROPERTY_PF_NB = "pfNb";
public static final String PROPERTY_SAV_NB = "savNb";
+ public static final String PROPERTY_REPLY_ENABLED = "replyEnabled";
+ public static final String PROPERTY_ADD_ATTACHMENT_ENABLED = "addAttachmentEnabled";
protected List<MailFolder> folders;
- protected List<Email> emails;
+ protected List<DemandeUIModel> emails;
protected MailFolder selectedFolder;
@@ -52,8 +54,6 @@
protected boolean addAttachmentEnabled;
- protected boolean archiveEnabled;
-
protected int pfNb;
protected int savNb;
@@ -68,11 +68,11 @@
firePropertyChange(PROPERTY_FOLDERS, oldValue, folders);
}
- public List<Email> getEmails() {
+ public List<DemandeUIModel> getEmails() {
return emails;
}
- public void setEmails(List<Email> emails) {
+ public void setEmails(List<DemandeUIModel> emails) {
Object oldValue = getEmailNb();
this.emails = emails;
Object newValue = getEmailNb();
@@ -84,9 +84,9 @@
return emails == null ? 0 : emails.size();
}
- public void addEmail(Email email) {
+ public void addEmail(DemandeUIModel email) {
if (emails == null) {
- emails = new ArrayList<Email>();
+ emails = new ArrayList<DemandeUIModel>();
}
Object oldValue = getEmailNb();
emails.add(email);
@@ -110,7 +110,9 @@
}
public void setReplyEnabled(boolean replyEnabled) {
+ Object oldValue = isReplyEnabled();
this.replyEnabled = replyEnabled;
+ firePropertyChange(PROPERTY_REPLY_ENABLED, oldValue, replyEnabled);
}
public boolean isAddAttachmentEnabled() {
@@ -118,17 +120,11 @@
}
public void setAddAttachmentEnabled(boolean addAttachmentEnabled) {
+ Object oldValue = isAddAttachmentEnabled();
this.addAttachmentEnabled = addAttachmentEnabled;
+ firePropertyChange(PROPERTY_ADD_ATTACHMENT_ENABLED, oldValue, addAttachmentEnabled);
}
- public boolean isArchiveEnabled() {
- return archiveEnabled;
- }
-
- public void setArchiveEnabled(boolean archiveEnabled) {
- this.archiveEnabled = archiveEnabled;
- }
-
public int getPfNb() {
return pfNb;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-12 18:14:43 UTC (rev 18)
@@ -138,6 +138,10 @@
verticalAlignment: { SwingConstants.TOP };
}
+#mailBodyField {
+ editable: false;
+}
+
#takenByLabel {
text: "faxtomail.demande.takenBy.label";
}
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-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -37,8 +37,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.decorator.ColorHighlighter;
+import org.jdesktop.swingx.decorator.ComponentAdapter;
+import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.jdesktop.swingx.table.TableColumnModelExt;
+import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
import org.nuiton.jaxx.application.swing.table.MoveToNextEditableCellAction;
import org.nuiton.jaxx.application.swing.table.MoveToNextEditableRowAction;
import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableCellAction;
@@ -51,7 +55,17 @@
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableCellEditor;
-import java.awt.Dimension;
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Element;
+import javax.swing.text.LabelView;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.View;
+import javax.swing.text.ViewFactory;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
@@ -59,6 +73,8 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import static org.nuiton.i18n.I18n.t;
@@ -85,8 +101,7 @@
super.beforeInit(ui);
- DemandeUIModel model = new DemandeUIModel();
- model.fromBean(getContext().getCurrentEmail());
+ DemandeUIModel model = getContext().getCurrentEmail();
listModelIsModify(model);
this.ui.setContextValue(model);
@@ -104,22 +119,26 @@
initBeanFilterableComboBox(ui.getPriorityComboBox(), referentielService.getAllPriority(), model.getPriority());
initBeanFilterableComboBox(ui.getEtatAttenteComboBox(), referentielService.getAllEtatAttente(), model.getEtatAttente());
-// HTMLEditorPane editor = ui.getMessageField();
-// HTMLEditorActionFactory.createFontSizeActionList();
-// HTMLEditorActionFactory.createInlineActionList();
-// HTMLEditorActionFactory.createBlockElementActionList();
+ JEditorPane editor = ui.getMailBodyField();
+ HTMLEditorKit htmlEditorKit = new HTMLEditorKit();
+ editor.setEditorKit(htmlEditorKit);
+// create some simple html as a string
+ String htmlString = "<html>\n"
+ + "<body>\n"
+ + "<script>document.getElementById('test').innerHTML = 'chaussette'</script>"
+ + "<h1 id='test'>Welcome!</h1>\n"
+ + "<h2>This is an H2 header</h2><br/>"
+ + "<p>This is some sample text</p>\n"
+ + "<p><a href=\"http://devdaily.com/blog/\">devdaily blog</a></p>\n"
+ + "<p><img src=\"http://jarnal.wikispaces.com/space/showlogo/1301230030/logo.png\"/></p>\n"
+ + "<p><test>ouaf ! une chaussette :P</test></p>\n"
+ + "</body>\n";
- // create some simple html as a string
-// String htmlString = "<html>\n"
-// + "<body>\n"
-// + "<h1>Welcome!</h1>\n"
-// + "<h2>This is an H2 header</h2>\n"
-// + "<p>This is some sample text</p>\n"
-// + "<p><a href=\"http://devdaily.com/blog/\">devdaily blog</a></p>\n"
-// + "</body>\n";
+ htmlString = htmlString.replaceAll("<img src=\"(.*?)\"(/>|>.*?</img>)", "[image : $1]");
+ htmlString = htmlString.replaceAll("<a href=\"(.*?)\">(.*?)</a>", "[$2 : $1]");
- // create a document, set it on the jeditorpane, then add the html
-// editor.setText(htmlString);
+// create a document, set it on the jeditorpane, then add the html
+ editor.setText(htmlString);
// init table
final JXTable table = ui.getRangeTable();
@@ -140,11 +159,13 @@
null,
table);
+ // init range model
final RangeTableModel rangeTableModel = new RangeTableModel(columnModel);
List<RangeRowModel> rangeRowModels = new ArrayList<RangeRowModel>();
for (RangeRow rangeRow : model.getRangeRow()) {
RangeRowModel rangeRowModel = new RangeRowModel();
rangeRowModel.fromEntity(rangeRow);
+ rangeRowModel.setValid(isRangeRowValid(rangeRowModel));
rangeRowModels.add(rangeRowModel);
}
rangeTableModel.setRows(rangeRowModels);
@@ -153,14 +174,19 @@
model.setPfNb(quantities[0]);
model.setSavNb(quantities[1]);
+ // add listener to update row validity and quantity totals
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
protected PropertyChangeListener listener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
+
+ RangeRowModel row = (RangeRowModel) evt.getSource();
+ row.setValid(isRangeRowValid(row));
+
String propertyName = evt.getPropertyName();
- log.info(propertyName);
- if (RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName)
+ if (RangeRowModel.PROPERTY_VALID.equals(propertyName)
+ || RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName)
|| RangeRow.PROPERTY_SAV_QUANTITY.equals(propertyName)) {
List<RangeRowModel> rangeRows = rangeTableModel.getRows();
@@ -169,6 +195,7 @@
model.setPfNb(quantities[0]);
model.setSavNb(quantities[1]);
}
+
}
};
@@ -248,6 +275,22 @@
};
table.addKeyListener(keyAdapter);
+ HighlightPredicate rowIsInvalidPredicate = new HighlightPredicate() {
+ @Override
+ public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
+ boolean result = false;
+ if (adapter.isEditable()) {
+ AbstractApplicationTableModel model = (AbstractApplicationTableModel) table.getModel();
+ int viewRow = adapter.row;
+ int modelRow = adapter.convertRowIndexToModel(viewRow);
+ RangeRowModel row = (RangeRowModel) model.getEntry(modelRow);
+ result = !row.isValid();
+ }
+ return result;
+ }
+ };
+ Color color = new Color(255, 51, 51);
+ table.addHighlighter(new ColorHighlighter(rowIsInvalidPredicate, color, null, color.darker(), null));
SwingValidator validator = this.ui.getValidator();
listenValidatorValid(validator, model);
@@ -289,6 +332,12 @@
return ui.getValidator();
}
+ protected boolean isRangeRowValid(RangeRowModel rangeRow) {
+ return (rangeRow.getProductQuantity() != null && rangeRow.getProductQuantity() > 0
+ || rangeRow.getSavQuantity() != null && rangeRow.getSavQuantity() > 0)
+ && rangeRow.getRange() != null;
+ }
+
public void transmitDemande() {
MailFolderChooserUI dialogContent = new MailFolderChooserUI(ui);
dialogContent.setModel(getModel());
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -43,6 +43,8 @@
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@@ -80,15 +82,55 @@
public DemandeUIModel() {
super(fromBeanBinder, toBeanBinder);
+ addPropertyChangeListener(Email.PROPERTY_HISTORY, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ findFirstOpeningHistory();
+ findLastModificationHistory();
+ }
+ });
+
+ addPropertyChangeListener(Email.PROPERTY_RANGE_ROW, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ Collection<RangeRow> rangeRows = (Collection<RangeRow>) evt.getNewValue();
+ int pfNb = 0;
+ int savNb = 0;
+ if (rangeRows != null) {
+ for (RangeRow rangeRow : rangeRows) {
+ Integer productQuantity = rangeRow.getProductQuantity();
+ if (productQuantity != null) {
+ pfNb += productQuantity;
+ }
+
+ Integer savQuantity = rangeRow.getSavQuantity();
+ if (savQuantity != null) {
+ savNb += savQuantity;
+ }
+ }
+ }
+ setPfNb(pfNb);
+ setSavNb(savNb);
+ }
+ });
}
- @Override
- public void fromEntity(Email entity) {
- super.fromEntity(entity);
- firstOpeningHistory = null;
- lastModificationHistory = null;
+ public Boolean getFax() {
+ return editObject.getFax();
}
+ public void setFax(Boolean fax) {
+ editObject.setFax(fax);
+ }
+
+ public String getTopiaId() {
+ return editObject.getTopiaId();
+ }
+
+ public void setTopiaId(String id) {
+ editObject.setTopiaId(id);
+ }
+
public void setSender(String sender) {
Object oldValue = getSender();
editObject.setSender(sender);
@@ -259,9 +301,6 @@
}
public History getFirstOpeningHistory() {
- if (firstOpeningHistory == null) {
- findFirstOpeningHistory();
- }
return firstOpeningHistory;
}
@@ -276,9 +315,6 @@
}
public History getLastModificationHistory() {
- if (lastModificationHistory == null) {
- findLastModificationHistory();
- }
return lastModificationHistory;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -41,6 +41,9 @@
}
public void setProductQuantity(Integer productQuantity) {
+ if (productQuantity == null) {
+ productQuantity = 0;
+ }
Object oldValue = getProductQuantity();
editObject.setProductQuantity(productQuantity);
firePropertyChange(RangeRow.PROPERTY_PRODUCT_QUANTITY, oldValue, productQuantity);
@@ -51,6 +54,9 @@
}
public void setSavQuantity(Integer savQuantity) {
+ if (savQuantity == null) {
+ savQuantity = 0;
+ }
Object oldValue = getSavQuantity();
editObject.setSavQuantity(savQuantity);
firePropertyChange(RangeRow.PROPERTY_SAV_QUANTITY, oldValue, savQuantity);
@@ -82,4 +88,5 @@
protected RangeRow newEntity() {
return new RangeRowImpl();
}
+
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -21,22 +21,22 @@
public static final ColumnIdentifier<RangeRow> RANGE_COLUMN = ColumnIdentifier.newId(
RangeRow.PROPERTY_RANGE,
n("faxtomail.rangeRows.table.header.range"),
- n("faxtomail.rangeRows.table.header.range"));
+ n("faxtomail.rangeRows.table.header.range.tip"));
public static final ColumnIdentifier<RangeRow> COMMAND_NUMBER_COLUMN = ColumnIdentifier.newId(
RangeRow.PROPERTY_COMMAND_NUMBER,
- n("faxtomail.rangeRows.table.header.command_number"),
- n("faxtomail.rangeRows.table.header.command_number"));
+ n("faxtomail.rangeRows.table.header.commandNumber"),
+ n("faxtomail.rangeRows.table.header.commandNumber.tip"));
public static final ColumnIdentifier<RangeRow> PRODUCT_QUANTITY_COLUMN = ColumnIdentifier.newId(
RangeRow.PROPERTY_PRODUCT_QUANTITY,
- n("faxtomail.rangeRows.table.header.product_column"),
- n("faxtomail.rangeRows.table.header.product_column"));
+ n("faxtomail.rangeRows.table.header.productColumn"),
+ n("faxtomail.rangeRows.table.header.productColumn.tip"));
public static final ColumnIdentifier<RangeRow> SAV_QUANTITY_COLUMN = ColumnIdentifier.newId(
RangeRow.PROPERTY_SAV_QUANTITY,
- n("faxtomail.rangeRows.table.header.sav_quantity"),
- n("faxtomail.rangeRows.table.header.sav_quantity"));
+ n("faxtomail.rangeRows.table.header.savQuantity"),
+ n("faxtomail.rangeRows.table.header.savQuantity.tip"));
public RangeTableModel(TableColumnModelExt columnModel) {
super(columnModel, true, true);
@@ -45,6 +45,11 @@
@Override
public RangeRowModel createNewRow() {
- return new RangeRowModel();
+ RangeRowModel row = new RangeRowModel();
+ row.setProductQuantity(0);
+ row.setSavQuantity(0);
+ row.setValid(false);
+ return row;
}
+
}
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-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -27,6 +27,7 @@
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
@@ -122,12 +123,12 @@
null);
JXTable dataTable = getUI().getDataTable();
- final AbstractApplicationTableModel<Email> tableModel = initDemandeTable(dataTable);
+ final AbstractApplicationTableModel<DemandeUIModel> tableModel = initDemandeTable(dataTable);
getModel().addPropertyChangeListener(SearchUIModel.PROPERTY_RESULTS, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
- List<Email> emails = (List<Email>) evt.getNewValue();
+ List<DemandeUIModel> emails = (List<DemandeUIModel>) evt.getNewValue();
tableModel.setRows(emails);
showInformationMessage(t("faxtomail.search.resultNb", emails.size()));
}
@@ -171,7 +172,7 @@
JXTable dataTable = ui.getDataTable();
int rowIndex = dataTable.getSelectedRow();
rowIndex = dataTable.convertRowIndexToModel(rowIndex);
- Email selectedEmail = ((DemandeTableModel) dataTable.getModel()).getEntry(rowIndex);
+ DemandeUIModel selectedEmail = ((DemandeTableModel) dataTable.getModel()).getEntry(rowIndex);
getContext().setCurrentEmail(selectedEmail);
getContext().setCurrentMailFolder(selectedEmail.getMailFolder());
getContext().getActionEngine().runAction(new ShowDemandeListAction(getContext().getMainUI().getHandler()));
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -34,6 +34,7 @@
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -69,7 +70,7 @@
protected Date minPrintingDate;
protected Date maxPrintingDate;
- protected List<Email> results;
+ protected List<DemandeUIModel> results;
protected static Binder<SearchUIModel, Email> toBeanBinder =
BinderFactory.newBinder(SearchUIModel.class,
@@ -253,11 +254,11 @@
this.maxPrintingDate = maxPrintingDate;
}
- public List<Email> getResults() {
+ public List<DemandeUIModel> getResults() {
return results;
}
- public void setResults(List<Email> results) {
+ public void setResults(List<DemandeUIModel> results) {
this.results = results;
firePropertyChanged(PROPERTY_RESULTS, null, results);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -5,10 +5,17 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.HasLabel;
import com.franciaflex.faxtomail.persistence.entities.Priority;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellEditor;
import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellRenderer;
+import com.google.common.base.Function;
+import jaxx.runtime.swing.renderer.DecoratorTableCellRenderer;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.decorator.ComponentAdapter;
import org.jdesktop.swingx.decorator.Highlighter;
@@ -17,13 +24,18 @@
import org.nuiton.decorator.Decorator;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import javax.swing.*;
import javax.swing.event.ChangeListener;
+import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
+import java.util.List;
/**
* @author Kevin Morin (Code Lutin)
@@ -31,7 +43,9 @@
*/
public abstract class AbstractFaxToMailDemandListHandler<M, UI extends FaxToMailUI<M, ?>> extends AbstractFaxToMailUIHandler<M, UI> {
- public AbstractApplicationTableModel<Email> initDemandeTable(JXTable table) {
+ private static final Log log = LogFactory.getLog(AbstractFaxToMailDemandListHandler.class);
+
+ public AbstractApplicationTableModel<DemandeUIModel> initDemandeTable(JXTable table) {
TableColumnModelExt columnModel = new DefaultTableColumnModelExt();
Company franciaflex = getContext().getCurrentCompany();
@@ -48,6 +62,8 @@
Email.PROPERTY_RECIPIENT,
Email.PROPERTY_DEMAND_STATUS,
Email.PROPERTY_ETAT_ATTENTE,
+ DemandeUIModel.PROPERTY_PF_NB,
+ DemandeUIModel.PROPERTY_SAV_NB,
Email.PROPERTY_ATTACHMENT
}, ',');
}
@@ -73,6 +89,23 @@
tableCellRenderer = newTableCellRender(Date.class);
break;
+ case DemandeUIModel.PROPERTY_PF_NB:
+ tableCellRenderer = new QuantityTableCellRenderer(new Function<RangeRow, Integer>() {
+ @Override
+ public Integer apply(RangeRow input) {
+ return input.getProductQuantity();
+ }
+ });
+ break;
+ case DemandeUIModel.PROPERTY_SAV_NB:
+ tableCellRenderer = new QuantityTableCellRenderer(new Function<RangeRow, Integer>() {
+ @Override
+ public Integer apply(RangeRow input) {
+ return input.getSavQuantity();
+ }
+ });
+ break;
+
case Email.PROPERTY_DEMAND_STATUS:
case Email.PROPERTY_DEMAND_TYPE:
case Email.PROPERTY_ETAT_ATTENTE:
@@ -94,7 +127,7 @@
}
}
- final AbstractApplicationTableModel<Email> tableModel = new DemandeTableModel(columnModel);
+ final AbstractApplicationTableModel<DemandeUIModel> tableModel = new DemandeTableModel(columnModel);
table.setModel(tableModel);
table.setColumnModel(columnModel);
table.getTableHeader().setReorderingAllowed(false);
@@ -104,7 +137,7 @@
public Component highlight(Component renderer, ComponentAdapter adapter) {
int viewRow = adapter.row;
int modelRow = adapter.convertRowIndexToModel(viewRow);
- Email row = tableModel.getEntry(modelRow);
+ DemandeUIModel row = tableModel.getEntry(modelRow);
boolean highlight = row.getTakenBy() == null;
if (highlight) {
Font font = renderer.getFont();
@@ -135,8 +168,12 @@
int rowIndex = table.getSelectedRow();
rowIndex = table.convertRowIndexToModel(rowIndex);
- Email selectedEmail = tableModel.getEntry(rowIndex);
- selectedEmail = getContext().getEmailService().addToOpeningHistory(selectedEmail, getContext().getCurrentUser(), new Date());
+ DemandeUIModel selectedEmail = tableModel.getEntry(rowIndex);
+ FaxToMailUIContext context = getContext();
+ Email email = context.getEmailService().addToOpeningHistory(selectedEmail.getTopiaId(),
+ context.getCurrentUser(),
+ new Date());
+ selectedEmail.fromEntity(email);
openDemand(selectedEmail);
}
}
@@ -145,8 +182,45 @@
return tableModel;
}
- protected void openDemand(Email selectedEmail) {
- getContext().setCurrentEmail(selectedEmail);
- getContext().getActionEngine().runAction(new ShowDemandeAction(getContext().getMainUI().getHandler()));
+ protected void openDemand(DemandeUIModel selectedEmail) {
+ FaxToMailUIContext context = getContext();
+ context.setCurrentEmail(selectedEmail);
+ context.getActionEngine().runAction(new ShowDemandeAction(context.getMainUI().getHandler()));
}
+
+ public class QuantityTableCellRenderer extends DefaultTableCellRenderer {
+
+ protected Function<RangeRow, Integer> getQuantityFunction;
+
+ public QuantityTableCellRenderer(Function<RangeRow, Integer> getQuantityFunction) {
+ this.getQuantityFunction = getQuantityFunction;
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasfocus, int row, int column) {
+ super.getTableCellRendererComponent(table, value, isSelected, hasfocus, row, column);
+
+ AbstractApplicationTableModel<DemandeUIModel> tableModel = (AbstractApplicationTableModel<DemandeUIModel>) table.getModel();
+ int rowInModel = table.convertRowIndexToModel(row);
+ DemandeUIModel demande = tableModel.getEntry(rowInModel);
+
+ String tooltipText = null;
+
+ List<String> ranges = new ArrayList<String>();
+ Collection<RangeRow> rangeRows = demande.getRangeRow();
+ for (RangeRow rangeRow : rangeRows) {
+ Integer qty = getQuantityFunction.apply(rangeRow);
+ if (qty != null && qty > 0) {
+ ranges.add(rangeRow.getRange().getLabel() + " : " + qty);
+ }
+ }
+
+ if (!ranges.isEmpty()) {
+ tooltipText = "<html><body>" + StringUtils.join(ranges, "<br/>") + "</body></html>";
+ }
+ setToolTipText(tooltipText);
+
+ return this;
+ }
+ }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -24,6 +24,7 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.table.TableColumnModelExt;
@@ -41,7 +42,7 @@
* @author kmorin <kmorin(a)codelutin.com>
* @since x.x
*/
-public class DemandeTableModel extends AbstractApplicationTableModel<Email> {
+public class DemandeTableModel extends AbstractApplicationTableModel<DemandeUIModel> {
private static final Log log =
LogFactory.getLog(DemandeTableModel.class);
@@ -107,14 +108,8 @@
n("faxtomail.demandeList.table.header.user"),
n("faxtomail.demandeList.table.header.user.tip")));
- put(Email.PROPERTY_MAIL_FOLDER,
- ColumnIdentifier.<Email>newReadOnlyId(
- Email.PROPERTY_MAIL_FOLDER,
- n("faxtomail.demandeList.table.header.folder"),
- n("faxtomail.demandeList.table.header.folder.tip")));
-
put(Email.PROPERTY_PRIORITY,
- ColumnIdentifier.<Email>newReadOnlyId(
+ ColumnIdentifier.<Email>newId(
Email.PROPERTY_PRIORITY,
n("faxtomail.demandeList.table.header.priority"),
n("faxtomail.demandeList.table.header.priority.tip")));
@@ -125,14 +120,20 @@
n("faxtomail.demandeList.table.header.projectReference"),
n("faxtomail.demandeList.table.header.projectReference.tip")));
- put(Email.PROPERTY_RANGE_ROW,
+ put(DemandeUIModel.PROPERTY_PF_NB,
ColumnIdentifier.<Email>newReadOnlyId(
- Email.PROPERTY_RANGE_ROW,
- n("faxtomail.demandeList.table.header.range"),
- n("faxtomail.demandeList.table.header.range.tip")));
+ DemandeUIModel.PROPERTY_PF_NB,
+ n("faxtomail.demandeList.table.header.pfNb"),
+ n("faxtomail.demandeList.table.header.pfNb.tip")));
+ put(DemandeUIModel.PROPERTY_SAV_NB,
+ ColumnIdentifier.<Email>newReadOnlyId(
+ DemandeUIModel.PROPERTY_SAV_NB,
+ n("faxtomail.demandeList.table.header.savNb"),
+ n("faxtomail.demandeList.table.header.savNb.tip")));
+
put(Email.PROPERTY_ATTACHMENT,
- ColumnIdentifier.<Email>newReadOnlyId(
+ ColumnIdentifier.<Email>newId(
Email.PROPERTY_ATTACHMENT,
n("faxtomail.demandeList.table.header.attachment"),
n("faxtomail.demandeList.table.header.attachment.tip")));
@@ -147,7 +148,12 @@
}
@Override
- public Email createNewRow() {
- return new EmailImpl();
+ public DemandeUIModel createNewRow() {
+ return new DemandeUIModel();
}
+
+ @Override
+ protected void onRowsChanged(List<DemandeUIModel> data) {
+ super.onRowsChanged(data);
+ }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -28,6 +28,7 @@
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.JAXXUtil;
@@ -133,41 +134,20 @@
return result;
}
- public static int[] computeQuantities(List<Email> emails) {
- int pfNb = 0;
- int savNb = 0;
- for (Email email : emails) {
- Collection<RangeRow> rangeRows = email.getRangeRow();
- if (rangeRows != null) {
- for (RangeRow rangeRow : rangeRows) {
- Integer productQuantity = rangeRow.getProductQuantity();
- if (productQuantity != null) {
- pfNb += productQuantity;
- }
-
- Integer savQuantity = rangeRow.getSavQuantity();
- if (savQuantity != null) {
- savNb += savQuantity;
- }
- }
- }
- }
- return new int[] { pfNb, savNb };
- }
-
- //TODO kmorin 20140306 remove this
public static int[] computeQuantities(Collection<RangeRowModel> rangeRows) {
int pfNb = 0;
int savNb = 0;
for (RangeRowModel rangeRow : rangeRows) {
- Integer productQuantity = rangeRow.getProductQuantity();
- if (productQuantity != null) {
- pfNb += productQuantity;
- }
+ if (rangeRow.isValid()) {
+ Integer productQuantity = rangeRow.getProductQuantity();
+ if (productQuantity != null) {
+ pfNb += productQuantity;
+ }
- Integer savQuantity = rangeRow.getSavQuantity();
- if (savQuantity != null) {
- savNb += savQuantity;
+ Integer savQuantity = rangeRow.getSavQuantity();
+ if (savQuantity != null) {
+ savNb += savQuantity;
+ }
}
}
return new int[] { pfNb, savNb };
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -2,6 +2,7 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.History;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler;
import jaxx.runtime.JAXXUtil;
@@ -25,7 +26,7 @@
public void beforeInit(HistoryListUI ui) {
super.beforeInit(ui);
- Email currentEmail = getContext().getCurrentEmail();
+ DemandeUIModel currentEmail = getContext().getCurrentEmail();
HistoryListUIModel model = new HistoryListUIModel();
model.fromBean(currentEmail);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java 2014-03-12 18:14:43 UTC (rev 18)
@@ -3,6 +3,7 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
import com.franciaflex.faxtomail.persistence.entities.History;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
@@ -13,14 +14,14 @@
* @author Kevin Morin (Code Lutin)
* @since x.x
*/
-public class HistoryListUIModel extends AbstractFaxToMailBeanUIModel<Email, HistoryListUIModel> {
+public class HistoryListUIModel extends AbstractFaxToMailBeanUIModel<DemandeUIModel, HistoryListUIModel> {
- protected static Binder<HistoryListUIModel, Email> toBeanBinder =
+ protected static Binder<HistoryListUIModel, DemandeUIModel> toBeanBinder =
BinderFactory.newBinder(HistoryListUIModel.class,
- Email.class);
+ DemandeUIModel.class);
- protected static Binder<Email, HistoryListUIModel> fromBeanBinder =
- BinderFactory.newBinder(Email.class, HistoryListUIModel.class);
+ protected static Binder<DemandeUIModel, HistoryListUIModel> fromBeanBinder =
+ BinderFactory.newBinder(DemandeUIModel.class, HistoryListUIModel.class);
protected final Email editObject = new EmailImpl();
@@ -49,7 +50,7 @@
}
@Override
- protected Email newEntity() {
- return new EmailImpl();
+ protected DemandeUIModel newEntity() {
+ return new DemandeUIModel();
}
}
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-12 18:14:43 UTC (rev 18)
@@ -175,6 +175,8 @@
faxtomail.demandeList.table.header.folder.tip=
faxtomail.demandeList.table.header.object=
faxtomail.demandeList.table.header.object.tip=
+faxtomail.demandeList.table.header.pfNb=
+faxtomail.demandeList.table.header.pfNb.tip=
faxtomail.demandeList.table.header.priority=
faxtomail.demandeList.table.header.priority.tip=
faxtomail.demandeList.table.header.projectReference=
@@ -187,6 +189,8 @@
faxtomail.demandeList.table.header.receptionEmailAddress.tip=
faxtomail.demandeList.table.header.recipient=
faxtomail.demandeList.table.header.recipient.tip=
+faxtomail.demandeList.table.header.savNb=
+faxtomail.demandeList.table.header.savNb.tip=
faxtomail.demandeList.table.header.savNumber=
faxtomail.demandeList.table.header.sender=
faxtomail.demandeList.table.header.sender.tip=
@@ -239,9 +243,16 @@
faxtomail.property.set.error=
faxtomail.quantitiesByRange.button.text=
faxtomail.quantitiesByRange.title=
+faxtomail.rangeRows.table.header.commandNumber=
+faxtomail.rangeRows.table.header.commandNumber.tip=
faxtomail.rangeRows.table.header.command_number=
+faxtomail.rangeRows.table.header.productColumn=
+faxtomail.rangeRows.table.header.productColumn.tip=
faxtomail.rangeRows.table.header.product_column=
faxtomail.rangeRows.table.header.range=
+faxtomail.rangeRows.table.header.range.tip=
+faxtomail.rangeRows.table.header.savQuantity=
+faxtomail.rangeRows.table.header.savQuantity.tip=
faxtomail.rangeRows.table.header.sav_quantity=
faxtomail.reply.action.cancel=
faxtomail.reply.action.cancel.mnemonic=
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-10 09:32:30 UTC (rev 17)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-12 18:14:43 UTC (rev 18)
@@ -79,20 +79,20 @@
faxtomail.demandeList.table.header.client.tip=Client
faxtomail.demandeList.table.header.ediCodeNumber=Code EDI
faxtomail.demandeList.table.header.ediCodeNumber.tip=Code EDI
-faxtomail.demandeList.table.header.folder=Dossier
-faxtomail.demandeList.table.header.folder.tip=Dossier
faxtomail.demandeList.table.header.object=Objet
faxtomail.demandeList.table.header.object.tip=Objet
+faxtomail.demandeList.table.header.pfNb=Qté produits
+faxtomail.demandeList.table.header.pfNb.tip=Quantité de produits
faxtomail.demandeList.table.header.priority=P
faxtomail.demandeList.table.header.priority.tip=Priorité
faxtomail.demandeList.table.header.projectReference=Ref chantier
faxtomail.demandeList.table.header.projectReference.tip=Référence chantier
-faxtomail.demandeList.table.header.range=Gamme
-faxtomail.demandeList.table.header.range.tip=Gamme
faxtomail.demandeList.table.header.receptionDate=Date de réception
faxtomail.demandeList.table.header.receptionDate.tip=Date de réception
faxtomail.demandeList.table.header.recipient=Destinataire
faxtomail.demandeList.table.header.recipient.tip=Addresse email ou numéro de fax du destinataire
+faxtomail.demandeList.table.header.savNb=Qté SAV
+faxtomail.demandeList.table.header.savNb.tip=Quantité de SAV
faxtomail.demandeList.table.header.sender=Émetteur
faxtomail.demandeList.table.header.sender.tip=Addresse email ou numéro de fax de l'émetteur
faxtomail.demandeList.table.header.status=Statut
@@ -127,10 +127,14 @@
faxtomail.main.title.nodb=
faxtomail.quantitiesByRange.button.text=OK
faxtomail.quantitiesByRange.title=Quantités par gamme
-faxtomail.rangeRows.table.header.command_number=N° commande / devis
-faxtomail.rangeRows.table.header.product_column=Qté produits
+faxtomail.rangeRows.table.header.commandNumber=N° commande / devis
+faxtomail.rangeRows.table.header.commandNumber.tip=N° commande / devis
+faxtomail.rangeRows.table.header.productColumn=Qté produits
+faxtomail.rangeRows.table.header.productColumn.tip=Quantité de produits
faxtomail.rangeRows.table.header.range=Gamme
-faxtomail.rangeRows.table.header.sav_quantity=Qté SAV
+faxtomail.rangeRows.table.header.range.tip=Gamme
+faxtomail.rangeRows.table.header.savQuantity=Qté SAV
+faxtomail.rangeRows.table.header.savQuantity.tip=Quantité de SAV
faxtomail.reply.action.cancel=Annuler
faxtomail.reply.action.cancel.tip=Annuler et fermer la popup
faxtomail.reply.action.validate=Valider
1
0
10 Mar '14
Author: kmorin
Date: 2014-03-10 10:32:30 +0100 (Mon, 10 Mar 2014)
New Revision: 17
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/17
Log:
refs #4231 Faire les UI de tous les ?\195?\169crans
Added:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java
trunk/faxtomail-ui-swing/src/main/resources/icons/action-compute.png
trunk/faxtomail-ui-swing/src/main/resources/icons/action-delete.png
trunk/faxtomail-ui-swing/src/main/resources/icons/action-edit-attachment.png
trunk/faxtomail-ui-swing/src/main/resources/icons/action-import.png
trunk/faxtomail-ui-swing/src/main/resources/icons/action-new-demand.png
trunk/faxtomail-ui-swing/src/main/resources/icons/action-open-file.png
Removed:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java
Modified:
trunk/faxtomail-persistence/pom.xml
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java
trunk/faxtomail-persistence/src/main/resources/faxtomail.properties
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.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/InitFaxToMailService.java
trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties
trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
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/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
Modified: trunk/faxtomail-persistence/pom.xml
===================================================================
--- trunk/faxtomail-persistence/pom.xml 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-persistence/pom.xml 2014-03-10 09:32:30 UTC (rev 17)
@@ -144,6 +144,7 @@
<artifactId>eugene-maven-plugin</artifactId>
<executions>
<execution>
+ <id>generate-entities</id>
<phase>generate-sources</phase>
<configuration>
<inputs>zargo</inputs>
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryType.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -6,6 +6,7 @@
*/
public enum HistoryType {
+ CREATION,
OPENING,
MODIFICATION
}
Modified: trunk/faxtomail-persistence/src/main/resources/faxtomail.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-persistence/src/main/resources/faxtomail.properties 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,26 +1,3 @@
-###
-# #%L
-# Extranet ENC-AHI :: Persistence
-# $Id: extranet-enc-ahi.properties 827 2013-12-04 15:30:35Z bleny $
-# $HeadURL: http://svn.forge.codelutin.com/svn/extranet-enc-ahi/trunk/extranet-persiste… $
-# %%
-# Copyright (C) 2013 Ministère des Affaires sociales et de la Santé
-# %%
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Lesser Public License for more details.
-#
-# You should have received a copy of the GNU General Lesser Public
-# License along with this program. If not, see
-# <http://www.gnu.org/licenses/lgpl-3.0.html>.
-# #L%
-###
hibernate.connection.driver_class=org.h2.Driver
hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data
hibernate.connection.username=sa
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorService.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.HasLabel;
import org.apache.commons.logging.LogFactory;
@@ -32,6 +33,7 @@
import java.io.File;
import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.Date;
import static org.nuiton.i18n.I18n.n;
@@ -47,6 +49,8 @@
public static final String SEPARATOR = "#";
+ public static final String DATE = "date";
+
/** Delegate decorator provider. */
protected DecoratorProvider decoratorProvider;
@@ -98,10 +102,22 @@
if (bean == null) {
return "";
}
- return DateFormat.getDateTimeInstance().format(bean);
+ return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(bean);
}
});
+ registerDecorator(DATE, new Decorator<Date>(Date.class) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String toString(Object bean) {
+ if (bean == null) {
+ return "";
+ }
+ return DateFormat.getDateInstance(DateFormat.MEDIUM).format(bean);
+ }
+ });
registerMultiJXPathDecorator(HasLabel.class, "${label}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Attachment.class, "${file}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(FaxToMailUser.class, "${trigraph}$s#${firstName}$s#${lastName}$s", SEPARATOR, " ");
}
};
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -65,6 +65,10 @@
return serviceContext.newService(serviceClass);
}
+ public DecoratorService getDecoratorService() {
+ return newService(DecoratorService.class);
+ }
+
public CompanyService getCompanyService() {
return newService(CompanyService.class);
}
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-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -30,6 +30,9 @@
private static final Log log = LogFactory.getLog(EmailService.class);
public Email saveEmail(Email email, FaxToMailUser user) {
+ Date now = getNow();
+ EmailTopiaDao dao = getPersistenceContext().getEmailDao();
+ HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
if (email.getAttachment() != null) {
AttachmentTopiaDao attachmentDao = getPersistenceContext().getAttachmentDao();
@@ -53,13 +56,19 @@
}
}
- HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
+ if (!email.isPersisted()) {
+ if (email.getHistory() != null) {
+ historyDao.createAll(email.getHistory());
+ }
+
+ email = dao.create(email);
+ }
+
History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
History.PROPERTY_FAX_TO_MAIL_USER, user,
- History.PROPERTY_MODIFICATION_DATE, new Date());
+ History.PROPERTY_MODIFICATION_DATE, now);
email.addHistory(history);
- EmailTopiaDao dao = getPersistenceContext().getEmailDao();
Email result = dao.update(email);
getPersistenceContext().commit();
@@ -68,9 +77,29 @@
public List<Email> getEmailForFolder(MailFolder folder) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
- return new ArrayList<>(dao.forMailFolderEquals(folder).findAll());
+ return new ArrayList<>(dao.forMailFolderEquals(folder)
+ .setOrderByArguments(Email.PROPERTY_RECEPTION_DATE)
+ .findAll());
}
+ public List<Email> getEmailForFolderAndSubfolders(MailFolder folder) {
+ EmailTopiaDao dao = getPersistenceContext().getEmailDao();
+ List<MailFolder> folders = new ArrayList<>();
+ folders.addAll(getChildrenRecursively(folder));
+ return new ArrayList<>(dao.forMailFolderIn(folders)
+ .findAll());
+ }
+
+ protected List<MailFolder> getChildrenRecursively(MailFolder folder) {
+ List<MailFolder> folders = new ArrayList<>();
+ folders.add(folder);
+ Collection<MailFolder> children = folder.getChildren();
+ for (MailFolder child : children) {
+ folders.addAll(getChildrenRecursively(child));
+ }
+ return folders;
+ }
+
public Email addToOpeningHistory(Email email, FaxToMailUser user, Date date) {
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.OPENING,
@@ -87,15 +116,29 @@
email = emailDao.update(email);
getPersistenceContext().commit();
- log.info("history " + email.getHistory().size());
return email;
}
+ public Email takeEmail(Email email, FaxToMailUser user) {
+ email.setTakenBy(user);
+
+ HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
+ History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
+ History.PROPERTY_FAX_TO_MAIL_USER, user,
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+ email.addHistory(history);
+
+ EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
+ email = emailDao.update(email);
+ getPersistenceContext().commit();
+ return email;
+ }
+
public List<Email> search(Email emailLike) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
List<Email> result = new ArrayList<>(dao.newQueryBuilder()
.addContainsText(Email.PROPERTY_OBJECT, emailLike.getObject())
- .addContainsText(Email.PROPERTY_SENDER_EMAIL_ADDRESS, emailLike.getSenderEmailAddress())
+ .addContainsText(Email.PROPERTY_SENDER, emailLike.getSender())
.addContainsText(Email.PROPERTY_CLIENT_CODE, emailLike.getClientCode())
.addContainsText(Email.PROPERTY_EDI_CODE_NUMBER, emailLike.getEdiCodeNumber())
.addContainsText(Email.PROPERTY_PROJECT_REFERENCE, emailLike.getProjectReference())
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-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -52,11 +52,13 @@
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.RangeTopiaDao;
+import com.franciaflex.faxtomail.services.DecoratorService;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.decorator.Decorator;
import org.nuiton.jaxx.application.ApplicationTechnicalException;
import java.io.File;
@@ -65,10 +67,13 @@
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
+import static org.nuiton.i18n.I18n.t;
+
public class InitFaxToMailService extends FaxToMailServiceSupport {
private static final Log log = LogFactory.getLog(InitFaxToMailService.class);
@@ -76,7 +81,7 @@
public void init() {
if (log.isInfoEnabled()) {
- log.info("extranet initialization started");
+ log.info("faxtomail initialization started");
}
checkStorage();
@@ -92,7 +97,7 @@
// XWork2ValidatorUtil.setSharedValueStack(null);
if (log.isInfoEnabled()) {
- log.info("extranet initialization done");
+ log.info("faxtomail initialization done");
}
}
@@ -138,10 +143,12 @@
if (count == 0) {
List<Client> clients;
try {
- File clientFile = new File(ClassLoader.getSystemResource("fx_clients.csv").toURI());
+// File clientFile = new File(ClassLoader.getSystemResource("fx_clients.csv").toURI());
+ File clientFile = new File("/home/kmorin/Projects/faxToMail/faxtomail-service/src/main/resources/fx_clients.csv");
clients = getReferentielService().importClients(clientFile);
- } catch(IOException | URISyntaxException e) {
+ } catch(Exception e) {
+ log.error("error", e);
return;
}
@@ -186,7 +193,6 @@
PriorityTopiaDao priorityDao = getPersistenceContext().getPriorityDao();
List<Priority> priorities = Lists.newArrayList(
- priorityDao.create(Priority.PROPERTY_LABEL, "-"),
priorityDao.create(Priority.PROPERTY_LABEL, "!"),
priorityDao.create(Priority.PROPERTY_LABEL, "F")
);
@@ -309,9 +315,6 @@
MailFolder folder,
FaxToMailUser user) {
- History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
- History.PROPERTY_MODIFICATION_DATE, new Date());
-
List<RangeRow> rangeRows = new ArrayList<>();
for (int j = 0 ; j < random.nextInt(4) + 1 ; j++) {
RangeRow rangeRow = rangeRowDao.create(RangeRow.PROPERTY_RANGE, ranges.get(random.nextInt(ranges.size())),
@@ -322,28 +325,66 @@
}
Client client = clients.get(random.nextInt(clients.size()));
- String senderEmail = client.getEmailAddress();
- if (senderEmail == null && client.getFaxNumber() != null) {
- senderEmail = client.getFaxNumber().replace(" ", "") + "@franciaflex.fax";
+ String sender = client.getEmailAddress();
+ boolean fax = false;
+ if (sender == null && client.getFaxNumber() != null) {
+ sender = client.getFaxNumber();
+ fax = true;
}
boolean opened = random.nextBoolean();
- Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, senderEmail,
+
+ Decorator<Date> dateDecorator = getDecoratorService().getDecoratorByType(Date.class, DecoratorService.DATE);
+
+ Date now = new Date();
+ History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION,
+ History.PROPERTY_MODIFICATION_DATE, now);
+ String projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(now));
+
+ Email email = emailDao.create(Email.PROPERTY_SENDER, sender,
+ Email.PROPERTY_FAX, fax,
Email.PROPERTY_CLIENT_CODE, client.getCode(),
- Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " +
- SimpleDateFormat.getDateTimeInstance().format(new Date()),
- Email.PROPERTY_RECEPTION_DATE, new Date(),
+ Email.PROPERTY_PROJECT_REFERENCE, projectRef,
+ Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(now),
+ Email.PROPERTY_RECEPTION_DATE, now,
Email.PROPERTY_MAIL_FOLDER, folder,
- Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
Email.PROPERTY_DEMAND_STATUS, statuses.get(opened ? 1 : 0),
- Email.PROPERTY_PRIORITY, priorities.get(0),
- Email.PROPERTY_RANGE_ROW, rangeRows,
Email.PROPERTY_HISTORY, Lists.newArrayList(history));
if (opened) {
- getEmailService().addToOpeningHistory(email, user, new Date());
+ getEmailService().addToOpeningHistory(email, user, now);
+ email.setDemandType(types.get(random.nextInt(types.size())));
+ email.setPriority(priorities.get(random.nextInt(priorities.size())));
+ email.setRangeRow(rangeRows);
+ getEmailService().saveEmail(email, user);
}
+
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.DAY_OF_MONTH, -1);
+ Date yesterday = cal.getTime();
+ history = historyDao.create(History.PROPERTY_TYPE, HistoryType.CREATION,
+ History.PROPERTY_MODIFICATION_DATE, yesterday);
+ projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(yesterday));
+
+ email = emailDao.create(Email.PROPERTY_SENDER, sender,
+ Email.PROPERTY_FAX, fax,
+ Email.PROPERTY_CLIENT_CODE, client.getCode(),
+ Email.PROPERTY_PROJECT_REFERENCE, projectRef,
+ Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(yesterday),
+ Email.PROPERTY_RECEPTION_DATE, yesterday,
+ Email.PROPERTY_MAIL_FOLDER, folder,
+ Email.PROPERTY_DEMAND_STATUS, statuses.get(opened ? 1 : 0),
+ Email.PROPERTY_HISTORY, Lists.newArrayList(history));
+
+
+ if (opened) {
+ getEmailService().addToOpeningHistory(email, user, now);
+ email.setDemandType(types.get(random.nextInt(types.size())));
+ email.setPriority(priorities.get(random.nextInt(priorities.size())));
+ email.setRangeRow(rangeRows);
+ getEmailService().saveEmail(email, user);
+ }
}
}
Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties
===================================================================
--- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties 2014-03-10 09:32:30 UTC (rev 17)
@@ -7,6 +7,7 @@
faxtomail.config.option.tmp.directory.description=
faxtomail.config.option.version.description=
faxtomail.config.service=
+faxtomail.email.projectReference.default=
faxtomail.service.compressZipFile.error=
faxtomail.service.config.deleteTempDirectory.error=
faxtomail.service.mkDir.error=
Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties
===================================================================
--- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,66 +1 @@
-faxtomail.config.option.basedir.description=
-faxtomail.config.option.csv.separator.description=
-faxtomail.config.option.data.directory.description=
-faxtomail.config.option.inceptionYear.description=
-faxtomail.config.option.organizationName.description=
-faxtomail.config.option.site.url.description=
-faxtomail.config.option.tmp.directory.description=
-faxtomail.config.option.version.description=
-faxtomail.config.service=
-faxtomail.service.compressZipFile.error=
-faxtomail.service.config.deleteTempDirectory.error=
-faxtomail.service.mkDir.error=
-faxtomail.service.referential.import.clients.error=
-faxtomail.validator.error.email.clientCode.required=
-faxtomail.validator.error.email.demandType.required=
-faxtomail.validator.error.email.projectReference.required=
-tutti.config.option.basedir.description=
-tutti.config.option.csv.separator.description=
-tutti.config.option.inceptionYear.description=
-tutti.config.option.organizationName.description=
-tutti.config.option.site.url.description=
-tutti.config.option.tmp.directory.description=
-tutti.config.option.version.description=
-tutti.property.attachment=
-tutti.property.caracteristic=
-tutti.property.country=
-tutti.property.cruise=
-tutti.property.date=
-tutti.property.department=
-tutti.property.firstName=
-tutti.property.fishingOperation=
-tutti.property.fishingOperationLocation=
-tutti.property.fishingOperationNumber=
-tutti.property.fractionName=
-tutti.property.gear=
-tutti.property.gearShootingStartDate=
-tutti.property.genusSpecies=
-tutti.property.internationalRegistrationCode=
-tutti.property.label=
-tutti.property.lastName=
-tutti.property.marineLitterCategory=
-tutti.property.matrixName=
-tutti.property.methodName=
-tutti.property.multirigAggregation=
-tutti.property.name=
-tutti.property.parameterName=
-tutti.property.person=
-tutti.property.program=
-tutti.property.protocol=
-tutti.property.rankOrder=
-tutti.property.refTaxCode=
-tutti.property.sortedUnsortedCategory=
-tutti.property.species=
-tutti.property.stationNumber=
-tutti.property.strata=
-tutti.property.surveyCode=
-tutti.property.tuttiLocation=
-tutti.property.user=
-tutti.property.vessel=
-tutti.property.zone=
-tutti.propety.no.species.speciesCode=
-tutti.propety.no.vessel.name=
-tutti.propety.no.zone=
-tutti.propety.vessel.nation.registrationCode=
-tutti.service.compressZipFile.error=
-tutti.service.context.serviceInstanciation.error=
+faxtomail.email.projectReference.default=Votre demande du %s
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ComputeQuantitiesByRangeAction.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,75 @@
+package com.franciaflex.faxtomail.ui.swing.actions;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.Range;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.persistence.entities.RangeRowImpl;
+import com.franciaflex.faxtomail.ui.swing.content.demande.QuantitiesByRangeUI;
+import com.franciaflex.faxtomail.ui.swing.content.demande.QuantitiesByRangeUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.demande.QuantitiesByRangeUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.*;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class ComputeQuantitiesByRangeAction extends AbstractFaxToMailAction<QuantitiesByRangeUIModel, QuantitiesByRangeUI, QuantitiesByRangeUIHandler> {
+
+ private static final Log log = LogFactory.getLog(ComputeQuantitiesByRangeAction.class);
+
+ public ComputeQuantitiesByRangeAction(QuantitiesByRangeUIHandler handler) {
+ super(handler, false);
+ }
+
+ @Override
+ public void doAction() throws Exception {
+ Map<Range, RangeRowModel> quantitiesByRange = new HashMap<Range, RangeRowModel>();
+ MailFolder folder = getModel().getRootFolder();
+ List<Email> emails = getContext().getEmailService().getEmailForFolderAndSubfolders(folder);
+
+ for (Email email : emails) {
+ Collection<RangeRow> rangeRows = email.getRangeRow();
+ if (rangeRows != null) {
+ for (RangeRow rangeRow : rangeRows) {
+ Range range = rangeRow.getRange();
+ RangeRowModel row = quantitiesByRange.get(range);
+ if (row == null) {
+ row = new RangeRowModel();
+ row.fromEntity(rangeRow);
+ quantitiesByRange.put(range, row);
+
+ } else {
+ Integer productQuantity = rangeRow.getProductQuantity();
+ if (productQuantity != null) {
+ row.setProductQuantity(row.getProductQuantity() + productQuantity);
+ }
+
+ Integer savQuantity = rangeRow.getSavQuantity();
+ if (savQuantity != null) {
+ row.setSavQuantity(row.getSavQuantity() + savQuantity);
+ }
+ }
+
+ }
+ }
+ }
+ getModel().setRangeRows(quantitiesByRange.values());
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ handler.openDialog(getUI(), t("faxtomail.quantitiesByRange.title"), new Dimension(350, 300));
+ }
+}
\ No newline at end of file
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,8 +1,8 @@
package com.franciaflex.faxtomail.ui.swing.actions;
-import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUI;
-import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUIHandler;
-import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI;
+import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -2,42 +2,48 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUI;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.RangeTableModel;
+import com.google.common.collect.Maps;
+import org.nuiton.topia.persistence.TopiaEntities;
+import java.util.List;
+import java.util.Map;
+
/**
* @author Kevin Morin (Code Lutin)
* @since x.x
*/
-public class SaveDemandeAction extends ShowDemandeListAction {
+public class SaveDemandeAction extends AbstractFaxToMailAction<DemandeUIModel, DemandeUI, DemandeUIHandler> {
- protected DemandeUIModel demandeModel;
-
- public SaveDemandeAction(MainUIHandler handler) {
- super(handler);
- }
-
public SaveDemandeAction(DemandeUIHandler handler) {
- super(handler.getContext().getMainUI().getHandler());
+ super(handler, false);
}
- public DemandeUIModel getDemandeModel() {
- return demandeModel;
- }
-
- public void setDemandeModel(DemandeUIModel demandeModel) {
- this.demandeModel = demandeModel;
- }
-
@Override
public void doAction() throws Exception {
+ RangeTableModel rtm = (RangeTableModel) getUI().getRangeTable().getModel();
+ List<RangeRowModel> rows = rtm.getRows();
+ Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(getModel().getRangeRow(), TopiaEntities.getTopiaIdFunction());
+ for (RangeRowModel rangeRowModel : rows) {
+ RangeRow rangeRow = rangeRowsById.get(rangeRowModel.getTopiaId());
+ if (rangeRow == null) {
+ getModel().addRangeRow(rangeRowModel.toEntity());
+ } else {
+ rangeRowModel.toEntity(rangeRow);
+ }
+ }
+
FaxToMailUser currentUser = getContext().getCurrentUser();
Email currentEmail = getContext().getCurrentEmail();
- Email email = demandeModel.toEntity(currentEmail);
+ Email email = getModel().toEntity(currentEmail);
getContext().getEmailService().saveEmail(email, currentUser);
-
- super.doAction();
}
}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,22 @@
+package com.franciaflex.faxtomail.ui.swing.actions;
+
+import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class SaveDemandeAndExitAction extends SaveDemandeAction {
+
+ public SaveDemandeAndExitAction(DemandeUIHandler handler) {
+ super(handler);
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ getContext().setScreen(FaxToMailScreen.LIST);
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -23,8 +23,10 @@
*/
import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen;
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
+import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
import javax.swing.*;
@@ -50,9 +52,37 @@
super.postSuccessAction();
Email currentEmail = getContext().getCurrentEmail();
- if (!getContext().getCurrentUser().equals(currentEmail.getTakenBy())) {
- displayWarningMessage(t("faxtomail.alert.alreadyTakenBy.title"),
- t("faxtomail.alert.alreadyTakenBy.message", decorate(currentEmail.getTakenBy())));
+ FaxToMailUser takenBy = currentEmail.getTakenBy();
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+
+ if (takenBy != null && !currentUser.equals(takenBy)) {
+// displayWarningMessage(t("faxtomail.alert.alreadyTakenBy.title"),
+// t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)));
+ String htmlMessage = String.format(
+ AbstractApplicationUIHandler.CONFIRMATION_FORMAT,
+ t("faxtomail.alert.alreadyTakenBy.message", decorate(takenBy)),
+ t("faxtomail.alert.alreadyTakenBy.help"));
+
+ int result = JOptionPane.showConfirmDialog(getHandler().getTopestUI(),
+ htmlMessage,
+ t("faxtomail.alert.alreadyTakenBy.title"),
+ JOptionPane.YES_NO_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ switch (result) {
+ case JOptionPane.CANCEL_OPTION:
+ getContext().setScreen(FaxToMailScreen.LIST);
+ break;
+
+ case JOptionPane.NO_OPTION:
+ // TODO kmorin 201410305 how to set the email in readonly
+ break;
+
+ case JOptionPane.YES_OPTION:
+ getContext().getEmailService().takeEmail(currentEmail, currentUser);
+ // TODO kmorin 201410305 how to update on screen
+ break;
+ }
}
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -16,8 +16,9 @@
@Override
public void doAction() throws Exception {
- SaveDemandeAction action = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), SaveDemandeAction.class);
- action.setDemandeModel(getModel());
- getContext().getActionEngine().runAction(action);
+ //TODO kmorin 20140306
+// SaveDemandeAction action = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), SaveDemandeAction.class);
+// action.setDemandeModel(getModel());
+// getContext().getActionEngine().runAction(action);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -37,14 +37,12 @@
text: "faxtomail.main.menu.file";
toolTipText: "faxtomail.main.menu.file.tip";
toolTipText: "faxtomail.main.menu.file.tip";
- i18nMnemonic: "faxtomail.main.menu.file.mnemonic";
}
#menuFileDemandeList {
actionIcon: list;
text: "faxtomail.main.action.demandeList";
toolTipText: "faxtomail.main.action.demandeList.tip";
- i18nMnemonic: "faxtomail.main.action.demandeList.mnemonic";
enabled: true;//{model.getScreen() != TuttiScreen.LIST};
_applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class};
}
@@ -53,7 +51,6 @@
actionIcon: search;
text: "faxtomail.main.action.recherche";
toolTipText: "faxtomail.main.action.recherche.tip";
- i18nMnemonic: "faxtomail.main.action.recherche.mnemonic";
enabled: true;
_applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowRechercheAction.class};
}
@@ -72,7 +69,6 @@
actionIcon: exit;
text: "faxtomail.main.action.exit";
toolTipText: "faxtomail.main.action.exit.tip";
- i18nMnemonic: "faxtomail.main.action.exit.mnemonic";
_applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.CloseApplicationAction.class};
_help: {"faxtomail.main.menu.action.exit.help"};
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -19,12 +19,37 @@
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+.horizontal-separator {
+ text: " | ";
+}
+
#navigationTree {
font-size: "11";
rootVisible: false;
showsRootHandles: true;
}
+#computeQuantitiesByRangeMenu {
+ actionIcon: compute;
+ text: "faxtomail.demandeList.action.computeQuantitiesByRange";
+ toolTipText: "faxtomail.demandeList.action.computeQuantitiesByRange.tip";
+}
+
+#newDemandMenu {
+ actionIcon: new-demand;
+ text: "faxtomail.demandeList.action.newDemand";
+ toolTipText: "faxtomail.demandeList.action.newDemand.tip";
+}
+
+#demandNbLabel {
+ text: "faxtomail.demandeList.demandNbLabel";
+ font-style: "italic";
+}
+
+#demandNbField {
+ text: { String.valueOf(model.getEmailNb()) };
+}
+
#pfNbLabel {
text: "faxtomail.demandeList.pfNbLabel";
font-style: "italic";
@@ -44,22 +69,21 @@
}
#dataTable {
- editable: false;
+ editable: true;
autoCreateRowSorter: true;
+ sortable: false;
}
#printMenu {
actionIcon: print;
text: "faxtomail.demandeList.action.print";
toolTipText: "faxtomail.demandeList.action.print.tip";
- i18nMnemonic: "faxtomail.demandeList.action.print.mnemonic";
}
#replyMenu {
actionIcon: reply;
text: "faxtomail.demandeList.action.reply";
toolTipText: "faxtomail.demandeList.action.reply.tip";
- i18nMnemonic: "faxtomail.demandeList.action.reply.mnemonic";
enabled: {model.isReplyEnabled()};
}
@@ -67,6 +91,11 @@
actionIcon: attachment;
text: "faxtomail.demandeList.action.attachment";
toolTipText: "faxtomail.demandeList.action.attachment.tip";
- i18nMnemonic: "faxtomail.demandeList.action.attachment.mnemonic";
enabled: {model.isAddAttachmentEnabled()};
+}
+
+#archiveMenu {
+ text: "faxtomail.demandeList.action.archive";
+ toolTipText: "faxtomail.demandeList.action.archive.tip";
+ enabled: {model.isArchiveEnabled()};
}
\ No newline at end of file
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUI.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -50,6 +50,13 @@
Liste des éléments globale (de tous les dossiers accessibles).
-->
+ <JPopupMenu id='treePopup'>
+ <JMenuItem id='computeQuantitiesByRangeMenu'
+ onActionPerformed='handler.computeQuantitiesByRange()'/>
+ <JMenuItem id='newDemandMenu'
+ onActionPerformed='handler.newDemand()'/>
+ </JPopupMenu>
+
<JPopupMenu id='tablePopup'>
<JMenuItem id='printMenu'
onActionPerformed='handler.print()'/>
@@ -57,17 +64,24 @@
onActionPerformed='handler.reply()'/>
<JMenuItem id='addAttachmentMenu'
onActionPerformed='handler.addAttachment()'/>
+ <JMenuItem id='archiveMenu'
+ onActionPerformed='handler.archive()'/>
</JPopupMenu>
<JSplitPane constraints='BorderLayout.CENTER'>
<JScrollPane>
- <JTree id="navigationTree"/>
+ <JTree id="navigationTree"
+ onMouseClicked='handler.autoSelectNodeInTree(event, treePopup)'/>
</JScrollPane>
<JPanel layout='{new BorderLayout()}'>
<JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.NORTH'>
+ <JLabel id="demandNbLabel"/>
+ <JLabel id="demandNbField"/>
+ <JLabel styleClass="horizontal-separator"/>
<JLabel id="pfNbLabel"/>
<JLabel id="pfNbField"/>
+ <JLabel styleClass="horizontal-separator"/>
<JLabel id="savNbLabel"/>
<JLabel id="savNbField"/>
</JPanel>
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -24,8 +24,15 @@
import com.franciaflex.faxtomail.persistence.entities.Company;
import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.History;
+import com.franciaflex.faxtomail.persistence.entities.HistoryImpl;
+import com.franciaflex.faxtomail.persistence.entities.HistoryType;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.Range;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.ui.swing.actions.ComputeQuantitiesByRangeAction;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailDemandListHandler;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
@@ -34,6 +41,7 @@
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -61,9 +69,12 @@
import java.util.Collection;
import java.util.Date;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import static org.nuiton.i18n.I18n.t;
+
/**
* Handler of UI {@link com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler}.
*
@@ -91,6 +102,7 @@
DemandeListUIModel model = (DemandeListUIModel) evt.getSource();
MailFolder folder = (MailFolder) evt.getNewValue();
List<Email> emails = getContext().getEmailService().getEmailForFolder(folder);
+ log.info(emails.size() + " emails in folder " + folder.getName());
model.setEmails(emails);
}
});
@@ -113,24 +125,10 @@
List<Email> emails = (List<Email>) evt.getNewValue();
tableModel.setRows(emails);
- int pfNb = 0;
- int savNb = 0;
- for (Email email: emails) {
- Collection<RangeRow> rangeRows = email.getRangeRow();
- for (RangeRow rangeRow : rangeRows) {
- Integer productQuantity = rangeRow.getProductQuantity();
- if (productQuantity != null) {
- pfNb += productQuantity;
- }
+ int[] quantities = FaxToMailUIUtil.computeQuantities(emails);
- Integer savQuantity = rangeRow.getSavQuantity();
- if (savQuantity != null) {
- savNb += savQuantity;
- }
- }
- }
- getModel().setPfNb(pfNb);
- getModel().setSavNb(savNb);
+ getModel().setPfNb(quantities[0]);
+ getModel().setSavNb(quantities[1]);
}
});
@@ -224,15 +222,82 @@
getModel().setReplyEnabled(selectedRowCount == 1);
}
+ public void autoSelectNodeInTree(MouseEvent e, JPopupMenu popup) {
+
+ boolean rightClick = SwingUtilities.isRightMouseButton(e);
+
+ if (rightClick) {
+
+ JTree source = (JTree) e.getSource();
+
+ // get the row index at this point
+ int rowIndex = source.getClosestRowForLocation(e.getX(), e.getY());
+
+ if (log.isDebugEnabled()) {
+ log.debug("At point [" + e.getPoint() + "] found Row " + rowIndex);
+ }
+
+ // select row (could empty selection)
+ if (rowIndex == -1) {
+ source.clearSelection();
+ } else {
+ // set selection
+ source.setSelectionRow(rowIndex);
+ }
+
+ // on right click show popup
+ popup.show(source, e.getX(), e.getY());
+ }
+ }
+
+ public void computeQuantitiesByRange() {
+ QuantitiesByRangeUI dialogContent = new QuantitiesByRangeUI(ui);
+ getContext().getActionEngine().runAction(new ComputeQuantitiesByRangeAction(dialogContent.getHandler()));
+// openDialog(dialogContent, t("faxtomail.chooseMailFolder.title"), new Dimension(350, 500));
+ }
+
+ public void newDemand() {
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+ Date now = new Date();
+
+ Email email = new EmailImpl();
+
+ History history = new HistoryImpl();
+ history.setFaxToMailUser(currentUser);
+ history.setType(HistoryType.CREATION);
+ history.setModificationDate(now);
+ email.addHistory(history);
+
+ history = new HistoryImpl();
+ history.setFaxToMailUser(currentUser);
+ history.setType(HistoryType.OPENING);
+ history.setModificationDate(now);
+ email.addHistory(history);
+
+ email.setMailFolder(getModel().getSelectedFolder());
+ email.setReceptionDate(now);
+ email.setTakenBy(currentUser);
+ openDemand(email);
+ }
+
public void print() {
+ //TODO
log.debug("print");
}
public void reply() {
+ //TODO
log.debug("reply");
}
public void addAttachment() {
+ //TODO
log.debug("addAttachment");
}
+
+ public void archive() {
+ //TODO
+ log.debug("archive");
+ }
+
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -26,6 +26,7 @@
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import org.jdesktop.beans.AbstractSerializableBean;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -36,6 +37,7 @@
public static final String PROPERTY_FOLDERS = "folders";
public static final String PROPERTY_EMAILS = "emails";
+ public static final String PROPERTY_EMAIL_NB = "emailNb";
public static final String PROPERTY_SELECTED_FOLDER = "selectedFolder";
public static final String PROPERTY_PF_NB = "pfNb";
public static final String PROPERTY_SAV_NB = "savNb";
@@ -50,6 +52,8 @@
protected boolean addAttachmentEnabled;
+ protected boolean archiveEnabled;
+
protected int pfNb;
protected int savNb;
@@ -69,11 +73,28 @@
}
public void setEmails(List<Email> emails) {
- Object oldValue = getEmails();
+ Object oldValue = getEmailNb();
this.emails = emails;
- firePropertyChange(PROPERTY_EMAILS, oldValue, emails);
+ Object newValue = getEmailNb();
+ firePropertyChange(PROPERTY_EMAILS, null, emails);
+ firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue);
}
+ public int getEmailNb() {
+ return emails == null ? 0 : emails.size();
+ }
+
+ public void addEmail(Email email) {
+ if (emails == null) {
+ emails = new ArrayList<Email>();
+ }
+ Object oldValue = getEmailNb();
+ emails.add(email);
+ Object newValue = getEmailNb();
+ firePropertyChange(PROPERTY_EMAILS, null, emails);
+ firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue);
+ }
+
public MailFolder getSelectedFolder() {
return selectedFolder;
}
@@ -100,6 +121,14 @@
this.addAttachmentEnabled = addAttachmentEnabled;
}
+ public boolean isArchiveEnabled() {
+ return archiveEnabled;
+ }
+
+ public void setArchiveEnabled(boolean archiveEnabled) {
+ this.archiveEnabled = archiveEnabled;
+ }
+
public int getPfNb() {
return pfNb;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -53,7 +53,7 @@
}
#receivedDateField {
- text: { SimpleDateFormat.getDateTimeInstance().format(model.getReceptionDate()) };
+ text: { handler.decorate(model.getReceptionDate()) };
}
#senderLabel {
@@ -61,7 +61,7 @@
}
#senderField {
- text: { model.getSenderEmailAddress() };
+ text: { model.getSender() };
}
#clientLabel {
@@ -89,7 +89,6 @@
#ediCodeNumberField {
text: { model.getEdiCodeNumber() };
- editable: false;
}
#priorityLabel {
@@ -99,6 +98,7 @@
#priorityComboBox {
property: priority;
selectedItem: { model.getPriority() };
+ showReset: true;
}
#statusLabel {
@@ -133,12 +133,17 @@
verticalAlignment: { SwingConstants.TOP };
}
+#mailBodyLabel {
+ text: "faxtomail.demande.mailBody.label";
+ verticalAlignment: { SwingConstants.TOP };
+}
+
#takenByLabel {
text: "faxtomail.demande.takenBy.label";
}
#takenByField {
- text: { handler.decorateUser(model.getTakenBy()) };
+ text: { handler.decorateUser(model.getTakenBy(), false) };
}
#firstOpenedLabel {
@@ -150,7 +155,7 @@
}
#firstOpenedByField {
- text: { handler.decorateUser(model.getFirstOpeningUser()) };
+ text: { handler.decorateUser(model.getFirstOpeningUser(), false) };
}
#firstOpeningDateLabel {
@@ -158,7 +163,7 @@
}
#firstOpeningDateField {
- text: { SimpleDateFormat.getDateTimeInstance().format(model.getFirstOpeningDate()) };
+ text: { handler.decorate(model.getFirstOpeningDate()) };
}
#lastModifiedLabel {
@@ -170,7 +175,7 @@
}
#lastModifiedByField {
- text: { handler.decorateUser(model.getLastModificationUser()) };
+ text: { handler.decorateUser(model.getLastModificationUser(), true) };
}
#lastModificationDateLabel {
@@ -178,50 +183,67 @@
}
#lastModificationDateField {
- text: { SimpleDateFormat.getDateTimeInstance().format(model.getLastModificationDate()) };
+ text: { handler.decorate(model.getLastModificationDate()) };
}
+.horizontal-separator {
+ text: " | ";
+}
+
+#pfNbLabel {
+ text: "faxtomail.demandeList.pfNbLabel";
+ font-style: "italic";
+}
+
+#pfNbField {
+ text: { String.valueOf(model.getPfNb()) };
+}
+
+#savNbLabel {
+ text: "faxtomail.demandeList.savNbLabel";
+ font-style: "italic";
+}
+
+#savNbField {
+ text: { String.valueOf(model.getSavNb()) };
+}
+
#rangeTable {
selectionMode: { ListSelectionModel.SINGLE_SELECTION };
}
#backButton {
text: "faxtomail.demande.back.button.label";
- i18nMnemonic : "faxtomail.demande.back.button.mnemonic";
actionIcon: cancel;
_applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class };
}
#saveButton {
text: "faxtomail.demande.save.button.label";
- i18nMnemonic : "faxtomail.demande.save.button.mnemonic";
actionIcon: save;
enabled: { model.isValid() };
+ _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction.class };
}
#transmitButton {
text: "faxtomail.demande.transmit.button.label";
- i18nMnemonic : "faxtomail.demande.transmit.button.mnemonic";
actionIcon: transmit;
enabled: { model.isValid() };
}
#printButton {
text: "faxtomail.demande.print.button.label";
- i18nMnemonic : "faxtomail.demande.print.button.mnemonic";
actionIcon: print;
enabled: { model.isValid() };
}
#archiveButton {
text: "faxtomail.demande.archive.button.label";
- i18nMnemonic : "faxtomail.demande.archive.button.mnemonic";
enabled: { model.isValid() };
}
#replyButton {
text: "faxtomail.demande.reply.button.label";
- i18nMnemonic : "faxtomail.demande.reply.button.mnemonic";
actionIcon: reply;
enabled: { model.isValid() };
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -45,6 +45,8 @@
javax.swing.ListSelectionModel
javax.swing.SwingConstants
+ java.awt.FlowLayout
+
java.text.SimpleDateFormat
java.util.Date
</import>
@@ -74,9 +76,9 @@
</JToolBar>
<JSplitPane constraints='BorderLayout.CENTER'
- orientation="{JSplitPane.VERTICAL_SPLIT}">
+ orientation="{JSplitPane.HORIZONTAL_SPLIT}">
- <JSplitPane orientation="{JSplitPane.HORIZONTAL_SPLIT}">
+ <JSplitPane orientation="{JSplitPane.VERTICAL_SPLIT}">
<JScrollPane>
@@ -127,11 +129,12 @@
</row>
<row>
<cell>
- <JLabel id='ediCodeNumberLabel'/>
+ <JLabel id='priorityLabel'/>
</cell>
<cell weightx='1'>
- <JTextField id='ediCodeNumberField'
- onKeyReleased='handler.setText(event, "ediCodeNumber")'/>
+ <BeanFilterableComboBox id='priorityComboBox'
+ constructorParams='this'
+ genericType="Priority"/>
</cell>
</row>
<row>
@@ -145,12 +148,12 @@
</row>
<row>
<cell>
- <JLabel id='priorityLabel'/>
+ <JLabel id='etatAttenteLabel'/>
</cell>
<cell weightx='1'>
- <BeanFilterableComboBox id='priorityComboBox'
+ <BeanFilterableComboBox id='etatAttenteComboBox'
constructorParams='this'
- genericType="Priority"/>
+ genericType="EtatAttente"/>
</cell>
</row>
<row>
@@ -163,12 +166,11 @@
</row>
<row>
<cell>
- <JLabel id='etatAttenteLabel'/>
+ <JLabel id='ediCodeNumberLabel'/>
</cell>
<cell weightx='1'>
- <BeanFilterableComboBox id='etatAttenteComboBox'
- constructorParams='this'
- genericType="EtatAttente"/>
+ <JTextField id='ediCodeNumberField'
+ onKeyReleased='handler.setText(event, "ediCodeNumber")'/>
</cell>
</row>
@@ -238,26 +240,45 @@
</JScrollPane>
<JPanel layout="{new BorderLayout()}">
+ <JPanel layout="{new FlowLayout(FlowLayout.LEADING)}" constraints='BorderLayout.NORTH'>
+ <JLabel id="pfNbLabel"/>
+ <JLabel id="pfNbField"/>
+ <JLabel styleClass="horizontal-separator"/>
+ <JLabel id="savNbLabel"/>
+ <JLabel id="savNbField"/>
+ </JPanel>
+ <JScrollPane constraints="BorderLayout.CENTER">
+ <JXTable id='rangeTable'/>
+ </JScrollPane>
+ </JPanel>
+
+ </JSplitPane>
+
+ <JSplitPane orientation="{JSplitPane.VERTICAL_SPLIT}">
+ <JPanel layout="{new BorderLayout()}">
+ <JLabel id='mailBodyLabel'
+ constraints="BorderLayout.NORTH"/>
+ <JScrollPane id='mailBodyPane'
+ constraints="BorderLayout.CENTER">
+ <JEditorPane id='mailBodyField'/>
+ </JScrollPane>
+ </JPanel>
+ <JPanel layout="{new BorderLayout()}">
<JLabel id='messageLabel'
constraints="BorderLayout.NORTH"/>
- <JScrollPane id='commentPane'
+ <JScrollPane id='messagePane'
constraints="BorderLayout.CENTER">
<JEditorPane id='messageField'/>
</JScrollPane>
</JPanel>
-
</JSplitPane>
- <JScrollPane>
- <JXTable id='rangeTable'/>
- </JScrollPane>
-
</JSplitPane>
<JPanel layout='{new GridLayout(1,0)}'
constraints='BorderLayout.SOUTH'>
<JButton id="backButton"/>
- <JButton id="saveButton" onActionPerformed="handler.saveDemande()"/>
+ <JButton id="saveButton"/>
<JButton id="transmitButton" onActionPerformed="handler.transmitDemande()"/>
<JButton id="printButton"/>
<JButton id="archiveButton"/>
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-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -23,52 +23,42 @@
*/
-import com.franciaflex.faxtomail.persistence.entities.Client;
-import com.franciaflex.faxtomail.persistence.entities.Company;
-import com.franciaflex.faxtomail.persistence.entities.Email;
-import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.persistence.entities.Range;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.services.service.ReferentielService;
import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAction;
-import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
-import com.franciaflex.faxtomail.ui.swing.content.search.SearchUI;
+import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI;
+import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
-import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI;
+import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
+import com.google.common.collect.Maps;
import jaxx.runtime.validator.swing.SwingValidator;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.jdesktop.swingx.table.TableColumnModelExt;
-import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
import org.nuiton.jaxx.application.swing.table.MoveToNextEditableCellAction;
import org.nuiton.jaxx.application.swing.table.MoveToNextEditableRowAction;
import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableCellAction;
import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableRowAction;
+import org.nuiton.topia.persistence.TopiaEntities;
import javax.swing.*;
-import javax.swing.event.ChangeListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableCellEditor;
-import javax.swing.text.Document;
-import javax.swing.text.html.HTMLEditorKit;
-import javax.swing.text.html.StyleSheet;
-
-import java.awt.*;
+import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
import java.util.List;
+import java.util.Map;
import static org.nuiton.i18n.I18n.t;
@@ -90,8 +80,6 @@
*/
// private final PersistenceService persistenceService;
- protected RangeTableModel rangeTableModel;
-
@Override
public void beforeInit(DemandeUI ui) {
@@ -99,7 +87,6 @@
DemandeUIModel model = new DemandeUIModel();
model.fromBean(getContext().getCurrentEmail());
-
listModelIsModify(model);
this.ui.setContextValue(model);
@@ -153,8 +140,57 @@
null,
table);
- rangeTableModel = new RangeTableModel(columnModel);
- rangeTableModel.setRows(new ArrayList<RangeRow>(model.getRangeRow()));
+ final RangeTableModel rangeTableModel = new RangeTableModel(columnModel);
+ List<RangeRowModel> rangeRowModels = new ArrayList<RangeRowModel>();
+ for (RangeRow rangeRow : model.getRangeRow()) {
+ RangeRowModel rangeRowModel = new RangeRowModel();
+ rangeRowModel.fromEntity(rangeRow);
+ rangeRowModels.add(rangeRowModel);
+ }
+ rangeTableModel.setRows(rangeRowModels);
+
+ int[] quantities = FaxToMailUIUtil.computeQuantities(rangeRowModels);
+ model.setPfNb(quantities[0]);
+ model.setSavNb(quantities[1]);
+
+ table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+
+ protected PropertyChangeListener listener = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ String propertyName = evt.getPropertyName();
+ log.info(propertyName);
+ if (RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName)
+ || RangeRow.PROPERTY_SAV_QUANTITY.equals(propertyName)) {
+
+ List<RangeRowModel> rangeRows = rangeTableModel.getRows();
+ int[] quantities = FaxToMailUIUtil.computeQuantities(rangeRows);
+ DemandeUIModel model = getModel();
+ model.setPfNb(quantities[0]);
+ model.setSavNb(quantities[1]);
+ }
+ }
+ };
+
+ protected RangeRowModel currentRow;
+
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ ListSelectionModel source = (ListSelectionModel) e.getSource();
+ if (currentRow != null) {
+ currentRow.removePropertyChangeListener(listener);
+ }
+
+ if (source.isSelectionEmpty()) {
+ currentRow = null;
+ } else {
+ int rowIndex = source.getLeadSelectionIndex();
+ currentRow = rangeTableModel.getEntry(rowIndex);
+ currentRow.addPropertyChangeListener(listener);
+ }
+ }
+ });
+
table.setModel(rangeTableModel);
table.setColumnModel(columnModel);
table.getTableHeader().setReorderingAllowed(false);
@@ -213,45 +249,6 @@
table.addKeyListener(keyAdapter);
-// Highlighter highlighter = new Highlighter() {
-// @Override
-// public Component highlight(Component renderer, ComponentAdapter adapter) {
-// int viewRow = adapter.row;
-// int modelRow = adapter.convertRowIndexToModel(viewRow);
-// Email row = (Email) tableModel.getEntry(modelRow);
-// boolean highlight = row.getTakenBy() == null;
-// if (highlight) {
-// Font font = renderer.getFont();
-// renderer.setFont(font.deriveFont(Font.BOLD));
-// }
-// return renderer;
-// }
-//
-// @Override
-// public void addChangeListener(ChangeListener l) {
-// }
-//
-// @Override
-// public void removeChangeListener(ChangeListener l) {
-// }
-//
-// @Override
-// public ChangeListener[] getChangeListeners() {
-// return new ChangeListener[0];
-// }
-// };
-// table.addHighlighter(highlighter);
-
- rangeTableModel.addTableModelListener(new TableModelListener() {
- @Override
- public void tableChanged(TableModelEvent e) {
- if (e.getType() == TableModelEvent.INSERT) {
- RangeRow row = rangeTableModel.getEntry(e.getFirstRow());
- getModel().addRangeRow(row);
- }
- }
- });
-
SwingValidator validator = this.ui.getValidator();
listenValidatorValid(validator, model);
@@ -273,20 +270,18 @@
log.debug("closing: " + ui);
}
clearValidators();
-
}
@Override
public boolean quitUI() {
-// boolean result = quitScreen(
-// getModel().isValid(),
-// getModel().isModify(),
-// _("tutti.editCruise.askCancelEditBeforeLeaving.cancelSaveCruise"),
-// _("tutti.editCruise.askSaveBeforeLeaving.saveCruise"),
-// ui.getSaveButton().getAction()
-// );
-// return result;
- return true;
+ boolean result = quitScreen(
+ getModel().isValid(),
+ getModel().isModify(),
+ t("faxtomail.demande.askCancelEditBeforeLeaving.cancelSave"),
+ t("faxtomail.demande.askSaveBeforeLeaving.save"),
+ getContext().getActionFactory().createUIAction(this, SaveDemandeAction.class)
+ );
+ return result;
}
@Override
@@ -294,12 +289,6 @@
return ui.getValidator();
}
- public void saveDemande() {
- SaveDemandeAction action = getContext().getActionFactory().createLogicAction(this, SaveDemandeAction.class);
- action.setDemandeModel(getModel());
- getContext().getActionEngine().runAction(action);
- }
-
public void transmitDemande() {
MailFolderChooserUI dialogContent = new MailFolderChooserUI(ui);
dialogContent.setModel(getModel());
@@ -311,7 +300,7 @@
ReplyFormUIModel model = dialogContent.getModel();
String client = getModel().getClientCode();
model.setObject(client == null ? null : client);
- model.setTo(getModel().getSenderEmailAddress());
+ model.setTo(getModel().getSender());
openFrame(dialogContent, t("faxtomail.reply.title", getModel().getObject()), new Dimension(800, 600));
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -36,6 +36,7 @@
import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -57,12 +58,19 @@
private static final Log log = LogFactory.getLog(DemandeUIModel.class);
+ public static final String PROPERTY_PF_NB = "pfNb";
+ public static final String PROPERTY_SAV_NB = "savNb";
+
protected final Email editObject = new EmailImpl();
protected History firstOpeningHistory;
protected History lastModificationHistory;
+ protected int pfNb;
+
+ protected int savNb;
+
protected static Binder<DemandeUIModel, Email> toBeanBinder =
BinderFactory.newBinder(DemandeUIModel.class,
Email.class);
@@ -74,11 +82,6 @@
super(fromBeanBinder, toBeanBinder);
}
- public Email toEntity(Email email) {
- toBeanBinder.copy((DemandeUIModel) this, email);
- return email;
- }
-
@Override
public void fromEntity(Email entity) {
super.fromEntity(entity);
@@ -86,36 +89,30 @@
lastModificationHistory = null;
}
- public void setSenderEmailAddress(String senderEmailAddress) {
- Object oldValue = getSenderEmailAddress();
- editObject.setSenderEmailAddress(senderEmailAddress);
- firePropertyChanged(Email.PROPERTY_SENDER_EMAIL_ADDRESS, oldValue, senderEmailAddress);
+ public void setSender(String sender) {
+ Object oldValue = getSender();
+ editObject.setSender(sender);
+ firePropertyChanged(Email.PROPERTY_SENDER, oldValue, sender);
}
- public String getSenderEmailAddress() {
- return editObject.getSenderEmailAddress();
+ public String getSender() {
+ String sender = editObject.getSender();
+ if (sender == null) {
+ sender = t("faxtomail.demande.sender.manualCreation");
+ }
+ return sender;
}
- public void setSenderFaxNumber(String senderFaxNumber) {
- Object oldValue = getSenderFaxNumber();
- editObject.setSenderFaxNumber(senderFaxNumber);
- firePropertyChanged(Email.PROPERTY_SENDER_FAX_NUMBER, oldValue, senderFaxNumber);
+ public void setRecipient(String recipient) {
+ Object oldValue = getRecipient();
+ editObject.setRecipient(recipient);
+ firePropertyChanged(Email.PROPERTY_RECIPIENT, oldValue, recipient);
}
- public String getSenderFaxNumber() {
- return editObject.getSenderFaxNumber();
+ public String getRecipient() {
+ return editObject.getRecipient();
}
- public void setReceptionEmailAddress(String receptionEmailAddress) {
- Object oldValue = getReceptionEmailAddress();
- editObject.setReceptionEmailAddress(receptionEmailAddress);
- firePropertyChanged(Email.PROPERTY_RECEPTION_EMAIL_ADDRESS, oldValue, receptionEmailAddress);
- }
-
- public String getReceptionEmailAddress() {
- return editObject.getReceptionEmailAddress();
- }
-
public void setObject(String object) {
Object oldValue = getObject();
editObject.setObject(object);
@@ -229,11 +226,14 @@
public void findFirstOpeningHistory() {
History result = null;
Date date = null;
- for (History history : getHistory()) {
- if (HistoryType.OPENING.equals(history.getType())) {
- if (date == null || date.after(history.getModificationDate())) {
- date = history.getModificationDate();
- result = history;
+ Collection<History> histories = getHistory();
+ if (histories != null) {
+ for (History history : histories) {
+ if (HistoryType.OPENING.equals(history.getType())) {
+ if (date == null || date.after(history.getModificationDate())) {
+ date = history.getModificationDate();
+ result = history;
+ }
}
}
}
@@ -243,11 +243,15 @@
public void findLastModificationHistory() {
History result = null;
Date date = null;
- for (History history : getHistory()) {
- if (HistoryType.MODIFICATION.equals(history.getType())) {
- if (date == null || date.before(history.getModificationDate())) {
- date = history.getModificationDate();
- result = history;
+ Collection<History> histories = getHistory();
+ if (histories != null) {
+ for (History history : histories) {
+ if (HistoryType.MODIFICATION.equals(history.getType())
+ || HistoryType.CREATION.equals(history.getType())) {
+ if (date == null || date.before(history.getModificationDate())) {
+ date = history.getModificationDate();
+ result = history;
+ }
}
}
}
@@ -262,11 +266,13 @@
}
public FaxToMailUser getFirstOpeningUser() {
- return getFirstOpeningHistory().getFaxToMailUser();
+ History history = getFirstOpeningHistory();
+ return history != null ? history.getFaxToMailUser() : null;
}
public Date getFirstOpeningDate() {
- return getFirstOpeningHistory().getModificationDate();
+ History history = getFirstOpeningHistory();
+ return history != null ? history.getModificationDate() : null;
}
public History getLastModificationHistory() {
@@ -277,11 +283,13 @@
}
public FaxToMailUser getLastModificationUser() {
- return getLastModificationHistory().getFaxToMailUser();
+ History history = getLastModificationHistory();
+ return history != null ? history.getFaxToMailUser() : null;
}
public Date getLastModificationDate() {
- return getLastModificationHistory().getModificationDate();
+ History history = getLastModificationHistory();
+ return history != null ? history.getModificationDate() : null;
}
@Override
@@ -332,6 +340,9 @@
}
public void setRangeRow(Collection<RangeRow> rangeRow) {
+ if (rangeRow == null) {
+ rangeRow = new ArrayList<RangeRow>();
+ }
editObject.setRangeRow(rangeRow);
firePropertyChange(Email.PROPERTY_RANGE_ROW, null, getRangeRow());
}
@@ -344,6 +355,26 @@
editObject.setMailFolder(mailFolder);
}
+ public int getPfNb() {
+ return pfNb;
+ }
+
+ public void setPfNb(int pfNb) {
+ Object oldValue = getPfNb();
+ this.pfNb = pfNb;
+ firePropertyChange(PROPERTY_PF_NB, oldValue, pfNb);
+ }
+
+ public int getSavNb() {
+ return savNb;
+ }
+
+ public void setSavNb(int savNb) {
+ Object oldValue = getSavNb();
+ this.savNb = savNb;
+ firePropertyChange(PROPERTY_SAV_NB, oldValue, savNb);
+ }
+
@Override
protected Email newEntity() {
return new EmailImpl();
Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,20 +0,0 @@
-#navigationTree {
- font-size: "11";
- rootVisible: false;
- showsRootHandles: true;
-}
-
-#cancelButton {
- actionIcon: cancel;
- text: "faxtomail.chooseMailFolder.action.cancel";
- toolTipText: "faxtomail.chooseMailFolder.action.cancel.tip";
- i18nMnemonic: "faxtomail.chooseMailFolder.action.cancel.mnemonic";
-}
-
-#validateButton {
- actionIcon: validate;
- text: "faxtomail.chooseMailFolder.action.validate";
- toolTipText: "faxtomail.chooseMailFolder.action.validate.tip";
- i18nMnemonic: "faxtomail.chooseMailFolder.action.validate.mnemonic";
- _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.TransmitAction.class};
-}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,18 @@
+#navigationTree {
+ font-size: "11";
+ rootVisible: false;
+ showsRootHandles: true;
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "faxtomail.chooseMailFolder.action.cancel";
+ toolTipText: "faxtomail.chooseMailFolder.action.cancel.tip";
+}
+
+#validateButton {
+ actionIcon: validate;
+ text: "faxtomail.chooseMailFolder.action.validate";
+ toolTipText: "faxtomail.chooseMailFolder.action.validate.tip";
+ _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.TransmitAction.class};
+}
\ No newline at end of file
Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,30 +0,0 @@
-<JPanel id='mailFolderChooser' layout='{new BorderLayout()}'
- implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<DemandeUIModel, MailFolderChooserUIHandler>'>
-
- <import>
- com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
- com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
-
- javax.swing.tree.DefaultTreeModel
- </import>
-
- <script><![CDATA[
-
- public MailFolderChooserUI(FaxToMailUI parentUI) {
- FaxToMailUIUtil.setParentUI(this, parentUI);
- }
-
- ]]></script>
-
- <DemandeUIModel id='model' javaBean='null'/>
-
- <JScrollPane constraints='BorderLayout.CENTER'>
- <JTree id="navigationTree"/>
- </JScrollPane>
-
- <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
- <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='validateButton'/>
- </JPanel>
-
-</JPanel>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,30 @@
+<JPanel id='mailFolderChooser' layout='{new BorderLayout()}'
+ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<DemandeUIModel, MailFolderChooserUIHandler>'>
+
+ <import>
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+
+ javax.swing.tree.DefaultTreeModel
+ </import>
+
+ <script><![CDATA[
+
+ public MailFolderChooserUI(FaxToMailUI parentUI) {
+ FaxToMailUIUtil.setParentUI(this, parentUI);
+ }
+
+ ]]></script>
+
+ <DemandeUIModel id='model' javaBean='null'/>
+
+ <JScrollPane constraints='BorderLayout.CENTER'>
+ <JTree id="navigationTree"/>
+ </JScrollPane>
+
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='validateButton'/>
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,86 +0,0 @@
-package com.franciaflex.faxtomail.ui.swing.content.demande;
-
-import com.franciaflex.faxtomail.persistence.entities.Company;
-import com.franciaflex.faxtomail.persistence.entities.MailFolder;
-import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
-import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
-import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
-import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode;
-import jaxx.runtime.validator.swing.SwingValidator;
-
-import javax.swing.*;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.DefaultMutableTreeNode;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author Kevin Morin (Code Lutin)
- * @since x.x
- */
-public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, MailFolderChooserUI> implements Cancelable {
-
- @Override
- public void afterInit(MailFolderChooserUI mailFolderChooserUI) {
- initUI(mailFolderChooserUI);
-
- // init tree
- Company franciaflex = getContext().getCurrentCompany();
- Collection<MailFolder> folders = franciaflex.getMailFolder();
- JTree navigationTree = ui.getNavigationTree();
- Map<MailFolder, DefaultMutableTreeNode> nodesByFolder =
- FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders);
-
- navigationTree.addTreeSelectionListener(new TreeSelectionListener() {
- @Override
- public void valueChanged(TreeSelectionEvent e) {
- FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent();
- MailFolder folder = folderNode.getMailFolder();
- getModel().setMailFolder(folder);
- }
- });
- }
-
- @Override
- public void onCloseUI() {
- }
-
- @Override
- public SwingValidator<DemandeUIModel> getValidator() {
- return null;
- }
-
- @Override
- public void cancel() {
- closeDialog();
- }
-
- @Override
- protected JComponent getComponentToFocus() {
- return ui.getNavigationTree();
- }
-
- /**
- * Creates the tree nodes and returns a map of the nodes by folder
- * @param parent the node parent
- * @param folder the folder to add to the tree
- * @return the map of the nodes by folder
- */
- protected Map<MailFolder, DefaultMutableTreeNode> createFolderTree(DefaultMutableTreeNode parent, MailFolder folder) {
- Map<MailFolder, DefaultMutableTreeNode> result = new HashMap<MailFolder, DefaultMutableTreeNode>();
-
- DefaultMutableTreeNode node = new FolderTreeNode(folder);
- result.put(folder, node);
-
- parent.add(node);
- if (folder.isChildrenNotEmpty()) {
- for (MailFolder child : folder.getChildren()) {
- result.putAll(createFolderTree(node, child));
- }
- }
- return result;
- }
-
-}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,88 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.Company;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.MailFolderChooserUI;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
+import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
+import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
+import com.franciaflex.faxtomail.ui.swing.util.FolderTreeNode;
+import jaxx.runtime.validator.swing.SwingValidator;
+
+import javax.swing.*;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, MailFolderChooserUI> implements Cancelable {
+
+ @Override
+ public void afterInit(MailFolderChooserUI mailFolderChooserUI) {
+ initUI(mailFolderChooserUI);
+
+ // init tree
+ Company franciaflex = getContext().getCurrentCompany();
+ Collection<MailFolder> folders = franciaflex.getMailFolder();
+ JTree navigationTree = ui.getNavigationTree();
+ Map<MailFolder, DefaultMutableTreeNode> nodesByFolder =
+ FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, folders);
+
+ navigationTree.addTreeSelectionListener(new TreeSelectionListener() {
+ @Override
+ public void valueChanged(TreeSelectionEvent e) {
+ FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent();
+ MailFolder folder = folderNode.getMailFolder();
+ getModel().setMailFolder(folder);
+ }
+ });
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ @Override
+ public SwingValidator<DemandeUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ public void cancel() {
+ closeDialog();
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return ui.getNavigationTree();
+ }
+
+ /**
+ * Creates the tree nodes and returns a map of the nodes by folder
+ * @param parent the node parent
+ * @param folder the folder to add to the tree
+ * @return the map of the nodes by folder
+ */
+ protected Map<MailFolder, DefaultMutableTreeNode> createFolderTree(DefaultMutableTreeNode parent, MailFolder folder) {
+ Map<MailFolder, DefaultMutableTreeNode> result = new HashMap<MailFolder, DefaultMutableTreeNode>();
+
+ DefaultMutableTreeNode node = new FolderTreeNode(folder);
+ result.put(folder, node);
+
+ parent.add(node);
+ if (folder.isChildrenNotEmpty()) {
+ for (MailFolder child : folder.getChildren()) {
+ result.putAll(createFolderTree(node, child));
+ }
+ }
+ return result;
+ }
+
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,7 @@
+#rangeTable {
+ editable: false;
+}
+
+#okButton {
+ text: "faxtomail.quantitiesByRange.button.text";
+}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUI.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,30 @@
+<JPanel id='quantitiesByRangeUI' layout='{new BorderLayout()}'
+ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<QuantitiesByRangeUIModel, QuantitiesByRangeUIHandler>'>
+
+ <import>
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+
+ org.jdesktop.swingx.JXTable
+ </import>
+
+ <script><![CDATA[
+
+ public QuantitiesByRangeUI(FaxToMailUI parentUI) {
+ FaxToMailUIUtil.setParentUI(this, parentUI);
+ }
+
+ ]]></script>
+
+ <QuantitiesByRangeUIModel id='model'
+ initializer='getContextValue(QuantitiesByRangeUIModel.class)'/>
+
+ <JScrollPane constraints='BorderLayout.CENTER'>
+ <JXTable id='rangeTable'/>
+ </JScrollPane>
+
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='okButton' onActionPerformed='handler.cancel()'/>
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,92 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.Range;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
+import jaxx.runtime.validator.swing.SwingValidator;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import org.jdesktop.swingx.table.TableColumnModelExt;
+import org.nuiton.jaxx.application.swing.util.Cancelable;
+
+import javax.swing.*;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class QuantitiesByRangeUIHandler extends AbstractFaxToMailUIHandler<QuantitiesByRangeUIModel, QuantitiesByRangeUI> implements Cancelable {
+
+ protected RangeTableModel rangeTableModel;
+
+ @Override
+ public void beforeInit(QuantitiesByRangeUI ui) {
+ super.beforeInit(ui);
+
+ QuantitiesByRangeUIModel dialogModel = new QuantitiesByRangeUIModel();
+ dialogModel.setRootFolder(getContext().getCurrentMailFolder());
+ this.ui.setContextValue(dialogModel);
+ }
+
+ @Override
+ public void afterInit(QuantitiesByRangeUI quantitiesByRangeUI) {
+ initUI(quantitiesByRangeUI);
+
+ final JXTable table = ui.getRangeTable();
+
+ TableColumnModelExt columnModel = new DefaultTableColumnModelExt();
+ addColumnToModel(columnModel,
+ null,
+ newTableCellRender(Range.class),
+ RangeTableModel.RANGE_COLUMN);
+ addIntegerColumnToModel(columnModel,
+ RangeTableModel.PRODUCT_QUANTITY_COLUMN,
+ null,
+ table);
+ addIntegerColumnToModel(columnModel,
+ RangeTableModel.SAV_QUANTITY_COLUMN,
+ null,
+ table);
+
+ rangeTableModel = new RangeTableModel(columnModel);
+ rangeTableModel.setRows(getModel().getRangeRows());
+ table.setModel(rangeTableModel);
+ table.setColumnModel(columnModel);
+ table.getTableHeader().setReorderingAllowed(false);
+
+ getModel().addPropertyChangeListener(QuantitiesByRangeUIModel.PROPERTY_RANGE_ROWS,
+ new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ setRangeRows((List<RangeRowModel>) evt.getNewValue());
+ }
+ });
+ }
+
+ @Override
+ public SwingValidator<QuantitiesByRangeUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return null;
+ }
+
+ @Override
+ public void onCloseUI() {
+
+ }
+
+ @Override
+ public void cancel() {
+ closeDialog();
+ }
+
+ public void setRangeRows(List<RangeRowModel> rows) {
+ rangeTableModel.setRows(rows);
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/QuantitiesByRangeUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,43 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class QuantitiesByRangeUIModel extends AbstractSerializableBean {
+
+ public static final String PROPERTY_ROOT_FOLDER = "rootFolder";
+ public static final String PROPERTY_RANGE_ROWS = "rangeRows";
+
+ protected MailFolder rootFolder;
+
+ protected List<RangeRowModel> rangeRows = new ArrayList<RangeRowModel>();
+
+ public MailFolder getRootFolder() {
+ return rootFolder;
+ }
+
+ public void setRootFolder(MailFolder rootFolder) {
+ Object oldValue = getRootFolder();
+ this.rootFolder = rootFolder;
+ firePropertyChange(PROPERTY_ROOT_FOLDER, oldValue, rootFolder);
+ }
+
+ public List<RangeRowModel> getRangeRows() {
+ return rangeRows;
+ }
+
+ public void setRangeRows(Collection<RangeRowModel> rangeRows) {
+ this.rangeRows = new ArrayList<RangeRowModel>(rangeRows);
+ firePropertyChange(PROPERTY_RANGE_ROWS, null, this.rangeRows);
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeRowModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,85 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
+import com.franciaflex.faxtomail.persistence.entities.History;
+import com.franciaflex.faxtomail.persistence.entities.Range;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.persistence.entities.RangeRowImpl;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class RangeRowModel extends AbstractFaxToMailBeanUIModel<RangeRow, RangeRowModel> {
+
+ protected final RangeRow editObject = new RangeRowImpl();
+
+ protected static Binder<RangeRowModel, RangeRow> toBeanBinder =
+ BinderFactory.newBinder(RangeRowModel.class,
+ RangeRow.class);
+
+ protected static Binder<RangeRow, RangeRowModel> fromBeanBinder =
+ BinderFactory.newBinder(RangeRow.class, RangeRowModel.class);
+
+
+ public RangeRowModel() {
+ super(fromBeanBinder, toBeanBinder);
+ }
+
+ public void setCommandNumber(String commandNumber) {
+ Object oldValue = getCommandNumber();
+ editObject.setCommandNumber(commandNumber);
+ firePropertyChange(RangeRow.PROPERTY_COMMAND_NUMBER, oldValue, commandNumber);
+ }
+
+ public String getCommandNumber() {
+ return editObject.getCommandNumber();
+ }
+
+ public void setProductQuantity(Integer productQuantity) {
+ Object oldValue = getProductQuantity();
+ editObject.setProductQuantity(productQuantity);
+ firePropertyChange(RangeRow.PROPERTY_PRODUCT_QUANTITY, oldValue, productQuantity);
+ }
+
+ public Integer getProductQuantity() {
+ return editObject.getProductQuantity();
+ }
+
+ public void setSavQuantity(Integer savQuantity) {
+ Object oldValue = getSavQuantity();
+ editObject.setSavQuantity(savQuantity);
+ firePropertyChange(RangeRow.PROPERTY_SAV_QUANTITY, oldValue, savQuantity);
+ }
+
+ public Integer getSavQuantity() {
+ return editObject.getSavQuantity();
+ }
+
+ public void setRange(Range range) {
+ Object oldValue = getRange();
+ editObject.setRange(range);
+ firePropertyChange(RangeRow.PROPERTY_RANGE, oldValue, range);
+ }
+
+ public Range getRange() {
+ return editObject.getRange();
+ }
+
+ public String getTopiaId() {
+ return editObject.getTopiaId();
+ }
+
+ public void setTopiaId(String id) {
+ editObject.setTopiaId(id);
+ }
+
+ @Override
+ protected RangeRow newEntity() {
+ return new RangeRowImpl();
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -2,17 +2,21 @@
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.persistence.entities.RangeRowImpl;
+import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.table.TableColumnModelExt;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
import org.nuiton.jaxx.application.swing.table.ColumnIdentifier;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
import static org.nuiton.i18n.I18n.n;
/**
* @author Kevin Morin (Code Lutin)
* @since x.x
*/
-public class RangeTableModel extends AbstractApplicationTableModel<RangeRow> {
+public class RangeTableModel extends AbstractApplicationTableModel<RangeRowModel> {
public static final ColumnIdentifier<RangeRow> RANGE_COLUMN = ColumnIdentifier.newId(
RangeRow.PROPERTY_RANGE,
@@ -40,7 +44,7 @@
}
@Override
- public RangeRow createNewRow() {
- return new RangeRowImpl();
+ public RangeRowModel createNewRow() {
+ return new RangeRowModel();
}
}
Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,42 +0,0 @@
-#fromLabel {
- text: "faxtomail.reply.from";
-}
-
-#toLabel {
- text: "faxtomail.reply.to";
-}
-
-#toField {
- text: {model.getTo()};
-}
-
-#objectLabel {
- text: "faxtomail.reply.object";
-}
-
-#objectField {
- text: {model.getObject()};
-}
-
-#attachmentCheckbox {
- text: "faxtomail.reply.attachment";
-}
-
-#attachmentButton {
- enabled: {attachmentCheckbox.isSelected()};
-}
-
-#cancelButton {
- actionIcon: cancel;
- text: "faxtomail.reply.action.cancel";
- toolTipText: "faxtomail.reply.action.cancel.tip";
- i18nMnemonic: "faxtomail.reply.action.cancel.mnemonic";
-}
-
-#validateButton {
- actionIcon: validate;
- text: "faxtomail.reply.action.validate";
- toolTipText: "faxtomail.reply.action.validate.tip";
- i18nMnemonic: "faxtomail.reply.action.validate.mnemonic";
- _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ReplyAction.class};
-}
\ No newline at end of file
Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,105 +0,0 @@
-<!--
- #%L
- FaxToMail :: UI
- %%
- Copyright (C) 2014 Franciaflex
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with this program. If not, see
- <http://www.gnu.org/licenses/gpl-3.0.html>.
- #L%
- -->
-<JPanel id='replyPanel' layout='{new BorderLayout()}'
- implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<ReplyFormUIModel, ReplyFormUIHandler>'>
-
- <import>
- com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext
- com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
- com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
- com.franciaflex.faxtomail.ui.swing.util.attachment.ButtonAttachment
-
- com.franciaflex.faxtomail.persistence.entities.Email
- com.franciaflex.faxtomail.persistence.entities.DemandType
- com.franciaflex.faxtomail.persistence.entities.DemandStatus
- com.franciaflex.faxtomail.persistence.entities.Range
- com.franciaflex.faxtomail.persistence.entities.Priority
-
- jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
-
- org.jdesktop.swingx.JXDatePicker
- org.jdesktop.swingx.JXTitledPanel
-
- java.text.SimpleDateFormat
- java.util.Date
- </import>
-
- <script><![CDATA[
-
- public ReplyFormUI(FaxToMailUI parentUI) {
- FaxToMailUIUtil.setParentUI(this, parentUI);
- }
-
- ]]></script>
-
- <ReplyFormUIModel id='model'
- initializer='getContextValue(ReplyFormUIModel.class)'/>
-
- <Table constraints='BorderLayout.CENTER'
- fill='both'>
- <row>
- <cell>
- <JLabel id="fromLabel"/>
- </cell>
- <cell weightx='1'>
- <JTextField id="fromField"/>
- </cell>
- </row>
- <row>
- <cell>
- <JLabel id="toLabel"/>
- </cell>
- <cell weightx='1'>
- <JTextField id="toField"/>
- </cell>
- </row>
- <row>
- <cell>
- <JLabel id="objectLabel"/>
- </cell>
- <cell weightx='1'>
- <JTextField id="objectField"/>
- </cell>
- </row>
- <row>
- <cell columns='2'>
- <JPanel layout='{new BorderLayout()}'>
- <JCheckBox id="attachmentCheckbox" constraints="BorderLayout.CENTER"/>
- <ButtonAttachment id="attachmentButton"
- constructorParams="model"
- constraints="BorderLayout.EAST"/>
- </JPanel>
- </cell>
- </row>
- <row weighty='1'>
- <cell columns='2'>
- <JEditorPane id="message" />
- </cell>
- </row>
- </Table>
-
- <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
- <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='validateButton'/>
- </JPanel>
-
-</JPanel>
\ No newline at end of file
Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,54 +0,0 @@
-package com.franciaflex.faxtomail.ui.swing.content.demande;
-
-import com.franciaflex.faxtomail.ui.swing.actions.ReplyAction;
-import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
-import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
-import jaxx.runtime.validator.swing.SwingValidator;
-
-import javax.swing.*;
-import javax.swing.text.html.HTMLEditorKit;
-
-/**
- * @author Kevin Morin (Code Lutin)
- * @since x.x
- */
-public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIModel, ReplyFormUI> implements Cancelable {
-
- @Override
- public void beforeInit(ReplyFormUI ui) {
-
- super.beforeInit(ui);
-
- ReplyFormUIModel model = new ReplyFormUIModel();
-
- this.ui.setContextValue(model);
- }
-
- @Override
- public void afterInit(ReplyFormUI replyFormUIModel) {
- initUI(ui);
-
- JEditorPane editor = ui.getMessage();
- editor.setEditorKitForContentType("text/html", new HTMLEditorKit());
- editor.setContentType("text/html");
- }
-
- @Override
- public void cancel() {
- getParentContainer(JFrame.class).setVisible(false);
- }
-
- @Override
- public void onCloseUI() {
- }
-
- @Override
- public SwingValidator<ReplyFormUIModel> getValidator() {
- return null;
- }
-
- @Override
- protected JComponent getComponentToFocus() {
- return null;
- }
-}
Deleted: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,90 +0,0 @@
-package com.franciaflex.faxtomail.ui.swing.content.demande;
-
-import com.franciaflex.faxtomail.persistence.entities.Attachment;
-import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware;
-import org.jdesktop.beans.AbstractSerializableBean;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * @author Kevin Morin (Code Lutin)
- * @since x.x
- */
-public class ReplyFormUIModel extends AbstractSerializableBean implements AttachmentModelAware {
-
- public static final String PROPERTY_TO = "to";
- public static final String PROPERTY_FROM = "from";
- public static final String PROPERTY_OBJECT = "object";
- public static final String PROPERTY_MESSAGE = "message";
-
- protected String to;
- protected String from;
- protected String object;
- protected String message;
- protected List<Attachment> attachments = new ArrayList<Attachment>();
-
- public String getTo() {
- return to;
- }
-
- public void setTo(String to) {
- Object oldValue = getTo();
- this.to = to;
- firePropertyChange(PROPERTY_TO, oldValue, to);
- }
-
- public String getFrom() {
- return from;
- }
-
- public void setFrom(String from) {
- Object oldValue = getFrom();
- this.from = from;
- firePropertyChange(PROPERTY_FROM, oldValue, from);
- }
-
- public String getObject() {
- return object;
- }
-
- public void setObject(String object) {
- Object oldValue = getObject();
- this.object = object;
- firePropertyChange(PROPERTY_OBJECT, oldValue, object);
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- Object oldValue = getMessage();
- this.message = message;
- firePropertyChange(PROPERTY_MESSAGE, oldValue, message);
- }
-
- @Override
- public Collection<Attachment> getAttachment() {
- return attachments;
- }
-
- @Override
- public void addAllAttachment(Collection<Attachment> attachments) {
- this.attachments.addAll(attachments);
- firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
- }
-
- @Override
- public void addAttachment(Attachment attachment) {
- attachments.add(attachment);
- firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
- }
-
- @Override
- public void removeAttachment(Attachment attachment) {
- attachments.remove(attachment);
- firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
- }
-}
Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css (from rev 16, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css)
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,40 @@
+#fromLabel {
+ text: "faxtomail.reply.from";
+}
+
+#toLabel {
+ text: "faxtomail.reply.to";
+}
+
+#toField {
+ text: {model.getTo()};
+}
+
+#objectLabel {
+ text: "faxtomail.reply.object";
+}
+
+#objectField {
+ text: {model.getObject()};
+}
+
+#attachmentCheckbox {
+ text: "faxtomail.reply.attachment";
+}
+
+#attachmentButton {
+ enabled: {attachmentCheckbox.isSelected()};
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "faxtomail.reply.action.cancel";
+ toolTipText: "faxtomail.reply.action.cancel.tip";
+}
+
+#validateButton {
+ actionIcon: validate;
+ text: "faxtomail.reply.action.validate";
+ toolTipText: "faxtomail.reply.action.validate.tip";
+ _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ReplyAction.class};
+}
\ No newline at end of file
Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx (from rev 16, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx)
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUI.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,100 @@
+<!--
+ #%L
+ FaxToMail :: UI
+ %%
+ Copyright (C) 2014 Franciaflex
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+<JPanel id='replyPanel' layout='{new BorderLayout()}'
+ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<ReplyFormUIModel, ReplyFormUIHandler>'>
+
+ <import>
+ com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+ com.franciaflex.faxtomail.ui.swing.util.attachment.ButtonAttachment
+
+ com.franciaflex.faxtomail.persistence.entities.Email
+ com.franciaflex.faxtomail.persistence.entities.DemandType
+ com.franciaflex.faxtomail.persistence.entities.DemandStatus
+ com.franciaflex.faxtomail.persistence.entities.Range
+ com.franciaflex.faxtomail.persistence.entities.Priority
+
+ java.text.SimpleDateFormat
+ java.util.Date
+ </import>
+
+ <script><![CDATA[
+
+ public ReplyFormUI(FaxToMailUI parentUI) {
+ FaxToMailUIUtil.setParentUI(this, parentUI);
+ }
+
+ ]]></script>
+
+ <ReplyFormUIModel id='model'
+ initializer='getContextValue(ReplyFormUIModel.class)'/>
+
+ <Table constraints='BorderLayout.CENTER'
+ fill='both'>
+ <row>
+ <cell>
+ <JLabel id="fromLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="fromField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="toLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="toField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="objectLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="objectField"/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='2'>
+ <JPanel layout='{new BorderLayout()}'>
+ <JCheckBox id="attachmentCheckbox" constraints="BorderLayout.CENTER"/>
+ <ButtonAttachment id="attachmentButton"
+ constructorParams="model"
+ constraints="BorderLayout.EAST"/>
+ </JPanel>
+ </cell>
+ </row>
+ <row weighty='1'>
+ <cell columns='2'>
+ <JEditorPane id="message" />
+ </cell>
+ </row>
+ </Table>
+
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='validateButton'/>
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java (from rev 12, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java)
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,53 @@
+package com.franciaflex.faxtomail.ui.swing.content.reply;
+
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
+import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
+import jaxx.runtime.validator.swing.SwingValidator;
+
+import javax.swing.*;
+import javax.swing.text.html.HTMLEditorKit;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIModel, ReplyFormUI> implements Cancelable {
+
+ @Override
+ public void beforeInit(ReplyFormUI ui) {
+
+ super.beforeInit(ui);
+
+ ReplyFormUIModel model = new ReplyFormUIModel();
+
+ this.ui.setContextValue(model);
+ }
+
+ @Override
+ public void afterInit(ReplyFormUI replyFormUIModel) {
+ initUI(ui);
+
+ JEditorPane editor = ui.getMessage();
+ editor.setEditorKitForContentType("text/html", new HTMLEditorKit());
+ editor.setContentType("text/html");
+ }
+
+ @Override
+ public void cancel() {
+ getParentContainer(JFrame.class).setVisible(false);
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ @Override
+ public SwingValidator<ReplyFormUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return null;
+ }
+}
Copied: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java (from rev 12, trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java)
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -0,0 +1,90 @@
+package com.franciaflex.faxtomail.ui.swing.content.reply;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class ReplyFormUIModel extends AbstractSerializableBean implements AttachmentModelAware {
+
+ public static final String PROPERTY_TO = "to";
+ public static final String PROPERTY_FROM = "from";
+ public static final String PROPERTY_OBJECT = "object";
+ public static final String PROPERTY_MESSAGE = "message";
+
+ protected String to;
+ protected String from;
+ protected String object;
+ protected String message;
+ protected List<Attachment> attachments = new ArrayList<Attachment>();
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ Object oldValue = getTo();
+ this.to = to;
+ firePropertyChange(PROPERTY_TO, oldValue, to);
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ Object oldValue = getFrom();
+ this.from = from;
+ firePropertyChange(PROPERTY_FROM, oldValue, from);
+ }
+
+ public String getObject() {
+ return object;
+ }
+
+ public void setObject(String object) {
+ Object oldValue = getObject();
+ this.object = object;
+ firePropertyChange(PROPERTY_OBJECT, oldValue, object);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ Object oldValue = getMessage();
+ this.message = message;
+ firePropertyChange(PROPERTY_MESSAGE, oldValue, message);
+ }
+
+ @Override
+ public Collection<Attachment> getAttachment() {
+ return attachments;
+ }
+
+ @Override
+ public void addAllAttachment(Collection<Attachment> attachments) {
+ this.attachments.addAll(attachments);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void addAttachment(Attachment attachment) {
+ attachments.add(attachment);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void removeAttachment(Attachment attachment) {
+ attachments.remove(attachment);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -41,7 +41,6 @@
actionIcon: list;
text: "faxtomail.search.action.gotoFolder";
toolTipText: "faxtomail.search.action.gotoFolder.tip";
- i18nMnemonic: "faxtomail.search.action.gotoFolder.mnemonic";
}
#modifiedByLabel {
@@ -101,7 +100,7 @@
}
#senderField {
- text: {model.getSenderEmailAddress()};
+ text: {model.getSender()};
}
#clientLabel {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -87,24 +87,24 @@
super.fromEntity(entity);
}
- public void setSenderEmailAddress(String senderEmailAddress) {
- Object oldValue = getSenderEmailAddress();
- editObject.setSenderEmailAddress(senderEmailAddress);
- firePropertyChanged(Email.PROPERTY_SENDER_EMAIL_ADDRESS, oldValue, senderEmailAddress);
+ public void setSender(String sender) {
+ Object oldValue = getSender();
+ editObject.setSender(sender);
+ firePropertyChanged(Email.PROPERTY_SENDER, oldValue, sender);
}
- public String getSenderEmailAddress() {
- return editObject.getSenderEmailAddress();
+ public String getSender() {
+ return editObject.getSender();
}
- public void setReceptionEmailAddress(String receptionEmailAddress) {
- Object oldValue = getReceptionEmailAddress();
- editObject.setReceptionEmailAddress(receptionEmailAddress);
- firePropertyChanged(Email.PROPERTY_RECEPTION_EMAIL_ADDRESS, oldValue, receptionEmailAddress);
+ public void setRecipient(String recipient) {
+ Object oldValue = getRecipient();
+ editObject.setRecipient(recipient);
+ firePropertyChanged(Email.PROPERTY_RECIPIENT, oldValue, recipient);
}
- public String getReceptionEmailAddress() {
- return editObject.getReceptionEmailAddress();
+ public String getRecipient() {
+ return editObject.getRecipient();
}
public void setObject(String object) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailBeanUIModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -22,6 +22,7 @@
* #L%
*/
+import com.franciaflex.faxtomail.persistence.entities.Email;
import org.jdesktop.beans.AbstractSerializableBean;
import org.nuiton.jaxx.application.listener.PropagatePropertyChangeListener;
import org.nuiton.util.CollectionUtil;
@@ -70,6 +71,11 @@
return toBean();
}
+ public E toEntity(E entity) {
+ toBeanBinder.copy((B) this, entity);
+ return entity;
+ }
+
public final void fromBean(E bean) {
fromBeanBinder.copy(bean, (B) this);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,17 +1,25 @@
package com.franciaflex.faxtomail.ui.swing.util;
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.Company;
import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.HasLabel;
+import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
+import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellEditor;
+import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentCellRenderer;
import org.apache.commons.lang3.StringUtils;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.decorator.ComponentAdapter;
import org.jdesktop.swingx.decorator.Highlighter;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.jdesktop.swingx.table.TableColumnModelExt;
+import org.nuiton.decorator.Decorator;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
import javax.swing.event.ChangeListener;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -30,16 +38,60 @@
String columns = franciaflex.getConfiguration().getTableColumns();
if (columns == null) {
columns = StringUtils.join(new String[]{
- Email.PROPERTY_OBJECT, Email.PROPERTY_RECEPTION_DATE, Email.PROPERTY_SENDER_EMAIL_ADDRESS
+ Email.PROPERTY_PRIORITY,
+ Email.PROPERTY_DEMAND_TYPE,
+ Email.PROPERTY_OBJECT,
+ Email.PROPERTY_CLIENT_CODE,
+ Email.PROPERTY_SENDER,
+ Email.PROPERTY_PROJECT_REFERENCE,
+ Email.PROPERTY_RECEPTION_DATE,
+ Email.PROPERTY_RECIPIENT,
+ Email.PROPERTY_DEMAND_STATUS,
+ Email.PROPERTY_ETAT_ATTENTE,
+ Email.PROPERTY_ATTACHMENT
}, ',');
}
String[] columnNames = columns.split(",");
for (String columnName : columnNames) {
- addColumnToModel(columnModel,
- null,
- Email.PROPERTY_RECEPTION_DATE.equals(columnName) ? newTableCellRender(Date.class): null,
- DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName))
- .setSortable(true);
+
+ if (Email.PROPERTY_PRIORITY.equals(columnName)) {
+ addComboDataColumnToModel(columnModel,
+ DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName),
+ getDecorator(Priority.class, null),
+ getContext().getReferentielService().getAllPriority());
+
+ } else if (Email.PROPERTY_ATTACHMENT.equals(columnName)) {
+ addColumnToModel(columnModel,
+ AttachmentCellEditor.newEditor(ui),
+ AttachmentCellRenderer.newRender(getDecorator(Attachment.class, null)),
+ DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName));
+
+ } else {
+ TableCellRenderer tableCellRenderer;
+ switch (columnName) {
+ case Email.PROPERTY_RECEPTION_DATE:
+ tableCellRenderer = newTableCellRender(Date.class);
+ break;
+
+ case Email.PROPERTY_DEMAND_STATUS:
+ case Email.PROPERTY_DEMAND_TYPE:
+ case Email.PROPERTY_ETAT_ATTENTE:
+ tableCellRenderer = newTableCellRender(HasLabel.class);
+ break;
+
+ default:
+ tableCellRenderer = newTableCellRender(new Decorator<Object>(Object.class) {
+ @Override
+ public String toString(Object bean) {
+ return bean == null ? "" : bean.toString();
+ }
+ });
+ }
+ addColumnToModel(columnModel,
+ null,
+ tableCellRenderer,
+ DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName));
+ }
}
final AbstractApplicationTableModel<Email> tableModel = new DemandeTableModel(columnModel);
@@ -85,13 +137,16 @@
Email selectedEmail = tableModel.getEntry(rowIndex);
selectedEmail = getContext().getEmailService().addToOpeningHistory(selectedEmail, getContext().getCurrentUser(), new Date());
-
- getContext().setCurrentEmail(selectedEmail);
- getContext().getActionEngine().runAction(new ShowDemandeAction(getContext().getMainUI().getHandler()));
+ openDemand(selectedEmail);
}
}
});
return tableModel;
}
+
+ protected void openDemand(Email selectedEmail) {
+ getContext().setCurrentEmail(selectedEmail);
+ getContext().getActionEngine().runAction(new ShowDemandeAction(getContext().getMainUI().getHandler()));
+ }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -128,8 +128,8 @@
return super.decorate(s);
}
- public String decorateUser(FaxToMailUser user) {
- if (user == null) {
+ public String decorateUser(FaxToMailUser user, boolean systemIfNull) {
+ if (user == null && systemIfNull) {
return t("faxtomail.systemUser");
}
return decorate(user);
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -30,7 +30,9 @@
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
import org.nuiton.jaxx.application.swing.table.ColumnIdentifier;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import static org.nuiton.i18n.I18n.n;
@@ -45,89 +47,103 @@
LogFactory.getLog(DemandeTableModel.class);
public static final Map<String, ColumnIdentifier<Email>> COLUMN_IDENTIFIERS = new HashMap<String, ColumnIdentifier<Email>>() {{
- put(Email.PROPERTY_SENDER_EMAIL_ADDRESS,
+ put(Email.PROPERTY_SENDER,
ColumnIdentifier.<Email>newReadOnlyId(
- Email.PROPERTY_SENDER_EMAIL_ADDRESS,
- n("faxtomail.demandeList.table.header.senderEmail"),
- n("faxtomail.demandeList.table.header.senderEmail")));
+ Email.PROPERTY_SENDER,
+ n("faxtomail.demandeList.table.header.sender"),
+ n("faxtomail.demandeList.table.header.sender.tip")));
put(Email.PROPERTY_OBJECT,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_OBJECT,
n("faxtomail.demandeList.table.header.object"),
- n("faxtomail.demandeList.table.header.object")));
+ n("faxtomail.demandeList.table.header.object.tip")));
put(Email.PROPERTY_RECEPTION_DATE,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_RECEPTION_DATE,
n("faxtomail.demandeList.table.header.receptionDate"),
- n("faxtomail.demandeList.table.header.receptionDate")));
+ n("faxtomail.demandeList.table.header.receptionDate.tip")));
+ put(Email.PROPERTY_RECIPIENT,
+ ColumnIdentifier.<Email>newReadOnlyId(
+ Email.PROPERTY_RECIPIENT,
+ n("faxtomail.demandeList.table.header.recipient"),
+ n("faxtomail.demandeList.table.header.recipient.tip")));
+
put(Email.PROPERTY_CLIENT_CODE,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_CLIENT_CODE,
n("faxtomail.demandeList.table.header.client"),
- n("faxtomail.demandeList.table.header.client")));
+ n("faxtomail.demandeList.table.header.client.tip")));
put(Email.PROPERTY_DEMAND_STATUS,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_DEMAND_STATUS,
n("faxtomail.demandeList.table.header.status"),
- n("faxtomail.demandeList.table.header.status")));
+ n("faxtomail.demandeList.table.header.status.tip")));
put(Email.PROPERTY_DEMAND_TYPE,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_DEMAND_TYPE,
n("faxtomail.demandeList.table.header.type"),
- n("faxtomail.demandeList.table.header.type")));
+ n("faxtomail.demandeList.table.header.type.tip")));
put(Email.PROPERTY_EDI_CODE_NUMBER,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_EDI_CODE_NUMBER,
n("faxtomail.demandeList.table.header.ediCodeNumber"),
- n("faxtomail.demandeList.table.header.ediCodeNumber")));
+ n("faxtomail.demandeList.table.header.ediCodeNumber.tip")));
put(Email.PROPERTY_ETAT_ATTENTE,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_ETAT_ATTENTE,
n("faxtomail.demandeList.table.header.waitingState"),
- n("faxtomail.demandeList.table.header.waitingState")));
+ n("faxtomail.demandeList.table.header.waitingState.tip")));
put(Email.PROPERTY_TAKEN_BY,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_TAKEN_BY,
n("faxtomail.demandeList.table.header.user"),
- n("faxtomail.demandeList.table.header.user")));
+ n("faxtomail.demandeList.table.header.user.tip")));
put(Email.PROPERTY_MAIL_FOLDER,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_MAIL_FOLDER,
n("faxtomail.demandeList.table.header.folder"),
- n("faxtomail.demandeList.table.header.folder")));
+ n("faxtomail.demandeList.table.header.folder.tip")));
put(Email.PROPERTY_PRIORITY,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_PRIORITY,
n("faxtomail.demandeList.table.header.priority"),
- n("faxtomail.demandeList.table.header.priority")));
+ n("faxtomail.demandeList.table.header.priority.tip")));
put(Email.PROPERTY_PROJECT_REFERENCE,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_PROJECT_REFERENCE,
n("faxtomail.demandeList.table.header.projectReference"),
- n("faxtomail.demandeList.table.header.projectReference")));
+ n("faxtomail.demandeList.table.header.projectReference.tip")));
put(Email.PROPERTY_RANGE_ROW,
ColumnIdentifier.<Email>newReadOnlyId(
Email.PROPERTY_RANGE_ROW,
n("faxtomail.demandeList.table.header.range"),
- n("faxtomail.demandeList.table.header.range")));
+ n("faxtomail.demandeList.table.header.range.tip")));
+ put(Email.PROPERTY_ATTACHMENT,
+ ColumnIdentifier.<Email>newReadOnlyId(
+ Email.PROPERTY_ATTACHMENT,
+ n("faxtomail.demandeList.table.header.attachment"),
+ n("faxtomail.demandeList.table.header.attachment.tip")));
+
}};
public DemandeTableModel(TableColumnModelExt columnModel) {
super(columnModel, false, false);
- setNoneEditableCols();
+ List<ColumnIdentifier> nonEditableColumns = new ArrayList<ColumnIdentifier>(COLUMN_IDENTIFIERS.values());
+ nonEditableColumns.remove(COLUMN_IDENTIFIERS.get(Email.PROPERTY_PRIORITY));
+ setNoneEditableCols(nonEditableColumns.toArray(new ColumnIdentifier[nonEditableColumns.size()]));
}
@Override
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -25,8 +25,10 @@
import com.franciaflex.faxtomail.persistence.entities.Company;
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
+import com.franciaflex.faxtomail.ui.swing.content.demande.RangeRowModel;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.JAXXUtil;
import org.apache.commons.lang3.StringUtils;
@@ -50,6 +52,8 @@
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
@@ -129,4 +133,43 @@
return result;
}
+ public static int[] computeQuantities(List<Email> emails) {
+ int pfNb = 0;
+ int savNb = 0;
+ for (Email email : emails) {
+ Collection<RangeRow> rangeRows = email.getRangeRow();
+ if (rangeRows != null) {
+ for (RangeRow rangeRow : rangeRows) {
+ Integer productQuantity = rangeRow.getProductQuantity();
+ if (productQuantity != null) {
+ pfNb += productQuantity;
+ }
+
+ Integer savQuantity = rangeRow.getSavQuantity();
+ if (savQuantity != null) {
+ savNb += savQuantity;
+ }
+ }
+ }
+ }
+ return new int[] { pfNb, savNb };
+ }
+
+ //TODO kmorin 20140306 remove this
+ public static int[] computeQuantities(Collection<RangeRowModel> rangeRows) {
+ int pfNb = 0;
+ int savNb = 0;
+ for (RangeRowModel rangeRow : rangeRows) {
+ Integer productQuantity = rangeRow.getProductQuantity();
+ if (productQuantity != null) {
+ pfNb += productQuantity;
+ }
+
+ Integer savQuantity = rangeRow.getSavQuantity();
+ if (savQuantity != null) {
+ savNb += savQuantity;
+ }
+ }
+ return new int[] { pfNb, savNb };
+ }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -30,10 +30,10 @@
private final Decorator<Attachment> decorator;
- private Font defaulfFont;
+// private Font defaulfFont;
+//
+// private Font selectedFont;
- private Font selectedFont;
-
public static AttachmentCellRenderer newRender(Decorator<Attachment> decorator) {
return new AttachmentCellRenderer(decorator);
}
@@ -58,10 +58,7 @@
int row,
int column) {
- if (defaulfFont == null) {
- defaulfFont = UIManager.getFont("Table.font");
- selectedFont = defaulfFont.deriveFont(Font.BOLD);
- }
+ super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
List<Attachment> attachments = (List<Attachment>) value;
@@ -82,20 +79,20 @@
// use html to display the tooltip on several lines
toolTipTextValue = sb.substring(5);
}
- String textValue = ButtonAttachment.getButtonText(attachments);
+ String textValue = t("faxtomail.attachmentCellRenderer.text", attachments != null ? attachments.size() : 0);
boolean editable = table.isCellEditable(row, column);
toolTipTextValue = String.format(TEXT_PATTERN, toolTipTextValue);
setEnabled(editable);
setText(textValue);
setToolTipText(toolTipTextValue);
- setBackground(null);
- setForeground(Color.BLACK);
+// setBackground(null);
+// setForeground(Color.BLACK);
- if (isSelected) {
- setFont(selectedFont);
- } else {
- setFont(defaulfFont);
- }
+// if (isSelected) {
+// setFont(selectedFont);
+// } else {
+// setFont(defaulfFont);
+// }
return this;
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -20,6 +20,5 @@
#addButton {
actionIcon: add;
toolTipText: "faxtomail.attachmentEditor.action.add.tip";
- i18nMnemonic: "faxtomail.attachmentEditor.action.add.mnemonic";
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -10,17 +10,14 @@
#openAttachmentButton {
actionIcon: "open-file";
toolTipText: "faxtomail.attachmentEditor.action.open.tip";
- i18nMnemonic: "faxtomail.attachmentEditor.action.open.mnemonic";
}
#saveAttachmentButton {
actionIcon: "import";
toolTipText: "faxtomail.attachmentEditor.action.save.tip";
- i18nMnemonic: "faxtomail.attachmentEditor.action.save.mnemonic";
}
#removeAttachmentButton {
actionIcon: "delete";
toolTipText: "faxtomail.attachmentEditor.action.remove.tip";
- i18nMnemonic: "faxtomail.attachmentEditor.action.remove.mnemonic";
}
\ No newline at end of file
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,5 +1,5 @@
#type {
- text : { model.getTypeAsString() };
+ text : { JAXXUtil.getStringValue(model.getType()) };
font-weight: "bold";
}
@@ -9,7 +9,7 @@
}
#user {
- text : { model.getFaxToMailUserAsString() };
+ text : { handler.decorateUser(model.getFaxToMailUser(), true) };
}
#dateLabel {
@@ -18,5 +18,5 @@
}
#date {
- text : { model.getModificationDateAsString() };
+ text : { handler.decorate(model.getModificationDate()) };
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,6 +1,8 @@
<JPanel id='historyItemPanel' layout="{new GridLayout(0,1)}">
<import>
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+
com.franciaflex.faxtomail.persistence.entities.History
java.awt.FlowLayout
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -32,14 +32,6 @@
fromEntity(history);
}
- public String getTypeAsString() {
- HistoryType type = editObject.getType();
- if (type == null) {
- return null;
- }
- return type.toString();
- }
-
public HistoryType getType() {
return editObject.getType();
}
@@ -47,17 +39,9 @@
public void setType(HistoryType type) {
Object oldValue = editObject.getType();
editObject.setType(type);
- firePropertyChanged(History.PROPERTY_TYPE + "AsString", oldValue, type);
+ firePropertyChanged(History.PROPERTY_TYPE, oldValue, type);
}
- public String getModificationDateAsString() {
- Date date = editObject.getModificationDate();
- if (date == null) {
- return null;
- }
- return DateFormat.getDateTimeInstance().format(date);
- }
-
public Date getModificationDate() {
return editObject.getModificationDate();
}
@@ -65,17 +49,9 @@
public void setModificationDate(Date modificationDate) {
Object oldValue = editObject.getModificationDate();
editObject.setModificationDate(modificationDate);
- firePropertyChanged(History.PROPERTY_MODIFICATION_DATE + "AsString", oldValue, modificationDate);
+ firePropertyChanged(History.PROPERTY_MODIFICATION_DATE, oldValue, modificationDate);
}
- public String getFaxToMailUserAsString() {
- FaxToMailUser user = editObject.getFaxToMailUser();
- if (user == null) {
- return "faxtomail.systemUser";
- }
- return user.toString();
- }
-
public FaxToMailUser getFaxToMailUser() {
return editObject.getFaxToMailUser();
}
@@ -83,7 +59,7 @@
public void setFaxToMailUser(FaxToMailUser faxToMailUser) {
Object oldValue = editObject.getFaxToMailUser();
editObject.setFaxToMailUser(faxToMailUser);
- firePropertyChanged(History.PROPERTY_FAX_TO_MAIL_USER + "AsString", oldValue, faxToMailUser);
+ firePropertyChanged(History.PROPERTY_FAX_TO_MAIL_USER, oldValue, faxToMailUser);
}
@Override
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -11,6 +11,7 @@
import javax.swing.*;
import java.awt.*;
+import java.util.Collection;
/**
* @author Kevin Morin (Code Lutin)
@@ -35,9 +36,12 @@
public void afterInit(HistoryListUI ui) {
super.afterInit(ui);
- for (History history : getModel().getHistory()) {
- HistoryItem item = new HistoryItem(history, this);
- ui.getHistories().add(item);
+ Collection<History> histories = getModel().getHistory();
+ if (histories != null) {
+ for (History history : histories) {
+ HistoryItem item = new HistoryItem(history, this);
+ ui.getHistories().add(item);
+ }
}
}
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,3 +1,4 @@
+\ |\ =
1\ -\ Volets\ roulants=
Ajouter=
Derni\\u00e8re\ modification\ par\ Utilisateur\ 1\ le\ 14/01/2014\ \\u00e0\ 08\:42=
@@ -13,9 +14,11 @@
application.action.create.error=
application.error.ui.business.warning=
faxtomail.action.create.error=
+faxtomail.alert.alreadyTakenBy.help=
faxtomail.alert.alreadyTakenBy.message=
faxtomail.alert.alreadyTakenBy.title=
faxtomail.archive.button.label=
+faxtomail.attachmentCellRenderer.text=
faxtomail.attachmentEditor.action.add.mnemonic=
faxtomail.attachmentEditor.action.add.tip=
faxtomail.attachmentEditor.action.closeAttachment.tip=
@@ -98,6 +101,8 @@
faxtomail.demande.alreadyTakenBy=
faxtomail.demande.archive.button.label=
faxtomail.demande.archive.button.mnemonic=
+faxtomail.demande.askCancelEditBeforeLeaving.cancelSave=
+faxtomail.demande.askSaveBeforeLeaving.save=
faxtomail.demande.back.button.label=
faxtomail.demande.back.button.mnemonic=
faxtomail.demande.client.label=
@@ -113,11 +118,13 @@
faxtomail.demande.lastModificationDate.label=
faxtomail.demande.lastModified.label=
faxtomail.demande.lastModifiedBy.label=
+faxtomail.demande.mailBody.label=
faxtomail.demande.message.label=
faxtomail.demande.object.label=
faxtomail.demande.print.button.label=
faxtomail.demande.print.button.mnemonic=
faxtomail.demande.priority.label=
+faxtomail.demande.projectReference.default=
faxtomail.demande.projectReference.label=
faxtomail.demande.received.label=
faxtomail.demande.receivedDate.label=
@@ -128,41 +135,71 @@
faxtomail.demande.save.button.label=
faxtomail.demande.save.button.mnemonic=
faxtomail.demande.sender.label=
+faxtomail.demande.sender.manualCreation=
+faxtomail.demande.sender.manual_creation=
faxtomail.demande.status.label=
faxtomail.demande.takenBy.label=
faxtomail.demande.tcc.label=
faxtomail.demande.title=
faxtomail.demande.transmit.button.label=
faxtomail.demande.transmit.button.mnemonic=
+faxtomail.demandeList.action.archive=
+faxtomail.demandeList.action.archive.tip=
faxtomail.demandeList.action.attachment=
faxtomail.demandeList.action.attachment.mnemonic=
faxtomail.demandeList.action.attachment.tip=
+faxtomail.demandeList.action.computeQuantitiesByRange=
+faxtomail.demandeList.action.computeQuantitiesByRange.tip=
faxtomail.demandeList.action.gotoFolder=
faxtomail.demandeList.action.gotoFolder.mnemonic=
faxtomail.demandeList.action.gotoFolder.tip=
+faxtomail.demandeList.action.newDemand=
+faxtomail.demandeList.action.newDemand.tip=
faxtomail.demandeList.action.print=
faxtomail.demandeList.action.print.mnemonic=
faxtomail.demandeList.action.print.tip=
faxtomail.demandeList.action.reply=
faxtomail.demandeList.action.reply.mnemonic=
faxtomail.demandeList.action.reply.tip=
+faxtomail.demandeList.demandNbLabel=
faxtomail.demandeList.pfNbLabel=
faxtomail.demandeList.savNbLabel=
+faxtomail.demandeList.table.header.attachment=
+faxtomail.demandeList.table.header.attachment.tip=
faxtomail.demandeList.table.header.client=
+faxtomail.demandeList.table.header.client.tip=
faxtomail.demandeList.table.header.commandNb=
faxtomail.demandeList.table.header.ediCodeNumber=
+faxtomail.demandeList.table.header.ediCodeNumber.tip=
faxtomail.demandeList.table.header.folder=
+faxtomail.demandeList.table.header.folder.tip=
faxtomail.demandeList.table.header.object=
+faxtomail.demandeList.table.header.object.tip=
faxtomail.demandeList.table.header.priority=
+faxtomail.demandeList.table.header.priority.tip=
faxtomail.demandeList.table.header.projectReference=
+faxtomail.demandeList.table.header.projectReference.tip=
faxtomail.demandeList.table.header.range=
+faxtomail.demandeList.table.header.range.tip=
faxtomail.demandeList.table.header.receptionDate=
+faxtomail.demandeList.table.header.receptionDate.tip=
+faxtomail.demandeList.table.header.receptionEmailAddress=
+faxtomail.demandeList.table.header.receptionEmailAddress.tip=
+faxtomail.demandeList.table.header.recipient=
+faxtomail.demandeList.table.header.recipient.tip=
faxtomail.demandeList.table.header.savNumber=
+faxtomail.demandeList.table.header.sender=
+faxtomail.demandeList.table.header.sender.tip=
faxtomail.demandeList.table.header.senderEmail=
+faxtomail.demandeList.table.header.senderEmail.tip=
faxtomail.demandeList.table.header.status=
+faxtomail.demandeList.table.header.status.tip=
faxtomail.demandeList.table.header.type=
+faxtomail.demandeList.table.header.type.tip=
faxtomail.demandeList.table.header.user=
+faxtomail.demandeList.table.header.user.tip=
faxtomail.demandeList.table.header.waitingState=
+faxtomail.demandeList.table.header.waitingState.tip=
faxtomail.demandeList.title=
faxtomail.error.delete.startActionFile=
faxtomail.error.errorpane.htmlmessage=
@@ -200,6 +237,8 @@
faxtomail.print.button.label=
faxtomail.property.get.error=
faxtomail.property.set.error=
+faxtomail.quantitiesByRange.button.text=
+faxtomail.quantitiesByRange.title=
faxtomail.rangeRows.table.header.command_number=
faxtomail.rangeRows.table.header.product_column=
faxtomail.rangeRows.table.header.range=
@@ -295,3 +334,4 @@
tutti.manageTemporaryReferential.title=
tutti.report.title=
tutti.selectCruise.title=
+|\\u00a0=
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-03-10 09:32:30 UTC (rev 17)
@@ -1,34 +1,22 @@
-1\ -\ Volets\ roulants=
-Ajouter=
-Derni\\u00e8re\ modification\ par\ Utilisateur\ 1\ le\ 14/01/2014\ \\u00e0\ 08\:42=
-Editer=
-Fax\ -\ TIF\ (25ko)=
-Nombre\ de\ pages\ \:\ 1,\ dur\\u00e9e\ \:\ 13\ secondes,\ vitesse\ \:\ 31200=
-Num\\u00e9ro\ SDA\ \:\ 6374=
-Origine\ \:\ 02\ 34\ 56\ 78\ 90=
-Plans\ -\ DXF\ (254ko)=
-Supprimer=
-T\\u00e9l\\u00e9copie\ re\\u00e7ue\ le\ 10/01/2014\ \\u00e0\ 13\:37=
-Voir=
+\ |\ =
application.action.create.error=
application.error.ui.business.warning=
-faxtomail.alert.alreadyTakenBy.message=Le document est déjà attribué à l'utilisateur %s.
-faxtomail.alert.alreadyTakenBy.title=Document déjà attribué
-faxtomail.attachmentEditor.action.add.mnemonic=A
+faxtomail.alert.alreadyTakenBy.button.quit=Quitter
+faxtomail.alert.alreadyTakenBy.button.take=Prendre
+faxtomail.alert.alreadyTakenBy.button.view=Visualiser
+faxtomail.alert.alreadyTakenBy.help=Voulez-vous le prendre ?<ul><li><strong>Annuler</strong> pour ne retourner à la liste</li><li><strong>Non</strong> pour visualiser l'élément en lecture seule</li><li><strong>Oui</strong> pour le prendre</li></ul>
+faxtomail.alert.alreadyTakenBy.message=L'élément est déjà pris par %s.
+faxtomail.alert.alreadyTakenBy.title=Document déjà pris
+faxtomail.attachmentCellRenderer.text=(%s)
faxtomail.attachmentEditor.action.add.tip=Ajouter une pièce jointe
faxtomail.attachmentEditor.action.closeAttachment.tip=Fermer la fenêtre des pièces-jointes
-faxtomail.attachmentEditor.action.open.mnemonic=O
faxtomail.attachmentEditor.action.open.tip=Ouvrir la pièce jointe
-faxtomail.attachmentEditor.action.remove.mnemonic=u
faxtomail.attachmentEditor.action.remove.tip=Supprimer la pièce jointe
-faxtomail.attachmentEditor.action.save.mnemonic=E
faxtomail.attachmentEditor.action.save.tip=Enregistrer la pièce jointe en local
faxtomail.attachmentEditor.action.tip=Pièces jointes
faxtomail.attachmentEditor.deleteAttachment.message=Êtes-vous sûr de vouloir supprimer la pièce-jointe %s ?
faxtomail.attachmentEditor.deleteAttachment.title=Suppression de pièce-jointe
faxtomail.attachmentEditor.field.file=Fichier
-faxtomail.attachmentEditor.field.fileComment=Commentaire
-faxtomail.attachmentEditor.field.fileName=Nom
faxtomail.attachmentEditor.fileNotFound=Le fichier %s de la pièce jointe n'a pas été trouvé
faxtomail.attachmentEditor.none.tip=Pas de pièce-jointes
faxtomail.attachmentEditor.saveAttachment.button=Enregistrer
@@ -38,68 +26,83 @@
faxtomail.attachmentEditor.text=Pièces jointes (%s)
faxtomail.attachmentEditor.title=Pièces jointes
faxtomail.chooseMailFolder.action.cancel=Annuler
-faxtomail.chooseMailFolder.action.cancel.mnemonic=A
faxtomail.chooseMailFolder.action.cancel.tip=Annuler et fermer la popup
faxtomail.chooseMailFolder.action.validate=Valider
-faxtomail.chooseMailFolder.action.validate.mnemonic=V
-faxtomail.chooseMailFolder.action.validate.tip=Valider et transférer le mail
-faxtomail.chooseMailFolder.title=Choisissez le dossier où transférer le mail
-faxtomail.common.by=
+faxtomail.chooseMailFolder.action.validate.tip=Valider et transférer l'élément
+faxtomail.chooseMailFolder.title=Choisissez le dossier où transférer l'élément
faxtomail.common.by.label=par
faxtomail.common.on.label=le
faxtomail.config.application=
faxtomail.config.title=
faxtomail.demande.archive.button.label=Archiver
-faxtomail.demande.archive.button.mnemonic=V
-faxtomail.demande.back.button.label=Annuler
-faxtomail.demande.back.button.mnemonic=A
+faxtomail.demande.askCancelEditBeforeLeaving.cancelSave=L'élément n'est pas valide et ne peut être sauvé.
+faxtomail.demande.askSaveBeforeLeaving.save=Vous avez modifié l'élément mais vous n'avez pas enregistré ces modifications.
+faxtomail.demande.back.button.label=Quitter
faxtomail.demande.client.label=Client
faxtomail.demande.docType.label=Type
faxtomail.demande.ediCodeNumber.label=Retour EDI
faxtomail.demande.etatAttente.label=État attente
faxtomail.demande.firstOpened.label=Première ouverture
faxtomail.demande.lastModified.label=Dernière modification
+faxtomail.demande.mailBody.label=Corps du mail
faxtomail.demande.message.label=Message
faxtomail.demande.object.label=Objet
faxtomail.demande.print.button.label=Imprimer
-faxtomail.demande.print.button.mnemonic=I
faxtomail.demande.priority.label=Priorité
faxtomail.demande.projectReference.label=Référence chantier
faxtomail.demande.receivedDate.label=Reçu le
faxtomail.demande.reply.button.label=Répondre
-faxtomail.demande.reply.button.mnemonic=R
-faxtomail.demande.savNumber.label=SAV
faxtomail.demande.save.button.label=Enregistrer
-faxtomail.demande.save.button.mnemonic=E
faxtomail.demande.sender.label=Émetteur
+faxtomail.demande.sender.manualCreation=Création manuelle
faxtomail.demande.status.label=Statut
faxtomail.demande.takenBy.label=Pris par
faxtomail.demande.transmit.button.label=Transmettre
-faxtomail.demande.transmit.button.mnemonic=T
+faxtomail.demandeList.action.archive=Archiver
+faxtomail.demandeList.action.archive.tip=Archiver l'élément
faxtomail.demandeList.action.attachment=Ajouter une pièce-jointe
-faxtomail.demandeList.action.attachment.mnemonic=A
faxtomail.demandeList.action.attachment.tip=Ajouter une pièce-jointe
+faxtomail.demandeList.action.computeQuantitiesByRange=Calculer les quantités par gamme
+faxtomail.demandeList.action.computeQuantitiesByRange.tip=Calculer les quantités par gamme
+faxtomail.demandeList.action.newDemand=Créer une nouvelle demande
+faxtomail.demandeList.action.newDemand.tip=Créer une nouvelle demande
faxtomail.demandeList.action.print=Imprimer
-faxtomail.demandeList.action.print.mnemonic=I
faxtomail.demandeList.action.print.tip=Imprimer
faxtomail.demandeList.action.reply=Répondre
-faxtomail.demandeList.action.reply.mnemonic=R
faxtomail.demandeList.action.reply.tip=Répondre
+faxtomail.demandeList.demandNbLabel=Nombre de demandes
faxtomail.demandeList.pfNbLabel=Nombre de produits finis
faxtomail.demandeList.savNbLabel=Nombre de SAV
+faxtomail.demandeList.table.header.attachment=PJ
+faxtomail.demandeList.table.header.attachment.tip=Pièces-jointes
faxtomail.demandeList.table.header.client=Client
+faxtomail.demandeList.table.header.client.tip=Client
faxtomail.demandeList.table.header.ediCodeNumber=Code EDI
+faxtomail.demandeList.table.header.ediCodeNumber.tip=Code EDI
faxtomail.demandeList.table.header.folder=Dossier
+faxtomail.demandeList.table.header.folder.tip=Dossier
faxtomail.demandeList.table.header.object=Objet
-faxtomail.demandeList.table.header.priority=Priorité
-faxtomail.demandeList.table.header.projectReference=Référence chantier
+faxtomail.demandeList.table.header.object.tip=Objet
+faxtomail.demandeList.table.header.priority=P
+faxtomail.demandeList.table.header.priority.tip=Priorité
+faxtomail.demandeList.table.header.projectReference=Ref chantier
+faxtomail.demandeList.table.header.projectReference.tip=Référence chantier
faxtomail.demandeList.table.header.range=Gamme
+faxtomail.demandeList.table.header.range.tip=Gamme
faxtomail.demandeList.table.header.receptionDate=Date de réception
-faxtomail.demandeList.table.header.senderEmail=Email de l'émetteur
+faxtomail.demandeList.table.header.receptionDate.tip=Date de réception
+faxtomail.demandeList.table.header.recipient=Destinataire
+faxtomail.demandeList.table.header.recipient.tip=Addresse email ou numéro de fax du destinataire
+faxtomail.demandeList.table.header.sender=Émetteur
+faxtomail.demandeList.table.header.sender.tip=Addresse email ou numéro de fax de l'émetteur
faxtomail.demandeList.table.header.status=Statut
+faxtomail.demandeList.table.header.status.tip=Statut
faxtomail.demandeList.table.header.type=Type
-faxtomail.demandeList.table.header.user=Pris pas
+faxtomail.demandeList.table.header.type.tip=Type
+faxtomail.demandeList.table.header.user=Pris par
+faxtomail.demandeList.table.header.user.tip=Pris par
faxtomail.demandeList.table.header.waitingState=État attente
+faxtomail.demandeList.table.header.waitingState.tip=État attente
faxtomail.demandeList.title=Gestion des fax
faxtomail.historyList.action.tip=Historique
faxtomail.historyList.text=Historique (%s)
@@ -110,31 +113,27 @@
faxtomail.main.action.configuration.mnemonic=
faxtomail.main.action.configuration.tip=Menu configuration
faxtomail.main.action.demandeList=Gestion des fax
-faxtomail.main.action.demandeList.mnemonic=
faxtomail.main.action.demandeList.tip=Gestion des fax
faxtomail.main.action.exit=Quitter
-faxtomail.main.action.exit.mnemonic=
faxtomail.main.action.exit.tip=Quitter l'application
faxtomail.main.action.goto.previousScreen.tip=
faxtomail.main.action.recherche=Recherche
-faxtomail.main.action.recherche.mnemonic=
faxtomail.main.action.recherche.tip=Recherche de demandes archivées
faxtomail.main.action.reloadFaxToMail=
faxtomail.main.menu.file=Fichier
-faxtomail.main.menu.file.mnemonic=
faxtomail.main.menu.file.tip=Menu fichier
faxtomail.main.title.application=FaxToMail
faxtomail.main.title.applicationName=FaxToMail
faxtomail.main.title.nodb=
-faxtomail.rangeRows.table.header.command_number=Numéro de commande / devis
-faxtomail.rangeRows.table.header.product_column=Quantité de produits
+faxtomail.quantitiesByRange.button.text=OK
+faxtomail.quantitiesByRange.title=Quantités par gamme
+faxtomail.rangeRows.table.header.command_number=N° commande / devis
+faxtomail.rangeRows.table.header.product_column=Qté produits
faxtomail.rangeRows.table.header.range=Gamme
-faxtomail.rangeRows.table.header.sav_quantity=Quantité de SAV
+faxtomail.rangeRows.table.header.sav_quantity=Qté SAV
faxtomail.reply.action.cancel=Annuler
-faxtomail.reply.action.cancel.mnemonic=A
faxtomail.reply.action.cancel.tip=Annuler et fermer la popup
faxtomail.reply.action.validate=Valider
-faxtomail.reply.action.validate.mnemonic=V
faxtomail.reply.action.validate.tip=Valider et répondre au mail
faxtomail.reply.attachment=Ajouter des pièces jointes
faxtomail.reply.from=De \:
@@ -142,7 +141,6 @@
faxtomail.reply.title=Réponse à \: %s
faxtomail.reply.to=À \:
faxtomail.search.action.gotoFolder=Aller au dossier
-faxtomail.search.action.gotoFolder.mnemonic=A
faxtomail.search.action.gotoFolder.tip=Aller au dossier
faxtomail.search.between2ndPart.label=et le
faxtomail.search.button.label=Rechercher
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-compute.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-compute.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-delete.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-delete.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-edit-attachment.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-edit-attachment.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-import.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-import.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-new-demand.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-new-demand.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/faxtomail-ui-swing/src/main/resources/icons/action-open-file.png
===================================================================
(Binary files differ)
Property changes on: trunk/faxtomail-ui-swing/src/main/resources/icons/action-open-file.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-02-25 18:56:55 UTC (rev 16)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-03-10 09:32:30 UTC (rev 17)
@@ -150,7 +150,7 @@
public Map<String, String> getEmailFields() {
Map<String, String> result = new HashMap<>();
- result.put(Email.PROPERTY_SENDER_EMAIL_ADDRESS, "Adresse email");
+ result.put(Email.PROPERTY_SENDER, "Adresse email");
result.put(Email.PROPERTY_RECEPTION_DATE, "Date de réception");
result.put(Email.PROPERTY_EDI_CODE_NUMBER, "Code EDI");
result.put(Email.PROPERTY_OBJECT, "Objet");
1
0
25 Feb '14
See <http://ci.codelutin.com/jenkins/job/faxtomail-ci/4/changes>
Changes:
[kmorin] remove clients
[kmorin] add clients sample
[kmorin] refs #4231 Faire les UI de tous les écrans
------------------------------------------
[...truncated 146 lines...]
[INFO] Add compile source root : <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>
[INFO] Add resource root :Resource {targetPath: null, filtering: false, FileSet {directory: <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…,> PatternSet [includes: {}, excludes: {**/*.java}]}}
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (scan-sources) @ faxtomail-persistence ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (scan-sources) @ faxtomail-persistence >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ faxtomail-persistence ---
[INFO] Copying faxtomail-persistence.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>
[INFO] Copying faxtomail-persistence.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (scan-sources) @ faxtomail-persistence <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (scan-sources) @ faxtomail-persistence ---
[WARNING] bundle fr_FR contains 27/27 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 27/27 empty entries! (use -Di18n.showEmpty to see these entries)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ faxtomail-persistence ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] Copying 18 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ faxtomail-persistence ---
[INFO] Compiling 121 source files to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ faxtomail-persistence ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>
[INFO] Executed tasks
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ faxtomail-persistence ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ faxtomail-persistence ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.16:test (default-test) @ faxtomail-persistence ---
[INFO] No tests to run.
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ faxtomail-persistence ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-persist…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ faxtomail-persistence ---
[JENKINS] Archiving disabled
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building FaxToMail :: Service 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ faxtomail-service ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ faxtomail-service ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (scan-sources) @ faxtomail-service ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserValidation (scan-sources) @ faxtomail-service ---
[INFO] Load rules file validation.rules
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (scan-sources) @ faxtomail-service >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ faxtomail-service ---
[INFO] Copying faxtomail-service.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>
[INFO] Copying faxtomail-service.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (scan-sources) @ faxtomail-service <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (scan-sources) @ faxtomail-service ---
[WARNING] bundle fr_FR contains 63/63 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 63/63 empty entries! (use -Di18n.showEmpty to see these entries)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ faxtomail-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ faxtomail-service ---
[INFO] Compiling 15 source files to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>: <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…> uses unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ faxtomail-service ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>
[INFO] Executed tasks
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ faxtomail-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ faxtomail-service ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.16:test (default-test) @ faxtomail-service ---
[INFO] No tests to run.
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ faxtomail-service ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-service…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ faxtomail-service ---
[JENKINS] Archiving disabled
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building FaxToMail :: Web 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ faxtomail-ui-web ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ faxtomail-ui-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserStruts2 (parseJsp) @ faxtomail-ui-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (parseOthersAndGen) @ faxtomail-ui-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ faxtomail-ui-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ faxtomail-ui-web ---
[INFO] Copying faxtomail-ui-web.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>
[INFO] Copying faxtomail-ui-web.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ faxtomail-ui-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ faxtomail-ui-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:bundle (parseOthersAndGen) @ faxtomail-ui-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:collect-i18n-artifacts (collect-i18n-artifacts) @ faxtomail-ui-web ---
[INFO] collected 8 i18n artifacts for locale fr_FR stored in <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>
[INFO] collected 8 i18n artifacts for locale en_GB stored in <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:bundle (parseOthersAndGen) @ faxtomail-ui-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:bundle (parseOthersAndGen) @ faxtomail-ui-web ---
[WARNING] bundle fr_FR contains 80/134 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 80/134 empty entries! (use -Di18n.showEmpty to see these entries)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ faxtomail-ui-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ faxtomail-ui-web ---
[INFO] Compiling 12 source files to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>: Recompile with -Xlint:unchecked for details.
[INFO] 2 warnings
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>:[163,25] cannot find symbol
symbol: variable PROPERTY_CLIENT
location: interface com.franciaflex.faxtomail.persistence.entities.Email
[INFO] 1 error
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] FaxToMail ......................................... SUCCESS [ 2.376 s]
[INFO] FaxToMail :: Persistence .......................... SUCCESS [ 7.001 s]
[INFO] FaxToMail :: Service .............................. SUCCESS [ 2.038 s]
[INFO] FaxToMail :: Web .................................. FAILURE [ 1.615 s]
[INFO] FaxToMail :: UI ................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.586 s
[INFO] Finished at: 2014-02-25T10:25:50+01:00
[INFO] Final Memory: 43M/586M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project faxtomail-ui-web: Compilation failure
[ERROR] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>:[163,25] cannot find symbol
[ERROR] symbol: variable PROPERTY_CLIENT
[ERROR] location: interface com.franciaflex.faxtomail.persistence.entities.Email
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project faxtomail-ui-web: Compilation failure
<http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>:[163,25] cannot find symbol
symbol: variable PROPERTY_CLIENT
location: interface com.franciaflex.faxtomail.persistence.entities.Email
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.jvnet.hudson.maven3.launcher.Maven31Launcher.main(Maven31Launcher.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at jenkins.maven3.agent.Maven31Main.launch(Maven31Main.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:328)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
<http://ci.codelutin.com/jenkins/job/faxtomail-ci/ws/trunk/faxtomail-ui-web/…>:[163,25] cannot find symbol
symbol: variable PROPERTY_CLIENT
location: interface com.franciaflex.faxtomail.persistence.entities.Email
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :faxtomail-ui-web
Sending e-mails to: faxtomail-commits(a)list.forge.codelutin.com morin(a)codelutin.com
channel stopped
1
1
Build failed in Jenkins: faxtomail-ci » FaxToMail :: Web #4
by admin+ci-codelutin.com@codelutin.com 25 Feb '14
by admin+ci-codelutin.com@codelutin.com 25 Feb '14
25 Feb '14
See <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>
Changes:
[kmorin] refs #4231 Faire les UI de tous les écrans
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building FaxToMail :: Web 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ faxtomail-ui-web ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ faxtomail-ui-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserStruts2 (parseJsp) @ faxtomail-ui-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (parseOthersAndGen) @ faxtomail-ui-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ faxtomail-ui-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ faxtomail-ui-web ---
[INFO] Copying faxtomail-ui-web.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>
[INFO] Copying faxtomail-ui-web.properties to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ faxtomail-ui-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ faxtomail-ui-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:bundle (parseOthersAndGen) @ faxtomail-ui-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:collect-i18n-artifacts (collect-i18n-artifacts) @ faxtomail-ui-web ---
[INFO] collected 8 i18n artifacts for locale fr_FR stored in <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>
[INFO] collected 8 i18n artifacts for locale en_GB stored in <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:bundle (parseOthersAndGen) @ faxtomail-ui-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:bundle (parseOthersAndGen) @ faxtomail-ui-web ---
[WARNING] bundle fr_FR contains 80/134 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 80/134 empty entries! (use -Di18n.showEmpty to see these entries)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ faxtomail-ui-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ faxtomail-ui-web ---
[INFO] Compiling 12 source files to <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>: Recompile with -Xlint:unchecked for details.
[INFO] 2 warnings
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/faxtomail-ci/com.franciaflex.faxtomail$…>:[163,25] cannot find symbol
symbol: variable PROPERTY_CLIENT
location: interface com.franciaflex.faxtomail.persistence.entities.Email
[INFO] 1 error
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
1
1
r15 - in trunk: faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin
by kmorin@users.forge.codelutin.com 25 Feb '14
by kmorin@users.forge.codelutin.com 25 Feb '14
25 Feb '14
Author: kmorin
Date: 2014-02-25 10:27:29 +0100 (Tue, 25 Feb 2014)
New Revision: 15
Url: http://codelutin.com/projects/faxtomail/repository/revisions/15
Log:
fix bug
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
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-02-25 09:23:52 UTC (rev 14)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-02-25 09:27:29 UTC (rev 15)
@@ -142,7 +142,7 @@
clients = getReferentielService().importClients(clientFile);
} catch(IOException | URISyntaxException e) {
- clients = new ArrayList<>();
+ return;
}
List<DemandType> types = Lists.newArrayList(
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-02-25 09:23:52 UTC (rev 14)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-02-25 09:27:29 UTC (rev 15)
@@ -160,7 +160,7 @@
result.put(Email.PROPERTY_SAV_NUMBER, "Numéro SAV");
result.put(Email.PROPERTY_RANGE_ROW, "Gamme");
result.put(Email.PROPERTY_MAIL_FOLDER, "Dossier");
- result.put(Email.PROPERTY_CLIENT, "Client");
+ result.put(Email.PROPERTY_CLIENT_CODE, "Code Client");
result.put(Email.PROPERTY_DEMAND_STATUS, "Statut");
result.put(Email.PROPERTY_DEMAND_TYPE, "Type");
result.put(Email.PROPERTY_TAKEN_BY, "Pris par");
1
0
25 Feb '14
Author: kmorin
Date: 2014-02-25 10:23:52 +0100 (Tue, 25 Feb 2014)
New Revision: 14
Url: http://codelutin.com/projects/faxtomail/repository/revisions/14
Log:
remove clients
Removed:
trunk/faxtomail-service/src/main/resources/fx_clients.csv
Deleted: trunk/faxtomail-service/src/main/resources/fx_clients.csv
===================================================================
--- trunk/faxtomail-service/src/main/resources/fx_clients.csv 2014-02-25 09:21:45 UTC (rev 13)
+++ trunk/faxtomail-service/src/main/resources/fx_clients.csv 2014-02-25 09:23:52 UTC (rev 14)
@@ -1,1582 +0,0 @@
-Id_Correspondance;Societe;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Client_Top;Numero_Fax;Adresse_Mail;Code_Client;Objet_Message;Destination
-253547;FX;DETAMPLE DANIEL;A;71 UXEAU;NULL;NULL;03 85 85 13 55;detampledaniel(a)nimeo.fr;22153;NULL;
-253548;FX;BARSACQ;A+;40 SOUSTONS;NULL;NULL;05 58 41 22 17;christian.barsacq(a)wanadoo.fr;22154;NULL;
-253549;FX;CUAZ PEROLIN MAURICE;NULL;38 LA BATIE D;NULL;NULL;04 76 32 18 57;NULL;22184;NULL;
-253550;FX;LOGICLOS;NULL;62 ANNEZIN LE;NULL;NULL;03 21 57 16 25;NULL;22186;NULL;
-253551;FX;CHASSIER ALAIN;A;37 DRUYE;NULL;NULL;02 47 50 11 36;alain.chassier(a)live.fr;22217;NULL;
-253552;FX;RLK PRODUCTION;A+;70 COMBEAUFON;NULL;NULL;03 84 92 17 00;NULL;22236;NULL;
-253553;FX;ALEXANDRE ET DAMIEN B;A;78 MAULE;NULL;NULL;01 30 74 73 94;NULL;22246;NULL;
-253554;FX;DOUSSIERE SEBASTIEN;A;48 MEYRUEIS;NULL;NULL;04 66 45 67 95;NULL;22248;NULL;
-253555;FX;SERRURERIE COUDRAY;A;17 MESCHERS;NULL;NULL;05 46 02 57 98;NULL;22252;NULL;
-253556;FX;VERDET;B;25 BESANCON C;NULL;NULL;03 81 80 56 18;NULL;22280;NULL;
-253557;FX;GABARRE JEAN MARC;A;47 FUMEL;NULL;NULL;05 53 40 91 92;NULL;22288;NULL;
-253558;FX;BELLAVIA ROBERT SAS;A+;38 SASSENAGE;NULL;NULL;04 76 27 53 08;NULL;22303;NULL;
-253559;FX;BELLAVIA ROBERT SAS;A+;38 SASSENAGE;NULL;NULL;04 76 27 53 08;bellavia.laurence(a)aliceadsl.fr;22303;NULL;
-253560;FX;ELM PRO-POSE;B;74 LA BALME D;NULL;NULL;04 50 77 73 32;NULL;22305;NULL;
-253561;FX;DROUIN JACK;A;35 RENNES;NULL;NULL;02 99 65 41 22;NULL;22313;NULL;
-253562;FX;BIAS ALU;A;47 BIAS;NULL;NULL;05 53 49 01 50;NULL;22331;NULL;
-253563;FX;BASSAT BRUNO;D;33 COUTRAS;NULL;NULL;05 57 49 10 22;bruno.bassat(a)wanadoo.fr;22337;NULL;
-253564;FX;BASSAT BRUNO;D;33 COUTRAS;NULL;NULL;05 57 49 10 22;NULL;22337;NULL;
-253565;FX;IPM MONDIA;A;01 PONT DE VA;NULL;NULL;03 85 36 80 25;NULL;22343;NULL;
-253566;FX;FAVRE ET FILS;B;73 UGINE;NULL;NULL;04 79 37 25 51;NULL;22344;NULL;
-253567;FX;FERMETUR'IDEAL;A;51 REIMS;NULL;NULL;03 26 08 52 45;NULL;22345;NULL;
-253568;FX;JB STORE;A;79 FRONTENAY;NULL;NULL;05 49 09 51 89;NULL;22362;NULL;
-253569;FX;SISTEMAS DE CORTINAS;B;ES 22 BARCELO;NULL;NULL;349 34 17 75 53;NULL;22368;NULL;
-253570;FX;LEPAGE ET FILS 4438;NULL;08 WARCQ;NULL;NULL;03 24 56 32 71;NULL;22370;NULL;
-253571;FX;ACS M. JEANTILS DOMINIQUE;A;66 LAROQUE;NULL;NULL;09 65 37 91 62;NULL;22376;NULL;
-253572;FX;STF (SOCIETE TECHNIQUE;A+;78 GAMBAIS;NULL;NULL;01 30 44 18 79;NULL;22377;NULL;
-253573;FX;MENUISERIE COMMINGEOISE;NULL;31 SAINT GAUD;NULL;NULL;04 68 33 53 62;NULL;22378;NULL;
-253574;FX;MENUISERIE COMMINGEOISE;NULL;31 SAINT GAUD;NULL;NULL;05 62 00 88 33;NULL;22378;NULL;
-253575;FX;MENUISERIE COMMINGEOISE;NULL;31 SAINT GAUD;NULL;NULL;05 68 41 27 18;NULL;22378;NULL;
-253576;FX;CLERC THIERRY;A;11 CASTELNAUD;NULL;NULL;04 68 23 53 12;sarl.clerc.thierry(a)orange.fr;22404;NULL;
-253577;FX;BRASALU;A;33 Pomerol;NULL;NULL;05 57 84 14 66;NULL;22409;NULL;
-253578;FX;GIRAUD PHILIPPE;A;94 LIMEIL BRE;NULL;NULL;01 45 98 33 14;NULL;22410;NULL;
-253579;FX;UCLAIR;A;CM UNDE;NULL;NULL;NULL;NULL;22415;NULL;
-253580;FX;UCLAIR;A;CM UNDE;NULL;NULL;02 37 22 32 01;uclaircm(a)yahoo.fr;22415;NULL;
-253581;FX;UCLAIR;A;CM UNDE;NULL;NULL;23 72 22 32 01;NULL;22415;NULL;
-253582;FX;SAGRANGE FILS;B;21 BEAUNE;NULL;NULL;03 80 24 00 84;sellerie.tapisserie.sagrange(a)neuf.fr;22419;NULL;
-253583;FX;SAGRANGE FILS;B;21 BEAUNE;NULL;NULL;0 ;NULL;22419;NULL;
-253584;FX;DEBENAIS JEAN MICHEL JMD;A;79 PARTHENAY;NULL;NULL;0 ;debenaisjm(a)cc-parthenay.fr;22420;NULL;
-253585;FX;DIPLEX;A+;38 MOIRANS;NULL;NULL;04 76 35 31 18;NULL;22424;NULL;
-253586;FX;BOUTEILLE BERNARD;A;69 ST SYMPHOR;NULL;NULL;04 78 44 34 21;NULL;22425;NULL;
-253587;FX;DIP STORES D HIVERS;A;69 SAINT LAUR;NULL;NULL;04 72 22 00 75;storedhiver(a)orange.fr;22441;NULL;
-253588;FX;DIP STORES D HIVERS;A;69 SAINT LAUR;NULL;NULL;04 72 22 00 75;NULL;22441;NULL;
-253589;FX;ALUGLACE;A;03 GANNAT;NULL;NULL;04 70 90 14 78;NULL;22449;NULL;
-253590;FX;ALUGLACE;A;03 GANNAT;NULL;NULL;0 ;NULL;22449;NULL;
-253591;FX;IDEAL EQUIPEMENT;NULL;91 ST CYR SOU;NULL;NULL;01 60 81 22 67;idealequip(a)wanadoo.fr;22451;NULL;
-253592;FX;GIRARDET MENUISERIE;A+;25 ARCON;NULL;NULL;03 81 39 15 23;NULL;22454;NULL;
-253593;FX;BASSET JEROME;A;10 BAR SUR AU;NULL;NULL;0 ;jerome.basset691(a)orange.fr;22462;NULL;
-253594;FX;DESIGN VERTIKAL, D.O.O.,;B;SI 6 TRZIN;NULL;NULL;386 15 30 41 02;design.jurhar(a)siol.net;22487;NULL;
-253595;FX;DESIGN VERTIKAL, D.O.O.,;B;SI 6 TRZIN;NULL;NULL;386 15 30 41 02;design.vertikal(a)s5.net;22487;NULL;
-253596;FX;DUTARDRE SAS 5107;A;37 BLERE;NULL;NULL;02 47 30 20 47;NULL;22488;NULL;
-253597;FX;DACHER;A;80 RIVERY;NULL;NULL;03 22 80 07 90;NULL;22517;NULL;
-253598;FX;ALU CONCEPT SYSTEM'S;D;37 MONTBAZON;NULL;NULL;02 47 73 12 52;NULL;22519;NULL;
-253599;FX;PEQUIGNOT SYLVAIN;A;25 NOVILLARD;NULL;NULL;03 81 57 01 18;NULL;22531;NULL;
-253600;FX;EURO SERRURERIE;A;34 SETE;NULL;NULL;04 67 80 20 13;NULL;22543;NULL;
-253601;FX;MIDI ALU;NULL;34 PALAVAS LE;NULL;NULL;04 67 68 20 85;NULL;22545;NULL;
-253602;FX;HORN VERRES ALU;A;57 SAINT JEAN;NULL;NULL;03 87 24 25 06;NULL;22549;NULL;
-253603;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 97 88;cauvergnon(a)garrigues-sa.com;22551;NULL;
-253604;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 34 27 28 11;NULL;22551;NULL;
-253605;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 64 18;plarroche(a)garrigues-sa.com;22551;NULL;
-253606;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 98 52 59;cjosselin(a)garrigues-sa.com;22551;NULL;
-253607;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 98 52 59;NULL;22551;NULL;
-253608;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 34 27 28 10;NULL;22551;NULL;
-253609;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 95 99 91;jpmarieanne(a)garrigues-sa.com;22551;NULL;
-253610;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 64 18;NULL;22551;NULL;
-253611;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 65 68;NULL;22551;NULL;
-253612;FX;MENUISERIE LA GLANEUSE;A;17 LA ROCHELL;NULL;NULL;05 46 00 51 84;NULL;22575;NULL;
-253613;FX;DAVID GILBERT ETS;NULL;83 STE MAXIME;NULL;NULL;04 94 49 00 16;NULL;22584;NULL;
-253614;FX;LES COMPAGNONS METALLIERS;A+;91 CORBEIL ES;NULL;NULL;01 60 88 25 47;cab(a)breuzard.fr;22599;NULL;
-253615;FX;LES COMPAGNONS METALLIERS;A+;91 CORBEIL ES;NULL;NULL;01 60 88 25 47;NULL;22599;NULL;
-253616;FX;LES COMPAGNONS METALLIERS;A+;91 CORBEIL ES;NULL;NULL;01 60 89 02 51;p.heroguelle(a)breuzard.fr;22599;NULL;
-253617;FX;MIROITERIE DE SARCELLES;A;95 SARCELLES;NULL;NULL;01 39 92 17 47;NULL;22600;NULL;
-253618;FX;VAL OISE FERM-SOL. STOR.&FERM.;NULL;93 LIVRY GARG;NULL;NULL;01 43 32 04 95;NULL;22621;NULL;
-253619;FX;BOURGE DANIEL;NULL;14 CONDE SUR;NULL;NULL;02 31 66 90 67;NULL;22633;NULL;
-253620;FX;SODIFF;B;59 MOUVAUX;NULL;NULL;03 21 95 96 97;NULL;22641;NULL;
-253621;FX;C2M ALU;A+;19 MANSAC;NULL;NULL;05 55 85 10 46;NULL;22679;NULL;
-253622;FX;AUSTRAL;D;77 NEMOURS CE;NULL;NULL;01 64 78 54 98;jm.beauland(a)austral.fr;22682;NULL;
-253623;FX;KATVE TVOTANTO OY;NULL;FI RJAVALTA;NULL;NULL;358 25 31 81 20;heikki(a)katve.fi;22694;NULL;
-253624;FX;METALLERIE DE KERPONT;A;56 LANESTER;NULL;NULL;02 97 76 93 94;NULL;22708;NULL;
-253625;FX;CL DIVERS SUD OUEST JF BOMONT;B;18 B;NULL;NULL;02 99 14 83 82;NULL;22735;NULL;
-253626;FX;CL DIVERS SUD OUEST JL AUTHIER;A;17 Rochelle;NULL;NULL;02 99 14 83 80;NULL;22737;NULL;
-253627;FX;COURTOIS CHRISTIAN;A;21 BEAUVRE;NULL;NULL;03 80 24 02 12;NULL;22739;NULL;
-253628;FX;CORBE ET FILS;A;35 RENNES;NULL;NULL;02 99 41 94 83;NULL;22743;NULL;
-253629;FX;GUIHUR MICHEL;A;56 THEIX;NULL;NULL;02 97 68 86 45;NULL;22745;NULL;
-253630;FX;GUILLOT THIERRY;A;18 SAINT SATU;NULL;NULL;02 48 54 16 91;NULL;22773;NULL;
-253631;FX;ALTAPLAST;A;55 BRAS/MEUSE;NULL;NULL;03 29 86 78 60;NULL;22774;NULL;
-253632;FX;SV2M;NULL;72 MULSANNE;NULL;NULL;02 43 78 03 08;NULL;22787;NULL;
-253633;FX;SV2M;NULL;72 MULSANNE;NULL;NULL;02 43 14 55 56;NULL;22787;NULL;
-253634;FX;GROLLA VERRES;A+;73 MOUTIERS C;NULL;NULL;04 79 22 98 25;NULL;22793;NULL;
-253635;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;mickael.oger(a)menuiserie-bourneuf.fr;22796;NULL;
-253636;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;b.talsmat(a)menuiserie-bourneuf.fr;22796;NULL;
-253637;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 07;eddy.galpin(a)menuiserie-bourneuf.fr;22796;NULL;
-253638;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;jm.theau(a)menuiserie-bourneuf.fr;22796;NULL;
-253639;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;NULL;22796;NULL;
-253640;FX;DESHOUX * ne + utiliser voir le Y03353*;D;35 Chapelle-d;NULL;NULL;0 ;NULL;22798;NULL;
-253641;FX;ARTIS;A+;72 SAVIGNE L';NULL;NULL;0 ;artis.verandas(a)wanadoo.fr;22810;NULL;
-253642;FX;ARTIS;A+;72 SAVIGNE L';NULL;NULL;02 43 27 43 79;buell72(a)orange.fr;22810;NULL;
-253643;FX;STEC (STRUCTURES TECHNI-;A;45 ST JEAN LE;NULL;NULL;02 38 66 61 74;NULL;22811;NULL;
-253644;FX;SOPHIA DECORATION;NULL;66 PERPIGNAN;NULL;NULL;04 68 35 02 10;NULL;22814;NULL;
-253645;FX;CHAUVIN DOMINIQUE 4342;NULL;61 BRIOUZE;NULL;NULL;02 33 64 13 46;NULL;22817;NULL;
-253646;FX;SERRURERIE CHALLANDAISE;D;85 CHALLANS;NULL;NULL;02 51 35 11 85;NULL;22825;NULL;
-253647;FX;TALVARD;D;61 ALENCON;NULL;NULL;02 33 27 57 08;NULL;22837;NULL;
-253648;FX;BIGNON LUCIEN 4650;NULL;53 CHAMPEON;NULL;NULL;02 43 00 89 93;NULL;22845;NULL;
-253649;FX;MARTO ISOLATION;A;93 MONTREUIL;NULL;NULL;01 48 70 20 60;NULL;22854;NULL;
-253650;FX;PARIS NORD FERMETURES;A+;95 LOUVRES;NULL;NULL;NULL;NULL;22856;NULL;
-253651;FX;PARIS NORD FERMETURES;A+;95 LOUVRES;NULL;NULL;01 34 68 96 00;NULL;22856;NULL;
-253652;FX;FERMETURES LOURDAISES;A;65 LOURDES;NULL;NULL;09 70 63 23 49;NULL;22867;NULL;
-253653;FX;PESTEL MICHEL;A;27 BERNAY;NULL;NULL;02 32 46 03 81;NULL;22881;NULL;
-253654;FX;STORES CONCEPT SERVICE;A;95 ARGENTEUIL;NULL;NULL;0 45 06 47 18;NULL;22886;NULL;
-253655;FX;STORES CONCEPT SERVICE;A;95 ARGENTEUIL;NULL;NULL;01 45 06 47 18;laurentstore(a)wanadoo.fr;22886;NULL;
-253656;FX;BROCHARD;A;18 BOURGES;NULL;NULL;02 48 67 05 21;NULL;22888;NULL;
-253657;FX;LECLER HENRI;A;78 BONNIERES;NULL;NULL;01 30 42 09 99;NULL;22895;NULL;
-253658;FX;NICOLINO;A;95 ST LEU LA;NULL;NULL;01 39 60 19 27;NULL;22917;NULL;
-253659;FX;SELLERIE SABOLIENNE;A;72 BRULON;NULL;NULL;0 ;NULL;22926;NULL;
-253660;FX;SELLERIE SABOLIENNE;A;72 BRULON;NULL;NULL;0 ;sellerie.sabolienne(a)orange.fr;22926;NULL;
-253661;FX;LACROIX FRERES;B;74 MIEUSSY;NULL;NULL;04 50 43 08 52;NULL;22932;NULL;
-253662;FX;PIEM;A;31 TOULOUSE C;NULL;NULL;05 61 40 22 66;NULL;22945;NULL;
-253663;FX;LA MAISON DU VOLET MARSEILLAIS;A+;13 MARSEILLE;NULL;NULL;04 88 04 02 90;linda.ouverture(a)orange.fr;22947;NULL;
-253664;FX;LA MAISON DU VOLET MARSEILLAIS;A+;13 MARSEILLE;NULL;NULL;04 88 04 02 90;louverture(a)wanadoo.fr;22947;NULL;
-253665;FX;COMPTOIR DES VERRES;B;73 CHAMBERY C;NULL;NULL;04 79 62 54 70;NULL;22951;NULL;
-253666;FX;PROFIL LANGUEDOC;D;11 LEZIGNAN C;NULL;NULL;04 68 27 32 36;NULL;22961;NULL;
-253667;FX;NORD ALU BOIS;A;50 THEVILLE;NULL;NULL;02 33 22 55 67;NULL;22969;NULL;
-253668;FX;ESPACE SOLEIL;D;73 CHALLES LE;NULL;NULL;04 79 72 83 79;NULL;22973;NULL;
-253669;FX;BRUNET;A;33 YVRAC;NULL;NULL;05 56 06 47 22;NULL;22981;NULL;
-253670;FX;ISOFERM STORE - M. AIGU;B;21 CHENOVE;NULL;NULL;03 80 52 48 41;NULL;22983;NULL;
-253671;FX;ROUX ALAIN;A;51 ST MARTIN;NULL;NULL;03 55 03 51 31;roux.alain51(a)orange.fr;22989;NULL;
-253672;FX;RBM (RENOVATION BATIMENT;D;11 PENNAUTIER;NULL;NULL;04 68 47 40 50;NULL;22994;NULL;
-253673;FX;SAJEMA VENT DE L'EST;A+;16 ANGOULEME;NULL;NULL;05 45 95 73 67;NULL;22996;NULL;
-253674;FX;GUERIN MICHEL;A;53 CHATEAU GO;NULL;NULL;02 43 07 00 58;NULL;22999;NULL;
-253675;FX;GAM PROTECTION;A+;93 ROMAINVILL;NULL;NULL;01 41 83 08 40;NULL;23003;NULL;
-253676;FX;J'ISOLE STORES DECO;A;42 ROANNE;NULL;NULL;04 77 71 99 97;NULL;23033;NULL;
-253677;FX;BERGES CLAUDE;A+;24 BOULAZAC;NULL;NULL;05 53 08 97 47;NULL;23037;NULL;
-253678;FX;GUILLOT PAUL;B;58 ARQUIAB;NULL;NULL;03 89 39 65 89;NULL;23038;NULL;
-253679;FX;ANTONIETTI G.;A;25 EXINCOURT;NULL;NULL;03 81 32 13 48;NULL;23040;NULL;
-253680;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 26 49 67 20;menuiserie.betheny(a)pillaud-materiaux.fr;23041;NULL;
-253681;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 23 69 96 28;menuiserie.brasles(a)pillaud-materiaux.fr;23041;NULL;
-253682;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 25 27 39 84;u.barsuraube(a)pillaud-materiaux.fr;23041;NULL;
-253683;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 25 45 12 09;NULL;23041;NULL;
-253684;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 23 69 00 60;NULL;23041;NULL;
-253685;FX;POINT P BRETAGNE MORLAIX;A;29 MORLAIX;NULL;NULL;02 98 63 43 66;NULL;23052;NULL;
-253686;FX;CL DIVERS SUD EST A.COSTE;B;38 L;NULL;NULL;08 10 82 05 10;NULL;23066;NULL;
-253687;FX;STORES LIOGIER;A+;42 ROCHE LA M;NULL;NULL;04 77 33 12 92;NULL;23069;NULL;
-253688;FX;STORES ET FERMETURES DE L ARGO RJ;A;56 ELVEN;NULL;NULL;02 97 53 32 34;NULL;23073;NULL;
-253689;FX;SOCOM INDUSTRIE;A;35 CESSON SEV;NULL;NULL;02 99 32 37 29;NULL;23086;NULL;
-253690;FX;DESJEUNES;A;75 PARIS;NULL;NULL;01 45 44 35 08;NULL;23093;NULL;
-253691;FX;SEINERA JEAN PIERRE;B;73 UGINE CEDE;NULL;NULL;04 79 89 01 50;NULL;23107;NULL;
-253692;FX;BIG MAT BROCARD MATERIAUX;NULL;60 ALLONNE;NULL;NULL;03 44 02 86 10;NULL;23108;NULL;
-253693;FX;JEUDY GUILLOT;A;03 VICHY;NULL;NULL;04 70 59 18 16;NULL;23117;NULL;
-253694;FX;ARENO 4264;NULL;91 AUVERS ST;NULL;NULL;01 69 92 24 13;NULL;23133;NULL;
-253695;FX;CL DIVERS SUD EST ATC BOURGOGNE;A;25 L;NULL;NULL;0 ;NULL;23154;NULL;
-253696;FX;TREBUCHON EQUIP;A;34 PEZENAS;NULL;NULL;04 67 98 04 44;NULL;23155;NULL;
-253697;FX;SERPE (STE ETUDES REALISA;A;75 PARIS;NULL;NULL;01 43 06 42 52;NULL;23171;NULL;
-253698;FX;SERVAIS;A;94 VILLEJUIF;NULL;NULL;01 46 78 86 20;NULL;23172;NULL;
-253699;FX;MILFEN;A;78 ST GERMAIN;NULL;NULL;01 34 51 87 80;NULL;23175;NULL;
-253700;FX;MILFEN;A;78 ST GERMAIN;NULL;NULL;01 34 61 21 31;NULL;23175;NULL;
-253701;FX;GUENEGO J. YVES;NULL;44 SAINT NAZA;NULL;NULL;02 40 19 17 44;NULL;23177;NULL;
-253702;FX;STORES BROUSSAIS;A;94 VILLEJUIF;NULL;NULL;01 53 14 34 89;NULL;23178;NULL;
-253703;FX;TRADITEX;A;63 CLERMONT F;NULL;NULL;04 73 91 70 69;s.hanotin(a)traditex.fr;23190;NULL;
-253704;FX;TRADITEX;A;63 CLERMONT F;NULL;NULL;04 73 91 70 69;NULL;23190;NULL;
-253705;FX;TRADITEX;A;63 CLERMONT F;NULL;NULL;0 ;s.hanotin(a)traditex.fr;23190;NULL;
-253706;FX;COF CENTRE OCCULTATIONS 4909;NULL;45 CHATEAUNEU;NULL;NULL;02 38 46 24 92;NULL;23191;NULL;
-253707;FX;LA MAISON DU STORE;D;17 ROCHEFORT;NULL;NULL;05 46 99 29 48;NULL;23193;NULL;
-253708;FX;MARTIGNY;A;40 BISCAROSSE;NULL;NULL;05 58 78 89 07;NULL;23203;NULL;
-253709;FX;MANOHA;A;66 PERPIGNAN;NULL;NULL;04 68 54 13 54;NULL;23212;NULL;
-253710;FX;PSP 92;A;92 RUEIL MALM;NULL;NULL;01 47 08 24 10;NULL;23214;NULL;
-253711;FX;EUROPE FERMETURES;A;01 CESSY;NULL;NULL;04 50 28 38 40;europefermetures(a)9business.fr;23226;NULL;
-253712;FX;STORES 82;A;82 MONTAUBAN;NULL;NULL;0 ;NULL;23242;NULL;
-253713;FX;MBA (MENUISERIE BOIS ALU);A;28 SAINT REMY;NULL;NULL;02 37 62 10 52;NULL;23255;NULL;
-253714;FX;SPF (STORES PLAFOND FERM.;A;27 DAUBEUF PR;NULL;NULL;02 32 54 41 96;NULL;23259;NULL;
-253715;FX;CRABOL;A;11 ST HILAIRE;NULL;NULL;04 68 79 82 40;NULL;23268;NULL;
-253716;FX;POUJOIS GEORGES;B;74 ANNECY;NULL;NULL;04 50 46 54 50;NULL;23273;NULL;
-253717;FX;PILLA FRANCISCO;A;18 DUN SUR AU;NULL;NULL;02 48 59 58 96;NULL;23277;NULL;
-253718;FX;LEFER DENIS SARL;A;50 BRICQUEBEC;NULL;NULL;02 33 10 07 91;NULL;23279;NULL;
-253719;FX;TOLIERIE ATELIERS;NULL;44 SAINT NAZA;NULL;NULL;02 40 66 82 05;NULL;23280;NULL;
-253720;FX;PERSIENNE DRANCEENNE;A;93 DRANCY;NULL;NULL;01 48 31 37 09;NULL;23288;NULL;
-253721;FX;HAVLUND SOLTEKNIK 4674;A;DK 2690 KARLS;NULL;NULL;45 43 42 14 01;steen(a)havlund.dk;23293;NULL;
-253722;FX;HAVLUND SOLTEKNIK 4674;A;DK 2690 KARLS;NULL;NULL;0 ;NULL;23293;NULL;
-253723;FX;HAVLUND SOLTEKNIK 4674;A;DK 2690 KARLS;NULL;NULL;0 ;LS(a)havlund.dk;23293;NULL;
-253724;FX;DAVID MARC;B;38 BOURGOIN J;NULL;NULL;04 74 93 05 61;NULL;23298;NULL;
-253725;FX;MEZZOLO JEAN MARC 4852;NULL;40 MIMIZAN PL;NULL;NULL;05 58 07 49 79;NULL;23304;NULL;
-253726;FX;MIROITERIE 102 303102;A;92 ANTONY;NULL;NULL;01 46 66 23 22;NULL;23311;NULL;
-253727;FX;MIROITERIE 102 303102;A;92 ANTONY;NULL;NULL;01 46 66 89 88;NULL;23311;NULL;
-253728;FX;MIROITERIE 102 303102;A;92 ANTONY;NULL;NULL;01 46 66 24 02;NULL;23311;NULL;
-253729;FX;MB MICHEL BETTIGNY SERRURERIE;A;92 CLAMART;NULL;NULL;01 46 38 86 19;NULL;23319;NULL;
-253730;FX;JUDLIN FERMETURES;A;75 PARIS;NULL;NULL;01 45 85 48 47;NULL;23329;NULL;
-253731;FX;CMR (CONSTRUCTIONS METAL-;NULL;44 LA CHAPELL;NULL;NULL;02 40 06 77 25;NULL;23331;NULL;
-253732;FX;BRISSONNEAU THIERRY;NULL;44 ST PHILBER;NULL;NULL;02 40 78 84 58;NULL;23338;NULL;
-253733;FX;OMNIUM SECURITE;NULL;30 NIMES;NULL;NULL;04 66 38 06 19;NULL;23356;NULL;
-253734;FX;STORMANIA 4910;A;78 CONFLANS S;NULL;NULL;01 39 72 75 45;NULL;23370;NULL;
-253735;FX;HAUSKNECHT FRANCOISE 4508;NULL;57 PIERREVILL;NULL;NULL;03 87 17 14 13;NULL;23373;NULL;
-253736;FX;BOIS ESPACE;B;73 ALBERTVILL;NULL;NULL;04 79 37 77 37;NULL;23377;NULL;
-253737;FX;OUEST MENUISERIE - JOS PERON;A+;29 PONT L'ABB;NULL;NULL;02 98 75 03 72;NULL;23382;NULL;
-253738;FX;OUEST MENUISERIE - JOS PERON;A+;29 PONT L'ABB;NULL;NULL;02 98 66 15 51;NULL;23382;NULL;
-253739;FX;ATOUT CARREAU;D;12 MILLAU;NULL;NULL;05 65 61 36 62;NULL;23383;NULL;
-253740;FX;NEGRO;A+;90 BAVILLIERS;NULL;NULL;03 84 55 05 79;NULL;23389;NULL;
-253741;FX;GINISTY ET CIE;B;74 THONON LES;NULL;NULL;04 50 71 82 87;NULL;23398;NULL;
-253742;FX;SAMSE EMBRUN;A;05 EMBRUN;NULL;NULL;04 92 43 46 44;NULL;23418;NULL;
-253743;FX;MANCEAU DENIS;A;49 ETRICHE;NULL;NULL;02 41 42 60 55;NULL;23420;NULL;
-253744;FX;MONVOISIN;A+;35 GOVEN;NULL;NULL;02 99 05 93 97;NULL;23421;NULL;
-253745;FX;POINT P BRETAGNE DINAN;A;22 DINAN;NULL;NULL;02 96 39 60 74;NULL;23422;NULL;
-253746;FX;BATI DECOR 2B;NULL;20 BIGUGLIA;NULL;NULL;04 95 33 40 47;NULL;23448;NULL;
-253747;FX;ARNAULT DIFFUSION;A;86 MIGNE AUXA;NULL;NULL;05 49 18 28 60;isabelle(a)stores.rideaux.com;23456;NULL;
-253748;FX;ARNAULT DIFFUSION;A;86 MIGNE AUXA;NULL;NULL;05 49 18 28 60;NULL;23456;NULL;
-253749;FX;LUYTON PATRICK;B;26 SAINT SORL;NULL;NULL;04 75 31 60 07;NULL;23458;NULL;
-253750;FX;FUNFROCK PASCAL;NULL;67 MARLENHEIM;NULL;NULL;03 88 87 79 80;NULL;23462;NULL;
-253751;FX;AIRIAU SERRURERIE;A;13 LA CIOTAT;NULL;NULL;04 42 08 97 85;NULL;23473;NULL;
-253752;FX;SYTAG SA;NULL;CH 1219 GENEV;NULL;NULL;0 ;NULL;23483;NULL;
-253753;FX;DA SILVA FERNAND;A;32 ISLE JOURD;NULL;NULL;05 62 07 28 75;NULL;23484;NULL;
-253754;FX;GREMMEL J. ET CIE;A+;67 ESCHAU;NULL;NULL;03 88 68 50 56;NULL;23526;NULL;
-253755;FX;WEINSTEIN ET FILS;A+;67 SARRE UNIO;NULL;NULL;03 88 00 30 44;NULL;23527;NULL;
-253756;FX;THERMIDOR;NULL;22 HENON;NULL;NULL;02 96 73 50 29;NULL;23530;NULL;
-253757;FX;BOURDIN;A;49 VARENNES S;NULL;NULL;02 41 51 49 90;NULL;23538;NULL;
-253758;FX;TONY SERVICES SABA ANTONIO;A+;38 ROCHETOIRI;NULL;NULL;04 74 18 01 90;NULL;23539;NULL;
-253759;FX;SERRURERIE NEBATI;A;78 FONTENAY L;NULL;NULL;01 30 58 38 50;NULL;23549;NULL;
-253760;FX;MGM ALU MENUISERIE GALE 419;NULL;13 AUBAGNE;NULL;NULL;04 42 18 72 31;NULL;23551;NULL;
-253761;FX;TOURAINE MIROITERIE;A;37 TOURS;NULL;NULL;02 47 37 76 90;NULL;23555;NULL;
-253762;FX;LUMALE;A;40 MONT DE MA;NULL;NULL;05 58 75 08 94;NULL;23556;NULL;
-253763;FX;LE QUERE ANDRE;A;21 CHENOVE;NULL;NULL;03 80 58 85 08;NULL;23565;NULL;
-253764;FX;SAGA AMENAGEMENTS RAYMOND MICH;A;38 CHAPAREILL;NULL;NULL;04 76 45 20 08;NULL;23567;NULL;
-253765;FX;SAGA AMENAGEMENTS RAYMOND MICH;A;38 CHAPAREILL;NULL;NULL;04 76 45 20 08;mic.co.raymond(a)wanadoo.fr;23567;NULL;
-253766;FX;ABAC SLC STORES;NULL;75 PARIS;NULL;NULL;01 60 46 23 19;NULL;23585;NULL;
-253767;FX;TOUTBOIS AGENCEMENT;A;69 DECINES CH;NULL;NULL;04 78 49 45 97;NULL;23608;NULL;
-253768;FX;TERRIER J. CLAUDE;NULL;61 MESSEI;NULL;NULL;02 33 96 00 40;NULL;23613;NULL;
-253769;FX;CLOMEN;A;81 ALBI;NULL;NULL;05 63 38 13 65;NULL;23620;NULL;
-253770;FX;GIRAUD BARDOUX;NULL;76 OISSEL;NULL;NULL;02 32 91 31 98;achat(a)giraud-bardoux.fr;23625;NULL;
-253771;FX;HABITAT ET STORES ROGER;B;38 BOURGOIN J;NULL;NULL;04 74 28 64 76;NULL;23646;NULL;
-253772;FX;CHAUSSON TRIALIS SUD EST;NULL;84 VALREAS;NULL;NULL;04 90 37 44 29;NULL;23648;NULL;
-253773;FX;CONFORT ISOLATION;B;21 SENNECEY L;NULL;NULL;03 80 47 07 19;NULL;23649;NULL;
-253774;FX;GERBAT;D;27 Beuzeville;NULL;NULL;02 31 63 63 60;NULL;23655;NULL;
-253775;FX;INDUSTRIAS BEC;B;ES 50 ARENYS;NULL;NULL;349 37 92 49 22;bec(a)bec.es;23664;NULL;
-253776;FX;INDUSTRIAS BEC;B;ES 50 ARENYS;NULL;NULL;349 32 25 06 85;killian(a)bec.es;23664;NULL;
-253777;FX;INDUSTRIAS BEC;B;ES 50 ARENYS;NULL;NULL;349 37 92 49 22;NULL;23664;NULL;
-253778;FX;LOUVIER;A;66 LAROQUE-DE;NULL;NULL;04 68 89 67 74;NULL;23677;NULL;
-253779;FX;THALMANN;D;69 MARCY L'ET;NULL;NULL;04 78 87 82 94;NULL;23678;NULL;
-253780;FX;CL DIVERS SUD EST ATC LANGUEDOC;A;30 L.;NULL;NULL;0 ;NULL;23681;NULL;
-253781;FX;VERRE CLAIR;B;60 SAINT MAXI;NULL;NULL;03 44 64 40 64;NULL;23686;NULL;
-253782;FX;ESPACE LE GOFF;A;56 CRAC'H;NULL;NULL;02 97 50 74 42;NULL;23689;NULL;
-253783;FX;FOURNIER;D;91 MONTGERON;NULL;NULL;01 69 52 37 72;stefournier91(a)orange.fr;23702;NULL;
-253784;FX;BERVAS;D;29 PLOUESCAT;NULL;NULL;02 98 61 93 35;NULL;23716;NULL;
-253785;FX;LENOIR METALLERIE;A+;69 VILLEURBAN;NULL;NULL;04 72 97 04 04;jfgauthier(a)lenoirmetallerie.fr;23719;NULL;
-253786;FX;LENOIR METALLERIE;A+;69 VILLEURBAN;NULL;NULL;04 72 97 04 04;NULL;23719;NULL;
-253787;FX;PXR;D;77 SAMOREAU;NULL;NULL;01 64 24 54 07;NULL;23727;NULL;
-253788;FX;SAMSE DIGNE;A;04 DIGNE;NULL;NULL;04 92 32 25 71;NULL;23760;NULL;
-253789;FX;COULON ET FILS;D;75 PARIS;NULL;NULL;01 47 20 10 33;NULL;23767;NULL;
-253790;FX;LE BALC'H VERANDAS 4462;NULL;22 PLOUMAGOAR;NULL;NULL;02 96 44 03 91;NULL;23781;NULL;
-253791;FX;ALU 2000;A;82 CASTELSAGR;NULL;NULL;05 63 95 69 73;NULL;23782;NULL;
-253792;FX;BOUCHET MARIE ROSE - DECO 2000;A+;58 NEVERS;NULL;NULL;03 86 37 69 12;NULL;23789;NULL;
-253793;FX;CRC COMPANHIA LDA;D;PT 0-071 ALDE;NULL;NULL;3512 12 10 07 62;NULL;23796;NULL;
-253794;FX;CRC COMPANHIA LDA;D;PT 0-071 ALDE;NULL;NULL;3512 13 62 12 65;NULL;23796;NULL;
-253795;FX;CRC COMPANHIA LDA;D;PT 0-071 ALDE;NULL;NULL;3512 13 62 12 65;carlosjosecosta(a)crc.pt;23796;NULL;
-253796;FX;MARINIER MAT. BOURG S/AND;NULL;84 VALREAS CE;NULL;NULL;04 75 54 53 99;NULL;23800;NULL;
-253797;FX;STORE DES ILES;A;MU TRE BORNES;NULL;NULL;23 04 24 35 53;sdesil(a)intnet.mu;23813;NULL;
-253798;FX;BAIE OUEST LORIENT;D;56 LORIENT;NULL;NULL;02 97 64 61 06;NULL;23819;NULL;
-253799;FX;NEW DECOR;A;76 LE HAVRE;NULL;NULL;02 35 28 14 74;NULL;23820;NULL;
-253800;FX;BAIE OUEST VANNES SAS PILORGER;D;56 PLOEREN;NULL;NULL;02 97 46 58 92;baie.ouest.vannes(a)wanadoo.fr;23821;NULL;
-253801;FX;CHAUSSON TRIALIS CARPENTRAS;NULL;84 CARPENTRAS;NULL;NULL;04 90 67 36 29;NULL;23838;NULL;
-253802;FX;AUDOUIN;A;61 ALENCON;NULL;NULL;02 33 29 25 43;NULL;23852;NULL;
-253803;FX;GOHON ALAIN;A;14 LISIEUX;NULL;NULL;02 31 62 05 92;NULL;23873;NULL;
-253804;FX;FABRIPOSE;A;72 ARCONNAY;NULL;NULL;02 33 29 46 02;fabripose(a)wanadoo.fr;23875;NULL;
-253805;FX;TEXIA 4812;A;64 PAU;NULL;NULL;0 ;NULL;23879;NULL;
-253806;FX;ALPHA BAIE;A+;31 TOULOUSE;NULL;NULL;05 61 62 01 81;NULL;23888;NULL;
-253807;FX;ALLAIRE PHILIPPE;A;44 ST BREVIN;NULL;NULL;02 40 39 13 43;NULL;23890;NULL;
-253808;FX;TONDOUX NICOLAS;D;35 LUITRE;NULL;NULL;02 99 97 94 51;NULL;23892;NULL;
-253809;FX;MIROITERIE CANNOISE MC;A;06 MOUGINS;NULL;NULL;04 92 92 16 17;NULL;23898;NULL;
-253810;FX;SMRB (STE MENUISERIE;A;45 SULLY SUR;NULL;NULL;02 38 36 29 04;NULL;23899;NULL;
-253811;FX;MAISON CONFORT 4386;A;MA ABLANCA;NULL;NULL;212 22 39 41 40;NULL;23906;NULL;
-253812;FX;NUVOLI PIERRE -MAISON ISOLATION;B;20 BASTIA;NULL;NULL;04 95 31 18 59;NULL;23907;NULL;
-253813;FX;ESPACE MENUISERIE ET;A;37 NAZELLES N;NULL;NULL;02 47 57 46 65;NULL;23909;NULL;
-253814;FX;GEDIMAT UNIBOIS;B;70 LURE;NULL;NULL;03 84 62 72 28;NULL;23910;NULL;
-253815;FX;SICARD VERANDAS;A+;37 TOURS;NULL;NULL;02 47 56 77 95;NULL;23916;NULL;
-253816;FX;POINT P MERIDIONALE BEZIERS;A+;34 BEZIERS CE;NULL;NULL;04 67 49 76 49;NULL;23937;NULL;
-253817;FX;POINT P MERIDIONALE BEZIERS;A+;34 BEZIERS CE;NULL;NULL;05 65 46 12 22;NULL;23937;NULL;
-253818;FX;POINT P MERIDIONALE BEZIERS;A+;34 BEZIERS CE;NULL;NULL;05 34 01 38 20;NULL;23937;NULL;
-253819;FX;POINT P MERIDIONALE CARCASSONN;A;11 CARCASSONN;NULL;NULL;04 68 72 54 81;NULL;23938;NULL;
-253820;FX;POINT P MERIDIONALE PERPIGNAN;A;34 BEZIERS CE;NULL;NULL;04 68 55 70 69;NULL;23940;NULL;
-253821;FX;POINT P MERIDIONALE NIMES;A;34 BEZIERS CE;NULL;NULL;04 66 04 81 99;NULL;23942;NULL;
-253822;FX;MEGNIEN SIMA NIORT;NULL;79 NIORT;NULL;NULL;05 49 17 22 29;NULL;23951;NULL;
-253823;FX;MEGNIEN SIMA LUCON;NULL;85 LUCON;NULL;NULL;02 51 56 81 81;NULL;23952;NULL;
-253824;FX;CHEVALIER;A+;21 POUILLY EN;NULL;NULL;03 80 90 88 44;contact(a)chevalier-sa.fr;23956;NULL;
-253825;FX;AREA (STE DES AUTOROUTES;A;69 BRON CEDEX;NULL;NULL;0 ;NULL;23969;NULL;
-253826;FX;TROUILLARD POINT P PDL THOUARS;A;79 THOUARS;NULL;NULL;05 49 96 36 89;NULL;23979;NULL;
-253827;FX;RIDONET LORRAINE;A+;54 POMPEY;NULL;NULL;03 83 24 37 84;ridonet(a)orange.fr;23991;NULL;
-253828;FX;AD DIFFUSION;A;77 SAINT PIER;NULL;NULL;01 64 78 51 59;NULL;23993;NULL;
-253829;FX;AD DIFFUSION;A;77 SAINT PIER;NULL;NULL;01 64 22 37 98;NULL;23993;NULL;
-253830;FX;COSVAL;NULL;13 SALON DE P;NULL;NULL;04 90 56 70 40;NULL;23995;NULL;
-253831;FX;ROTGE FRANCOIS;A;83 FREJUS;NULL;NULL;04 94 69 92 61;rotgepvm(a)live.fr;23998;NULL;
-253832;FX;CHAUSSON TRIALIS MONTELIMAR;NULL;84 VALREAS CE;NULL;NULL;04 75 51 35 78;NULL;24001;NULL;
-253833;FX;POYADE STORES;NULL;03 VICHY;NULL;NULL;04 70 97 63 71;NULL;24015;NULL;
-253834;FX;BILDSTEIN JEAN JACQUES;A;68 HATTSTATT;NULL;NULL;09 71 70 40 56;jean-jacques.bildstein(a)wanadoo.fr;24016;NULL;
-253835;FX;ROTHERMEL CHARLES SARL;A;57 AMNEVILLE;NULL;NULL;03 87 72 07 29;NULL;24019;NULL;
-253836;FX;ROTHERMEL CHARLES SARL;A;57 AMNEVILLE;NULL;NULL;03 87 71 82 06;NULL;24019;NULL;
-253837;FX;ROTHERMEL CHARLES SARL;A;57 AMNEVILLE;NULL;NULL;03 87 71 82 06;virginie.sar(a)rothermel.fr;24019;NULL;
-253838;FX;GEDIMAT GARNIER;A;72 ST PATERNE;NULL;NULL;02 33 27 34 77;NULL;24022;NULL;
-253839;FX;IRIS 4507;NULL;10 ST THIBAUL;NULL;NULL;01 41 72 06 29;NULL;24025;NULL;
-253840;FX;GLANTENAY;D;21 VENAREY LE;NULL;NULL;03 80 96 19 37;entreprise.glantenay(a)orange.fr;24037;NULL;
-253841;FX;CHAMPIGNY FERMETURES;A;94 CHAMPIGNY;NULL;NULL;01 45 16 91 56;NULL;24043;NULL;
-253842;FX;LESSAGE DANIEL;NULL;72 SAINT SATU;NULL;NULL;02 43 25 65 46;NULL;24055;NULL;
-253843;FX;SUD OUEST CLOTURES 2;A;11 NARBONNE C;NULL;NULL;04 68 41 11 23;NULL;24056;NULL;
-253844;FX;RICARD GILBERT;A;81 MAZAMET;NULL;NULL;05 63 98 98 87;NULL;24065;NULL;
-253845;FX;AVH AMELIORATION DE VOTRE;A;89 TURNY;NULL;NULL;09 71 70 14 82;contact(a)avh89.fr;24068;NULL;
-253846;FX;REISSER KURT;NULL;DE 6829 LANDA;NULL;NULL;49 63 41 35 84;NULL;24077;NULL;
-253847;FX;OUEST OUVERTURES;A;35 FOUGERES;NULL;NULL;02 99 99 50 91;NULL;24078;NULL;
-253848;FX;STORES ALPAGO;A;24 EYMET;NULL;NULL;05 53 23 75 95;NULL;24080;NULL;
-253849;FX;VRIGNAUD VEILLET NELLY;A;17 SAINTES;NULL;NULL;05 46 92 03 72;tonyveillet(a)orange.fr;24085;NULL;
-253850;FX;COMASUD SICOBOIS;A+;13 MARSEILLE;NULL;NULL;04 94 75 69 69;NULL;24088;NULL;
-253851;FX;REZIG MICHEL;A;95 SARCELLES;NULL;NULL;01 34 38 07 30;NULL;24095;NULL;
-253852;FX;STORES 35;A;35 DOMLOUP;NULL;NULL;02 99 37 47 66;NULL;24111;NULL;
-253853;FX;FRANCE FERMETURES;A;77 VILLEMER;NULL;NULL;01 69 09 18 85;NULL;24112;NULL;
-253854;FX;FRANCE FERMETURES;A;77 VILLEMER;NULL;NULL;01 64 24 90 25;NULL;24112;NULL;
-253855;FX;CL DIVERS SUD EST F.LEBEL;A;73 L.;NULL;NULL;02 99 14 86 44;NULL;24114;NULL;
-253856;FX;SEGRIM;A;13 LES PENNES;NULL;NULL;04 91 51 28 20;NULL;24118;NULL;
-253857;FX;SODIMAF (STE DIFFUSION;A;77 CRECY LA C;NULL;NULL;01 64 63 88 37;NULL;24128;NULL;
-253858;FX;FRANCE FERMETURES SAS;A+;74 MEYTHET;NULL;NULL;04 50 52 83 21;NULL;24132;NULL;
-253859;FX;RHEIN CHRISTIAN;B;63 CLERMONT F;NULL;NULL;04 73 92 45 60;NULL;24135;NULL;
-253860;FX;HERTRICH FRANCOIS;NULL;83 ROQUEBRUNE;NULL;NULL;04 94 44 05 63;NULL;24146;NULL;
-253861;FX;JLC 45;D;45 ORLEANS CE;NULL;NULL;02 38 63 88 37;NULL;24148;NULL;
-253862;FX;JLC 45;D;45 ORLEANS CE;NULL;NULL;02 38 64 09 47;NULL;24148;NULL;
-253863;FX;CASTOR DEVELOPPEMENT 4675;NULL;94 SAINT MAUR;NULL;NULL;01 48 89 00 05;NULL;24179;NULL;
-253864;FX;TROUILLARD POINT P PDL AIRVAULT;A;79 AIRVAULT;NULL;NULL;05 49 70 80 23;NULL;24188;NULL;
-253865;FX;LE CHEVILLER H.;B;97 KOUROU CED;NULL;NULL;05 94 32 07 74;llechevil(a)wanadoo.fr;24192;NULL;
-253866;FX;LVI BOURGOGNE STE NVELLE;A;21 POUILLY EN;NULL;NULL;03 80 90 74 70;NULL;24202;NULL;
-253867;FX;MIROITERIE SERVICES;A;56 AURAY;NULL;NULL;02 97 24 80 06;NULL;24205;NULL;
-253868;FX;DT ALU;A;94 VALENTON;NULL;NULL;01 43 89 41 25;NULL;24208;NULL;
-253869;FX;BAR ALU;A;13 MARSEILLE;NULL;NULL;04 91 94 25 07;NULL;24213;NULL;
-253870;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;3512 32 76 77 79;carina.francisco(a)martifer.com;24215;NULL;
-253871;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;05 56 24 07 27;NULL;24215;NULL;
-253872;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;334 37 85 13 65;sidonie.marvalin(a)heytens.be;24215;NULL;
-253873;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;stephanethesin(a)numrs.com;24215;NULL;
-253874;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;36 83 54 60 13;NULL;24215;NULL;
-253875;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;225 21 24 62 14;ludovic.joubert(a)ads-westafrica.com;24215;NULL;
-253876;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;412 19 43 40 08;NULL;24215;NULL;
-253877;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;NULL;NULL;24215;NULL;
-253878;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;01 44 08 62 02;tpoletti(a)viguier.com;24215;NULL;
-253879;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;glpiat(a)ballastinternational.com;24215;NULL;
-253880;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;3902 90 37 65 50;raffaele.rome(a)metalsigma.it;24215;NULL;
-253881;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;kurt.vanmeerhaeghe(a)kyotecgroup.com;24215;NULL;
-253882;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;01 49 97 92 32;damien.cochet(a)kyotecgroup.fr;24215;NULL;
-253883;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;04 78 08 86 32;rchevallard(a)2jpc.com;24215;NULL;
-253884;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;332 40 51 11 43;erbosmia(a)aol.com;24215;NULL;
-253885;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;l.basseville(a)free.fr;24215;NULL;
-253886;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;01 40 86 55 33;NULL;24215;NULL;
-253887;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;morganequeralto(a)numrs.com;24215;NULL;
-253888;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;estelle(a)ikedeco.com;24215;NULL;
-253889;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;NULL;24215;NULL;
-253890;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;mohamed.ghaleb(a)club-internet.fr;24215;NULL;
-253891;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;04 50 96 70 91;NULL;24215;NULL;
-253892;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;becht(a)mbm-konstruktionen.de;24215;NULL;
-253893;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;santos.urtzi(a)gmail.com;24215;NULL;
-253894;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;richardd(a)netvision.net.il;24215;NULL;
-253895;FX;EQUIP'HABITAT;A;87 LIMOGES;NULL;NULL;05 55 01 25 22;NULL;24218;NULL;
-253896;FX;LETORDS THIERRRY;A;94 ST MAUR DE;NULL;NULL;01 48 83 00 05;NULL;24231;NULL;
-253897;FX;VMM VERANDAS MENUIS MONTGAILL;A+;65 TARBES;NULL;NULL;05 62 34 00 05;NULL;24236;NULL;
-253898;FX;MARSOLLIER DIDIER;A;35 Rennes;NULL;NULL;02 99 44 15 94;d.marsollier(a)free.fr;24245;NULL;
-253899;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 34;courtry(a)afd-verandas.com;24252;NULL;
-253900;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 33;NULL;24252;NULL;
-253901;FX;AFD;D;36 LA CHATRE;NULL;NULL;04 76 24 16 23;NULL;24252;NULL;
-253902;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 58 47;courtry(a)afd-verandas.com;24252;NULL;
-253903;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 34;be(a)afd-verandas.com;24252;NULL;
-253904;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 58 47;NULL;24252;NULL;
-253905;FX;AFD;D;36 LA CHATRE;NULL;NULL;02 54 48 61 58;lachatre(a)afd-verandas.com;24252;NULL;
-253906;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 41;barfuss_mederic(a)afd-verandas.com;24252;NULL;
-253907;FX;AFD;D;36 LA CHATRE;NULL;NULL;02á54á48á4182;clement.aupart(a)afd-verandas.com;24252;NULL;
-253908;FX;AFD;D;36 LA CHATRE;NULL;NULL;02 54 48 61 58;NULL;24252;NULL;
-253909;FX;DA SILVA ANTONIO FIB FERMETURE;A;91 MORANGIS;NULL;NULL;01á60129678;antonio.da-silva0361(a)orange.fr;24255;NULL;
-253910;FX;ROBINEAU;A;37 ST NICOLAS;NULL;NULL;02 47 97 47 30;NULL;24258;NULL;
-253911;FX;BOUCHER FABRICE;A;93 Aubervilli;NULL;NULL;01 69 90 10 06;zine.93(a)wanadoo.fr;24260;NULL;
-253912;FX;SAMSE ALBERTVILLE;A;73 ALBERTVILL;NULL;NULL;04 79 37 18 47;NULL;24262;NULL;
-253913;FX;SUREAU;NULL;89 MAGNY;NULL;NULL;03 86 33 02 10;NULL;24265;NULL;
-253914;FX;ALU SPINACE;A+;38 LE TOUVET;NULL;NULL;04 76 08 40 28;NULL;24283;NULL;
-253915;FX;LEMOINE DECORATION;A;41 MONTRICHAR;NULL;NULL;02 54 32 24 27;NULL;24284;NULL;
-253916;FX;QUINETTE YVON;D;50 SAINT LO;NULL;NULL;02 33 55 81 21;NULL;24296;NULL;
-253917;FX;EXPLOITATION FRANCE ENTRETIEN;A;13 MARSEILLE;NULL;NULL;04 91 54 07 80;francentretien(a)wanadoo.fr;24305;NULL;
-253918;FX;EXPLOITATION FRANCE ENTRETIEN;A;13 MARSEILLE;NULL;NULL;04 91 54 07 80;NULL;24305;NULL;
-253919;FX;COUSSINS MATELAS;B;38 ST CLAIR D;NULL;NULL;04 74 97 86 92;NULL;24308;NULL;
-253920;FX;OMBRE PINGEOT;A;86 CHATELLERA;NULL;NULL;05 49 23 19 03;NULL;24314;NULL;
-253921;FX;AMB;A;50 BOURGUENOL;NULL;NULL;02 33 90 04 12;NULL;24321;NULL;
-253922;FX;MELIN MATERIAUX LA CHATRE;A;36 LA CHATRE;NULL;NULL;02 54 06 09 63;NULL;24327;NULL;
-253923;FX;LES VERRERIES DU CENTRE;A;03 MONTLUCON;NULL;NULL;04 70 28 17 57;NULL;24330;NULL;
-253924;FX;LES VERRERIES DU CENTRE;A;03 MONTLUCON;NULL;NULL;0 ;NULL;24330;NULL;
-253925;FX;GUILLOT ELECT BATIMENT;B;38 GRENOBLE;NULL;NULL;04 76 49 42 61;NULL;24335;NULL;
-253926;FX;CHAUSSON TRIALIS BOLLENE;NULL;84 BOLLENE;NULL;NULL;04 90 30 05 14;NULL;24337;NULL;
-253927;FX;RETE SERGE;A;35 LOUVIGNE D;NULL;NULL;02 99 98 19 32;NULL;24338;NULL;
-253928;FX;STORES OTTAN;A;78 TRAPPES;NULL;NULL;01 30 62 24 09;NULL;24340;NULL;
-253929;FX;ALLIX DOMINIQUE;NULL;14 CABOURG;NULL;NULL;02 31 24 79 12;NULL;24358;NULL;
-253930;FX;THOMAS REMI;A;45 LA FERTE S;NULL;NULL;0 ;thomas-remi(a)orange.fr;24382;NULL;
-253931;FX;SNM ALU INDUSTRIE;A;88 LA BRESSE;NULL;NULL;03 29 25 29 66;NULL;24384;NULL;
-253932;FX;SM BOIS;A;77 CLAYE SOUI;NULL;NULL;01 60 26 03 94;NULL;24386;NULL;
-253933;FX;LOGIS CONFORT;A;35 BETTON;NULL;NULL;02 99 55 16 90;NULL;24397;NULL;
-253934;FX;LOGIS CONFORT;A;35 BETTON;NULL;NULL;02 99 55 37 44;logisconfort(a)orange.fr;24397;NULL;
-253935;FX;DE PHILIPPE BERNARD;A;89 MIGENNES;NULL;NULL;08 25 18 69 93;NULL;24404;NULL;
-253936;FX;BAUDRY - DIVISION 2;A;77 SERVON;NULL;NULL;01 60 62 60 29;NULL;24416;NULL;
-253937;FX;DELEVOYE L'OMBRE SUR BAIE;A;31 PORTET SUR;NULL;NULL;05 61 76 05 60;NULL;24424;NULL;
-253938;FX;THOMAS;A;44 ST NAZAIRE;NULL;NULL;02 40 22 46 11;NULL;24426;NULL;
-253939;FX;SERVICE ATERM;A;45 ORLEANS;NULL;NULL;02 38 62 84 09;NULL;24431;NULL;
-253940;FX;CHAMBON;A;71 SEMUR EN B;NULL;NULL;03 85 25 43 57;NULL;24438;NULL;
-253941;FX;PICHARD;A;45 MARIGNY LE;NULL;NULL;02 38 75 14 85;NULL;24442;NULL;
-253942;FX;CLEMENT ALAIN;A;77 VILLEPARIS;NULL;NULL;01 64 67 20 41;NULL;24447;NULL;
-253943;FX;HAINCOURT BERTRAND;NULL;61 LE THEIL;NULL;NULL;02 37 49 77 40;NULL;24450;NULL;
-253944;FX;ILE DE FRANCE FERMETURE 4489;NULL;78 VERNOUILLE;NULL;NULL;01 39 71 68 62;NULL;24464;NULL;
-253945;FX;CARRE MARCEL;A+;38 PONT DE BE;NULL;NULL;04 76 37 04 90;NULL;24467;NULL;
-253946;FX;ISOLA 2000 4833;NULL;93 LE RAINCY;NULL;NULL;01 43 02 73 92;NULL;24469;NULL;
-253947;FX;CHAUSSON TRIALIS ST MITRE;NULL;13 SAINT MITR;NULL;NULL;04 42 80 93 33;NULL;24484;NULL;
-253948;FX;DENJEAN;A;69 ST MARTIN;NULL;NULL;04 78 48 51 72;NULL;24491;NULL;
-253949;FX;DENJEAN;A;69 ST MARTIN;NULL;NULL;04 78 48 51 72;ets.denjean(a)wanadoo.fr;24491;NULL;
-253950;FX;MOTIN JACKY- STORES DUBOIS;NULL;50 SAINT LO;NULL;NULL;02 33 05 30 89;NULL;24493;NULL;
-253951;FX;DECORA STORES EURL;D;31 RAMONVILLE;NULL;NULL;05 61 75 06 80;NULL;24500;NULL;
-253952;FX;CL DIVERS SUD OUEST J GIRAUD;A;32 Auch;NULL;NULL;02 99 14 83 79;NULL;24502;NULL;
-253953;FX;ALU BORMES STORES;A;83 BORMES LES;NULL;NULL;0 ;alubormestores(a)wanadoo.fr;24507;NULL;
-253954;FX;RESEAU PRO VACHERAND;NULL;02 SOISSONS C;NULL;NULL;03 23 73 09 29;NULL;24515;NULL;
-253955;FX;JPA ENTRETIEN;A+;38 L'ALPE D'H;NULL;NULL;04 76 80 63 01;NULL;24517;NULL;
-253956;FX;BOHEMIAFLEX CS SRO;D;CZ 05 OPAVA 5;NULL;NULL;4205 53 73 19 94;ivana(a)bohemiaflex-cs.cz;24523;NULL;
-253957;FX;BOHEMIAFLEX CS SRO;D;CZ 05 OPAVA 5;NULL;NULL;4205 53 73 19 94;NULL;24523;NULL;
-253958;FX;FASS;D;35 SAINT GREG;NULL;NULL;08 11 38 96 47;fass35(a)gmail.com;24526;NULL;
-253959;FX;CORNET MIROITERIE RJ;NULL;13 MARSEILLE;NULL;NULL;04 91 35 54 32;NULL;24531;NULL;
-253960;FX;LEMOINE STORE DECO;A+;02 SAINT-QUEN;NULL;NULL;03 23 67 81 40;NULL;24549;NULL;
-253961;FX;VGSM VOLETS GRILLES;D;92 CHATENAY M;NULL;NULL;01 47 02 36 26;NULL;24554;NULL;
-253962;FX;RHONIBAT;D;69 BRIGNAIS;NULL;NULL;04 78 05 41 66;secretariat(a)rhonibat.com;24567;NULL;
-253963;FX;RHONIBAT;D;69 BRIGNAIS;NULL;NULL;04 78 05 41 66;NULL;24567;NULL;
-253964;FX;TAPISSERIE LONGEAU;A;86 VOUILLE;NULL;NULL;05 49 51 79 14;NULL;24573;NULL;
-253965;FX;MVB (MIROITERIE VITRERIE;A+;27 BERNAY;NULL;NULL;02 32 46 59 10;NULL;24583;NULL;
-253966;FX;FMBA (FRANCHOMME 4055;NULL;62 COURCELLES;NULL;NULL;16 21 77 88 99;NULL;24602;NULL;
-253967;FX;ISOMAT;A;67 BERGBIETEN;NULL;NULL;0 ;NULL;24604;NULL;
-253968;FX;EURAL TECH 4771;A;06 NICE;NULL;NULL;04 93 26 31 11;NULL;24630;NULL;
-253969;FX;AEF (AGENCE EUROPEENNE;A+;75 PARIS;NULL;NULL;01 45 42 00 10;NULL;24632;NULL;
-253970;FX;MEGNIEN SNBM CHANTELOUP;NULL;86 VOUNEUIL S;NULL;NULL;0 ;NULL;24644;NULL;
-253971;FX;ATELIER DU BOIS 302940;NULL;44 ARTHON EN;NULL;NULL;02 40 21 25 01;NULL;24649;NULL;
-253972;FX;AUCLAIR HERVE;D;01 BEYNOST;NULL;NULL;04 78 06 42 87;entreprise-auclair(a)sfr.fr;24653;NULL;
-253973;FX;BROSOLO PIERRE EDOUARD;D;56 QUIBERON;NULL;NULL;02 97 50 42 75;NULL;24660;NULL;
-253974;FX;ATALU SAS;A;67 ERSTEIN CX;NULL;NULL;03 88 59 81 10;NULL;24661;NULL;
-253975;FX;BIG MAT MOUYSSET SAMABOIS;A;12 MILLAU;NULL;NULL;05 65 61 38 62;NULL;24665;NULL;
-253976;FX;CL DIVERS OUEST D. JEANNE;NULL;14 R;NULL;NULL;02 99 14 63 08;NULL;24670;NULL;
-253977;FX;SOFRADI;D;44 TREILLIERE;NULL;NULL;02 28 01 22 35;michel(a)sofradi.fr;24675;NULL;
-253978;FX;SOFRADI;D;44 TREILLIERE;NULL;NULL;01 28 01 22 35;NULL;24675;NULL;
-253979;FX;SOFRADI;D;44 TREILLIERE;NULL;NULL;02 28 01 22 35;NULL;24675;NULL;
-253980;FX;DECORS DE L'HABITAT;A+;35 PACE;NULL;NULL;02 99 69 03 04;NULL;24678;NULL;
-253981;FX;FLAMANT INDUSTRIE 4353;NULL;59 RAISMES;NULL;NULL;03 27 36 85 58;NULL;24680;NULL;
-253982;FX;FLAMANT INDUSTRIE 4353;NULL;59 RAISMES;NULL;NULL;03 27 32 47 90;NULL;24680;NULL;
-253983;FX;BATIMAG;A;51 SAINTE MEN;NULL;NULL;03 26 60 14 51;NULL;24688;NULL;
-253984;FX;MENUISERIE PARRET;NULL;69 MESSIMY;NULL;NULL;04 78 45 15 29;cyrille.parret(a)orange.fr;24690;NULL;
-253985;FX;SCOB STE DE CONSTRUCTION;A;35 BREAL S/S;NULL;NULL;02 23 41 16 17;scob.rennes(a)wanadoo.fr;24695;NULL;
-253986;FX;ISOLATION SERVICE;NULL;36 LE BLANC;NULL;NULL;0 ;NULL;24696;NULL;
-253987;FX;GORET;A;72 LA FLECHE;NULL;NULL;02 43 94 00 81;NULL;24698;NULL;
-253988;FX;ALU CONFORT;A+;59 LOMME;NULL;NULL;03 20 93 21 55;NULL;24706;NULL;
-253989;FX;VENIER WALTER - ACTIBA;A;57 SAINT AVOL;NULL;NULL;03 87 94 59 92;NULL;24715;NULL;
-253990;FX;BREGERAS FREDERIC;A;24 MARSAC S/L;NULL;NULL;05 53 54 88 95;NULL;24734;NULL;
-253991;FX;GEDIMAT GUENEE MATERIAUX;A;35 LOUVIGNE D;NULL;NULL;02 99 98 13 66;NULL;24743;NULL;
-253992;FX;CANTARELLI SERGE - EGPS;A;83 Seyne-sur-;NULL;NULL;04 94 06 78 20;egps(a)sfr.fr;24753;NULL;
-253993;FX;RESEAU PRO BATI DECOR ST BRICE;NULL;54 NANCY;NULL;NULL;03 26 87 37 10;NULL;24757;NULL;
-253994;FX;RESEAU PRO BATI DECORFAGNIERES;NULL;54 NANCY;NULL;NULL;03 26 64 70 38;NULL;24758;NULL;
-253995;FX;VALLADON;A;92 MONTROUGE;NULL;NULL;01 46 57 92 13;valladon.sa(a)wanadoo.fr;24769;NULL;
-253996;FX;GEDIMAT SPIRE;A;80 HARLEVILLE;NULL;NULL;03 24 33 79 80;f.jumeau(a)gedimat.fr;24776;NULL;
-253997;FX;GEDIMAT SPIRE;A;80 HARLEVILLE;NULL;NULL;03 24 33 79 80;NULL;24776;NULL;
-253998;FX;PELLEREI JEAN - MARIE;A;60 MONCEAUX;NULL;NULL;03 44 70 06 93;NULL;24778;NULL;
-253999;FX;GOBERT MENUISERIE;NULL;59 MAING;NULL;NULL;03 27 40 23 09;NULL;24784;NULL;
-254000;FX;ASCI ROY;NULL;91 CROSNE;NULL;NULL;01 69 48 34 56;NULL;24785;NULL;
-254001;FX;TANGUY;A+;29 LANNILIS;NULL;NULL;02 98 04 05 80;NULL;24831;NULL;
-254002;FX;ZANCANARO;A+;07 CHARMES SU;NULL;NULL;04 75 60 87 16;zancanaro-menuiserie(a)wanadoo.fr;24845;NULL;
-254003;FX;LA MAISON DUARTE 4388;NULL;57 SARREBOURG;NULL;NULL;0 ;NULL;24852;NULL;
-254004;FX;ASF ATELIER SERRURERIE;A;29 PLABENNEC;NULL;NULL;02 98 37 92 02;NULL;24853;NULL;
-254005;FX;TROUILLARD POINT P PDL ANCENIS;A;44 ANCENIS;NULL;NULL;02 40 96 35 98;NULL;24874;NULL;
-254006;FX;TROUILLARD POINT P PDL ANGERS;A;49 ANGERS;NULL;NULL;02 41 43 34 91;NULL;24884;NULL;
-254007;FX;TROUILLARD POINT P PDL CHOLET;A;49 CHOLET;NULL;NULL;02á41á75á2249;NULL;24886;NULL;
-254008;FX;TROUILLARD POINT P PDL SAUMUR;A;49 SAUMUR;NULL;NULL;02 41 67 70 16;NULL;24888;NULL;
-254009;FX;POINT P PDL CERIZAY;A;79 CERIZAY;NULL;NULL;05 49 80 00 81;NULL;24889;NULL;
-254010;FX;AID 4721;A;92 GARCHES;NULL;NULL;01 47 41 95 05;NULL;24893;NULL;
-254011;FX;GABORIT JR;A;79 TERVES;NULL;NULL;05 49 80 60 60;NULL;24894;NULL;
-254012;FX;SERAG;B;38 MONTBONNOT;NULL;NULL;04 76 41 83 36;NULL;24899;NULL;
-254013;FX;ROGER CDB;A;80 DURY;NULL;NULL;03 22 95 18 18;NULL;24906;NULL;
-254014;FX;ORCH- ORGANISATION RENOV CONSE;A;76 MAUQUENCHY;NULL;NULL;02 35 90 35 39;NULL;24916;NULL;
-254015;FX;JOCK S;A;78 ARNOUVILLE;NULL;NULL;01 30 93 95 54;NULL;24920;NULL;
-254016;FX;TROUILLARD POINT P PDL;A;85 ST GILLES;NULL;NULL;02 51 55 16 36;NULL;24933;NULL;
-254017;FX;GARNIER 4030;NULL;77 MELUN;NULL;NULL;01 64 39 89 66;NULL;24934;NULL;
-254018;FX;DEGLANE;D;92 ISSY LES M;NULL;NULL;01 46 38 11 04;NULL;24935;NULL;
-254019;FX;BAIE OUEST CAEN;A;14 FLEURY SUR;NULL;NULL;02 31 74 34 69;NULL;24938;NULL;
-254020;FX;ACM MARIE;A;91 STE GENEVI;NULL;NULL;01 60 16 42 47;acm-marie(a)wanadoo.fr;24941;NULL;
-254021;FX;ACM MARIE;A;91 STE GENEVI;NULL;NULL;01 60 16 42 47;NULL;24941;NULL;
-254022;FX;POINT P BRETAGNE PLANCOET;A;22 PLANCOET;NULL;NULL;02 96 80 44 50;NULL;24952;NULL;
-254023;FX;POINT P CHAPIN CHANGE;NULL;35 RENNES CED;NULL;NULL;02 43 56 80 83;NULL;24955;NULL;
-254024;FX;GEDIMAT HOCHET EQUEURDREVILLE;A;50 EQUEURDREV;NULL;NULL;02 33 93 00 76;NULL;24957;NULL;
-254025;FX;DIALUX;A;69 VAULX EN V;NULL;NULL;04 78 49 15 16;NULL;24964;NULL;
-254026;FX;POINT P PDL LES SABLES D OLONN;A;85 LES SABLES;NULL;NULL;02 51 32 86 19;NULL;24986;NULL;
-254027;FX;PIGUET;A;69 VILLEURBAN;NULL;NULL;04 72 89 17 49;NULL;24990;NULL;
-254028;FX;HCL;D;85 LES HERBIE;NULL;NULL;02 51 67 07 00;NULL;24993;NULL;
-254029;FX;HCL;D;85 LES HERBIE;NULL;NULL;0 ;NULL;24993;NULL;
-254030;FX;CHAUSSON TRIALIS ST VALLIER;NULL;26 ST VALLIER;NULL;NULL;04 75 23 13 37;NULL;24995;NULL;
-254031;FX;CHAUSSON TRIALIS ST VALLIER;NULL;26 ST VALLIER;NULL;NULL;04 75 23 13 37;jean.bouchet(a)chausson-materiaux.fr;24995;NULL;
-254032;FX;LEJOLLY GEORGES 4178;NULL;50 CREANCES;NULL;NULL;02 33 46 29 91;NULL;25008;NULL;
-254033;FX;STORES SERVISYSTEM;B;CH 1258 PERLY;NULL;NULL;412 27 71 03 73;storesservisustem(a)bluewin.ch;25011;NULL;
-254034;FX;STORES SERVISYSTEM;B;CH 1258 PERLY;NULL;NULL;412 27 71 03 73;NULL;25011;NULL;
-254035;FX;AUSUD;NULL;84 ORANGE;NULL;NULL;04 90 51 03 83;NULL;25019;NULL;
-254036;FX;CHB MIROITERIE;A;47 NERAC;NULL;NULL;05 53 65 79 31;NULL;25022;NULL;
-254037;FX;MAZILLER GUY;A;01 ST DIDIER;NULL;NULL;04 74 04 95 62;NULL;25025;NULL;
-254038;FX;ARCH;A;34 PORTIRAGNE;NULL;NULL;04 67 01 62 08;sarlarch(a)aol.com;25038;NULL;
-254039;FX;MIROITERIE DE L'OUEST ARMORIQU;A;56 CAUDAN;NULL;NULL;02 97 76 78 44;NULL;25039;NULL;
-254040;FX;MIROITERIE DE L'OUEST ARMORIQU;A;56 CAUDAN;NULL;NULL;02 97 76 86 68;NULL;25039;NULL;
-254041;FX;ALPASER;B;74 LA ROCHE S;NULL;NULL;04 50 25 82 75;NULL;25042;NULL;
-254042;FX;COMPTOIR EQUIPE BAIE 5100;A;94 CACHAN;NULL;NULL;01 45 46 11 30;NULL;25043;NULL;
-254043;FX;HELP BRETAGNE - GOURVEN JACQUE;NULL;29 ROSPORDEN;NULL;NULL;02 98 57 82 98;NULL;25049;NULL;
-254044;FX;ICDS 4743;NULL;50 COUVAINS;NULL;NULL;02 33 57 53 43;NULL;25050;NULL;
-254045;FX;MELIN R. MATERIAUX LE BLANC;NULL;36 LE BLANC;NULL;NULL;02 54 37 85 16;NULL;25064;NULL;
-254046;FX;MARTINEZ FRERES;A;47 VILLENEUVE;NULL;NULL;05 53 01 29 70;NULL;25069;NULL;
-254047;FX;LADENBURGER;A;57 STE BARBE;NULL;NULL;03 87 76 88 59;ladenburger.gilles(a)wanadoo.fr;25071;NULL;
-254048;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 69 83 03 80;NULL;25073;NULL;
-254049;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 64 54 38 51;NULL;25073;NULL;
-254050;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 69 28 73 17;pointp-lesulis-menuiserie(a)saint-gobain.com;25073;NULL;
-254051;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 34 50 58 68;NULL;25073;NULL;
-254052;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 69 17 13 89;NULL;25073;NULL;
-254053;FX;CHAVIGNY ST DENIS;A+;28 ST DENIS L;NULL;NULL;0 ;stdenis.menuiseries(a)groupechavigny.fr;25078;NULL;
-254054;FX;CHAVIGNY ST DENIS;A+;28 ST DENIS L;NULL;NULL;02 37 44 54 85;NULL;25078;NULL;
-254055;FX;JAERLING MARC;B;LU 50 PETANGE;NULL;NULL;352 23 65 02 86;NULL;25079;NULL;
-254056;FX;FERIAUD;A;77 TOURNAN EN;NULL;NULL;01 64 25 34 88;NULL;25082;NULL;
-254057;FX;METAL OUDEAU;A;41 SAINT LAUR;NULL;NULL;02 54 87 06 70;NULL;25089;NULL;
-254058;FX;MURAT FRERES;A;24 BOULAZAC;NULL;NULL;0 ;NULL;25093;NULL;
-254059;FX;PAPON ERIC;A;19 USSEL;NULL;NULL;05 55 72 50 47;NULL;25096;NULL;
-254060;FX;LAMY 4651;NULL;72 SABLE;NULL;NULL;02 43 95 70 43;NULL;25109;NULL;
-254061;FX;AERO STORES 4598;NULL;31 BLAGNAC;NULL;NULL;05 61 71 88 14;NULL;25110;NULL;
-254062;FX;GAVARD ERIC;B;74 MARCELLAZ;NULL;NULL;04 50 31 11 90;NULL;25138;NULL;
-254063;FX;STE DE DIFFUSION DE FRANCHISES;A;31 TOULOUSE;NULL;NULL;05 61 25 24 14;NULL;25146;NULL;
-254064;FX;GTB CONSTRUCTION;A;35 RENNES;NULL;NULL;02 99 41 85 86;NULL;25156;NULL;
-254065;FX;LAVISSE DIDIER;A;94 CHOISY LE;NULL;NULL;01 48 92 04 29;NULL;25157;NULL;
-254066;FX;ALU CONCEPT;B;42 BONSON;NULL;NULL;04 77 55 10 02;NULL;25161;NULL;
-254067;FX;ALU BELLA STORES;A;13 SEPTEMES L;NULL;NULL;04 91 09 74 51;contact(a)alubellestores.fr;25163;NULL;
-254068;FX;ALU BELLA STORES;A;13 SEPTEMES L;NULL;NULL;04 91 51 92 15;NULL;25163;NULL;
-254069;FX;LYON STORES;D;69 BRON;NULL;NULL;04 72 37 03 48;NULL;25168;NULL;
-254070;FX;GUILLOUX MATERIAUX;A;50 SARTILLY;NULL;NULL;02 33 89 29 28;NULL;25191;NULL;
-254071;FX;ALU 24;A+;24 BOULAZAC;NULL;NULL;05 53 08 02 92;NULL;25193;NULL;
-254072;FX;AM3 NOUVELLE DIMENSION RJ;A;79 NIORT CEDE;NULL;NULL;05 49 79 00 90;am3nd79(a)wanadoo.fr;25195;NULL;
-254073;FX;AM3 NOUVELLE DIMENSION RJ;A;79 NIORT CEDE;NULL;NULL;05 49 79 00 90;NULL;25195;NULL;
-254074;FX;ATD (AGENCEMENT DECORAT.);B;97 KOUROU CED;NULL;NULL;05 94 32 54 10;yannick.atd(a)wanadoo.fr;25204;NULL;
-254075;FX;ATD (AGENCEMENT DECORAT.);B;97 KOUROU CED;NULL;NULL;0 ;NULL;25204;NULL;
-254076;FX;ATD (AGENCEMENT DECORAT.);B;97 KOUROU CED;NULL;NULL;05 94 32 54 10;atd.sarl(a)wanadoo.fr;25204;NULL;
-254077;FX;LAMY DANIEL;NULL;35 MONTREUIL;NULL;NULL;02 99 74 64 48;NULL;25205;NULL;
-254078;FX;MEROLLI;B;73 AIX LES BA;NULL;NULL;04 79 35 12 44;NULL;25209;NULL;
-254079;FX;MEROLLI;B;73 AIX LES BA;NULL;NULL;04 79 35 12 44;selleriemerolli(a)wanadoo.fr;25209;NULL;
-254080;FX;LOUVET MARC;A;11 TREZIERS;NULL;NULL;04 68 69 57 12;NULL;25216;NULL;
-254081;FX;MATEOS;A;45 ST JEAN DE;NULL;NULL;02 38 43 75 08;NULL;25226;NULL;
-254082;FX;TOULOUSAINE DE MIROITERIE;A;31 PLAISANCE;NULL;NULL;05 62 74 12 56;NULL;25234;NULL;
-254083;FX;ZIEGLER ETS;A;22 GRACES;NULL;NULL;02 96 40 15 61;NULL;25238;NULL;
-254084;FX;CAZENAVE;A;64 BAYONNE;NULL;NULL;05 59 50 37 39;NULL;25239;NULL;
-254085;FX;KHEOPS GUERIN;A;28 LEVES;NULL;NULL;02 37 36 50 90;NULL;25250;NULL;
-254086;FX;FALHER JEAN YVES;B;22 ROSTRENEN;NULL;NULL;0 ;NULL;25255;NULL;
-254087;FX;FALHER JEAN YVES;B;22 ROSTRENEN;NULL;NULL;02 96 24 28 63;NULL;25255;NULL;
-254088;FX;LES ARTISANS DU STORE;A;94 IVRY SUR S;NULL;NULL;01 46 71 21 22;jeanmichel.soussen(a)libertysurf.fr;25270;NULL;
-254089;FX;LES ARTISANS DU STORE;A;94 IVRY SUR S;NULL;NULL;01 46 71 21 22;NULL;25270;NULL;
-254090;FX;OJC DIFFUSION;A+;02 SAINT QUEN;NULL;NULL;03 23 67 11 09;ojc.accueil(a)orange.fr;25271;NULL;
-254091;FX;OJC DIFFUSION;A+;02 SAINT QUEN;NULL;NULL;03 23 67 11 09;NULL;25271;NULL;
-254092;FX;POINT P NOYON;D;60 NOYON;NULL;NULL;03 29 80 21 75;michele.falala(a)saint-gobain.com;25274;NULL;
-254093;FX;POINT P NOYON;D;60 NOYON;NULL;NULL;03 44 09 44 49;NULL;25274;NULL;
-254094;FX;MELIN MATERIAUX DUN;NULL;18 DUN;NULL;NULL;02 48 59 84 14;NULL;25282;NULL;
-254095;FX;APE;A;09 LAROQUE D';NULL;NULL;05 61 01 18 81;NULL;25287;NULL;
-254096;FX;ANBM ACCUEIL NEGOCE BOIS MAT;D;56 HENNEBONT;NULL;NULL;02 97 36 22 32;NULL;25290;NULL;
-254097;FX;ANBM ACCUEIL NEGOCE BOIS MAT;D;56 HENNEBONT;NULL;NULL;02 97 85 04 76;NULL;25290;NULL;
-254098;FX;VAURY ANDRE;A;45 VILLEMANDE;NULL;NULL;02 38 85 01 22;NULL;25294;NULL;
-254099;FX;GESSON JEAN CLAUDE;A;24 NONTRON;NULL;NULL;0 ;jc.gesson6(a)orange.fr;25303;NULL;
-254100;FX;GESSON JEAN CLAUDE;A;24 NONTRON;NULL;NULL;0 ;NULL;25303;NULL;
-254101;FX;CDM AVALLON;B;89 AVALLON;NULL;NULL;03 86 34 04 46;NULL;25304;NULL;
-254102;FX;DBF ENTREPRISES;A;78 Vernouille;NULL;NULL;01á77101659;dbf.entreprises(a)laposte.net;25307;NULL;
-254103;FX;SILVESTRI NICOLA;A;75 PARIS;NULL;NULL;01 43 21 73 61;NULL;25310;NULL;
-254104;FX;VESSIER ALAIN;A;29 FOUESNANT;NULL;NULL;02 98 56 24 93;NULL;25319;NULL;
-254105;FX;NUPIED CHRISTOPHE SARL;A;35 ARBRISSEL;NULL;NULL;02 99 96 46 24;NULL;25322;NULL;
-254106;FX;PETTIER;A;35 FOUGERES;NULL;NULL;02 99 94 08 73;infos(a)pettier.fr;25333;NULL;
-254107;FX;PETTIER;A;35 FOUGERES;NULL;NULL;02 99 94 08 73;NULL;25333;NULL;
-254108;FX;DORNE PIERRE;A+;26 VALENCE;NULL;NULL;04 75 42 73 18;NULL;25335;NULL;
-254109;FX;DORNE PIERRE;A+;26 VALENCE;NULL;NULL;04 75 43 44 21;sarl.dorne(a)dorne-menuiserie.com;25335;NULL;
-254110;FX;ALUPLAN;A+;31 CUGNAUX;NULL;NULL;05 62 87 32 60;NULL;25337;NULL;
-254111;FX;LORMEAU MICKAEL;A;44 COUERON;NULL;NULL;02 40 63 09 62;NULL;25338;NULL;
-254112;FX;CYB STORE;NULL;92 GENNEVILLI;NULL;NULL;01 40 85 42 23;claire.duvigneau(a)cybstores.com;25343;NULL;
-254113;FX;CYB STORE;NULL;92 GENNEVILLI;NULL;NULL;01 40 85 42 23;NULL;25343;NULL;
-254114;FX;CYB STORE;NULL;92 GENNEVILLI;NULL;NULL;01 40 85 42 23;vomscheid(a)cybstores.com;25343;NULL;
-254115;FX;CODICOM LM DECOR;A;56 AURAY;NULL;NULL;02 97 24 20 20;NULL;25345;NULL;
-254116;FX;SERRURERIE DES BUCLOS;A+;38 MEYLAN;NULL;NULL;04 76 90 16 18;muglia.buclos(a)wanadoo.fr;25346;NULL;
-254117;FX;SERRURERIE DES BUCLOS;A+;38 MEYLAN;NULL;NULL;04 76 90 16 18;NULL;25346;NULL;
-254118;FX;ALPHA BAIE ARIEGE 4908;A;09 PAMIERS;NULL;NULL;05 61 60 51 02;NULL;25348;NULL;
-254119;FX;ATELIERS EJARQUE SARL;B;73 CHALLES LE;NULL;NULL;04 79 72 79 62;forge(a)ejarque.pro;25351;NULL;
-254120;FX;ATELIERS EJARQUE SARL;B;73 CHALLES LE;NULL;NULL;04 79 72 79 62;serrurerie(a)ejarque.pro;25351;NULL;
-254121;FX;ATELIERS EJARQUE SARL;B;73 CHALLES LE;NULL;NULL;04 79 72 79 62;automatismes(a)ejarque.pro;25351;NULL;
-254122;FX;PROMOSTORE CONFORT;A;06 NICE;NULL;NULL;04 92 07 07 46;NULL;25353;NULL;
-254123;FX;SOLISO EUROPE;NULL;44 NANTES CED;NULL;NULL;02 40 93 06 72;NULL;25360;NULL;
-254124;FX;ESPINOS ROY 4243;NULL;13 MARSEILLE;NULL;NULL;04 91 66 95 45;NULL;25361;NULL;
-254125;FX;PACARY YVES - PRO VOLETS;A;34 Villeveyra;NULL;NULL;04 67 78 19 25;NULL;25362;NULL;
-254126;FX;GOUPIL JEAN SEBASTIEN;B;73 MERY;NULL;NULL;04 79 61 24 95;volets-goupil(a)hotmail.fr;25370;NULL;
-254127;FX;FERMETURES FERTOISES;NULL;72 CHERRE;NULL;NULL;0 ;NULL;25371;NULL;
-254128;FX;SOPRAL 06;B;06 ANTIBES;NULL;NULL;04 97 21 12 80;NULL;25375;NULL;
-254129;FX;ROLL STORES;A;94 IVRY SUR S;NULL;NULL;01 46 70 07 99;NULL;25387;NULL;
-254130;FX;EGL;A;13 LAMBESC;NULL;NULL;04 42 92 88 57;NULL;25388;NULL;
-254131;FX;ROUVRES & PLEINTEL;D;14 DIVES SUR;NULL;NULL;02 31 91 42 18;NULL;25396;NULL;
-254132;FX;AMB;A;91 VILLEMOISS;NULL;NULL;01 60 16 05 31;NULL;25413;NULL;
-254133;FX;BURLET ETS;D;43 SÚauve-sur;NULL;NULL;0 ;NULL;25418;NULL;
-254134;FX;BURLET ETS;D;43 SÚauve-sur;NULL;NULL;04 77 74 59 72;NULL;25418;NULL;
-254135;FX;PLURISOL;A;76 GRAND QUEV;NULL;NULL;02 35 68 03 38;r.lamy(a)plurisol.com;25421;NULL;
-254136;FX;PLURISOL;A;76 GRAND QUEV;NULL;NULL;02 35 97 16 27;NULL;25421;NULL;
-254137;FX;PLURISOL;A;76 GRAND QUEV;NULL;NULL;02 35 68 03 38;NULL;25421;NULL;
-254138;FX;DESILLES ALAIN;D;35 NOUVOITOU;NULL;NULL;02 99 37 56 39;eurl.desilles(a)orange.fr;25432;NULL;
-254139;FX;ALUVER;NULL;22 PORDIC;NULL;NULL;02 96 79 30 63;NULL;25433;NULL;
-254140;FX;MIROITERIE SEMIS RJ;A;31 TOULOUSE;NULL;NULL;05 62 47 58 01;NULL;25434;NULL;
-254141;FX;OGUEY;B;38 LE VERSOUD;NULL;NULL;04 76 77 36 44;NULL;25440;NULL;
-254142;FX;LVS INDUSTRIE;NULL;91 VIGNEUX SU;NULL;NULL;01 69 52 36 36;NULL;25447;NULL;
-254143;FX;FENETRES BOURLET;A;78 LE PECQ;NULL;NULL;01 39 14 20 25;NULL;25453;NULL;
-254144;FX;LES INTERIEURS DE ROBIEN;A+;35 RENNES;NULL;NULL;02 99 27 06 07;NULL;25462;NULL;
-254145;FX;RACINE C. ESPACE STORES FERMET;A;93 DRANCY;NULL;NULL;01 48 31 19 38;valentino117(a)voila.fr;25466;NULL;
-254146;FX;CAYEUX SOCIETE EXPLOITATION;A;76 LE PETIT Q;NULL;NULL;02 35 72 60 46;NULL;25470;NULL;
-254147;FX;ALUTEC;A;82 MONTAUBAN;NULL;NULL;05 63 20 17 92;NULL;25476;NULL;
-254148;FX;FOGLIA ABP;A;94 VINCENNES;NULL;NULL;01 43 98 15 04;NULL;25484;NULL;
-254149;FX;CHAUSSON TRIALIS DAVEZIEUX;NULL;07 DAVEZIEUX;NULL;NULL;04 75 67 79 45;NULL;25485;NULL;
-254150;FX;BAVOYSI TOLERIE INDUSTRIELLE;A;39 CHAMPAGNOL;NULL;NULL;03 84 52 12 96;NULL;25491;NULL;
-254151;FX;PLANTIER PATRICK;A+;69 AMPLEPUIS;NULL;NULL;04 74 89 28 46;NULL;25492;NULL;
-254152;FX;JPG GRANDJEAN JEAN PIERRE;B;38 VILLEFONTA;NULL;NULL;04 74 96 01 24;j-p-g-sarl509(a)orange.fr;25504;NULL;
-254153;FX;BIG MAT CHAMIGNON;B;03 LURCY LEVI;NULL;NULL;04 70 67 35 55;NULL;25510;NULL;
-254154;FX;MAUREL AGM;A;83 TOULON;NULL;NULL;0 ;gilbert.maurel(a)live.fr;25529;NULL;
-254155;FX;DERLET;A;57 AUDUN LE T;NULL;NULL;03 82 52 21 50;NULL;25532;NULL;
-254156;FX;MONDIAL STORES;A;38 RUY;NULL;NULL;04 74 93 07 19;NULL;25533;NULL;
-254157;FX;ARTHUS;NULL;92 LEVALLOIS;NULL;NULL;01 47 58 08 76;NULL;25551;NULL;
-254158;FX;DAUPHINE STORES;D;38 ST EGREVE;NULL;NULL;04 76 75 49 17;NULL;25568;NULL;
-254159;FX;RATINEAU;A;87 EYMOUTIERS;NULL;NULL;05 55 69 29 30;NULL;25571;NULL;
-254160;FX;FLAMANT SYLVAIN;D;24 MUSSIDAN;NULL;NULL;05 53 80 16 43;NULL;25572;NULL;
-254161;FX;BATIFINI 303107;A;34 ST AUNES;NULL;NULL;04 67 59 24 78;NULL;25578;NULL;
-254162;FX;CL DIVERS PNE F. CHEVAL;NULL;91 P;NULL;NULL;0 ;NULL;25581;NULL;
-254163;FX;CL DIVERS PNE F. CHEVAL;NULL;91 P;NULL;NULL;0.......;NULL;25581;NULL;
-254164;FX;JEANTO;A;69 LYON;NULL;NULL;04 78 69 86 81;NULL;25585;NULL;
-254165;FX;MELIN CHATILLON SUR INDRE;NULL;36 CHATILLON;NULL;NULL;02 54 38 90 76;NULL;25588;NULL;
-254166;FX;GOULET GERARD;A+;41 NEUNG SUR;NULL;NULL;02 54 83 75 41;NULL;25592;NULL;
-254167;FX;MATERIAUX SERVICE;NULL;77 VARENNES S;NULL;NULL;01 60 73 50 33;NULL;25608;NULL;
-254168;FX;MAYTOP ISO 45;NULL;45 FLEURY LES;NULL;NULL;02 38 83 97 48;NULL;25609;NULL;
-254169;FX;CL DIVERS PNE V. VALOGGIA;A;94 P;NULL;NULL;0 ;NULL;25634;NULL;
-254170;FX;SAEB;A+;03 ABREST;NULL;NULL;04 70 98 50 07;NULL;25637;NULL;
-254171;FX;SAEB;A+;03 ABREST;NULL;NULL;04á70á985007;NULL;25637;NULL;
-254172;FX;COLLIN;A;95 SANNOIS;NULL;NULL;01 34 11 16 85;NULL;25641;NULL;
-254173;FX;EYMARD DANIEL;A;24 CHAMPS ROM;NULL;NULL;05 53 56 84 56;NULL;25642;NULL;
-254174;FX;LA MAISON DU STORE;A;01 MIRIBEL;NULL;NULL;04 72 77 91 75;NULL;25651;NULL;
-254175;FX;STOPSOLAR 4569;NULL;31 TOULOUSE C;NULL;NULL;05 61 76 15 14;NULL;25661;NULL;
-254176;FX;STYL DECOR;A+;26 PIERRELATT;NULL;NULL;09 72 33 29 91;info(a)styl-decor.fr;25666;NULL;
-254177;FX;ALLIER STORES FERMETURES;A+;03 CHARMEIL;NULL;NULL;04 70 32 85 43;NULL;25670;NULL;
-254178;FX;ALLIER STORES FERMETURES;A+;03 CHARMEIL;NULL;NULL;0 ;NULL;25670;NULL;
-254179;FX;ALLIER STORES FERMETURES;A+;03 CHARMEIL;NULL;NULL;0 ;thierry.marolles(a)orange.fr;25670;NULL;
-254180;FX;APB MENUISERIE 5068;A+;55 VASSINCOUR;NULL;NULL;03 29 78 51 11;NULL;25674;NULL;
-254181;FX;SERRE MENUISERIE MIROIT;B;13 VELAUX;NULL;NULL;04 42 87 42 92;NULL;25684;NULL;
-254182;FX;VERALIA;A+;30 MARGUERITE;NULL;NULL;04 66 75 26 40;NULL;25685;NULL;
-254183;FX;LERT MENUISERIE;A+;26 ST RESTITU;NULL;NULL;04 75 04 57 04;NULL;25699;NULL;
-254184;FX;S3M ROBERT;A+;92 MALAKOFF;NULL;NULL;01 42 53 95 08;NULL;25701;NULL;
-254185;FX;MVA;D;35 LE RHEU;NULL;NULL;02 99 14 95 29;NULL;25703;NULL;
-254186;FX;CIVEL ERIC;NULL;44 PREFAILLES;NULL;NULL;02 40 64 51 11;NULL;25706;NULL;
-254187;FX;MEGNIEN BMO CHATELLERAULT;NULL;86 CHATELLERA;NULL;NULL;05 49 21 09 21;NULL;25708;NULL;
-254188;FX;EURO VERRE 4610;NULL;63 MOZAC;NULL;NULL;04 73 74 48 71;NULL;25730;NULL;
-254189;FX;LALLIARD BOIS ET DERIVES;A;74 SAINT PIER;NULL;NULL;04 50 03 87 77;NULL;25737;NULL;
-254190;FX;LAMY DANIEL;A;85 MONTAIGU;NULL;NULL;02 51 94 19 62;NULL;25762;NULL;
-254191;FX;AMS;A+;03 AVERMES;NULL;NULL;04 70 46 75 65;NULL;25763;NULL;
-254192;FX;AMS;A+;03 AVERMES;NULL;NULL;0 ;NULL;25763;NULL;
-254193;FX;AMS;A+;03 AVERMES;NULL;NULL;04 70 46 75 65;cb(a)ams-morette.com;25763;NULL;
-254194;FX;AMS;A+;03 AVERMES;NULL;NULL;0 ;hfrancois(a)ams-morette.com;25763;NULL;
-254195;FX;AMS;A+;03 AVERMES;NULL;NULL;04 70 46 75 65;jm(a)ams-morette.com;25763;NULL;
-254196;FX;AMS;A+;03 AVERMES;NULL;NULL;0 ;NULL;25763;NULL;
-254197;FX;APPIANO J.;A;72 RUAUDIN;NULL;NULL;02 43 75 79 43;appiano(a)wanadoo.fr;25767;NULL;
-254198;FX;ECPM;A+;26 LA ROCHE D;NULL;NULL;04 75 84 76 43;NULL;25768;NULL;
-254199;FX;ADM 4420;NULL;79 ST PARDOUX;NULL;NULL;05 49 63 45 57;NULL;25772;NULL;
-254200;FX;PAVEC CONSTRUCTIONS;A+;29 QUIMPERLE;NULL;NULL;02 98 96 19 83;NULL;25788;NULL;
-254201;FX;DUPRE DANIEL;A;57 METZING;NULL;NULL;0 ;NULL;25789;NULL;
-254202;FX;MORENO MARIANO;A;69 DECINES;NULL;NULL;04 72 02 05 79;NULL;25794;NULL;
-254203;FX;BERGE GILBERT;A;45 FLEURY LES;NULL;NULL;02 38 86 31 98;NULL;25808;NULL;
-254204;FX;COMPTOIR FORESTIER;A;45 MONTARGIS;NULL;NULL;02 38 99 02 25;NULL;25813;NULL;
-254205;FX;COMPTOIR FORESTIER;A;45 MONTARGIS;NULL;NULL;02 38 99 02 25;jpluter(a)comptoirforestier.com;25813;NULL;
-254206;FX;LARMOIRE ERIC;D;14 CROISSANVI;NULL;NULL;02 31 23 82 47;NULL;25814;NULL;
-254207;FX;LAMBERT - TOUT FAIRE;A;72 MAYET;NULL;NULL;02 43 46 05 57;NULL;25824;NULL;
-254208;FX;CHAUVET;B;63 LEZOUX;NULL;NULL;04 73 73 12 48;NULL;25827;NULL;
-254209;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;22 ST BRIEUC;NULL;NULL;02 96 68 22 67;NULL;25830;NULL;
-254210;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;22 ST BRIEUC;NULL;NULL;02 96 33 59 41;NULL;25830;NULL;
-254211;FX;MTM;D;37 MONTS;NULL;NULL;02 47 26 71 84;mtm.vilhem-fouquet(a)wanadoo.fr;25848;NULL;
-254212;FX;OXXO;A;71 CLUNY;NULL;NULL;04 72 52 37 30;NULL;25849;NULL;
-254213;FX;BATI ALU;A+;63 ST BONNET;NULL;NULL;04 73 63 31 39;NULL;25854;NULL;
-254214;FX;BATI ALU;A+;63 ST BONNET;NULL;NULL;04 73 63 31 39;bati.alu(a)wanadoo.fr;25854;NULL;
-254215;FX;M3C COURTOIS 4484;NULL;02 SAINT QUEN;NULL;NULL;03 23 51 06 22;NULL;25856;NULL;
-254216;FX;MONTBOYER METAL;A+;16 MONTBOYER;NULL;NULL;05 45 98 40 32;NULL;25859;NULL;
-254217;FX;PHILIPP FRERES;A+;68 COLMAR;NULL;NULL;03 89 27 46 65;NULL;25877;NULL;
-254218;FX;BOTON REGIS;A;79 MONCOUTANT;NULL;NULL;0 ;NULL;25892;NULL;
-254219;FX;CODI;A;35 RENNES;NULL;NULL;02 99 84 08 12;NULL;25894;NULL;
-254220;FX;LECOMTE HIVET;A;76 ROUEN;NULL;NULL;02 35 72 95 75;NULL;25900;NULL;
-254221;FX;BASCOULERGUE PIERRE;A;18 BOURGES;NULL;NULL;02 48 65 93 15;NULL;25909;NULL;
-254222;FX;ALUMINIUM PYRENEES;A;31 ST ALBAN;NULL;NULL;05 61 09 54 92;NULL;25913;NULL;
-254223;FX;RESEAU PRO CANTRELLE ABBEVILLE;NULL;80 ABBEVILLE;NULL;NULL;03 22 20 79 78;NULL;25915;NULL;
-254224;FX;BRIARD JC SOCIETE;D;95 Ermont;NULL;NULL;01 60 60 87 50;NULL;25920;NULL;
-254225;FX;BRIARD JC SOCIETE;D;95 Ermont;NULL;NULL;01 39 95 74 47;NULL;25920;NULL;
-254226;FX;CBC;NULL;83 TOULON CED;NULL;NULL;04 94 08 83 84;NULL;25928;NULL;
-254227;FX;AIME FORMOSA;A;13 MARSEILLE;NULL;NULL;04 91 95 94 73;NULL;25931;NULL;
-254228;FX;NORMANDIE BAIE 4217;NULL;14 IFS;NULL;NULL;02 31 52 20 52;NULL;25938;NULL;
-254229;FX;STRUCTURES ESPACE LUMIERE;A+;13 MIMET;NULL;NULL;04 42 51 47 73;NULL;25954;NULL;
-254230;FX;POINT P COMAT MONTENDRE;A;17 MONTENDRE;NULL;NULL;05 46 49 23 58;NULL;25957;NULL;
-254231;FX;BONGIOVANNI CHARLES;A;13 MARSEILLE;NULL;NULL;04 91 50 56 71;NULL;25963;NULL;
-254232;FX;AP2R (AGENCEMENT PEINTURE;A+;91 SAVIGNY SU;NULL;NULL;01 69 05 55 41;NULL;25976;NULL;
-254233;FX;SAVARY STORES ET BACHES SARL;B;CH 1026 ECHAN;NULL;NULL;412 17 02 27 95;savarystores(a)urbanet.ch;25986;NULL;
-254234;FX;SFP STE FRANCAISE DE PLAFOND;A;94 MANDRES LE;NULL;NULL;01 58 08 60 15;NULL;26025;NULL;
-254235;FX;VIBRAMENAL;NULL;72 VIBRAYE;NULL;NULL;02 43 93 62 14;NULL;26034;NULL;
-254236;FX;GEDIMAT LDP CHENEL MATERI;A;76 LE HAVRE;NULL;NULL;02 35 24 17 80;NULL;26037;NULL;
-254237;FX;LE DORE BOIS ET MATERIAUX;D;56 AURAY CEDE;NULL;NULL;02 97 24 22 58;NULL;26038;NULL;
-254238;FX;MENUISERIE COURCELLES PITOIS;A;45 MARDIE;NULL;NULL;02 38 91 14 73;NULL;26049;NULL;
-254239;FX;MENUBOIS;A+;42 MABLY;NULL;NULL;04 77 70 89 34;NULL;26050;NULL;
-254240;FX;MENUBOIS;A+;42 MABLY;NULL;NULL;0 ;NULL;26050;NULL;
-254241;FX;SUREAU JEAN;A;37 STE MAURE;NULL;NULL;02 47 65 51 31;NULL;26053;NULL;
-254242;FX;EQUIP NORD 4570;NULL;59 DOUAI;NULL;NULL;03 20 88 28 63;NULL;26056;NULL;
-254243;FX;FERMOBAT SUD 4382;NULL;83 LA CADIERE;NULL;NULL;04 94 98 24 55;NULL;26063;NULL;
-254244;FX;BARTHE CHRISTIAN;A;47 NERAC;NULL;NULL;05 53 65 60 10;NULL;26069;NULL;
-254245;FX;DAUPHIN 302849;NULL;93 BONDY;NULL;NULL;01 48 50 73 01;NULL;26071;NULL;
-254246;FX;ABPSI;D;94 VARENNE SA;NULL;NULL;01 48 83 39 54;NULL;26076;NULL;
-254247;FX;MOYNET ALU;A+;79 CHAURAY;NULL;NULL;05 49 76 10 32;NULL;26087;NULL;
-254248;FX;DANE DISTRIBUTION INDUSTRIELLE;A;65 ALLIER;NULL;NULL;05 62 45 98 99;NULL;26094;NULL;
-254249;FX;ATULAM AGENCE LIMOGES;A;23 JARNAGES;NULL;NULL;05 55 33 62 90;NULL;26095;NULL;
-254250;FX;ATULAM AGENCE LIMOGES;A;23 JARNAGES;NULL;NULL;05 55 80 90 59;NULL;26095;NULL;
-254251;FX;STORES ET LOISIRS;A;69 VILLEFRANC;NULL;NULL;04 74 62 28 75;NULL;26099;NULL;
-254252;FX;PROMETAL;B;63 AMBERT;NULL;NULL;04 73 82 49 10;NULL;26100;NULL;
-254253;FX;AGAESSE MICHEL;B;35 LE RHEU;NULL;NULL;02 99 14 74 60;NULL;26101;NULL;
-254254;FX;TMV;A;38 ST EGREVE;NULL;NULL;04 76 75 82 41;NULL;26102;NULL;
-254255;FX;MIROIT. DES CHARENTES RJ;NULL;17 SAINTES;NULL;NULL;05 46 97 21 06;NULL;26103;NULL;
-254256;FX;VBF M.BISTORIN FRANCIS;A;37 ST CYR SUR;NULL;NULL;0 ;francis.bistorin(a)sfr.fr;26109;NULL;
-254257;FX;SCIERIE BOUTOLLEAU;A;85 BEAUVOIR S;NULL;NULL;02 51 49 39 79;NULL;26113;NULL;
-254258;FX;DA COSTA JOSE;A;91 BOUTIGNY S;NULL;NULL;01 64 57 84 39;NULL;26118;NULL;
-254259;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;02 43 29 16 02;j-michel(a)alubarbier.com;26123;NULL;
-254260;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;02 43 29 16 02;metreur(a)alubarbier.com;26123;NULL;
-254261;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;02 43 29 16 02;alu.barbier(a)wanadoo.fr;26123;NULL;
-254262;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;0 ;NULL;26123;NULL;
-254263;FX;LYON FENETRES;D;69 ST PRIEST;NULL;NULL;04 78 90 67 84;lyon.fenetres(a)wanadoo.fr;26129;NULL;
-254264;FX;LYON FENETRES;D;69 ST PRIEST;NULL;NULL;04 78 90 67 84;NULL;26129;NULL;
-254265;FX;MERCIER DAVID;A;88 SAINTE MAR;NULL;NULL;03 29 55 12 11;NULL;26130;NULL;
-254266;FX;ROUSSELOT LIONEL;A;77 CHEVRY COS;NULL;NULL;01 64 05 12 36;NULL;26132;NULL;
-254267;FX;POUILLARD ET FILS 999999;NULL;91 MONTGERON;NULL;NULL;01 64 08 53 14;NULL;26136;NULL;
-254268;FX;POUILLARD ET FILS 999999;NULL;91 MONTGERON;NULL;NULL;01 69 03 66 33;NULL;26136;NULL;
-254269;FX;DEL BIANCO PAOLO;A;16 COGNAC;NULL;NULL;05 45 32 38 36;NULL;26137;NULL;
-254270;FX;MIROITERIE AVIGLASS;A;84 LE PONTET;NULL;NULL;04 90 32 32 61;NULL;26145;NULL;
-254271;FX;GROLLA VERRES;A+;73 MODANE;NULL;NULL;04 79 05 13 07;NULL;26147;NULL;
-254272;FX;LABASTERE SAS;A;64 BAYONNE;NULL;NULL;05 59 50 60 11;NULL;26148;NULL;
-254273;FX;LABASTERE SAS;A;64 BAYONNE;NULL;NULL;05 59 50 60 24;NULL;26148;NULL;
-254274;FX;LABASTERE SAS;A;64 BAYONNE;NULL;NULL;05 59 55 00 45;NULL;26148;NULL;
-254275;FX;BIG MAT PAULIN;A;43 LANGEAC;NULL;NULL;04 71 02 06 76;NULL;26156;NULL;
-254276;FX;CDM BUCHERES;D;10 BUCHERES;NULL;NULL;03 25 71 20 61;NULL;26170;NULL;
-254277;FX;ARAS UVIR;NULL;69 LES CHERES;NULL;NULL;04 78 47 06 04;NULL;26171;NULL;
-254278;FX;MENTOR SOCIETE NOUVELLE;A+;83 TOULON;NULL;NULL;04 94 61 70 93;NULL;26177;NULL;
-254279;FX;CHARRIER;B;91 QUINCY S/S;NULL;NULL;01 69 39 06 57;NULL;26180;NULL;
-254280;FX;GEDIMAT SEFOR HOUILLES;A;78 HOUILLES;NULL;NULL;01 39 57 10 11;NULL;26183;NULL;
-254281;FX;AFC - AUTOMAT.FERMET.CONCEPT;D;14 BRETTEVILL;NULL;NULL;02 31 26 22 45;NULL;26184;NULL;
-254282;FX;POIROT;A;26 CLAVEYSON;NULL;NULL;04 75 68 89 25;NULL;26191;NULL;
-254283;FX;ALU BOIS CONCEPT 4899;A+;83 ROQUEBRUNE;NULL;NULL;04 94 44 05 63;NULL;26192;NULL;
-254284;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;appro(a)ecodis.fr;26200;NULL;
-254285;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;03 88 48 16 92;l.schott(a)ecodis.fr;26200;NULL;
-254286;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;j.dasilva(a)ecodis.fr;26200;NULL;
-254287;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;e.tatangelo(a)ecodis.fr;26200;NULL;
-254288;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;s.baillet(a)ecodis.fr;26200;NULL;
-254289;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 16;n.vacle(a)ecodis.fr;26200;NULL;
-254290;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;0 ;appro(a)ecodis.fr;26200;NULL;
-254291;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;0 ;fx.moreau(a)ecodis.fr;26200;NULL;
-254292;FX;MV FERMETURES 4849;NULL;93 EPINAY SUR;NULL;NULL;01 48 41 36 70;NULL;26208;NULL;
-254293;FX;PINSON JEAN MICHEL;A;45 CHUELLES;NULL;NULL;02 38 96 61 47;NULL;26212;NULL;
-254294;FX;OMNES BERNARD;A;45 CHAINGY;NULL;NULL;02 38 88 80 48;NULL;26216;NULL;
-254295;FX;CHALUMEAU MENUISERIE 302838;A;61 SAINT GERM;NULL;NULL;02 33 32 26 82;NULL;26218;NULL;
-254296;FX;CROS STORES ET FERMETURES;A;31 TOULOUSE;NULL;NULL;05 61 48 30 00;NULL;26225;NULL;
-254297;FX;GENIES;D;89 MONETEAU;NULL;NULL;03 86 42 74 73;NULL;26227;NULL;
-254298;FX;BRIAND;A;35 BEDEE;NULL;NULL;02 99 07 11 63;NULL;26243;NULL;
-254299;FX;GSB;A;35 ST GILLES;NULL;NULL;02 99 64 83 73;NULL;26251;NULL;
-254300;FX;COLOMAT;A;86 LOUDUN;NULL;NULL;05 49 98 56 29;NULL;26265;NULL;
-254301;FX;FRABOULET SARL;A+;22 TREVE;NULL;NULL;02 96 28 63 58;NULL;26280;NULL;
-254302;FX;SLC ALUFER;A;44 PORNIC;NULL;NULL;02 40 82 68 84;NULL;26285;NULL;
-254303;FX;LEBRETON MICHEL;A;49 LE LOUROUX;NULL;NULL;02 41 77 48 31;NULL;26288;NULL;
-254304;FX;BOUAISSIER PATRICE;A;35 SAINT AUBI;NULL;NULL;02 99 55 50 01;NULL;26291;NULL;
-254305;FX;ALUMINIUM CONFORT SYSTEMS;A;92 ANTONY;NULL;NULL;01 40 96 86 86;NULL;26293;NULL;
-254306;FX;GEDIMAT DATAS;A;32 SEISSAN;NULL;NULL;05 62 86 25 40;NULL;26295;NULL;
-254307;FX;RIBEAUD;A+;38 CHARAVINES;NULL;NULL;04 76 55 60 80;ribeaud.menuiserie(a)wanadoo.fr;26298;NULL;
-254308;FX;RIBEAUD;A+;38 CHARAVINES;NULL;NULL;04 76 55 60 80;NULL;26298;NULL;
-254309;FX;STORES SUD SERVICES 3S 4262;NULL;20 MEZZAVIA;NULL;NULL;04 95 10 62 60;NULL;26299;NULL;
-254310;FX;CHANTELAUZE PHILIPPE;D;63 LA FORIE;NULL;NULL;04 73 82 18 29;NULL;26303;NULL;
-254311;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;mauvertex.brigitte(a)wanadoo.fr;26304;NULL;
-254312;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;NULL;26304;NULL;
-254313;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;0 ;mauvertex.christophe(a)orange.fr;26304;NULL;
-254314;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;mauvertex.nicole(a)wanadoo.fr;26304;NULL;
-254315;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;0 ;mauvertex.paule(a)wanadoo.fr;26304;NULL;
-254316;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;0 ;mauvertex.frederic(a)wanadoo.fr;26304;NULL;
-254317;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;mauvertex.thomas(a)wanadoo.fr;26304;NULL;
-254318;FX;PAGOT SAVOIE MATERIAUX;A;39 Salins-les;NULL;NULL;03 25 32 02 08;NULL;26309;NULL;
-254319;FX;PAGOT SAVOIE MATERIAUX;A;39 Salins-les;NULL;NULL;03 84 33 47 51;morbier(a)pagot-savoie.fr;26309;NULL;
-254320;FX;PAGOT SAVOIE MATERIAUX;A;39 Salins-les;NULL;NULL;03 84 71 87 02;NULL;26309;NULL;
-254321;FX;VMA (VITRERIE MIROITERIE;A+;74 CRANVES SA;NULL;NULL;04 50 36 76 32;NULL;26318;NULL;
-254322;FX;CALIFORNIA STORES 302864;NULL;CH 1024 ECUBL;NULL;NULL;412 16 91 54 15;NULL;26321;NULL;
-254323;FX;CALIFORNIA STORES 302864;NULL;CH 1024 ECUBL;NULL;NULL;02 16 91 54 15;NULL;26321;NULL;
-254324;FX;PERRET;D;69 CHASSIEU;NULL;NULL;04 72 13 35 25;NULL;26326;NULL;
-254325;FX;PERRET;D;69 CHASSIEU;NULL;NULL;04 72 13 35 25;eric(a)passionbois.com;26326;NULL;
-254326;FX;GILBERT DIDIER;A;45 SAINT JEAN;NULL;NULL;02 38 75 08 45;NULL;26335;NULL;
-254327;FX;METALAG 5051;A+;72 LOUE;NULL;NULL;02 43 88 62 00;NULL;26337;NULL;
-254328;FX;INVERSIONES MARTINICA SA;NULL;CO I;NULL;NULL;0 ;NULL;26339;NULL;
-254329;FX;EMG STORES;A+;68 HESINGUE;NULL;NULL;03 89 69 57 00;ferraro-marcello(a)hotmail.fr;26343;NULL;
-254330;FX;EMG STORES;A+;68 HESINGUE;NULL;NULL;03 89 69 57 00;NULL;26343;NULL;
-254331;FX;EMG STORES;A+;68 HESINGUE;NULL;NULL;03 89 69 57 00;stores.emg2(a)wanadoo.fr;26343;NULL;
-254332;FX;LALANDE LIONEL - DIS.PRO.BAT;A+;70 RIOZ;NULL;NULL;03 84 91 73 43;NULL;26344;NULL;
-254333;FX;ARCARENOV;A+;93 NOISY LE S;NULL;NULL;01 48 10 97 62;NULL;26349;NULL;
-254334;FX;KREMBEL RAYMOND;A;68 DANNEMARIE;NULL;NULL;03 89 25 17 29;NULL;26354;NULL;
-254335;FX;EGELIS;A;93 BAGNOLET;NULL;NULL;01 43 02 05 80;NULL;26357;NULL;
-254336;FX;SAINT AMAND MATERIAUX GEDIMAT;NULL;18 SAINT AMAN;NULL;NULL;02 48 96 14 07;NULL;26359;NULL;
-254337;FX;POL AGRET;A;63 CLERMONT F;NULL;NULL;04 73 90 92 79;NULL;26363;NULL;
-254338;FX;ALPHA ALUMINIUM;A;13 MARSEILLE;NULL;NULL;04 91 70 94 14;NULL;26367;NULL;
-254339;FX;ARZEL;A;02 CHATEAU TH;NULL;NULL;03 23 83 01 00;NULL;26377;NULL;
-254340;FX;ARZEL;A;02 CHATEAU TH;NULL;NULL;03 23 83 01 00;arzel(a)arzel.fr;26377;NULL;
-254341;FX;THEVENET JEAN;B;38 ST CLAIR D;NULL;NULL;04 74 97 15 15;NULL;26380;NULL;
-254342;FX;FERMETURES MORATIN;A+;93 ROMAINVILL;NULL;NULL;01 48 45 70 81;NULL;26385;NULL;
-254343;FX;CHARDON PATRICK;A;18 BOURGES;NULL;NULL;02 48 25 95 54;NULL;26388;NULL;
-254344;FX;POULIN PATRICE;A;45 SARAN;NULL;NULL;02 38 65 93 94;NULL;26391;NULL;
-254345;FX;COGECEM SAS;A;45 ST JEAN DE;NULL;NULL;02 38 88 77 06;NULL;26394;NULL;
-254346;FX;POINT P BMSO PERIGUEUX;A+;24 PERIGUEUX;NULL;NULL;05 53 54 69 18;NULL;26401;NULL;
-254347;FX;INTER STORE;A+;68 HABSHEIM;NULL;NULL;03 89 31 86 49;NULL;26404;NULL;
-254348;FX;BACHIMONT;A;28 TOURY;NULL;NULL;02 37 90 55 90;NULL;26409;NULL;
-254349;FX;HARMONIE DECOR STE NELLE;B;73 CHALLES LE;NULL;NULL;04 79 72 76 36;NULL;26414;NULL;
-254350;FX;BORELLA VOGUE DECORATION;B;CH 1207 GENEV;NULL;NULL;412 27 00 16 75;borellavoguedeco(a)bluewin.ch;26415;NULL;
-254351;FX;PHILIPPI CAB;A+;67 OBERNAI;NULL;NULL;03 88 95 06 65;NULL;26417;NULL;
-254352;FX;DELAHAYES JEAN PAUL;A+;35 BECHEREL;NULL;NULL;02 99 66 77 98;NULL;26423;NULL;
-254353;FX;PERRAUD ANCIENS ETS.;A;44 BOUGUENAIS;NULL;NULL;02 51 70 64 65;ae.perraud(a)wanadoo.fr;26426;NULL;
-254354;FX;FRANCHET (STE NOUVELLE) 5049;A+;37 CHAMBRAY L;NULL;NULL;0 ;NULL;26429;NULL;
-254355;FX;RENOV BAIE (BAIE RENOVEES 4581;NULL;92 LEVALLOIS;NULL;NULL;01 47 57 80 65;NULL;26431;NULL;
-254356;FX;AMA ATELIER;A;41 ROMORANTIN;NULL;NULL;02 54 76 50 07;NULL;26432;NULL;
-254357;FX;HEURTEBIZE ETS LA ROCHE STORE;A+;16 LA ROCHEFO;NULL;NULL;05 45 62 15 19;NULL;26433;NULL;
-254358;FX;PREVOT SAS;A;24 BERGERAC;NULL;NULL;05 53 57 65 02;NULL;26448;NULL;
-254359;FX;GUILLEMOT MENUISERIE;B;89 CHEMILLY S;NULL;NULL;03 86 40 11 20;NULL;26454;NULL;
-254360;FX;GEDIMAT TERRAL;A;81 LACAUNE;NULL;NULL;05 63 37 11 10;NULL;26455;NULL;
-254361;FX;CUBIZOLLES;A;15 MASSIAC;NULL;NULL;04 71 23 04 25;NULL;26458;NULL;
-254362;FX;NICOLAU FRERES;A;66 BANUYLS SU;NULL;NULL;04 68 88 19 92;NULL;26462;NULL;
-254363;FX;DURIEUX 4332;NULL;92 CHATENAY M;NULL;NULL;01 46 32 97 71;NULL;26464;NULL;
-254364;FX;RASPAUD XAVIER - REV STORES;A+;38 VEYSSILIEU;NULL;NULL;0 ;xavier.raspaud(a)wanadoo.fr;26466;NULL;
-254365;FX;CAMPS 4760;A;64 COARRAZE;NULL;NULL;05 59 61 24 88;NULL;26475;NULL;
-254366;FX;BRENNER-LOEGEL CLAUDE;A;14 MAIZIERES;NULL;NULL;02 31 90 08 01;NULL;26479;NULL;
-254367;FX;CROSET HERVE;B;74 ANNECY LE;NULL;NULL;04 50 23 63 98;NULL;26488;NULL;
-254368;FX;BOUSQUET;A;34 LA GRANDE;NULL;NULL;04 67 56 37 80;NULL;26491;NULL;
-254369;FX;RENOV'HABITAT;NULL;50 LA HAYE DU;NULL;NULL;02 33 45 60 05;NULL;26498;NULL;
-254370;FX;LYON SOLS - M. COUSSEIROUX;A;69 LYON;NULL;NULL;04 78 29 06 24;NULL;26512;NULL;
-254371;FX;APE ENSEIGNES;A;42 BONSON;NULL;NULL;04 77 41 06 01;NULL;26522;NULL;
-254372;FX;NORD MENUISERIE DIFFUSION;NULL;59 FEIGNIES;NULL;NULL;03 27 62 54 35;NULL;26528;NULL;
-254373;FX;ATELIER DE METALLERIE;A;92 VANVES CED;NULL;NULL;01 46 44 16 50;NULL;26543;NULL;
-254374;FX;MONTEIL BRUNO;D;86 ST GERVAIS;NULL;NULL;05 49 23 18 65;NULL;26546;NULL;
-254375;FX;AGEMA;A;41 BLOIS;NULL;NULL;02 54 74 85 26;NULL;26549;NULL;
-254376;FX;INDIGO;A+;94 ST MAUR DE;NULL;NULL;01 45 11 89 48;NULL;26551;NULL;
-254377;FX;MASSON AGENCEMENT;A;42 SAINT CHAM;NULL;NULL;04 77 31 47 13;NULL;26555;NULL;
-254378;FX;WOLSELEY RESEAU PRO THOUARS;NULL;79 THOUARS;NULL;NULL;0 ;NULL;26565;NULL;
-254379;FX;BLANCHET BRUNO;A;87 LE DORAT;NULL;NULL;05 55 60 74 91;NULL;26573;NULL;
-254380;FX;CPAB - CENTRE PROTECTION;A;42 ST ETIENNE;NULL;NULL;04 77 47 11 84;cpabjpm(a)cegetel.net;26578;NULL;
-254381;FX;DEBOUT RICHARD;NULL;45 SARAN;NULL;NULL;02 38 73 61 92;NULL;26581;NULL;
-254382;FX;TFB 2000 - TOUTES;A;38 ECHIROLLES;NULL;NULL;04 76 25 89 42;NULL;26582;NULL;
-254383;FX;VOILUX RJ;NULL;94 SAINT MAND;NULL;NULL;01 43 74 09 64;NULL;26585;NULL;
-254384;FX;S2S STORE SIGNALETIQUE SERVICE;D;94 ST MAUR DE;NULL;NULL;01 48 89 32 95;NULL;26595;NULL;
-254385;FX;ROQ'ALU;B;34 ROUJAN;NULL;NULL;04 67 38 19 37;NULL;26598;NULL;
-254386;FX;ABCS;A;94 ALFORTVILL;NULL;NULL;01 48 99 61 00;NULL;26621;NULL;
-254387;FX;ATP 77 - APPLICATION;A;77 VILLEMAREC;NULL;NULL;01 60 96 59 95;NULL;26622;NULL;
-254388;FX;LPI;A;69 SAINT PRIE;NULL;NULL;04 78 21 76 42;NULL;26628;NULL;
-254389;FX;LPI;A;69 SAINT PRIE;NULL;NULL;04 50 51 34 08;NULL;26628;NULL;
-254390;FX;JAN DIDIER;A;56 VANNES;NULL;NULL;02 97 40 93 07;NULL;26632;NULL;
-254391;FX;ELECT FERMETURES;A;94 LE PLESSIS;NULL;NULL;01 64 61 05 72;NULL;26636;NULL;
-254392;FX;ELECT FERMETURES;A;94 LE PLESSIS;NULL;NULL;01 45 76 19 40;NULL;26636;NULL;
-254393;FX;BERTAUD SYLVAIN ENTREPRISE SAR;A;86 ITEUIL;NULL;NULL;05 49 52 85 47;NULL;26642;NULL;
-254394;FX;ERTON - EURL SOFATIS;B;22 PERROS GUI;NULL;NULL;02 96 91 23 90;NULL;26643;NULL;
-254395;FX;MATERIAUX CLAMECYCOIS;A;58 CLAMECY;NULL;NULL;03 86 27 02 44;NULL;26646;NULL;
-254396;FX;VITRERIE SAVOYARDE;A+;74 SEYNOD;NULL;NULL;04 50 52 17 77;NULL;26648;NULL;
-254397;FX;ACB AGENCE COMMERCIALE BATIMEN;B;07 ANNONAY;NULL;NULL;04 75 67 90 82;NULL;26651;NULL;
-254398;FX;CORS AMENAGEMENT;B;20 BIGUGLIA;NULL;NULL;04 95 31 30 30;marie(a)buro2b.net;26657;NULL;
-254399;FX;CORS AMENAGEMENT;B;20 BIGUGLIA;NULL;NULL;04 95 31 30 30;buro2b(a)buro2b.net;26657;NULL;
-254400;FX;THERMADOME;A;03 CREUZIER L;NULL;NULL;04 70 97 05 12;NULL;26658;NULL;
-254401;FX;THERMADOME;A;03 CREUZIER L;NULL;NULL;04 70 59 63 75;NULL;26658;NULL;
-254402;FX;BLEVIN YVON;A;22 PLENEUF VA;NULL;NULL;0 ;blevin.yvon(a)orange.fr;26659;NULL;
-254403;FX;ESPACE ALUMINIUM;B;97 KOUROU;NULL;NULL;05 94 32 62 86;NULL;26662;NULL;
-254404;FX;ESPACE ALUMINIUM;B;97 KOUROU;NULL;NULL;05 94 32 62 86;espace-alu(a)wanadoo.fr;26662;NULL;
-254405;FX;VERALUTEC;A;47 FRANCESCAS;NULL;NULL;05 62 68 47 87;NULL;26666;NULL;
-254406;FX;CL DIVERS DG;NULL;45 CHECY;NULL;NULL;0 ;NULL;26670;NULL;
-254407;FX;LANFRANCHI - DECOSTORE;A;78 VELIZY;NULL;NULL;01 30 70 80 71;NULL;26673;NULL;
-254408;FX;SINFAL;NULL;74 EVIAN;NULL;NULL;0 ;NULL;26675;NULL;
-254409;FX;GEDIMAT HOCHET VALOGNES;A;50 EQUEURDREV;NULL;NULL;02 33 21 66 60;NULL;26681;NULL;
-254410;FX;POINT P BMSO;A;17 ROCHEFORT;NULL;NULL;05 46 87 10 39;NULL;26685;NULL;
-254411;FX;SAMMOB BATIMENT INDUSTRIE;NULL;93 NOISY LE G;NULL;NULL;01 43 05 67 96;NULL;26702;NULL;
-254412;FX;L ESPACE DU VERRE;A;06 NICE;NULL;NULL;04 93 55 97 50;NULL;26706;NULL;
-254413;FX;ABER CONFORT 4452;NULL;10 STE SAVINE;NULL;NULL;03 25 78 37 37;NULL;26728;NULL;
-254414;FX;LAPOUJADE BERNARD;A;47 ESTILLAC;NULL;NULL;05 53 87 60 15;NULL;26729;NULL;
-254415;FX;MEUBLES 3A;D;74 SALLANCHES;NULL;NULL;04 50 93 75 74;NULL;26744;NULL;
-254416;FX;MENUISERIE LENOBLE;A+;73 ALBERTVILL;NULL;NULL;04 79 37 70 12;NULL;26763;NULL;
-254417;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;35 VEZIN LE C;NULL;NULL;02 99 14 54 74;NULL;26767;NULL;
-254418;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;35 VEZIN LE C;NULL;NULL;02 99 14 60 91;NULL;26767;NULL;
-254419;FX;EPS (ENTREPRISE PARISIEN-;A;95 EAUBONNE;NULL;NULL;01 39 59 86 10;NULL;26772;NULL;
-254420;FX;CHEF CHRISTOPHE;A;02 LAON;NULL;NULL;03 23 79 67 46;NULL;26779;NULL;
-254421;FX;CHAZELLE;A;42 ST ETIENNE;NULL;NULL;04 77 32 53 10;NULL;26786;NULL;
-254422;FX;UNAFERM;A;68 ASPACH;NULL;NULL;03 89 40 99 44;NULL;26790;NULL;
-254423;FX;REUTTER FERMETURES;A;68 WITTENHEIM;NULL;NULL;03 89 53 72 98;NULL;26791;NULL;
-254424;FX;CHERRIER ALAIN 4171;NULL;37 JOUE LES T;NULL;NULL;02 47 67 58 59;NULL;26794;NULL;
-254425;FX;TROUILLARD POINT P PDL OLONNE SUR MER;A;85 OLONNE SUR;NULL;NULL;02 51 32 86 05;NULL;26798;NULL;
-254426;FX;FIGIEL XAVIER;NULL;59 LE CATEAU;NULL;NULL;03 27 77 98 03;NULL;26802;NULL;
-254427;FX;MENUISERIE JAY;B;73 COGNIN;NULL;NULL;04 79 69 01 42;NULL;26807;NULL;
-254428;FX;FAUCHER ANDRE;D;63 BESSE ET S;NULL;NULL;04 73 79 57 33;NULL;26815;NULL;
-254429;FX;ATELIER DU STORE 4677;NULL;94 SAINT MAUR;NULL;NULL;01 48 89 16 92;NULL;26816;NULL;
-254430;FX;FERDALU;A;13 MARSEILLE;NULL;NULL;04 91 58 65 53;NULL;26820;NULL;
-254431;FX;FERDALU;A;13 MARSEILLE;NULL;NULL;04 91 58 65 53;ferdalu(a)wanadoo.fr;26820;NULL;
-254432;FX;ANJOU CONFORT 4919;A+;49 ST MARTIN;NULL;NULL;02 41 39 58 01;NULL;26822;NULL;
-254433;FX;SODAI;A;69 BRON CEDEX;NULL;NULL;04 78 26 85 60;NULL;26825;NULL;
-254434;FX;MIROITERIE AVALLONNAISE;A;89 MAGNY;NULL;NULL;03 86 33 19 91;NULL;26826;NULL;
-254435;FX;MIROITERIE AVALLONNAISE;A;89 MAGNY;NULL;NULL;03 86 33 06 09;NULL;26826;NULL;
-254436;FX;REYNAUD CAUVIN YVOSE;A+;71 LOUHANS;NULL;NULL;03 85 75 47 39;NULL;26829;NULL;
-254437;FX;COMPTOIR DES MATERIAUX;NULL;27 BRIONNE;NULL;NULL;02 32 44 09 73;NULL;26832;NULL;
-254438;FX;MIROITERIE BERTRAND;A+;65 LOURDES;NULL;NULL;05 62 94 57 90;NULL;26839;NULL;
-254439;FX;MIROITERIE BERTRAND;A+;65 LOURDES;NULL;NULL;05 62 94 57 90;miroiterie(a)miroiterie-bertrand.com;26839;NULL;
-254440;FX;POLYCLOSE HABIMAT;A+;62 Annequin;NULL;NULL;03 21 64 94 45;NULL;26841;NULL;
-254441;FX;MUNCH;A+;68 GUEWENHEIM;NULL;NULL;03 89 82 88 89;NULL;26849;NULL;
-254442;FX;ROSFELDER;D;67 VALFF;NULL;NULL;03 88 08 40 04;NULL;26853;NULL;
-254443;FX;EPL - ELECTRICITE PLAFOND;A;93 LE BOURGET;NULL;NULL;01 48 36 34 34;NULL;26854;NULL;
-254444;FX;FERMETURES MICHEL SIMON;A;77 CHELLES;NULL;NULL;01 64 72 98 93;NULL;26855;NULL;
-254445;FX;LENUD JEAN MARIE;B;27 FLEURY SUR;NULL;NULL;02 32 49 59 28;NULL;26863;NULL;
-254446;FX;AMF ATELIER METALLIQUE;A;93 AUBERVILLI;NULL;NULL;01 48 34 43 64;NULL;26869;NULL;
-254447;FX;CLESTRA HAUSERMANN;A;92 MALAKOFF;NULL;NULL;03 88 28 12 28;NULL;26872;NULL;
-254448;FX;HALLES DECO;B;CM ALA;NULL;NULL;23 73 43 22 98;hallesdeco(a)yahoo.fr;26882;NULL;
-254449;FX;HALLES DECO;B;CM ALA;NULL;NULL;0 ;NULL;26882;NULL;
-254450;FX;LEPINAY PIERRE;A;35 POLIGNE;NULL;NULL;02 99 43 94 61;NULL;26884;NULL;
-254451;FX;MVN - MIROITERIE VITRERIE;B;28 NOGENT LE;NULL;NULL;02 37 52 11 09;NULL;26907;NULL;
-254452;FX;BARBIER PASCAL EURL;B;58 RAVEAU;NULL;NULL;03 86 70 27 52;NULL;26908;NULL;
-254453;FX;MIROITERIE JAMOS;A;42 ST JEAN BO;NULL;NULL;04 77 33 86 78;NULL;26913;NULL;
-254454;FX;LE NAIR PIERRE;D;35 MEILLAC;NULL;NULL;02 99 73 31 64;pierre.le.nair(a)wanadoo.fr;26919;NULL;
-254455;FX;POINT P BRETAGNE PAIMPOL;A;22 PAIMPOL;NULL;NULL;02 96 22 09 13;NULL;26921;NULL;
-254456;FX;ISOLSTORES;A;18 BOURGES;NULL;NULL;02 48 67 93 83;NULL;26937;NULL;
-254457;FX;CL DIVERS SUD OUEST P.HAUCHECO;NULL;45 ORLEANS;NULL;NULL;02 99 14 86 39;NULL;26946;NULL;
-254458;FX;WEISZ;A+;92 FONTENAY A;NULL;NULL;01 47 02 04 55;NULL;26949;NULL;
-254459;FX;WEISZ;A+;92 FONTENAY A;NULL;NULL;01 47 02 04 55;e.gyalay(a)weisz.fr;26949;NULL;
-254460;FX;STORALIL;B;59 LA MADELEI;NULL;NULL;03 20 06 35 38;NULL;26954;NULL;
-254461;FX;SERRURERIE ALLAIN;A;44 NANTES;NULL;NULL;02 51 13 66 14;NULL;26958;NULL;
-254462;FX;MODULES ENSEIGNES;D;35 BREAL SOUS;NULL;NULL;02 99 60 03 48;NULL;26964;NULL;
-254463;FX;ASTEL MENUISERIE;A;10 MARIGNY LE;NULL;NULL;03 25 21 80 81;NULL;26966;NULL;
-254464;FX;DETOURBET 5103;A;52 VOISINES;NULL;NULL;03 25 87 10 33;sasdetourbet(a)wanadoo.fr;26970;NULL;
-254465;FX;DETOURBET 5103;A;52 VOISINES;NULL;NULL;03 25 87 10 33;NULL;26970;NULL;
-254466;FX;SCAN;A;31 BLAGNAC;NULL;NULL;05 61 15 61 02;NULL;26979;NULL;
-254467;FX;ARTIS ARTIS;D;75 PARIS;NULL;NULL;01 43 56 21 81;NULL;26983;NULL;
-254468;FX;ACTI VITRERIE SERRURERIE;A;78 POISSY;NULL;NULL;01 30 74 73 02;NULL;26987;NULL;
-254469;FX;CHAUSSON TRIALIS BOLLENE;NULL;84 VALREAS CE;NULL;NULL;04 90 30 46 24;NULL;26989;NULL;
-254470;FX;DECORATION LITT;NULL;67 GRIESHEIM;NULL;NULL;03 88 08 42 53;NULL;26991;NULL;
-254471;FX;COMASUD ST RAPHAEL;A+;83 BRIGNOLES;NULL;NULL;04 94 82 25 42;NULL;27004;NULL;
-254472;FX;COMASUD GIGNAC;A+;83 BRIGNOLES;NULL;NULL;04 42 31 47 62;NULL;27018;NULL;
-254473;FX;HORIZON OUEST;NULL;29 BREST;NULL;NULL;02 98 43 80 73;NULL;27020;NULL;
-254474;FX;LE MIROIR DU PAVIN;A+;63 BESSE ET S;NULL;NULL;04 73 79 65 48;NULL;27023;NULL;
-254475;FX;AREHAL;A;95 SANNOIS;NULL;NULL;01 39 80 69 43;NULL;27026;NULL;
-254476;FX;LEBLANC ENTREPRISE 5055;A+;53 ERNEE;NULL;NULL;02 43 05 96 32;NULL;27028;NULL;
-254477;FX;LEBLANC ENTREPRISE 5055;A+;53 ERNEE;NULL;NULL;02 43 05 72 52;NULL;27028;NULL;
-254478;FX;VACHER FILS;A+;41 ROMORANTIN;NULL;NULL;02 54 76 51 01;NULL;27029;NULL;
-254479;FX;MERLE;D;24 TERRASSON;NULL;NULL;05 53 51 15 21;NULL;27030;NULL;
-254480;FX;ETABLISSEMENTS CANAC BOURCIER;A+;48 Mende;NULL;NULL;04 66 47 35 04;NULL;27035;NULL;
-254481;FX;ETABLISSEMENTS CANAC BOURCIER;A+;48 Mende;NULL;NULL;04 66 47 35 04;sarlcanac-bourcier(a)orange.fr;27035;NULL;
-254482;FX;LOUISIANE;NULL;22 LOUDEAC;NULL;NULL;02 96 66 13 50;NULL;27041;NULL;
-254483;FX;BASSET BOUVY BATIMENT;A;69 BRINDAS;NULL;NULL;04 78 45 60 36;NULL;27046;NULL;
-254484;FX;ATELIER PIERRICK RAGOT;NULL;44 NANTES;NULL;NULL;02 40 46 63 02;NULL;27048;NULL;
-254485;FX;MEUNIER ERIC;A;95 CERGY;NULL;NULL;01 34 25 01 14;NULL;27052;NULL;
-254486;FX;ALU PROJECT;A+;82 NEGREPELIS;NULL;NULL;05 63 30 85 60;NULL;27053;NULL;
-254487;FX;FERMETURE 2000 4694;A;38 RENAGE;NULL;NULL;04 76 91 01 57;NULL;27055;NULL;
-254488;FX;STORES ET FERMETURES;NULL;44 TRIGNAC;NULL;NULL;02 51 10 56 64;NULL;27056;NULL;
-254489;FX;PERSIANAS EL AVILA, C.A.;A;10 070 CARAC;NULL;NULL;5821 22 51 14 62;NULL;27061;NULL;
-254490;FX;VITRERIE MIROITERIE DES ALPES;A+;73 LE VIVIER;NULL;NULL;04 79 61 67 07;NULL;27083;NULL;
-254491;FX;SORECSO 4387;NULL;36 ST BENOIT;NULL;NULL;02 54 47 67 13;NULL;27103;NULL;
-254492;FX;VERANDALUX;A;26 LAVEYRON;NULL;NULL;0 ;NULL;27104;NULL;
-254493;FX;MENUISERIE VOLLMER;NULL;67 MELSHEIM;NULL;NULL;03 88 89 09 99;NULL;27111;NULL;
-254494;FX;MIROITERIE DU GAVE (EXPL);A;64 BAIGTS DE;NULL;NULL;05 59 65 32 94;NULL;27112;NULL;
-254495;FX;PENTAGONE MENUISERIES;A;04 SAINT TULL;NULL;NULL;04 92 72 51 60;NULL;27119;NULL;
-254496;FX;PERRIN MAZIER 999999;D;39 DOLE;NULL;NULL;03 84 82 13 97;ent.perrin-mazier(a)wanadoo.fr;27121;NULL;
-254497;FX;STORE OUEST;A;78 MAGNANVILL;NULL;NULL;01 34 78 56 26;NULL;27122;NULL;
-254498;FX;DIDIER;A+;51 REIMS;NULL;NULL;03 26 88 52 12;NULL;27128;NULL;
-254499;FX;REALMETAL;A+;68 WITTELSHEI;NULL;NULL;03 89 55 22 11;NULL;27130;NULL;
-254500;FX;LC BATIMENT;A;29 TAULE;NULL;NULL;02 98 79 03 82;NULL;27132;NULL;
-254501;FX;ANCEL;A;67 CHATENOIS;NULL;NULL;03 90 57 39 48;NULL;27135;NULL;
-254502;FX;PORTAL ALUMINIUM SYSTEMS;A+;13 La Ciotat;NULL;NULL;04 42 04 31 88;NULL;27138;NULL;
-254503;FX;GRANDO STORES BACHES;A;42 LA TALAUDI;NULL;NULL;04 77 47 51 66;NULL;27145;NULL;
-254504;FX;GUICHET E;A+;25 BESANCON;NULL;NULL;03 81 82 39 20;NULL;27152;NULL;
-254505;FX;FERNANDES JOAO;A;78 VERNOUILLE;NULL;NULL;01 39 71 71 14;NULL;27157;NULL;
-254506;FX;VMA FENETRIER;A+;74 Ville-la-G;NULL;NULL;04 50 71 91 45;NULL;27158;NULL;
-254507;FX;BORDEAUX STORES;NULL;33 CASTETS EN;NULL;NULL;05 56 62 73 73;NULL;27161;NULL;
-254508;FX;CHAPPUIS SARL;NULL;74 GROISY;NULL;NULL;04 50 68 04 75;NULL;27170;NULL;
-254509;FX;GERBER FRANCK;A;67 WASSELONNE;NULL;NULL;03 88 87 46 41;NULL;27172;NULL;
-254510;FX;LEVEQUE GILLES;A;61 BAGNOLES D;NULL;NULL;02 33 30 82 79;NULL;27175;NULL;
-254511;FX;BMCE POINT P CHATEAUROUX;A;36 CHATEAUROU;NULL;NULL;02 54 61 11 23;NULL;27177;NULL;
-254512;FX;BMCE POINT P BLOIS;B;41 BLOIS;NULL;NULL;0 ;NULL;27178;NULL;
-254513;FX;BMCE POINT P BLOIS;B;41 BLOIS;NULL;NULL;02 54 52 70 01;NULL;27178;NULL;
-254514;FX;BMCE POINT P ORLEANS;A;45 ORLEANS CE;NULL;NULL;02 43 35 43 76;NULL;27179;NULL;
-254515;FX;BMCE POINT P ROMORANTIN;A;41 ROMORANTIN;NULL;NULL;02 54 94 15 31;NULL;27180;NULL;
-254516;FX;ANJOU SERRURERIE;A;49 BRAIN SUR;NULL;NULL;02 41 54 99 09;NULL;27184;NULL;
-254517;FX;SCEMB 56;NULL;56 CAUDAN;NULL;NULL;02 97 76 92 87;NULL;27186;NULL;
-254518;FX;MEUBLES DE PARENTIS;NULL;40 PARENTIS E;NULL;NULL;05 58 78 53 22;NULL;27192;NULL;
-254519;FX;APSM;A+;41 BLOIS;NULL;NULL;02 54 78 83 07;NULL;27193;NULL;
-254520;FX;JOPPE SARL;D;LU 051 ESCH S;NULL;NULL;352 53 08 50 50;joppe(a)pt.lu;27195;NULL;
-254521;FX;COTTIER PASCAL PAM COTTIER;A;37 CHOUZE SUR;NULL;NULL;02 47 95 18 60;NULL;27198;NULL;
-254522;FX;JD SERVICES;A;56 AURAY;NULL;NULL;02 97 24 80 78;NULL;27206;NULL;
-254523;FX;EMIDIO FERREIRA;A;89 CHEVILLON;NULL;NULL;03 86 73 15 04;NULL;27208;NULL;
-254524;FX;MAGE YVAN;A;70 GRAY;NULL;NULL;03 84 65 47 40;NULL;27221;NULL;
-254525;FX;JB MENUISERIES;A+;70 ARC LES GR;NULL;NULL;03 84 65 32 77;NULL;27222;NULL;
-254526;FX;PASTANELLA FRANCOIS CLAUDIO;A+;05 GAP;NULL;NULL;04 92 53 70 55;NULL;27224;NULL;
-254527;FX;MAYOUFI;A;60 STE GENEVI;NULL;NULL;02 51 58 46 03;NULL;27236;NULL;
-254528;FX;BIG MAT BEREZIAT;A;71 MACON;NULL;NULL;03 85 30 32 56;NULL;27237;NULL;
-254529;FX;DRUFIN;A;45 ORLEANS;NULL;NULL;02 38 66 95 37;NULL;27239;NULL;
-254530;FX;FADIER;A;35 ARGENTRE D;NULL;NULL;02 23 55 01 91;NULL;27242;NULL;
-254531;FX;BARON;A+;53 CHANGE;NULL;NULL;02 43 49 25 02;NULL;27244;NULL;
-254532;FX;BARRERE GILLES;A;65 PINAS;NULL;NULL;05 62 40 28 52;NULL;27245;NULL;
-254533;FX;LALLIER AGENCEMENT;NULL;26 HAUTERIVES;NULL;NULL;04 75 68 55 50;NULL;27248;NULL;
-254534;FX;SCIANDRA BORIS;NULL;83 FREJUS;NULL;NULL;04 94 52 17 48;NULL;27249;NULL;
-254535;FX;ALU CONFORT;A+;20 BASTIA;NULL;NULL;04 95 30 65 62;contact(a)aluconfort.fr;27250;NULL;
-254536;FX;FRAUD DOMINIQUE - OUEST SELLERIE;A;35 LOHEAC;NULL;NULL;0 ;loheacsellerie(a)orange.fr;27264;NULL;
-254537;FX;BATIVER;D;65 IBOS;NULL;NULL;05 62 34 73 73;NULL;27266;NULL;
-254538;FX;SFP STORES FILMS PROTECTION;D;94 SAINT MAUR;NULL;NULL;01 48 83 67 82;NULL;27274;NULL;
-254539;FX;ESPACE SOLEIL;A+;58 COSNE SUR;NULL;NULL;03 86 26 95 66;espacesoleil58(a)orange.fr;27275;NULL;
-254540;FX;SMAC ACIEROID;A;31 TOULOUSE C;NULL;NULL;05 34 40 06 11;NULL;27279;NULL;
-254541;FX;BISES;D;78 Neauphlett;NULL;NULL;01 34 97 61 96;jht2(a)wanadoo.fr;27281;NULL;
-254542;FX;SFDR-SERRUR. FERRONNERIE;A;03 YZEURE;NULL;NULL;04 70 46 75 73;NULL;27286;NULL;
-254543;FX;KEREBEL PIERRE;NULL;29 GOUESNOU;NULL;NULL;02 98 37 97 23;NULL;27287;NULL;
-254544;FX;RIBOUT MICHEL;D;41 CELLETTES;NULL;NULL;02 54 70 42 26;NULL;27291;NULL;
-254545;FX;ZAKARIADES LAURENT;A+;20 AJACCIO;NULL;NULL;04 95 21 92 30;idealstores2(a)wanadoo.fr;27292;NULL;
-254546;FX;CONCEPTION MAINTENANCE 4538;NULL;93;NULL;NULL;01 41 58 56 57;NULL;27296;NULL;
-254547;FX;CONCEPTION MAINTENANCE 4538;NULL;93;NULL;NULL;01 48 56 56 57;c2m.montreuil(a)orange.fr;27296;NULL;
-254548;FX;EUROPLAST;A;52 CHALINDREY;NULL;NULL;03 25 88 99 01;NULL;27298;NULL;
-254549;FX;ROUSSEAU GUY;A;45 NEUVILLE A;NULL;NULL;02 38 91 82 16;NULL;27309;NULL;
-254550;FX;SAUVESTRE JEAN-LOUIS;A+;18 ST DOULCHA;NULL;NULL;02 48 65 11 34;jeanlouis.sauvestre(a)dbmail.com;27315;NULL;
-254551;FX;HOLGADO TORRES FRANCISCO VSF;A;63 AULNAT;NULL;NULL;04 73 60 30 99;NULL;27319;NULL;
-254552;FX;MIRAMOND ENTREPRISES;A;13 MARSEILLE;NULL;NULL;04 91 92 03 49;NULL;27322;NULL;
-254553;FX;DECOR SERVICE;A;92 MALAKOFF;NULL;NULL;01 42 53 88 09;NULL;27327;NULL;
-254554;FX;SHANTAKO;A;69 VILLEURBAN;NULL;NULL;0 ;NULL;27333;NULL;
-254555;FX;SHANTAKO;A;69 VILLEURBAN;NULL;NULL;04 72 04 54 26;NULL;27333;NULL;
-254556;FX;ECF ETUDE CONSTRUCTION;A;91 BRETIGNY S;NULL;NULL;01 60 85 30 76;NULL;27342;NULL;
-254557;FX;ECF ETUDE CONSTRUCTION;A;91 BRETIGNY S;NULL;NULL;01 60 85 30 76;e.c.f(a)wanadoo.fr;27342;NULL;
-254558;FX;CANCIANI JEAN VINCENT;A;69 VILLEURBAN;NULL;NULL;04 78 80 95 22;NULL;27347;NULL;
-254559;FX;AULNAY-GLACE;A;93 AULNAY SOU;NULL;NULL;01 48 79 92 07;NULL;27348;NULL;
-254560;FX;EC COM;A;94 ST MAUR DE;NULL;NULL;01 47 41 33 76;NULL;27350;NULL;
-254561;FX;CLAREO;A;10 MARIGNY LE;NULL;NULL;03 25 21 80 81;NULL;27351;NULL;
-254562;FX;FERMETURES & STORES DU;A;28 MEZIERES E;NULL;NULL;02 37 43 82 30;NULL;27352;NULL;
-254563;FX;LAURALU;A;94 ORMESSON S;NULL;NULL;0 ;lauralu(a)alicepro.fr;27353;NULL;
-254564;FX;TROUVE MICHEL;A;49 LIRE;NULL;NULL;02 40 09 91 73;NULL;27365;NULL;
-254565;FX;MECARAY;NULL;91 BONDOUFLE;NULL;NULL;01 60 86 40 76;NULL;27373;NULL;
-254566;FX;HUGUET CREICHE RJ;NULL;45 SAINT JEAN;NULL;NULL;02 38 22 38 20;NULL;27374;NULL;
-254567;FX;ACH 45 4897;NULL;45 CHECY;NULL;NULL;02 38 61 54 55;a.c.h.45(a)wanadoo.fr;27375;NULL;
-254568;FX;MEUNIER ET FILS;A;95 BERNE SUR;NULL;NULL;01 30 34 23 81;NULL;27376;NULL;
-254569;FX;LEROY MICHEL;B;83 BRIGNOLLES;NULL;NULL;04 94 72 01 15;NULL;27380;NULL;
-254570;FX;JCD MATERIAUX -;A;47 NERAC;NULL;NULL;05 53 97 09 44;NULL;27387;NULL;
-254571;FX;MONTIBELLER NICOLAS 4483;NULL;45 ORLEANS;NULL;NULL;02 38 66 39 98;NULL;27388;NULL;
-254572;FX;CICIARELLI ET FILS;A;30 CAISSARGUE;NULL;NULL;04 66 29 55 36;NULL;27391;NULL;
-254573;FX;RESEAU PRO BORDEAUX;NULL;33 BORDEAUX;NULL;NULL;05 56 43 17 96;NULL;27409;NULL;
-254574;FX;DU LEFF;A+;22 CHATELAUDR;NULL;NULL;02 96 74 11 23;NULL;27410;NULL;
-254575;FX;BOLLINGER 4723;NULL;68 VOGELSHEIM;NULL;NULL;03 89 72 97 21;NULL;27418;NULL;
-254576;FX;LA CLEF DU TEMPS;A;67 KILSTETT;NULL;NULL;03 88 96 67 63;NULL;27420;NULL;
-254577;FX;ATLANTIC SOUDURE 4510;NULL;17 LA ROCHELL;NULL;NULL;05 46 28 19 24;NULL;27425;NULL;
-254578;FX;GARNIER CLAUDE;D;35 POCE LES B;NULL;NULL;02 99 74 41 49;NULL;27426;NULL;
-254579;FX;SHMM STE HONFLEUR MENUIS METAL;A+;14 HONFLEUR C;NULL;NULL;02 31 89 09 50;NULL;27433;NULL;
-254580;FX;PERILLAT BERNARD;B;74 CHAPEIRY;NULL;NULL;04 50 68 26 20;NULL;27434;NULL;
-254581;FX;WURTH AIME;NULL;67 BOOTZHEIM;NULL;NULL;03 88 74 99 00;NULL;27439;NULL;
-254582;FX;MIROITERIE LAMOTHE;A;24 RIBERAC;NULL;NULL;05 53 90 00 17;NULL;27442;NULL;
-254583;FX;MPS MENUISERIE POSES;A;27 DAUBEUF PR;NULL;NULL;02 32 40 71 82;NULL;27445;NULL;
-254584;FX;AFL ART FENETRES LUMIERE;A+;45 AMILLY;NULL;NULL;02 38 89 42 47;NULL;27471;NULL;
-254585;FX;AFL ART FENETRES LUMIERE;A+;45 AMILLY;NULL;NULL;02 38 89 42 49;NULL;27471;NULL;
-254586;FX;DORAS ELCE MATERIAUX;NULL;52 LANGRES;NULL;NULL;03 25 87 34 19;NULL;27474;NULL;
-254587;FX;EFPE;A+;26 ST DONAT S;NULL;NULL;0 ;laurent.pollien(a)wanadoo.fr;27498;NULL;
-254588;FX;ED STORES SERRURERIE RJ;A;51 SAINT BRIC;NULL;NULL;03 26 07 24 63;NULL;27503;NULL;
-254589;FX;BIG MAT LABRUGUIERE;NULL;81 LABRUGUIER;NULL;NULL;05 63 74 20 41;NULL;27504;NULL;
-254590;FX;GRASSET SPORAFRIC;A+;CG POINTE NO;NULL;NULL;NULL;NULL;27505;NULL;
-254591;FX;GRASSET SPORAFRIC;A+;CG POINTE NO;NULL;NULL;331 73 76 91 11;jmlerondelle(a)sporafric.net;27505;NULL;
-254592;FX;GRASSET SPORAFRIC;A+;CG POINTE NO;NULL;NULL;02 42 94 47 36;contact(a)sporafric.net;27505;NULL;
-254593;FX;ELVIN;A+;18 BOURGES;NULL;NULL;02 48 48 19 18;o.chaumeau(a)elvin.fr;27508;NULL;
-254594;FX;ELVIN;A+;18 BOURGES;NULL;NULL;02 48 48 19 18;NULL;27508;NULL;
-254595;FX;AFL ANCIEN ETS FOESSEL PS;A;45 MONTARGIS;NULL;NULL;02 38 89 00 26;NULL;27511;NULL;
-254596;FX;AFL ANCIEN ETS FOESSEL PS;A;45 MONTARGIS;NULL;NULL;02 38 89 42 47;NULL;27511;NULL;
-254597;FX;FASQUEL 4413;NULL;83 LE THORONE;NULL;NULL;04 94 60 98 28;NULL;27514;NULL;
-254598;FX;RIDEAUX SERVICES FRANCE;A;69 CRAPONNE;NULL;NULL;04 78 57 95 68;NULL;27520;NULL;
-254599;FX;OMBRES ET STRUCTURES;B;26 ST PAUL LE;NULL;NULL;04 75 71 07 05;NULL;27522;NULL;
-254600;FX;SCHUMER & CIE 4499;NULL;51 SEZANNE;NULL;NULL;03 26 42 81 80;NULL;27523;NULL;
-254601;FX;SCHUMER & CIE 4499;NULL;51 SEZANNE;NULL;NULL;03 26 42 81 81;NULL;27523;NULL;
-254602;FX;COMERCIALIZADORA Y;B;CL TIAGO;NULL;NULL;0 ;osvaldo(a)toldosmacul.cl;27524;NULL;
-254603;FX;COMERCIALIZADORA Y;B;CL TIAGO;NULL;NULL;56 22 37 07 30;carla(a)toldomacul.cl;27524;NULL;
-254604;FX;COMERCIALIZADORA Y;B;CL TIAGO;NULL;NULL;56 22 37 07 30;sebastian(a)toldosmacul.cl;27524;NULL;
-254605;FX;DECORINA;B;CM ALA;NULL;NULL;237 33 42 84 72;NULL;27547;NULL;
-254606;FX;DECORINA;B;CM ALA;NULL;NULL;23 73 43 23 38;decorina(a)yahoo.fr;27547;NULL;
-254607;FX;DECORINA;B;CM ALA;NULL;NULL;23 73 42 84 72;decorinaa(a)yahoo.fr;27547;NULL;
-254608;FX;CCTR;A;69 GIVORS;NULL;NULL;0 ;NULL;27555;NULL;
-254609;FX;FORET;D;43 LEMPDES;NULL;NULL;04 71 76 58 05;gforet(a)foret-entreprise.fr;27567;NULL;
-254610;FX;FORET;D;43 LEMPDES;NULL;NULL;0 ;NULL;27567;NULL;
-254611;FX;CHAVIGNY BLOIS;B;41 BLOIS CEDE;NULL;NULL;02 54 20 85 46;NULL;27573;NULL;
-254612;FX;MENUI PRO;A+;42 ST PRIEST;NULL;NULL;04 77 79 67 19;NULL;27578;NULL;
-254613;FX;BAP FENETRES ET FERMETURE;A;75 PARIS;NULL;NULL;01 40 44 99 35;NULL;27581;NULL;
-254614;FX;ACTEA;A;67 WASSELONNE;NULL;NULL;03 88 59 14 07;NULL;27582;NULL;
-254615;FX;ACTEA;A;67 WASSELONNE;NULL;NULL;03 87 51 24 41;NULL;27582;NULL;
-254616;FX;LAFFEACH PHILIPPE;A;56 VANNES;NULL;NULL;0 ;NULL;27593;NULL;
-254617;FX;DEMANGEAU;D;44 LE LOROUX;NULL;NULL;02 40 36 52 74;NULL;27599;NULL;
-254618;FX;STORES FERMETURES;A+;18 BOURGES;NULL;NULL;02 48 50 74 52;NULL;27600;NULL;
-254619;FX;SMSL 4894;A+;50 AGNEAUX;NULL;NULL;02 33 77 35 31;NULL;27601;NULL;
-254620;FX;ACTI POSE 4780;A;42 SAINT ETIE;NULL;NULL;04 77 34 05 63;NULL;27603;NULL;
-254621;FX;SMAC 4334;NULL;78 MANTES LA;NULL;NULL;01 30 92 69 48;NULL;27608;NULL;
-254622;FX;TECHNI FERMETURES;A+;68 MULHOUSE;NULL;NULL;03 89 65 03 93;NULL;27610;NULL;
-254623;FX;AAA ALUMINIUM AUTOMATISME;D;97 REMIRE MON;NULL;NULL;05 94 35 47 63;aaa973(a)orange.fr;27614;NULL;
-254624;FX;AAA ALUMINIUM AUTOMATISME;D;97 REMIRE MON;NULL;NULL;05 94 35 63 75;micadom(a)orange.fr;27614;NULL;
-254625;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;09 74 76 23 75;NULL;27615;NULL;
-254626;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;09 74 76 15 81;NULL;27615;NULL;
-254627;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;01 47 06 60 25;NULL;27615;NULL;
-254628;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;npalatre(a)mpo-fen.fr;27615;NULL;
-254629;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;NULL;27615;NULL;
-254630;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;pferrion(a)mpofenetres.com;27615;NULL;
-254631;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;kjarry(a)mpo-fen.fr;27615;NULL;
-254632;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 94;NULL;27615;NULL;
-254633;FX;CDC CONCEPTION DEVELOPP.;NULL;80 HUCHENNEVI;NULL;NULL;0 ;NULL;27617;NULL;
-254634;FX;CYPRIANAISE DE MENUISERIE;A;66 SAINT CYPR;NULL;NULL;04 68 21 32 60;NULL;27620;NULL;
-254635;FX;RESEAU PRO HONFLEUR;NULL;14 HONFLEUR;NULL;NULL;02 31 89 24 01;NULL;27621;NULL;
-254636;FX;POLISSET;NULL;41 LAMOTTE BE;NULL;NULL;0 ;NULL;27624;NULL;
-254637;FX;BMCE POINT P;A;23 LA SOUTERR;NULL;NULL;05 55 63 94 85;NULL;27626;NULL;
-254638;FX;LES ATELIERS DU BOIS;B;21 VARANGES;NULL;NULL;03 80 31 34 02;NULL;27629;NULL;
-254639;FX;JACKY SERRE;B;07 CHOMERAC;NULL;NULL;04 75 64 17 24;NULL;27638;NULL;
-254640;FX;SCOP CREABOIS;B;35 MONFORT SU;NULL;NULL;02 99 07 42 75;t.baudoin(a)creabois.net;27640;NULL;
-254641;FX;POINT P BRETAGNE ST POL;A;29 SAINT POL;NULL;NULL;02 98 15 85 21;NULL;27647;NULL;
-254642;FX;VILLEGAS;A+;74 MARGENCEL;NULL;NULL;04 50 72 72 55;NULL;27648;NULL;
-254643;FX;LE TOIT;A;61 ALENCON CE;NULL;NULL;02 33 27 15 69;NULL;27651;NULL;
-254644;FX;LE JAMTEL AGENCEMENTS;A;50 SAINT LO C;NULL;NULL;02 33 57 29 16;NULL;27658;NULL;
-254645;FX;LE JAMTEL AGENCEMENTS;A;50 SAINT LO C;NULL;NULL;0 ;NULL;27658;NULL;
-254646;FX;POMART MICHEL;NULL;62 MONCHY CAY;NULL;NULL;03 21 04 68 52;NULL;27660;NULL;
-254647;FX;WARGNIER;D;91 PARAY VIEI;NULL;NULL;01 69 38 40 48;NULL;27663;NULL;
-254648;FX;BOURGUIGNON MENUISERIE;B;38 BEAUVOIR D;NULL;NULL;04 74 58 69 39;NULL;27669;NULL;
-254649;FX;ISO ECO;A;95 CORMEILLES;NULL;NULL;01 34 50 10 87;NULL;27673;NULL;
-254650;FX;GENERATION SOLEIL;NULL;77 TOUQUIN;NULL;NULL;01 43 63 84 61;NULL;27675;NULL;
-254651;FX;POINT P BRETAGNE - SIEGE PERE;NULL;35 RENNES CED;NULL;NULL;02 99 65 20 22;NULL;27677;NULL;
-254652;FX;LEADERS POSE SERVICES;D;77 Emerainvil;NULL;NULL;01 60 17 28 11;NULL;27679;NULL;
-254653;FX;ALU VERRE 61;A;61 MORTREE;NULL;NULL;02 33 12 59 26;NULL;27681;NULL;
-254654;FX;JOURLIN TOUT FAIRE;B;42 FEURS;NULL;NULL;04 77 26 12 90;NULL;27682;NULL;
-254655;FX;VERANDAS ET HABITAT FAINS 5012;A+;50 ST SAMSON;NULL;NULL;02 33 55 95 57;NULL;27702;NULL;
-254656;FX;ZION ALU VITRERIE;A;60 JAUX;NULL;NULL;03 44 90 75 89;NULL;27705;NULL;
-254657;FX;CLOTURE SERVICE;A+;37 CHAMBRAY L;NULL;NULL;02 47 25 82 72;cloture.service(a)wanadoo.fr;27706;NULL;
-254658;FX;BMRA POINT P ROANNE;A;42 ROANNE CED;NULL;NULL;04 77 72 72 88;NULL;27714;NULL;
-254659;FX;ISOLATION SERVICE;A+;36 LE BLANC;NULL;NULL;02 54 37 94 24;isolation-service(a)orange.fr;27718;NULL;
-254660;FX;CLAIRESPACE;A;60 COMPIEGNE;NULL;NULL;03 44 23 00 03;NULL;27719;NULL;
-254661;FX;SODISTORES 4749;A;45 CHECY;NULL;NULL;02 38 46 63 27;sodistores(a)wanadoo.fr;27721;NULL;
-254662;FX;MAISON PARISOT;A;52 CHAUMONT;NULL;NULL;03 25 01 23 26;Maison.PARISOT(a)wanadoo.fr;27722;NULL;
-254663;FX;RESEAU PRO COMPIEGNE;NULL;60 COMPIEGNE;NULL;NULL;03 44 83 13 54;NULL;27724;NULL;
-254664;FX;BORELLO ISOCLAIR 302837;B;38 ST CLAIR D;NULL;NULL;04 74 97 17 04;tborello(a)borello-isoclair.com;27728;NULL;
-254665;FX;BORELLO ISOCLAIR 302837;B;38 ST CLAIR D;NULL;NULL;0 ;NULL;27728;NULL;
-254666;FX;TRUCHON;A;38 ST MARTIN;NULL;NULL;04 76 44 25 41;NULL;27729;NULL;
-254667;FX;AFMH AGENCEMENT FERMETURE;NULL;94 FRESNES;NULL;NULL;01 49 84 21 83;NULL;27730;NULL;
-254668;FX;AUDIT SECURITE;NULL;33 BORDEAUX;NULL;NULL;05 56 98 17 73;NULL;27731;NULL;
-254669;FX;AUDIT SECURITE;NULL;33 BORDEAUX;NULL;NULL;0 ;NULL;27731;NULL;
-254670;FX;LEMAIRE PHILIPPE;A;92 FONTENAY A;NULL;NULL;01 43 50 33 29;NULL;27733;NULL;
-254671;FX;MIROITERIE BRESTOISE 4709;NULL;29 BREST CEDE;NULL;NULL;02 98 02 78 51;NULL;27735;NULL;
-254672;FX;GLASREN;A;35 RENNES;NULL;NULL;02 99 54 55 92;NULL;27737;NULL;
-254673;FX;GALLEGO SELLERIE;A;87 LIMOGES;NULL;NULL;05 55 30 18 68;NULL;27749;NULL;
-254674;FX;VAL OISE FERM-SOLUTION STORES;NULL;93 AULNAY SOU;NULL;NULL;01 48 19 69 01;NULL;27750;NULL;
-254675;FX;METALLERIE LA BOISSIERE;A;93 MONTREUIL;NULL;NULL;01 48 59 02 97;NULL;27752;NULL;
-254676;FX;DEBAILLE JEAN CLAUDE;A;34 VENDARGUES;NULL;NULL;04 67 02 06 17;NULL;27755;NULL;
-254677;FX;DARGAUD STORES;B;71 MACON;NULL;NULL;03 85 29 15 89;NULL;27757;NULL;
-254678;FX;ABS PROTECTION;B;26 VALENCE;NULL;NULL;04 75 55 54 30;NULL;27767;NULL;
-254679;FX;MIROITERIE DIJONNAISE;B;21 MARSANNAY;NULL;NULL;03 80 73 30 78;NULL;27774;NULL;
-254680;FX;LA FRANCAISE MIROITERIE;A+;94 L'HAY LES;NULL;NULL;01 46 87 17 27;NULL;27780;NULL;
-254681;FX;LA FRANCAISE MIROITERIE;A+;94 L'HAY LES;NULL;NULL;01 46 87 80 23;NULL;27780;NULL;
-254682;FX;CHAUSSON MAT. CAUSSADE;NULL;31 FENOUILLET;NULL;NULL;05 63 65 18 00;NULL;27796;NULL;
-254683;FX;SCI DE L'AQUILON;A+;14 CAEN;NULL;NULL;02 31 86 70 80;NULL;27797;NULL;
-254684;FX;COUTOUX GILLES ET ETIENNE;D;50 GER;NULL;NULL;02 33 69 53 22;NULL;27801;NULL;
-254685;FX;MAILLET DENIS;A;77 COULOMMIER;NULL;NULL;01 64 03 64 68;NULL;27803;NULL;
-254686;FX;SARL DES PLATANES;D;35 MORDELLES;NULL;NULL;02 99 60 04 89;NULL;27805;NULL;
-254687;FX;MIROITERIE VALLANZASCA;A+;74 SALLANCHES;NULL;NULL;04 50 47 92 75;NULL;27809;NULL;
-254688;FX;LAIR BERNARD;NULL;50 ST CLEMENT;NULL;NULL;02 99 14 63 08;NULL;27810;NULL;
-254689;FX;RENOLUX 4423;NULL;77 OZOIR LA F;NULL;NULL;01 64 05 14 51;NULL;27814;NULL;
-254690;FX;PAILLON PHILIPPE;A;37 LA CELLE S;NULL;NULL;0 ;ph.paillon(a)wanadoo.fr;27815;NULL;
-254691;FX;AVIS MTX - TOUT FAIRE;A;22 LOUDEAC;NULL;NULL;02 96 28 08 80;NULL;27824;NULL;
-254692;FX;AMLOR;A;55 BELLEVILLE;NULL;NULL;03 29 84 82 82;NULL;27825;NULL;
-254693;FX;RAFFORT MATERIAUX;A;74 PASSY;NULL;NULL;04 50 58 56 76;NULL;27826;NULL;
-254694;FX;BARD;D;42 RENAISON;NULL;NULL;04 77 64 43 94;etablissements-bard(a)orange.fr;27830;NULL;
-254695;FX;SERRURERIE ADAM;A;75 PARIS;NULL;NULL;01 49 70 01 95;NULL;27832;NULL;
-254696;FX;HA SERVICES;A;34 AGDE;NULL;NULL;04 67 94 12 53;NULL;27833;NULL;
-254697;FX;BARRAU ISOLAT. SERVICE OUVRAGE;D;64 GAN;NULL;NULL;05 59 21 67 56;j.barrau.iso(a)orange.fr;27835;NULL;
-254698;FX;SMSM - SERVICE MAINTENANC;A;77 GUERARD;NULL;NULL;01 64 65 63 26;NULL;27840;NULL;
-254699;FX;SOLOSTORES;A+;77 FONTAINEBL;NULL;NULL;01 64 22 90 14;contact(a)solostores.com;27841;NULL;
-254700;FX;SOLOSTORES;A+;77 FONTAINEBL;NULL;NULL;01 64 22 23 14;contact(a)solostores.com;27841;NULL;
-254701;FX;TISSERANT MTX TOUT FAIRE;A;88 GERARDMER;NULL;NULL;03 29 63 24 39;NULL;27842;NULL;
-254702;FX;JOLLOIS;A;95 SAINT BRIC;NULL;NULL;01 39 92 48 68;NULL;27843;NULL;
-254703;FX;ACECAM;A;01 FAREINS;NULL;NULL;04 74 60 79 89;NULL;27855;NULL;
-254704;FX;IMC INDUSTRIALISE MODULAIR;A;30 ROCHEFORT;NULL;NULL;04 90 15 16 30;imc(a)imcbat.com;27864;NULL;
-254705;FX;IMC INDUSTRIALISE MODULAIR;A;30 ROCHEFORT;NULL;NULL;04 90 15 16 30;NULL;27864;NULL;
-254706;FX;CL DIVERS OUEST V. NOURISSON;NULL;22 R;NULL;NULL;0 ;NULL;27865;NULL;
-254707;FX;MARSALA JM;A;57 GUEBENHOUS;NULL;NULL;01 34 29 61 20;NULL;27876;NULL;
-254708;FX;BEKO LEFEVRE;A;60 NOINTEL;NULL;NULL;04 44 19 18 88;NULL;27877;NULL;
-254709;FX;LES MENUISIERS REUNIS 4921;B;57 THIONVILLE;NULL;NULL;03 82 56 66 88;NULL;27878;NULL;
-254710;FX;STORE NET BACHE;B;35 LIVRE SUR;NULL;NULL;0 ;NULL;27880;NULL;
-254711;FX;MENUISERIE BETHUYS;A;85 CHALLANS;NULL;NULL;02 51 49 83 34;NULL;27882;NULL;
-254712;FX;EUROP FERMETURES;A;92 LEVALLOIS;NULL;NULL;01 42 70 10 00;NULL;27885;NULL;
-254713;FX;CHAUVET FABRICE;D;17 SAINT PIER;NULL;NULL;05 46 47 45 07;NULL;27888;NULL;
-254714;FX;DE NARDA;B;57 ARS SUR MO;NULL;NULL;03 87 60 81 23;NULL;27891;NULL;
-254715;FX;DE NARDA;B;57 ARS SUR MO;NULL;NULL;03 87 77 77 61;NULL;27891;NULL;
-254716;FX;ANGELY 4482;NULL;75 PARIS;NULL;NULL;01 43 38 17 90;NULL;27892;NULL;
-254717;FX;FENETRES ET VERANDAS DE;A;86 POITIERS;NULL;NULL;05 49 38 35 04;NULL;27899;NULL;
-254718;FX;FALSON JACQUES;B;83 TOULON;NULL;NULL;0 ;NULL;27900;NULL;
-254719;FX;LA CONCIERGERIE;A;67 STRASBOURG;NULL;NULL;03 88 22 22 55;NULL;27910;NULL;
-254720;FX;COMAFRANC LURE;A+;70 Lure;NULL;NULL;03 88 67 33 32;NULL;27913;NULL;
-254721;FX;COMAFRANC LURE;A+;70 Lure;NULL;NULL;03 84 22 52 32;NULL;27913;NULL;
-254722;FX;COMAFRANC LURE;A+;70 Lure;NULL;NULL;0 ;lure(a)comafranc.fr;27913;NULL;
-254723;FX;ASTUS;A;67 WOLFISHEIM;NULL;NULL;03 88 76 14 40;NULL;27915;NULL;
-254724;FX;CL DIVERS PNE A.CHAFFIN;NULL;54 P;NULL;NULL;0 ;NULL;27916;NULL;
-254725;FX;LA FENESTRIERE;NULL;54 COSMES ET;NULL;NULL;0 ;NULL;27918;NULL;
-254726;FX;NOVABAT - NOUVELLES;A;13 BOUC BEL A;NULL;NULL;04 42 22 22 45;NULL;27919;NULL;
-254727;FX;GIRAUDEAU;A;60 NOYON;NULL;NULL;03 44 09 00 97;NULL;27924;NULL;
-254728;FX;MONTIER ERICK;A;84 VILLELAURE;NULL;NULL;04 90 09 95 46;NULL;27928;NULL;
-254729;FX;DONATONE PIERRE;NULL;95 ST BRICE S;NULL;NULL;01 39 92 14 09;NULL;27933;NULL;
-254730;FX;NEBOUT ET VALENTIN SARL;D;16 BARBEZIEUX;NULL;NULL;05 45 78 32 14;zouzou.neboutvalentin(a)wanadoo.fr;27938;NULL;
-254731;FX;NEBOUT ET VALENTIN SARL;D;16 BARBEZIEUX;NULL;NULL;05 45 78 32 14;NULL;27938;NULL;
-254732;FX;CHARBONNIER MARTIAL;A;84 LA TOUR D';NULL;NULL;0 ;NULL;27942;NULL;
-254733;FX;PLEIN JOUR 17 4579;NULL;17 AYTRE;NULL;NULL;05 46 34 20 25;NULL;27945;NULL;
-254734;FX;BONNEMAISON JEAN PIERRE;NULL;33 CREON;NULL;NULL;0 ;NULL;27948;NULL;
-254735;FX;BERNARD;A+;91 JANVILLE S;NULL;NULL;01 60 82 75 62;NULL;27949;NULL;
-254736;FX;BHV PARLY 2;A;78 LE CHESNAY;NULL;NULL;01 39 23 38 89;NULL;27952;NULL;
-254737;FX;BHV PARLY 2;A;78 LE CHESNAY;NULL;NULL;01 39 23 34 87;NULL;27952;NULL;
-254738;FX;BHV CRETEIL;D;94 CRETEIL CE;NULL;NULL;01 49 60 45 64;NULL;27955;NULL;
-254739;FX;BHV MONTLHERY;D;91 MONTLHERY;NULL;NULL;01 49 60 46 65;NULL;27956;NULL;
-254740;FX;BHV VILLENEUVE LA GARENNE;D;92 VILLENEUVE;NULL;NULL;01 47 92 30 45;NULL;27958;NULL;
-254741;FX;BHV SAINT GENIS LAVAL;A;69 ST GENIS L;NULL;NULL;04 78 56 40 67;NULL;27960;NULL;
-254742;FX;BHV LIMONEST;D;69 LIMONEST C;NULL;NULL;04 78 35 66 44;NULL;27962;NULL;
-254743;FX;BOBAULT BERNARD;A;41 MAZANGE;NULL;NULL;02 54 72 08 57;NULL;27968;NULL;
-254744;FX;PARIS RIDEAUX;A;94 ALFORTVILL;NULL;NULL;01 43 75 40 14;contact(a)paris-rideaux.fr;27969;NULL;
-254745;FX;ATELIERS C;A;11 MONTFERRAN;NULL;NULL;04 68 60 53 16;NULL;27971;NULL;
-254746;FX;MESMIN;A;19 OBJAT;NULL;NULL;05 55 25 55 07;NULL;27972;NULL;
-254747;FX;MENUISERIE TOUT ALU;D;31 PECHBONNIE;NULL;NULL;05 67 00 70 89;NULL;27980;NULL;
-254748;FX;CHARRETON - ETS FENETRES;A;78 LA SEINE S;NULL;NULL;01 42 00 01 23;NULL;27983;NULL;
-254749;FX;VITRAFRANCE 4504;NULL;45 SULLY SUR;NULL;NULL;02 38 36 49 62;NULL;27984;NULL;
-254750;FX;TECHNIBAIE;D;92 BOULOGNE B;NULL;NULL;01 46 04 03 23;NULL;27986;NULL;
-254751;FX;CL DIVERS SUD EST L MALTETE;A;89 A;NULL;NULL;0 ;NULL;27987;NULL;
-254752;FX;MG ISOLATION VAL DE LOIRE;NULL;45 ST HILAIRE;NULL;NULL;02 38 45 65 12;mgisolation-vdl(a)worldonline.fr;27988;NULL;
-254753;FX;MAISONS ALASKA;A+;45 CHATEAUNEU;NULL;NULL;02 38 58 68 14;NULL;27989;NULL;
-254754;FX;PAGOT SAVOIE CHAMPAGNOLE;A;21 CHENOVE;NULL;NULL;03 84 52 20 71;NULL;27992;NULL;
-254755;FX;PUBLI DECO MEDIA PLUS;A;16 GOND PONTO;NULL;NULL;05 45 68 40 55;NULL;27997;NULL;
-254756;FX;KELPUB;A;69 LYON;NULL;NULL;04 78 64 63 26;NULL;27999;NULL;
-254757;FX;ARC EN CIEL 4502;NULL;75 PARIS;NULL;NULL;01 42 74 25 21;NULL;28004;NULL;
-254758;FX;ALUMINIUM VACHER BLAISOIS;A+;41 BLOIS;NULL;NULL;02 54 42 76 32;avb-etude(a)wanadoo.fr;28008;NULL;
-254759;FX;ALUMINIUM VACHER BLAISOIS;A+;41 BLOIS;NULL;NULL;02 54 42 76 32;NULL;28008;NULL;
-254760;FX;LE COMMERCIALISTE;A;60 BIENVILLE;NULL;NULL;03 44 40 47 85;NULL;28009;NULL;
-254761;FX;BATIMENT SECOND OEUVRE 4459;NULL;45 SAINT DENI;NULL;NULL;02 38 58 89 06;NULL;28010;NULL;
-254762;FX;BANGUI INTERNATIONAL;B;92 NANTERRE C;NULL;NULL;05 96 51 42 86;fabienne.bangui(a)wanadoo.fr;28011;NULL;
-254763;FX;BANGUI INTERNATIONAL;B;92 NANTERRE C;NULL;NULL;05 96 51 42 86;banguicaraibes(a)wanadoo.fr;28011;NULL;
-254764;FX;ATELIER LILLIU;A;48 RIEUTORT D;NULL;NULL;04 66 47 35 46;NULL;28019;NULL;
-254765;FX;SERAC - TOUT FAIRE;A;25 MORTEAU;NULL;NULL;03 81 67 10 06;NULL;28022;NULL;
-254766;FX;STORES FH 4962;NULL;67 HOENHEIM;NULL;NULL;03 88 18 55 76;stores.fh(a)wanadoo.fr;28024;NULL;
-254767;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;04 73 79 15 88;NULL;28025;NULL;
-254768;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;0 ;NULL;28025;NULL;
-254769;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;0 ;servibat.ovtcharenko(a)aliceadsl.fr;28025;NULL;
-254770;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;0 ;servibat.stievenart(a)aliceadsl.fr;28025;NULL;
-254771;FX;MIPHALU;A;94 BONNEUIL S;NULL;NULL;01 43 77 80 03;NULL;28032;NULL;
-254772;FX;ERAL MATERIAUX LE VERSOUD;B;38 LE VERSOUD;NULL;NULL;04 76 77 21 32;NULL;28037;NULL;
-254773;FX;HABITAT SERVICE FRANCE;NULL;45 TRAINOU;NULL;NULL;02 38 52 70 01;NULL;28039;NULL;
-254774;FX;CL DIVERS PNE J. MAVILLA;B;92 P;NULL;NULL;0 ;NULL;28042;NULL;
-254775;FX;CL DIVERS PNE J. MAVILLA;B;92 P;NULL;NULL;0 ;NULL;28042;NULL;
-254776;FX;CTBVL (CENTRE TECHN.;A;45 ORLEANS;NULL;NULL;02 38 62 45 46;NULL;28043;NULL;
-254777;FX;CTBVL (CENTRE TECHN.;A;45 ORLEANS;NULL;NULL;02 38 51 17 56;NULL;28043;NULL;
-254778;FX;ABD ALUMINIUM BUILDING DEVELOP;B;38 ST ETIENNE;NULL;NULL;04 76 65 52 18;e.escallier(a)alumyr.com;28046;NULL;
-254779;FX;CAREN RENE 4116;NULL;83 SIX FOURS;NULL;NULL;04 94 10 22 34;NULL;28052;NULL;
-254780;FX;POINT P BMSO BERGERAC;NULL;24 BERGERAC;NULL;NULL;05 53 57 03 22;NULL;28053;NULL;
-254781;FX;POINT P BMSO PINEUILH;A+;33 STE FOY LA;NULL;NULL;0 ;elodie.gardes(a)saint-gobain.com;28054;NULL;
-254782;FX;POINT P BMSO PINEUILH;A+;33 STE FOY LA;NULL;NULL;05 57 46 22 75;NULL;28054;NULL;
-254783;FX;RENARD PERE ET FILS TOUT;A;39 BLETTERANS;NULL;NULL;03 84 85 09 65;NULL;28056;NULL;
-254784;FX;MONTMIRAIL MATERIAUX;A;51 MONTMIRAIL;NULL;NULL;03 26 81 16 41;NULL;28057;NULL;
-254785;FX;MONTMIRAIL MATERIAUX;A;51 MONTMIRAIL;NULL;NULL;03 26 81 16 41;montmirailmateriaux.dominique(a)orange.fr;28057;NULL;
-254786;FX;STE D'EXPLOIT. GODELIER G;A+;60 MARGNY LES;NULL;NULL;03 44 83 80 80;godelier(a)wanadoo.fr;28058;NULL;
-254787;FX;ESTENAVES - TOUT FAIRE;A;33 BAZAS;NULL;NULL;05 56 25 13 61;NULL;28059;NULL;
-254788;FX;CMR ILE DE FRANCE 4549;NULL;93 ROSNY SOUS;NULL;NULL;01 48 97 45 72;NULL;28061;NULL;
-254789;FX;CMR ILE DE FRANCE 4549;NULL;93 ROSNY SOUS;NULL;NULL;0 ;NULL;28061;NULL;
-254790;FX;SYLVESTRE MAT. TOUT FAIRE;A;84 ISLE SUR L;NULL;NULL;04 90 76 89 22;NULL;28078;NULL;
-254791;FX;FREYTET - TOUT FAIRE;A;24 DAGLAN;NULL;NULL;05 53 31 32 20;NULL;28089;NULL;
-254792;FX;TURROU PATRICK;A;89 SAINT GEOR;NULL;NULL;03 86 46 55 97;NULL;28090;NULL;
-254793;FX;CL DIVERS OUEST M. GUISSEAU;A;44 R;NULL;NULL;0 ;NULL;28094;NULL;
-254794;FX;LEONARD DANIEL TOUT FAIRE;A;95 SOISY SOUR;NULL;NULL;01 39 34 24 66;NULL;28096;NULL;
-254795;FX;DECORITEX;A;14 CORMELLES;NULL;NULL;02 31 82 21 39;NULL;28102;NULL;
-254796;FX;DUBILLON REMY 4636;NULL;94 VILLIERS S;NULL;NULL;0 ;NULL;28103;NULL;
-254797;FX;FERMETURES NEUVILLAISES;NULL;76 LA NEUVILL;NULL;NULL;02 32 49 20 56;MARC.LELARGE(a)WANADOO.FR.;28105;NULL;
-254798;FX;GRAILLOT;A+;51 DORMANS;NULL;NULL;03 26 58 22 59;NULL;28106;NULL;
-254799;FX;GRAILLOT;A+;51 DORMANS;NULL;NULL;03 26 58 22 59;graillot.sas(a)orange.fr;28106;NULL;
-254800;FX;GRAILLOT;A+;51 DORMANS;NULL;NULL;0 ;NULL;28106;NULL;
-254801;FX;PELLETIER DOMINIQUE;A;41 MER;NULL;NULL;02 54 81 26 63;NULL;28107;NULL;
-254802;FX;CHAUSSON TRIALIS EPINOUZE;NULL;26 EPINOUZE;NULL;NULL;04 75 31 60 74;NULL;28108;NULL;
-254803;FX;LEUILLET PERE ET FILS;NULL;36 LA CHATRE;NULL;NULL;02 54 06 04 43;NULL;28111;NULL;
-254804;FX;LEUILLET PERE ET FILS;NULL;36 LA CHATRE;NULL;NULL;02 54 06 04 03;NULL;28111;NULL;
-254805;FX;THIEVENAZ MTX TOUT FAIRE;A;38 VOIRON;NULL;NULL;04 76 05 50 66;NULL;28116;NULL;
-254806;FX;MOREAU MATERIAUX TOUT FAIRE;A;87 CHALUS;NULL;NULL;05 55 78 54 04;NULL;28117;NULL;
-254807;FX;CABIA MTX - TOUT FAIRE;A;58 CLAMECY;NULL;NULL;03 86 27 28 92;NULL;28121;NULL;
-254808;FX;ESPACE DECO;A;86 LOUDUN;NULL;NULL;0 ;NULL;28123;NULL;
-254809;FX;PROT 4746;NULL;14 DIVES SUR;NULL;NULL;02 31 91 34 66;NULL;28124;NULL;
-254810;FX;BOUTIQUE DES STORES;B;74 CERVENS;NULL;NULL;04 50 94 62 62;pvermostore(a)aol.com;28127;NULL;
-254811;FX;STEINMETZ;B;63 ISSOIRE;NULL;NULL;04 73 55 10 73;NULL;28128;NULL;
-254812;FX;GANZITTI SERGE;A;95 DOMONT CED;NULL;NULL;01 39 35 03 10;NULL;28132;NULL;
-254813;FX;GRIEU SERRURERIE;A+;76 LE HAVRE;NULL;NULL;02 35 46 04 13;NULL;28133;NULL;
-254814;FX;GRIEU SERRURERIE;A+;76 LE HAVRE;NULL;NULL;0 ;NULL;28133;NULL;
-254815;FX;GRIEU SERRURERIE;A+;76 LE HAVRE;NULL;NULL;02 35 49 22 48;NULL;28133;NULL;
-254816;FX;TECHNIQUE ET TRADITION 4602;NULL;45 OUVROUER L;NULL;NULL;02 38 57 21 77;NULL;28134;NULL;
-254817;FX;TECHNIQUE ET TRADITION 4602;NULL;45 OUVROUER L;NULL;NULL;02 38 57 21 77;cso(a)wanadoo.fr;28134;NULL;
-254818;FX;COME CHRISTOPHE;A;45 ORLEANS;NULL;NULL;02 38 43 47 56;NULL;28137;NULL;
-254819;FX;TECHNI POSE 4477;NULL;12 RODEZ;NULL;NULL;05 65 78 99 43;NULL;28138;NULL;
-254820;FX;HORIZON AUTOMATISME;A+;74 CRAN GEVRI;NULL;NULL;04 50 69 09 86;horizon.automatisme(a)securiste.com;28141;NULL;
-254821;FX;HORIZON AUTOMATISME;A+;74 CRAN GEVRI;NULL;NULL;04 50 69 09 86;NULL;28141;NULL;
-254822;FX;IDESTORES;A;94 VILLEUNEUV;NULL;NULL;01 43 68 78 87;NULL;28142;NULL;
-254823;FX;EURO FENETRES 4422;NULL;94 CRETEIL;NULL;NULL;01 49 81 79 99;NULL;28143;NULL;
-254824;FX;DURAND - TOUT FAIRE;A;54 FOUG;NULL;NULL;03 83 62 76 63;NULL;28153;NULL;
-254825;FX;GABRIEL;B;38 Grenay;NULL;NULL;04 74 95 64 40;NULL;28154;NULL;
-254826;FX;AMBROSINI SAS TOUT FAIRE;B;57 ST AVOLD C;NULL;NULL;03 87 92 88 44;NULL;28156;NULL;
-254827;FX;BAFFET MTX - TOUT FAIRE;A;19 ST VIANCE;NULL;NULL;05 55 24 59 75;NULL;28157;NULL;
-254828;FX;WILHELM RIESS;A;68 DURRENENTZ;NULL;NULL;03 89 49 12 39;NULL;28158;NULL;
-254829;FX;MENUISERIE BERNE;A;42 ST CHAMOND;NULL;NULL;04 77 22 17 66;NULL;28159;NULL;
-254830;FX;NORMEN NORMANDIE 4529;NULL;27 ANGERVILLE;NULL;NULL;02 32 28 41 17;NULL;28160;NULL;
-254831;FX;BEAUGRAND;B;10 SAINT GERM;NULL;NULL;03 25 75 30 75;NULL;28161;NULL;
-254832;FX;ORSONI MARIE-FRANCE;A;20 AJACCIO;NULL;NULL;04 95 22 47 22;NULL;28164;NULL;
-254833;FX;MENUISERIE WINNE;NULL;59 DOUAI CEDE;NULL;NULL;03 27 96 82 28;NULL;28167;NULL;
-254834;FX;VERGNES PIERRE FILS TOUT FAIRE;A;24 MONPAZIER;NULL;NULL;05 53 22 43 95;NULL;28172;NULL;
-254835;FX;ISOPROFIL;D;89 MIGENNES;NULL;NULL;03 86 92 95 36;NULL;28176;NULL;
-254836;FX;DEFARGES CHRISTOPHE;A;45 HUISSEAU S;NULL;NULL;02 38 74 60 90;NULL;28180;NULL;
-254837;FX;RENOVATION CONSEIL HABITA 3027;NULL;76 MONTIVILLI;NULL;NULL;02 35 28 14 43;NULL;28182;NULL;
-254838;FX;SDF PALM ET LE NOUVEL;B;35 RENNES;NULL;NULL;02 99 51 27 98;NULL;28183;NULL;
-254839;FX;TREFLE VERT;D;74 MEGEVE;NULL;NULL;04 50 21 11 61;letreflevert(a)orange.fr;28184;NULL;
-254840;FX;BARTHE JACQUES;A;65 LOURDES;NULL;NULL;05 62 94 08 52;NULL;28188;NULL;
-254841;FX;ERKI;A;37 AMBOISE;NULL;NULL;02 47 57 40 65;NULL;28189;NULL;
-254842;FX;RODRIGUEZ JEAN PIERRE;A;65 LOURDES;NULL;NULL;05 62 42 15 47;jeanpierre.rodrigue(a)orange.fr;28199;NULL;
-254843;FX;MANCUSO ANTONIO;A;77 CHALIFERT;NULL;NULL;01 60 43 85 74;NULL;28200;NULL;
-254844;FX;STORE ETOILE;A;77 BROU SUR C;NULL;NULL;01 64 26 20 99;NULL;28201;NULL;
-254845;FX;STAEG (STE THIAISIENNE;A;94 VITRY SUR;NULL;NULL;01 46 82 74 83;NULL;28209;NULL;
-254846;FX;STREC 4838;NULL;93 BONDY;NULL;NULL;01 48 50 04 18;NULL;28216;NULL;
-254847;FX;ERGB ETUDES ET REALISATIONS;A;45 ORLEANS CE;NULL;NULL;02 38 51 02 83;saergb45(a)aol.com;28222;NULL;
-254848;FX;SABLEMAT - AG. MONTOIS;A;57 MONTOIS LA;NULL;NULL;03 82 45 16 98;NULL;28225;NULL;
-254849;FX;CROSNIER ET FILS;A;41 LA CHAUSSE;NULL;NULL;02 54 74 80 56;NULL;28226;NULL;
-254850;FX;SOHIDEL 4317;NULL;83 LA CROIX V;NULL;NULL;04 94 54 30 92;NULL;28230;NULL;
-254851;FX;APM BOURDON;A;45 DONNERY;NULL;NULL;02 38 59 59 25;NULL;28231;NULL;
-254852;FX;VERANDA SYSTEM'ALU;A;31 SEYSSES;NULL;NULL;05 61 56 99 06;NULL;28241;NULL;
-254853;FX;TILHET MTX - TOUT FAIRE;A;64 ARZACQ;NULL;NULL;05 59 04 42 22;NULL;28251;NULL;
-254854;FX;GST RENOVATION;A;45 SEMOY;NULL;NULL;02 38 66 12 21;NULL;28253;NULL;
-254855;FX;MENUISERIE GIRARDIN;A+;54 PAGNY SUR;NULL;NULL;03 83 81 79 14;NULL;28254;NULL;
-254856;FX;MENUISERIE GIRARDIN;A+;54 PAGNY SUR;NULL;NULL;03 83 81 79 14;hcoquard(a)menuiserie-girardin.com;28254;NULL;
-254857;FX;KERNEN SERGE;A;29 MELLAC;NULL;NULL;02 98 71 90 14;NULL;28260;NULL;
-254858;FX;CATENA ETS SMC;B;12 REQUISTA;NULL;NULL;05 65 46 60 21;NULL;28264;NULL;
-254859;FX;REVILLARD J.;A;74 CRUSEILLES;NULL;NULL;04 50 44 25 34;NULL;28271;NULL;
-254860;FX;FORCLUM ATE;A;76 CANTELEU;NULL;NULL;02 32 83 09 20;NULL;28277;NULL;
-254861;FX;MENUISERIE CASSIN;A;19 EGLETONS;NULL;NULL;05 55 93 93 11;NULL;28286;NULL;
-254862;FX;MENUISERIE CASSIN;A;19 EGLETONS;NULL;NULL;05 55 93 00 91;NULL;28286;NULL;
-254863;FX;PASCAL STORES;NULL;06 VENCE;NULL;NULL;04 93 24 07 60;NULL;28287;NULL;
-254864;FX;SERRURERIE SIGWALD;A;67 KRAUTERGER;NULL;NULL;03 88 95 70 93;NULL;28289;NULL;
-254865;FX;JGF FERREIRA JOQUIM GOMES;A;92 CHATENAY M;NULL;NULL;01 40 91 90 50;jgf(a)cegetel.net;28294;NULL;
-254866;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;64 33 65 30 57;NULL;28295;NULL;
-254867;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;0 ;james.adair(a)johnsonandcouzins.co.nz;28295;NULL;
-254868;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;64 33 65 30 57;sales(a)johnsonandcouzins.co.nz;28295;NULL;
-254869;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;64 33 65 30 57;graeme.kerr(a)johnosonandcouzins.co.nz;28295;NULL;
-254870;FX;SAMAC MTX - TOUT FAIRE;A;61 MORTAGNE A;NULL;NULL;02 33 25 53 41;NULL;28297;NULL;
-254871;FX;ROBERT - ETS MCM;NULL;79 THOUARS;NULL;NULL;05 49 66 09 63;NULL;28298;NULL;
-254872;FX;MCSO;A;17 JONZAC CED;NULL;NULL;05 46 48 21 70;NULL;28299;NULL;
-254873;FX;LEBASTARD ALAIN;D;35 BILLE;NULL;NULL;02 99 97 50 40;NULL;28304;NULL;
-254874;FX;EUROSECURITE;A;31 TOULOUSE;NULL;NULL;05 61 43 04 99;NULL;28306;NULL;
-254875;FX;CHAMPARNAUD - TOUT FAIRE;A;24 PERIGUEUX;NULL;NULL;05 53 07 05 48;NULL;28311;NULL;
-254876;FX;ROUSSEAU MTX - TOUT FAIRE;A;51 ESTERNAY;NULL;NULL;03 26 81 95 98;rousseaumateriaux(a)orange.fr;28317;NULL;
-254877;FX;EGLETONS PVC;A;19 EGLETONS;NULL;NULL;05 55 93 00 91;NULL;28319;NULL;
-254878;FX;BRILHAULT-CHARON 4544;NULL;28 CHATEAUDUN;NULL;NULL;02 37 45 67 55;NULL;28324;NULL;
-254879;FX;ABPM;A;63 LA ROCHE B;NULL;NULL;04 73 39 21 21;NULL;28329;NULL;
-254880;FX;BLOC ET JOB;A;54 LUNEVILLE;NULL;NULL;03á83469225;lesmateriauxvv(a)bloc-job.fr;28332;NULL;
-254881;FX;BLOC ET JOB;A;54 LUNEVILLE;NULL;NULL;03 83 73 38 29;expoluneville(a)bloc-job.fr;28332;NULL;
-254882;FX;BLOC ET JOB;A;54 LUNEVILLE;NULL;NULL;03 83 73 38 29;NULL;28332;NULL;
-254883;FX;JACOB AG. VIGNEULE -TOUT FAIRE;B;55 VIGNEULLES;NULL;NULL;03 29 89 56 17;materiaux.jacob(a)wanadoo.fr;28336;NULL;
-254884;FX;MCA - TOUT FAIRE;A;57 AUDUN LE T;NULL;NULL;03 82 91 27 82;NULL;28338;NULL;
-254885;FX;GUILLEMOT MTX TOUT FAIRE;A;56 LE FAOUET;NULL;NULL;02 97 23 04 69;NULL;28345;NULL;
-254886;FX;BRICORAMA HELIODIS LES ABRETS;NULL;38 LES ABRETS;NULL;NULL;04 76 37 43 45;NULL;28347;NULL;
-254887;FX;BOUCLET ETIENNE LORENOVE;A;41 VENDOME;NULL;NULL;02 54 72 21 75;NULL;28349;NULL;
-254888;FX;BERARDI PVC;B;54 HUSSIGNY G;NULL;NULL;03 82 44 40 87;NULL;28353;NULL;
-254889;FX;BOGO BERNARD;A;06 JUAN LES P;NULL;NULL;04 93 67 11 32;NULL;28355;NULL;
-254890;FX;SAISON MTX TOUT FAIRE 4825;NULL;62 LA CALOTER;NULL;NULL;03 21 90 78 28;NULL;28362;NULL;
-254891;FX;BATEC 4945;A;78 TRAPPES;NULL;NULL;01 34 61 39 05;NULL;28363;NULL;
-254892;FX;PS ISOLATION 2000 4229;NULL;57 ROZERIEULL;NULL;NULL;03 87 60 17 15;NULL;28364;NULL;
-254893;FX;LELEU PHILIPPE 4500;NULL;57 RECHICOURT;NULL;NULL;03 87 24 78 38;NULL;28370;NULL;
-254894;FX;MIROITERIE DU COTENTIN;D;50 VALOGNES;NULL;NULL;02 33 95 07 35;NULL;28375;NULL;
-254895;FX;BALUBOIS;A;88 GRANGES SU;NULL;NULL;03 29 57 56 98;NULL;28376;NULL;
-254896;FX;POT ET FILS TOUT FAIRE FLIXECO;NULL;80 FLIXECOURT;NULL;NULL;03 22 51 50 59;NULL;28377;NULL;
-254897;FX;ARENOVA;NULL;03 DROITURIER;NULL;NULL;04 70 55 04 78;NULL;28379;NULL;
-254898;FX;GLOWACZ JEAN;A;77 CRISENOY;NULL;NULL;01 64 38 86 14;NULL;28384;NULL;
-254899;FX;SEES BOIS;A;61 SEES;NULL;NULL;02 33 28 99 39;NULL;28386;NULL;
-254900;FX;AUDE MENUISERIE;A+;11 VILLENEUVE;NULL;NULL;04 68 26 10 92;NULL;28395;NULL;
-254901;FX;GEDIMAT EXCOFFIER;NULL;51 CHALONS EN;NULL;NULL;03 26 65 78 20;NULL;28400;NULL;
-254902;FX;CIDIC;A+;14 CAEN;NULL;NULL;02 31 86 70 80;NULL;28402;NULL;
-254903;FX;ROMANO STORES;A;69 VILLEURBAN;NULL;NULL;04 78 68 17 75;NULL;28404;NULL;
-254904;FX;MURISOL PIC;A;69 TALUYERS;NULL;NULL;04 78 48 27 78;NULL;28406;NULL;
-254905;FX;OG RENOVATION 4903;NULL;45 CHECY;NULL;NULL;02 38 58 85 29;NULL;28407;NULL;
-254906;FX;MVF SOCIETE D EXPLOIT DES ETS CLAUDE;D;19 USSEL;NULL;NULL;05 55 46 17 47;NULL;28413;NULL;
-254907;FX;PERROT DANIEL;A+;58 COSNE COUR;NULL;NULL;03 86 26 84 99;NULL;28415;NULL;
-254908;FX;ARI ABIT'A RENOV ISOL;A;76 GRAND COUR;NULL;NULL;02 35 67 75 32;NULL;28416;NULL;
-254909;FX;REYNAUD CAUVIN YVOSE;NULL;71 LOUHANS;NULL;NULL;05 62 72 38 01;NULL;28417;NULL;
-254910;FX;DESMONTEIX MATERIAUX;A;26 TAIN;NULL;NULL;04 75 07 02 65;NULL;28418;NULL;
-254911;FX;RUBIS ST LAURENT TOUT FAIRE;A;30 ST LAURENT;NULL;NULL;04 66 50 36 83;NULL;28419;NULL;
-254912;FX;GLAUSER INTERNATIONAL 4460;NULL;75 PARIS;NULL;NULL;0 ;NULL;28424;NULL;
-254913;FX;BATI BAIE 4464;NULL;31 SAINT OREN;NULL;NULL;05 62 88 23 69;NULL;28425;NULL;
-254914;FX;GIUSTI LUCIEN ET CIE;A;13 MARSEILLE;NULL;NULL;04 91 92 46 58;info.slg(a)nerim.net;28431;NULL;
-254915;FX;TOULOUSE MENUISERIE;A;31 TOULOUSE;NULL;NULL;05 61 92 86 44;NULL;28435;NULL;
-254916;FX;TOULOUSE MENUISERIE;A;31 TOULOUSE;NULL;NULL;05 61 40 88 22;NULL;28435;NULL;
-254917;FX;LE CHEVALIER;A+;93 MONTFERMEI;NULL;NULL;01 43 30 69 76;NULL;28439;NULL;
-254918;FX;PLOTON TOUT FAIRE;A;89 TOUCY;NULL;NULL;03 86 44 05 94;NULL;28441;NULL;
-254919;FX;GEDIMAT MICHEL;A;14 LIVAROT;NULL;NULL;02 31 63 12 96;NULL;28444;NULL;
-254920;FX;GEDIMAT MICHEL;A;14 LIVAROT;NULL;NULL;02 31 42 64 48;NULL;28444;NULL;
-254921;FX;2CI CASPAR CONFECTION LORENOVE;A;67 DUPPIGHEIM;NULL;NULL;03 88 49 77 20;NULL;28448;NULL;
-254922;FX;MENUISERIES DES LANDES;NULL;33 VILLANDRAU;NULL;NULL;05 56 25 82 09;NULL;28454;NULL;
-254923;FX;GONSARD ERIC;A;72 ST PAVACE;NULL;NULL;02 43 89 15 88;NULL;28455;NULL;
-254924;FX;KLEIN ALFRED;B;57 HARTZVILLE;NULL;NULL;03 87 25 59 98;NULL;28457;NULL;
-254925;FX;COQUEMPOT - TOUT FAIRE;A;62 FAUQUEBERG;NULL;NULL;03 21 39 23 30;NULL;28460;NULL;
-254926;FX;AP DIFFUSION;A;31 L'UNION;NULL;NULL;05 61 09 65 49;NULL;28462;NULL;
-254927;FX;RIO;NULL;31 TOULOUSE;NULL;NULL;05 62 75 39 38;NULL;28463;NULL;
-254928;FX;EURO CONFORT;A;14 CAEN;NULL;NULL;02 31 82 61 62;NULL;28467;NULL;
-254929;FX;DISTRIBAT TOUT FAIRE;A;28 NOGENT LE;NULL;NULL;02 37 51 99 97;NULL;28477;NULL;
-254930;FX;LEROY MERLIN FRANCE MASSY;A;91 MASSY;NULL;NULL;01 69 30 70 58;NULL;28481;NULL;
-254931;FX;LEGUEULT DIDIER;A;78 RAMBOUILLE;NULL;NULL;01 34 85 57 88;NULL;28482;NULL;
-254932;FX;POINT P MERIDIONALE CAUSSADE;A;82 CAUSSADE;NULL;NULL;05 63 65 05 83;NULL;28486;NULL;
-254933;FX;DELAHAYE HERVE;A;55 HEUDICOURT;NULL;NULL;03 29 89 57 80;NULL;28491;NULL;
-254934;FX;EFIBAT;B;08 SECHEVAL;NULL;NULL;03 24 58 43 20;NULL;28506;NULL;
-254935;FX;RAZE MARC;B;35 BRUC SUR;NULL;NULL;02 99 34 35 56;NULL;28521;NULL;
-254936;FX;GLAVERAL;D;37 MONTLOUIS;NULL;NULL;02 47 45 19 01;NULL;28527;NULL;
-254937;FX;DECORUM;A;76 ROUEN;NULL;NULL;02 35 14 96 78;NULL;28529;NULL;
-254938;FX;MOUTH ET CIE TOUT FAIRE;NULL;16 HIERSAC;NULL;NULL;05 45 90 81 89;NULL;28534;NULL;
-254939;FX;VALLETTE;A+;93 AULNAY SOU;NULL;NULL;01 48 65 93 70;NULL;28546;NULL;
-254940;FX;ABM FERMETURES;A;18 BOURGES;NULL;NULL;02 48 50 78 04;NULL;28550;NULL;
-254941;FX;ORGEL FRANCIS;A;57 LORQUIN;NULL;NULL;0 ;NULL;28552;NULL;
-254942;FX;DUMON ET FILS;B;43 FRUGERES L;NULL;NULL;04 71 76 36 17;NULL;28555;NULL;
-254943;FX;MAGISSON TOUT FAIRE;A;52 ST DIZIER;NULL;NULL;03 25 05 85 85;NULL;28561;NULL;
-254944;FX;LE MUR EN VERRE 4428;NULL;94 CHOISY LE;NULL;NULL;01 48 84 86 86;NULL;28562;NULL;
-254945;FX;ABBR SERRURERIE 4611;NULL;41 BLOIS;NULL;NULL;02 54 78 62 91;NULL;28568;NULL;
-254946;FX;ISOGLASS;D;45 SAINT PRYV;NULL;NULL;02 38 72 14 70;NULL;28570;NULL;
-254947;FX;SUD ALU 4673;NULL;20 SAN NICOLA;NULL;NULL;04 95 38 45 04;NULL;28576;NULL;
-254948;FX;LEROY MERLIN FRANCE CHELLES;A;77 CHELLES;NULL;NULL;01 64 21 88 77;NULL;28582;NULL;
-254949;FX;AMGB 4647;NULL;16 COGNAC;NULL;NULL;05 45 36 53 10;NULL;28585;NULL;
-254950;FX;DICAH 4478;NULL;17 ST HILAIRE;NULL;NULL;0 ;NULL;28586;NULL;
-254951;FX;BALOUZAT SERGE;A;03 LE DONJON;NULL;NULL;04 70 99 51 75;NULL;28588;NULL;
-254952;FX;BS BAIE ISOLATION SARL 5004;A;32 AUCH;NULL;NULL;05 62 06 27 36;NULL;28593;NULL;
-254953;FX;BS BAIE ISOLATION SARL 5004;A;32 AUCH;NULL;NULL;05 62 64 01 05;NULL;28593;NULL;
-254954;FX;GES CLAUDE ETS;A;47 MARMANDE;NULL;NULL;05 53 89 27 06;NULL;28594;NULL;
-254955;FX;MAZY FRERES;A;19 SAINT ROBE;NULL;NULL;05 55 25 20 16;NULL;28595;NULL;
-254956;FX;POMMIER MICHEL;A;42 ST JEAN SO;NULL;NULL;04 77 76 36 07;NULL;28600;NULL;
-254957;FX;THARIOT MAX;A;45 BOISCOMMUN;NULL;NULL;02 38 33 76 76;max.thariot(a)wanadoo.fr;28612;NULL;
-254958;FX;MARTIFEL;A;75 PARIS;NULL;NULL;01 47 64 03 73;NULL;28614;NULL;
-254959;FX;LEROY MERLIN FRANCE ANGERS;A;49 ST BARTHEL;NULL;NULL;02 41 34 71 29;NULL;28615;NULL;
-254960;FX;CHEZE TOUT FAIRE;B;03 EBREUIL;NULL;NULL;04 70 90 75 32;NULL;28620;NULL;
-254961;FX;SODEM;A;45 MEUNG SUR;NULL;NULL;02 38 45 19 80;NULL;28621;NULL;
-254962;FX;SPETTEL 302939;NULL;67 DUPPIGHEIM;NULL;NULL;03 88 49 13 40;NULL;28625;NULL;
-254963;FX;ARCELIN ANDRE;A;45 SULLY SUR;NULL;NULL;02 38 67 71 45;menuiserie.arcelin(a)wanadoo.fr;28628;NULL;
-254964;FX;GAUMERAIS;B;50 LE TEILLEU;NULL;NULL;02 33 59 97 59;NULL;28632;NULL;
-254965;FX;MENUISERIE MOREAU JEANDIN;A;71 TRAMAYES;NULL;NULL;0 ;NULL;28646;NULL;
-254966;FX;PAULIN;NULL;43 LANGEAC;NULL;NULL;04 71 02 06 76;NULL;28647;NULL;
-254967;FX;ROUSSEL - C.S.F.;NULL;28 BONNEVAL;NULL;NULL;02 37 47 25 86;NULL;28649;NULL;
-254968;FX;COMAFRANC VESOUL;A+;70 Vesoul;NULL;NULL;0 ;lesmateriaux.vesoul(a)comafranc.fr;28654;NULL;
-254969;FX;COMAFRANC VESOUL;A+;70 Vesoul;NULL;NULL;03 84 76 78 16;NULL;28654;NULL;
-254970;FX;MIROITERIE GENERALE DE;A+;77 TRILPORT;NULL;NULL;01 64 33 96 24;NULL;28660;NULL;
-254971;FX;GASQ CHRISTIAN;A;95 MERY SUR O;NULL;NULL;01 34 40 58 86;c.gasq(a)wanadoo.fr;28672;NULL;
-254972;FX;GASQ CHRISTIAN;A;95 MERY SUR O;NULL;NULL;01 34 21 60 30;NULL;28672;NULL;
-254973;FX;BENOIST MARC;A;22 PLOUEZEC;NULL;NULL;0 ;benoist.menuiserie(a)free.fr;28688;NULL;
-254974;FX;BENOIST MARC;A;22 PLOUEZEC;NULL;NULL;09 55 33 44 71;benoist.menuiserie(a)free.fr;28688;NULL;
-254975;FX;ROUSSEAU;A;49 LE PLESSIS;NULL;NULL;02 41 31 12 29;Nicolas.boisrame(a)rousseausa.fr;28696;NULL;
-254976;FX;ROUSSEAU;A;49 LE PLESSIS;NULL;NULL;02 41 31 12 29;NULL;28696;NULL;
-254977;FX;BRAUN A. SUCCESSEURS;A+;67 KRAUTERGER;NULL;NULL;03 88 95 79 12;NULL;28701;NULL;
-254978;FX;DOMECA;A;67 DUPPIGHEIM;NULL;NULL;03 88 49 77 44;NULL;28702;NULL;
-254979;FX;BRIOUDE FABRICATION;B;07 AUBENAS CE;NULL;NULL;04 75 93 83 33;NULL;28705;NULL;
-254980;FX;CL DIVERS SUD OUEST D LABARBE;NULL;16 A;NULL;NULL;02 99 14 83 82;NULL;28707;NULL;
-254981;FX;CL DIVERS SUD OUEST D LABARBE;NULL;16 A;NULL;NULL;05 56 13 36 76;NULL;28707;NULL;
-254982;FX;HABITAT CONFORT;A;33 BORDEAUX;NULL;NULL;05 56 24 90 22;NULL;28709;NULL;
-254983;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 41 70 10 96;NULL;28713;NULL;
-254984;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 60 44 05 40;NULL;28713;NULL;
-254985;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 64 65 85 05;NULL;28713;NULL;
-254986;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 64 21 61 76;NULL;28713;NULL;
-254987;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 64 84 50 64;NULL;28713;NULL;
-254988;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 48 19 92 16;NULL;28713;NULL;
-254989;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 60 94 02 26;NULL;28713;NULL;
-254990;FX;MILITON;A;36 ISSOUDUN;NULL;NULL;02 54 03 20 06;NULL;28725;NULL;
-254991;FX;BSM;A;30 OULINS;NULL;NULL;04 70 34 03 03;NULL;28731;NULL;
-254992;FX;TAHITI NEON 4678;NULL;PF EETE TAHIT;NULL;NULL;0 ;NULL;28738;NULL;
-254993;FX;TEXITOILES;A+;72 SOLESMES;NULL;NULL;02 43 92 56 61;TEXITOILED(a)WANADOO.FR;28740;NULL;
-254994;FX;DOMOREA 4395;NULL;33 PESSAC;NULL;NULL;05 56 15 00 09;NULL;28751;NULL;
-254995;FX;TRIA B;A;75 PARIS;NULL;NULL;0 ;bonnemain.vincent(a)free.fr;28757;NULL;
-254996;FX;TRIA B;A;75 PARIS;NULL;NULL;0 ;NULL;28757;NULL;
-254997;FX;DV CONSTRUCTION;A;33 MERIGNAC C;NULL;NULL;02 38 78 10 62;NULL;28759;NULL;
-254998;FX;DV CONSTRUCTION;A;33 MERIGNAC C;NULL;NULL;02 38 78 11 28;NULL;28759;NULL;
-254999;FX;DV CONSTRUCTION;A;33 MERIGNAC C;NULL;NULL;02 38 78 10 17;NULL;28759;NULL;
-255000;FX;MOUTH NORBERT;A;57 LES ETANGS;NULL;NULL;03 87 64 20 53;NULL;28760;NULL;
-255001;FX;JACQUES ET MONGELLAZ;A;39 MARNOZ;NULL;NULL;03 84 37 52 91;NULL;28766;NULL;
-255002;FX;HUGUET CREICHE METALLERIE 4693;A;45 INGRE;NULL;NULL;02 38 22 38 20;NULL;28767;NULL;
-255003;FX;ESPRIT FREDERIC;A;21 DIJON;NULL;NULL;03 25 87 24 63;NULL;28778;NULL;
-255004;FX;SAFIP D'ARMOR;NULL;22 TREGUIER;NULL;NULL;02 96 92 22 02;NULL;28781;NULL;
-255005;FX;COLSON ET FROMONT;A;10 LA CHAPELL;NULL;NULL;03 25 74 69 13;colson-fromont(a)wanadoo.fr;28782;NULL;
-255006;FX;SOCIETE D'EXPLOITTION RENOFFEN;A;67 REISCHSTET;NULL;NULL;03 88 20 90 81;NULL;28788;NULL;
-255007;FX;BERLO 4597;NULL;66 VINCA;NULL;NULL;04 68 38 53 03;NULL;28792;NULL;
-255008;FX;TROUILLARD POINT P PONTS DE CE;A;49 LES PONTS;NULL;NULL;02 41 69 96 36;NULL;28793;NULL;
-255009;FX;ERIKA DIFFUSION;A;86 NAINTRE;NULL;NULL;05 49 90 28 29;NULL;28795;NULL;
-255010;FX;SMF;A;94 PLESSIS TR;NULL;NULL;01 56 31 06 12;NULL;28796;NULL;
-255011;FX;MANEM JACQUES;A;91 ITTEVILLE;NULL;NULL;01 64 93 69 41;NULL;28797;NULL;
-255012;FX;AVS;B;74 THYEZ;NULL;NULL;04 50 34 94 35;NULL;28801;NULL;
-255013;FX;LOGIPLAST;A+;76 HARFLEUR;NULL;NULL;02 35 24 88 89;NULL;28803;NULL;
-255014;FX;LOGIPLAST;A+;76 HARFLEUR;NULL;NULL;02 35 24 88 89;LOGIPLAST.PRO @ wanadoo.fr;28803;NULL;
-255015;FX;LECLERC JEAN-PAUL;NULL;67 STRASBOURG;NULL;NULL;03 88 34 65 46;NULL;28804;NULL;
-255016;FX;FRANCE FERMETURES;NULL;18 VIERZON;NULL;NULL;0 ;NULL;28806;NULL;
-255017;FX;LAPORTE 4764;NULL;31 L'ISLE EN;NULL;NULL;05 61 88 79 36;NULL;28814;NULL;
-255018;FX;GRAVIER JEAN CLAUDE;NULL;35 RENNES;NULL;NULL;02 99 53 16 08;NULL;28817;NULL;
-255019;FX;SOLER ROBERT;A;60 GOINCOURT;NULL;NULL;03 44 45 28 98;NULL;28829;NULL;
-255020;FX;POIROT DENIS;A;90 LA CHAPELL;NULL;NULL;03 84 27 67 97;NULL;28831;NULL;
-255021;FX;RIDOLFI;D;21 QUETIGNY;NULL;NULL;03 80 46 68 35;NULL;28833;NULL;
-255022;FX;FLORES SERGE 4199;NULL;83 FREJUS;NULL;NULL;04 94 40 10 87;NULL;28840;NULL;
-255023;FX;AVC SECURITE;A;45 ORLEANS;NULL;NULL;02 38 84 35 68;NULL;28843;NULL;
-255024;FX;AVC SECURITE;A;45 ORLEANS;NULL;NULL;02 38 86 19 00;NULL;28843;NULL;
-255025;FX;ORTIZ;A;14 CAEN;NULL;NULL;02 31 73 71 90;NULL;28853;NULL;
-255026;FX;KERBRAT MTX;A;29 PLOUESCAT;NULL;NULL;02 98 61 91 88;NULL;28854;NULL;
-255027;FX;EQUIPEMENT ET CONFORT 4448;NULL;91 SAINT MICH;NULL;NULL;01 69 04 29 11;NULL;28857;NULL;
-255028;FX;LEROY MERLIN FRANCE MONTSOULT;A;95 MONTSOULT;NULL;NULL;01 34 69 98 81;NULL;28865;NULL;
-255029;FX;BOIS ALUMINIUM PVC BAP;A;60 GRANDU;NULL;NULL;03 44 09 76 29;NULL;28868;NULL;
-255030;FX;CHRISTIAN FERMETURES;A+;77 OZOIR LA F;NULL;NULL;01 60 28 63 75;NULL;28871;NULL;
-255031;FX;GUINEHUT ALAIN;A;49 LES ROBIER;NULL;NULL;02 41 38 02 82;NULL;28872;NULL;
-255032;FX;L ATELIER DE LA TOILE;A;85 LA MOTHE A;NULL;NULL;02 51 38 67 09;NULL;28873;NULL;
-255033;FX;LIAUME 4977;A;37 LARCAY;NULL;NULL;0 ;NULL;28874;NULL;
-255034;FX;PROTAG PROTECTION;D;75 PARIS;NULL;NULL;01 45 32 09 44;NULL;28875;NULL;
-255035;FX;RESEAU PRO BATI DECOR METZ;NULL;08 CHARLEVILL;NULL;NULL;03 24 53 39 09;NULL;28878;NULL;
-255036;FX;TAVERNIER JACQUES;A;45 CHATILLON;NULL;NULL;02 38 96 00 98;NULL;28880;NULL;
-255037;FX;LSK FENETRES LORENOVE;NULL;17 LA ROCHELL;NULL;NULL;05 46 43 08 65;NULL;28888;NULL;
-255038;FX;AJI MATERIAUX;B;35 JANZE;NULL;NULL;02 99 47 35 76;NULL;28889;NULL;
-255039;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;mickaelgabillard.spbm(a)orange.fr;28894;NULL;
-255040;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;0 ;franckcherif.spbm(a)orange.fr;28894;NULL;
-255041;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;benoitsable.spbm(a)wanadoo.fr;28894;NULL;
-255042;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;NULL;28894;NULL;
-255043;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;0 ;philippevalat.spbm(a)orange.fr;28894;NULL;
-255044;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;laurentmartin.spbm(a)orange.fr;28894;NULL;
-255045;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;damienflerchinger.spbm(a)orange.fr;28894;NULL;
-255046;FX;MENUISERIE DU LAURAGAIS;A;31 VILLEFRANC;NULL;NULL;05 61 81 59 29;NULL;28897;NULL;
-255047;FX;TOLEDO FERMETURES;A+;64 LESCAR;NULL;NULL;05 59 81 00 46;NULL;28898;NULL;
-255048;FX;SONDAZ NOEL;D;74 CHOISY;NULL;NULL;04 50 77 46 33;NULL;28901;NULL;
-255049;FX;DEMARET PHILIPPE;NULL;14 NOYERS BOC;NULL;NULL;02 31 77 56 81;NULL;28912;NULL;
-255050;FX;MENUISERIE DE L'EST;B;57 GANDRANGE;NULL;NULL;03 87 58 30 24;menuiserie.est(a)wanadoo.fr;28913;NULL;
-255051;FX;TOP-FERM;A;68 SPECHBACH;NULL;NULL;0 ;NULL;28917;NULL;
-255052;FX;COFELY;A;64 BORDES CED;NULL;NULL;05 59 53 26 55;NULL;28919;NULL;
-255053;FX;FAUCHE JACQUES;A;38 SAINT EGRE;NULL;NULL;04 76 27 43 21;NULL;28928;NULL;
-255054;FX;DEVULDER BERTRAND;NULL;62 FAMPOUX;NULL;NULL;03 21 59 29 52;NULL;28932;NULL;
-255055;FX;ABCD 4609;NULL;34 BEZIERS;NULL;NULL;04 67 11 09 39;NULL;28940;NULL;
-255056;FX;ATA;A;69 MEYZIEU;NULL;NULL;04 72 45 02 53;NULL;28956;NULL;
-255057;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;lionel.groseille(a)franciaflex.com;28958;NULL;
-255058;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;aline.perche(a)franciaflex.com;28958;NULL;
-255059;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;michele.gaultier(a)franciaflex.com;28958;NULL;
-255060;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;veronique.lozachmeur(a)franciaflex.com;28958;NULL;
-255061;FX;PHILIPPE JACQUES;NULL;22 MAEL CARHA;NULL;NULL;02 98 10 12 45;NULL;28965;NULL;
-255062;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;swatson(a)theawningcompany.co.uk;28974;NULL;
-255063;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Richard.May(a)theawningcompany.co.uk;28974;NULL;
-255064;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Bryce.Ratcliffe(a)theawningcompany.co.uk;28974;NULL;
-255065;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Catherine.conway(a)theawningcompany.co.uk;28974;NULL;
-255066;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;NULL;28974;NULL;
-255067;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Andria.Cowan(a)theawningcompany.co.uk;28974;NULL;
-255068;FX;THAWEEWAT CANVAS;D;TH 10 BANGKOK;NULL;NULL;66 27 42 27 87;nakorn(a)thaweewat.com;28983;NULL;
-255069;FX;MULONNIERE;A;35 JANZE;NULL;NULL;02 99 47 26 34;NULL;28986;NULL;
-255070;FX;POINT P BMSO AYTRE;NULL;17 AYTRE;NULL;NULL;06 46 44 65 66;NULL;28987;NULL;
-255071;FX;ATRIO;A+;38 SASSENAGE;NULL;NULL;08 20 90 07 26;NULL;28989;NULL;
-255072;FX;COMAFRANC CERNAY;A+;68 Cernay;NULL;NULL;03 89 75 64 00;NULL;28993;NULL;
-255073;FX;COMAFRANC CERNAY;A+;68 Cernay;NULL;NULL;0 ;berche(a)comafranc.fr;28993;NULL;
-255074;FX;PUJOL JM;A+;11 PALAJA;NULL;NULL;04 68 79 73 34;NULL;28997;NULL;
-255075;FX;GEDIMAT AUGRY;A;17 VILLIERS C;NULL;NULL;05 46 33 03 08;NULL;29000;NULL;
-255076;FX;METALLERIE GRAND;A;71 LA ROCHE V;NULL;NULL;03 85 37 78 82;NULL;29002;NULL;
-255077;FX;WARSMANN;B;08 NOUZONVILL;NULL;NULL;0 ;NULL;29004;NULL;
-255078;FX;WARSMANN;B;08 NOUZONVILL;NULL;NULL;03 24 53 75 24;NULL;29004;NULL;
-255079;FX;BARRERE DUCOURTHIAL;A;03 MONTLUCON;NULL;NULL;04 70 06 60 09;NULL;29008;NULL;
-255080;FX;ATELIER JAROUSSEAU;A;85 MORTAGNE S;NULL;NULL;02 51 65 17 88;NULL;29011;NULL;
-255081;FX;VBM;D;49 BAUGE;NULL;NULL;02 41 89 01 50;NULL;29012;NULL;
-255082;FX;BMCE POINT P PERE;NULL;45 ORLEANS CE;NULL;NULL;0 ;NULL;29018;NULL;
-255083;FX;COMAFRANC PERE;A+;90 BELFORT;NULL;NULL;03 84 26 33 79;NULL;29019;NULL;
-255084;FX;COMAFRANC PERE;A+;90 BELFORT;NULL;NULL;0 ;compta.fournisseur(a)comafranc.fr;29019;NULL;
-255085;FX;COMASUD PERE;NULL;13 MARSEILLE;NULL;NULL;0 ;NULL;29020;NULL;
-255086;FX;COMASUD PERE;NULL;83 BRIGNOLES;NULL;NULL;04 94 69 33 11;NULL;29025;NULL;
-255087;FX;MATERIAUX SERVICE PERE;NULL;92 CLAMART;NULL;NULL;01 46 30 12 43;NULL;29026;NULL;
-255088;FX;MEGNIEN PERE;NULL;86 VOUNEUIL S;NULL;NULL;0 ;NULL;29027;NULL;
-255089;FX;MOREAU PERE;NULL;54 NANCY;NULL;NULL;0 ;NULL;29028;NULL;
-255090;FX;RESEAU PRO CENTRE OUEST;NULL;37 ST PIERRE;NULL;NULL;0 ;NULL;29030;NULL;
-255091;FX;RESEAU PRO IDF;NULL;94 BONNEUIL S;NULL;NULL;0 ;NULL;29032;NULL;
-255092;FX;POINT P PERE;NULL;73 CHAMBERY C;NULL;NULL;04 79 96 80 49;NULL;29033;NULL;
-255093;FX;POINT P PERE;NULL;60 NOYON;NULL;NULL;0344B094409;NULL;29035;NULL;
-255094;FX;POINT P PERE SONEN;NULL;76 LE HAVRE;NULL;NULL;0 ;NULL;29037;NULL;
-255095;FX;SAMSE;D;38 GRENOBLE;NULL;NULL;04 76 46 88 67;NULL;29040;NULL;
-255096;FX;SAMSE;D;38 GRENOBLE;NULL;NULL;0 ;eric-vogler(a)samse.fr;29040;NULL;
-255097;FX;BRICORAMA PERE;B;93 NOISY LE G;NULL;NULL;0 ;NULL;29045;NULL;
-255098;FX;EURODRAP;NULL;75 PARIS;NULL;NULL;01 43 70 26 99;david(a)suntwist.fr;40002;NULL;
-255099;FX;CL DIVERS INTERIEURS;NULL;45 CHECY;NULL;NULL;0 ;NULL;40009;NULL;
-255100;FX;BS DECORS;NULL;78 LES MUREAU;NULL;NULL;01 30 99 65 50;NULL;40010;NULL;
-255101;FX;MADECO;A+;59 PONT A MAR;NULL;NULL;03 20 18 06 01;NULL;40016;NULL;
-255102;FX;MADECO;A+;59 PONT A MAR;NULL;NULL;0 ;vlecocq(a)madeco.fr;40016;NULL;
-255103;FX;CL DIVERS APPRO INTERIEUR;NULL;45 CHECY;NULL;NULL;02 38 60 41 80;NULL;40021;NULL;
-255104;FX;FIMA 4638;NULL;43 TENCE;NULL;NULL;04 71 65 42 11;NULL;40031;NULL;
-255105;FX;TRANSPORTS LOTRA 6005;NULL;45 ORMES;NULL;NULL;02 38 74 75 74;NULL;40032;NULL;
-255106;FX;CLIPS;A+;14 FALAISE;NULL;NULL;02 31 40 07 50;NULL;40047;NULL;
-255107;FX;BHV PARIS;D;75 PARIS;NULL;NULL;01 42 74 95 63;NULL;40049;NULL;
-255108;FX;BHV PARIS;D;75 PARIS;NULL;NULL;0 ;isabelle.lechampion(a)franciaflex.com;40049;NULL;
-255109;FX;DIMATER;NULL;69 CALUIRE ET;NULL;NULL;04 78 23 30 86;NULL;40061;NULL;
-255110;FX;CL DIVERS INTERIEURS SANS TVA;NULL;45 CHECY;NULL;NULL;0 ;NULL;40062;NULL;
-255111;FX;SNER;A+;14 FALAISE;NULL;NULL;02 54 44 24 33;NULL;40063;NULL;
-255112;FX;SNER;A+;14 FALAISE;NULL;NULL;02 31 40 16 65;NULL;40063;NULL;
-255113;FX;SNER;A+;14 FALAISE;NULL;NULL;0 ;NULL;40063;NULL;
-255114;FX;SNER;A+;14 FALAISE;NULL;NULL;02 35 63 98 52;NULL;40063;NULL;
-255115;FX;ABASSES INGENERIE;A;42 FARNAY;NULL;NULL;04 77 73 44 48;NULL;40065;NULL;
-255116;FX;BCL DECOR SAS;NULL;89 AUXERRE CE;NULL;NULL;03 86 94 82 80;bcl-decor(a)wanadoo.fr;40072;NULL;
-255117;FX;AGENOR;A;45 ST JEAN DE;NULL;NULL;02 38 61 57 99;NULL;40074;NULL;
-255118;FX;CLOISAL;A;56 QUEVEN;NULL;NULL;02 97 05 40 91;NULL;40085;NULL;
-255119;FX;FRANCIAFLEX OUTILS DE VENTE;NULL;45 CHECY;NULL;NULL;0 ;NULL;40090;NULL;
-255120;FX;ROCHE HABITAT;NULL;69 St BONNET;NULL;NULL;04 72 48 31 90;NULL;45001;NULL;
-255121;FX;ROCHE HABITAT;NULL;69 St BONNET;NULL;NULL;0 ;NULL;45001;NULL;
-255122;FX;PERSONNEL VENTES EXTERIEUR;NULL;38 LA TOUR DU;NULL;NULL;0 ;NULL;45004;NULL;
-255123;FX;CL DIVERS EXTERIEURS FOURN;NULL;38 LA TOUR DU;NULL;NULL;02 47 92 22 60;NULL;45009;NULL;
-255124;FX;CL DIVERS EXTERIEURS FOURN;NULL;38 LA TOUR DU;NULL;NULL;0 ;NULL;45009;NULL;
-255125;FX;FRANCE FERMETURES;NULL;18 VIERZON CE;NULL;NULL;08 25 08 08 16;NULL;45027;NULL;
-255126;FX;FRANCE FERMETURES;NULL;18 VIERZON CE;NULL;NULL;02 48 52 11 67;NULL;45027;NULL;
-255127;FX;FRANCE FERMETURES;NULL;18 VIERZON CE;NULL;NULL;0 ;NULL;45027;NULL;
1
0
25 Feb '14
Author: kmorin
Date: 2014-02-25 10:21:45 +0100 (Tue, 25 Feb 2014)
New Revision: 13
Url: http://codelutin.com/projects/faxtomail/repository/revisions/13
Log:
add clients sample
Added:
trunk/faxtomail-service/src/main/resources/fx_clients.csv
Added: trunk/faxtomail-service/src/main/resources/fx_clients.csv
===================================================================
--- trunk/faxtomail-service/src/main/resources/fx_clients.csv (rev 0)
+++ trunk/faxtomail-service/src/main/resources/fx_clients.csv 2014-02-25 09:21:45 UTC (rev 13)
@@ -0,0 +1,1582 @@
+Id_Correspondance;Societe;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Client_Top;Numero_Fax;Adresse_Mail;Code_Client;Objet_Message;Destination
+253547;FX;DETAMPLE DANIEL;A;71 UXEAU;NULL;NULL;03 85 85 13 55;detampledaniel(a)nimeo.fr;22153;NULL;
+253548;FX;BARSACQ;A+;40 SOUSTONS;NULL;NULL;05 58 41 22 17;christian.barsacq(a)wanadoo.fr;22154;NULL;
+253549;FX;CUAZ PEROLIN MAURICE;NULL;38 LA BATIE D;NULL;NULL;04 76 32 18 57;NULL;22184;NULL;
+253550;FX;LOGICLOS;NULL;62 ANNEZIN LE;NULL;NULL;03 21 57 16 25;NULL;22186;NULL;
+253551;FX;CHASSIER ALAIN;A;37 DRUYE;NULL;NULL;02 47 50 11 36;alain.chassier(a)live.fr;22217;NULL;
+253552;FX;RLK PRODUCTION;A+;70 COMBEAUFON;NULL;NULL;03 84 92 17 00;NULL;22236;NULL;
+253553;FX;ALEXANDRE ET DAMIEN B;A;78 MAULE;NULL;NULL;01 30 74 73 94;NULL;22246;NULL;
+253554;FX;DOUSSIERE SEBASTIEN;A;48 MEYRUEIS;NULL;NULL;04 66 45 67 95;NULL;22248;NULL;
+253555;FX;SERRURERIE COUDRAY;A;17 MESCHERS;NULL;NULL;05 46 02 57 98;NULL;22252;NULL;
+253556;FX;VERDET;B;25 BESANCON C;NULL;NULL;03 81 80 56 18;NULL;22280;NULL;
+253557;FX;GABARRE JEAN MARC;A;47 FUMEL;NULL;NULL;05 53 40 91 92;NULL;22288;NULL;
+253558;FX;BELLAVIA ROBERT SAS;A+;38 SASSENAGE;NULL;NULL;04 76 27 53 08;NULL;22303;NULL;
+253559;FX;BELLAVIA ROBERT SAS;A+;38 SASSENAGE;NULL;NULL;04 76 27 53 08;bellavia.laurence(a)aliceadsl.fr;22303;NULL;
+253560;FX;ELM PRO-POSE;B;74 LA BALME D;NULL;NULL;04 50 77 73 32;NULL;22305;NULL;
+253561;FX;DROUIN JACK;A;35 RENNES;NULL;NULL;02 99 65 41 22;NULL;22313;NULL;
+253562;FX;BIAS ALU;A;47 BIAS;NULL;NULL;05 53 49 01 50;NULL;22331;NULL;
+253563;FX;BASSAT BRUNO;D;33 COUTRAS;NULL;NULL;05 57 49 10 22;bruno.bassat(a)wanadoo.fr;22337;NULL;
+253564;FX;BASSAT BRUNO;D;33 COUTRAS;NULL;NULL;05 57 49 10 22;NULL;22337;NULL;
+253565;FX;IPM MONDIA;A;01 PONT DE VA;NULL;NULL;03 85 36 80 25;NULL;22343;NULL;
+253566;FX;FAVRE ET FILS;B;73 UGINE;NULL;NULL;04 79 37 25 51;NULL;22344;NULL;
+253567;FX;FERMETUR'IDEAL;A;51 REIMS;NULL;NULL;03 26 08 52 45;NULL;22345;NULL;
+253568;FX;JB STORE;A;79 FRONTENAY;NULL;NULL;05 49 09 51 89;NULL;22362;NULL;
+253569;FX;SISTEMAS DE CORTINAS;B;ES 22 BARCELO;NULL;NULL;349 34 17 75 53;NULL;22368;NULL;
+253570;FX;LEPAGE ET FILS 4438;NULL;08 WARCQ;NULL;NULL;03 24 56 32 71;NULL;22370;NULL;
+253571;FX;ACS M. JEANTILS DOMINIQUE;A;66 LAROQUE;NULL;NULL;09 65 37 91 62;NULL;22376;NULL;
+253572;FX;STF (SOCIETE TECHNIQUE;A+;78 GAMBAIS;NULL;NULL;01 30 44 18 79;NULL;22377;NULL;
+253573;FX;MENUISERIE COMMINGEOISE;NULL;31 SAINT GAUD;NULL;NULL;04 68 33 53 62;NULL;22378;NULL;
+253574;FX;MENUISERIE COMMINGEOISE;NULL;31 SAINT GAUD;NULL;NULL;05 62 00 88 33;NULL;22378;NULL;
+253575;FX;MENUISERIE COMMINGEOISE;NULL;31 SAINT GAUD;NULL;NULL;05 68 41 27 18;NULL;22378;NULL;
+253576;FX;CLERC THIERRY;A;11 CASTELNAUD;NULL;NULL;04 68 23 53 12;sarl.clerc.thierry(a)orange.fr;22404;NULL;
+253577;FX;BRASALU;A;33 Pomerol;NULL;NULL;05 57 84 14 66;NULL;22409;NULL;
+253578;FX;GIRAUD PHILIPPE;A;94 LIMEIL BRE;NULL;NULL;01 45 98 33 14;NULL;22410;NULL;
+253579;FX;UCLAIR;A;CM UNDE;NULL;NULL;NULL;NULL;22415;NULL;
+253580;FX;UCLAIR;A;CM UNDE;NULL;NULL;02 37 22 32 01;uclaircm(a)yahoo.fr;22415;NULL;
+253581;FX;UCLAIR;A;CM UNDE;NULL;NULL;23 72 22 32 01;NULL;22415;NULL;
+253582;FX;SAGRANGE FILS;B;21 BEAUNE;NULL;NULL;03 80 24 00 84;sellerie.tapisserie.sagrange(a)neuf.fr;22419;NULL;
+253583;FX;SAGRANGE FILS;B;21 BEAUNE;NULL;NULL;0 ;NULL;22419;NULL;
+253584;FX;DEBENAIS JEAN MICHEL JMD;A;79 PARTHENAY;NULL;NULL;0 ;debenaisjm(a)cc-parthenay.fr;22420;NULL;
+253585;FX;DIPLEX;A+;38 MOIRANS;NULL;NULL;04 76 35 31 18;NULL;22424;NULL;
+253586;FX;BOUTEILLE BERNARD;A;69 ST SYMPHOR;NULL;NULL;04 78 44 34 21;NULL;22425;NULL;
+253587;FX;DIP STORES D HIVERS;A;69 SAINT LAUR;NULL;NULL;04 72 22 00 75;storedhiver(a)orange.fr;22441;NULL;
+253588;FX;DIP STORES D HIVERS;A;69 SAINT LAUR;NULL;NULL;04 72 22 00 75;NULL;22441;NULL;
+253589;FX;ALUGLACE;A;03 GANNAT;NULL;NULL;04 70 90 14 78;NULL;22449;NULL;
+253590;FX;ALUGLACE;A;03 GANNAT;NULL;NULL;0 ;NULL;22449;NULL;
+253591;FX;IDEAL EQUIPEMENT;NULL;91 ST CYR SOU;NULL;NULL;01 60 81 22 67;idealequip(a)wanadoo.fr;22451;NULL;
+253592;FX;GIRARDET MENUISERIE;A+;25 ARCON;NULL;NULL;03 81 39 15 23;NULL;22454;NULL;
+253593;FX;BASSET JEROME;A;10 BAR SUR AU;NULL;NULL;0 ;jerome.basset691(a)orange.fr;22462;NULL;
+253594;FX;DESIGN VERTIKAL, D.O.O.,;B;SI 6 TRZIN;NULL;NULL;386 15 30 41 02;design.jurhar(a)siol.net;22487;NULL;
+253595;FX;DESIGN VERTIKAL, D.O.O.,;B;SI 6 TRZIN;NULL;NULL;386 15 30 41 02;design.vertikal(a)s5.net;22487;NULL;
+253596;FX;DUTARDRE SAS 5107;A;37 BLERE;NULL;NULL;02 47 30 20 47;NULL;22488;NULL;
+253597;FX;DACHER;A;80 RIVERY;NULL;NULL;03 22 80 07 90;NULL;22517;NULL;
+253598;FX;ALU CONCEPT SYSTEM'S;D;37 MONTBAZON;NULL;NULL;02 47 73 12 52;NULL;22519;NULL;
+253599;FX;PEQUIGNOT SYLVAIN;A;25 NOVILLARD;NULL;NULL;03 81 57 01 18;NULL;22531;NULL;
+253600;FX;EURO SERRURERIE;A;34 SETE;NULL;NULL;04 67 80 20 13;NULL;22543;NULL;
+253601;FX;MIDI ALU;NULL;34 PALAVAS LE;NULL;NULL;04 67 68 20 85;NULL;22545;NULL;
+253602;FX;HORN VERRES ALU;A;57 SAINT JEAN;NULL;NULL;03 87 24 25 06;NULL;22549;NULL;
+253603;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 97 88;cauvergnon(a)garrigues-sa.com;22551;NULL;
+253604;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 34 27 28 11;NULL;22551;NULL;
+253605;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 64 18;plarroche(a)garrigues-sa.com;22551;NULL;
+253606;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 98 52 59;cjosselin(a)garrigues-sa.com;22551;NULL;
+253607;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 98 52 59;NULL;22551;NULL;
+253608;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 34 27 28 10;NULL;22551;NULL;
+253609;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 95 99 91;jpmarieanne(a)garrigues-sa.com;22551;NULL;
+253610;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 64 18;NULL;22551;NULL;
+253611;FX;GARRIGUES SA;A+;47 COLAYRAC S;NULL;NULL;05 53 67 65 68;NULL;22551;NULL;
+253612;FX;MENUISERIE LA GLANEUSE;A;17 LA ROCHELL;NULL;NULL;05 46 00 51 84;NULL;22575;NULL;
+253613;FX;DAVID GILBERT ETS;NULL;83 STE MAXIME;NULL;NULL;04 94 49 00 16;NULL;22584;NULL;
+253614;FX;LES COMPAGNONS METALLIERS;A+;91 CORBEIL ES;NULL;NULL;01 60 88 25 47;cab(a)breuzard.fr;22599;NULL;
+253615;FX;LES COMPAGNONS METALLIERS;A+;91 CORBEIL ES;NULL;NULL;01 60 88 25 47;NULL;22599;NULL;
+253616;FX;LES COMPAGNONS METALLIERS;A+;91 CORBEIL ES;NULL;NULL;01 60 89 02 51;p.heroguelle(a)breuzard.fr;22599;NULL;
+253617;FX;MIROITERIE DE SARCELLES;A;95 SARCELLES;NULL;NULL;01 39 92 17 47;NULL;22600;NULL;
+253618;FX;VAL OISE FERM-SOL. STOR.&FERM.;NULL;93 LIVRY GARG;NULL;NULL;01 43 32 04 95;NULL;22621;NULL;
+253619;FX;BOURGE DANIEL;NULL;14 CONDE SUR;NULL;NULL;02 31 66 90 67;NULL;22633;NULL;
+253620;FX;SODIFF;B;59 MOUVAUX;NULL;NULL;03 21 95 96 97;NULL;22641;NULL;
+253621;FX;C2M ALU;A+;19 MANSAC;NULL;NULL;05 55 85 10 46;NULL;22679;NULL;
+253622;FX;AUSTRAL;D;77 NEMOURS CE;NULL;NULL;01 64 78 54 98;jm.beauland(a)austral.fr;22682;NULL;
+253623;FX;KATVE TVOTANTO OY;NULL;FI RJAVALTA;NULL;NULL;358 25 31 81 20;heikki(a)katve.fi;22694;NULL;
+253624;FX;METALLERIE DE KERPONT;A;56 LANESTER;NULL;NULL;02 97 76 93 94;NULL;22708;NULL;
+253625;FX;CL DIVERS SUD OUEST JF BOMONT;B;18 B;NULL;NULL;02 99 14 83 82;NULL;22735;NULL;
+253626;FX;CL DIVERS SUD OUEST JL AUTHIER;A;17 Rochelle;NULL;NULL;02 99 14 83 80;NULL;22737;NULL;
+253627;FX;COURTOIS CHRISTIAN;A;21 BEAUVRE;NULL;NULL;03 80 24 02 12;NULL;22739;NULL;
+253628;FX;CORBE ET FILS;A;35 RENNES;NULL;NULL;02 99 41 94 83;NULL;22743;NULL;
+253629;FX;GUIHUR MICHEL;A;56 THEIX;NULL;NULL;02 97 68 86 45;NULL;22745;NULL;
+253630;FX;GUILLOT THIERRY;A;18 SAINT SATU;NULL;NULL;02 48 54 16 91;NULL;22773;NULL;
+253631;FX;ALTAPLAST;A;55 BRAS/MEUSE;NULL;NULL;03 29 86 78 60;NULL;22774;NULL;
+253632;FX;SV2M;NULL;72 MULSANNE;NULL;NULL;02 43 78 03 08;NULL;22787;NULL;
+253633;FX;SV2M;NULL;72 MULSANNE;NULL;NULL;02 43 14 55 56;NULL;22787;NULL;
+253634;FX;GROLLA VERRES;A+;73 MOUTIERS C;NULL;NULL;04 79 22 98 25;NULL;22793;NULL;
+253635;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;mickael.oger(a)menuiserie-bourneuf.fr;22796;NULL;
+253636;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;b.talsmat(a)menuiserie-bourneuf.fr;22796;NULL;
+253637;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 07;eddy.galpin(a)menuiserie-bourneuf.fr;22796;NULL;
+253638;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;jm.theau(a)menuiserie-bourneuf.fr;22796;NULL;
+253639;FX;BOURNEUF SOCIETE;D;72 PARIGNE L';NULL;NULL;02 43 50 01 09;NULL;22796;NULL;
+253640;FX;DESHOUX * ne + utiliser voir le Y03353*;D;35 Chapelle-d;NULL;NULL;0 ;NULL;22798;NULL;
+253641;FX;ARTIS;A+;72 SAVIGNE L';NULL;NULL;0 ;artis.verandas(a)wanadoo.fr;22810;NULL;
+253642;FX;ARTIS;A+;72 SAVIGNE L';NULL;NULL;02 43 27 43 79;buell72(a)orange.fr;22810;NULL;
+253643;FX;STEC (STRUCTURES TECHNI-;A;45 ST JEAN LE;NULL;NULL;02 38 66 61 74;NULL;22811;NULL;
+253644;FX;SOPHIA DECORATION;NULL;66 PERPIGNAN;NULL;NULL;04 68 35 02 10;NULL;22814;NULL;
+253645;FX;CHAUVIN DOMINIQUE 4342;NULL;61 BRIOUZE;NULL;NULL;02 33 64 13 46;NULL;22817;NULL;
+253646;FX;SERRURERIE CHALLANDAISE;D;85 CHALLANS;NULL;NULL;02 51 35 11 85;NULL;22825;NULL;
+253647;FX;TALVARD;D;61 ALENCON;NULL;NULL;02 33 27 57 08;NULL;22837;NULL;
+253648;FX;BIGNON LUCIEN 4650;NULL;53 CHAMPEON;NULL;NULL;02 43 00 89 93;NULL;22845;NULL;
+253649;FX;MARTO ISOLATION;A;93 MONTREUIL;NULL;NULL;01 48 70 20 60;NULL;22854;NULL;
+253650;FX;PARIS NORD FERMETURES;A+;95 LOUVRES;NULL;NULL;NULL;NULL;22856;NULL;
+253651;FX;PARIS NORD FERMETURES;A+;95 LOUVRES;NULL;NULL;01 34 68 96 00;NULL;22856;NULL;
+253652;FX;FERMETURES LOURDAISES;A;65 LOURDES;NULL;NULL;09 70 63 23 49;NULL;22867;NULL;
+253653;FX;PESTEL MICHEL;A;27 BERNAY;NULL;NULL;02 32 46 03 81;NULL;22881;NULL;
+253654;FX;STORES CONCEPT SERVICE;A;95 ARGENTEUIL;NULL;NULL;0 45 06 47 18;NULL;22886;NULL;
+253655;FX;STORES CONCEPT SERVICE;A;95 ARGENTEUIL;NULL;NULL;01 45 06 47 18;laurentstore(a)wanadoo.fr;22886;NULL;
+253656;FX;BROCHARD;A;18 BOURGES;NULL;NULL;02 48 67 05 21;NULL;22888;NULL;
+253657;FX;LECLER HENRI;A;78 BONNIERES;NULL;NULL;01 30 42 09 99;NULL;22895;NULL;
+253658;FX;NICOLINO;A;95 ST LEU LA;NULL;NULL;01 39 60 19 27;NULL;22917;NULL;
+253659;FX;SELLERIE SABOLIENNE;A;72 BRULON;NULL;NULL;0 ;NULL;22926;NULL;
+253660;FX;SELLERIE SABOLIENNE;A;72 BRULON;NULL;NULL;0 ;sellerie.sabolienne(a)orange.fr;22926;NULL;
+253661;FX;LACROIX FRERES;B;74 MIEUSSY;NULL;NULL;04 50 43 08 52;NULL;22932;NULL;
+253662;FX;PIEM;A;31 TOULOUSE C;NULL;NULL;05 61 40 22 66;NULL;22945;NULL;
+253663;FX;LA MAISON DU VOLET MARSEILLAIS;A+;13 MARSEILLE;NULL;NULL;04 88 04 02 90;linda.ouverture(a)orange.fr;22947;NULL;
+253664;FX;LA MAISON DU VOLET MARSEILLAIS;A+;13 MARSEILLE;NULL;NULL;04 88 04 02 90;louverture(a)wanadoo.fr;22947;NULL;
+253665;FX;COMPTOIR DES VERRES;B;73 CHAMBERY C;NULL;NULL;04 79 62 54 70;NULL;22951;NULL;
+253666;FX;PROFIL LANGUEDOC;D;11 LEZIGNAN C;NULL;NULL;04 68 27 32 36;NULL;22961;NULL;
+253667;FX;NORD ALU BOIS;A;50 THEVILLE;NULL;NULL;02 33 22 55 67;NULL;22969;NULL;
+253668;FX;ESPACE SOLEIL;D;73 CHALLES LE;NULL;NULL;04 79 72 83 79;NULL;22973;NULL;
+253669;FX;BRUNET;A;33 YVRAC;NULL;NULL;05 56 06 47 22;NULL;22981;NULL;
+253670;FX;ISOFERM STORE - M. AIGU;B;21 CHENOVE;NULL;NULL;03 80 52 48 41;NULL;22983;NULL;
+253671;FX;ROUX ALAIN;A;51 ST MARTIN;NULL;NULL;03 55 03 51 31;roux.alain51(a)orange.fr;22989;NULL;
+253672;FX;RBM (RENOVATION BATIMENT;D;11 PENNAUTIER;NULL;NULL;04 68 47 40 50;NULL;22994;NULL;
+253673;FX;SAJEMA VENT DE L'EST;A+;16 ANGOULEME;NULL;NULL;05 45 95 73 67;NULL;22996;NULL;
+253674;FX;GUERIN MICHEL;A;53 CHATEAU GO;NULL;NULL;02 43 07 00 58;NULL;22999;NULL;
+253675;FX;GAM PROTECTION;A+;93 ROMAINVILL;NULL;NULL;01 41 83 08 40;NULL;23003;NULL;
+253676;FX;J'ISOLE STORES DECO;A;42 ROANNE;NULL;NULL;04 77 71 99 97;NULL;23033;NULL;
+253677;FX;BERGES CLAUDE;A+;24 BOULAZAC;NULL;NULL;05 53 08 97 47;NULL;23037;NULL;
+253678;FX;GUILLOT PAUL;B;58 ARQUIAB;NULL;NULL;03 89 39 65 89;NULL;23038;NULL;
+253679;FX;ANTONIETTI G.;A;25 EXINCOURT;NULL;NULL;03 81 32 13 48;NULL;23040;NULL;
+253680;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 26 49 67 20;menuiserie.betheny(a)pillaud-materiaux.fr;23041;NULL;
+253681;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 23 69 96 28;menuiserie.brasles(a)pillaud-materiaux.fr;23041;NULL;
+253682;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 25 27 39 84;u.barsuraube(a)pillaud-materiaux.fr;23041;NULL;
+253683;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 25 45 12 09;NULL;23041;NULL;
+253684;FX;BIG MAT PILLAUD;A;24 RASLES;NULL;NULL;03 23 69 00 60;NULL;23041;NULL;
+253685;FX;POINT P BRETAGNE MORLAIX;A;29 MORLAIX;NULL;NULL;02 98 63 43 66;NULL;23052;NULL;
+253686;FX;CL DIVERS SUD EST A.COSTE;B;38 L;NULL;NULL;08 10 82 05 10;NULL;23066;NULL;
+253687;FX;STORES LIOGIER;A+;42 ROCHE LA M;NULL;NULL;04 77 33 12 92;NULL;23069;NULL;
+253688;FX;STORES ET FERMETURES DE L ARGO RJ;A;56 ELVEN;NULL;NULL;02 97 53 32 34;NULL;23073;NULL;
+253689;FX;SOCOM INDUSTRIE;A;35 CESSON SEV;NULL;NULL;02 99 32 37 29;NULL;23086;NULL;
+253690;FX;DESJEUNES;A;75 PARIS;NULL;NULL;01 45 44 35 08;NULL;23093;NULL;
+253691;FX;SEINERA JEAN PIERRE;B;73 UGINE CEDE;NULL;NULL;04 79 89 01 50;NULL;23107;NULL;
+253692;FX;BIG MAT BROCARD MATERIAUX;NULL;60 ALLONNE;NULL;NULL;03 44 02 86 10;NULL;23108;NULL;
+253693;FX;JEUDY GUILLOT;A;03 VICHY;NULL;NULL;04 70 59 18 16;NULL;23117;NULL;
+253694;FX;ARENO 4264;NULL;91 AUVERS ST;NULL;NULL;01 69 92 24 13;NULL;23133;NULL;
+253695;FX;CL DIVERS SUD EST ATC BOURGOGNE;A;25 L;NULL;NULL;0 ;NULL;23154;NULL;
+253696;FX;TREBUCHON EQUIP;A;34 PEZENAS;NULL;NULL;04 67 98 04 44;NULL;23155;NULL;
+253697;FX;SERPE (STE ETUDES REALISA;A;75 PARIS;NULL;NULL;01 43 06 42 52;NULL;23171;NULL;
+253698;FX;SERVAIS;A;94 VILLEJUIF;NULL;NULL;01 46 78 86 20;NULL;23172;NULL;
+253699;FX;MILFEN;A;78 ST GERMAIN;NULL;NULL;01 34 51 87 80;NULL;23175;NULL;
+253700;FX;MILFEN;A;78 ST GERMAIN;NULL;NULL;01 34 61 21 31;NULL;23175;NULL;
+253701;FX;GUENEGO J. YVES;NULL;44 SAINT NAZA;NULL;NULL;02 40 19 17 44;NULL;23177;NULL;
+253702;FX;STORES BROUSSAIS;A;94 VILLEJUIF;NULL;NULL;01 53 14 34 89;NULL;23178;NULL;
+253703;FX;TRADITEX;A;63 CLERMONT F;NULL;NULL;04 73 91 70 69;s.hanotin(a)traditex.fr;23190;NULL;
+253704;FX;TRADITEX;A;63 CLERMONT F;NULL;NULL;04 73 91 70 69;NULL;23190;NULL;
+253705;FX;TRADITEX;A;63 CLERMONT F;NULL;NULL;0 ;s.hanotin(a)traditex.fr;23190;NULL;
+253706;FX;COF CENTRE OCCULTATIONS 4909;NULL;45 CHATEAUNEU;NULL;NULL;02 38 46 24 92;NULL;23191;NULL;
+253707;FX;LA MAISON DU STORE;D;17 ROCHEFORT;NULL;NULL;05 46 99 29 48;NULL;23193;NULL;
+253708;FX;MARTIGNY;A;40 BISCAROSSE;NULL;NULL;05 58 78 89 07;NULL;23203;NULL;
+253709;FX;MANOHA;A;66 PERPIGNAN;NULL;NULL;04 68 54 13 54;NULL;23212;NULL;
+253710;FX;PSP 92;A;92 RUEIL MALM;NULL;NULL;01 47 08 24 10;NULL;23214;NULL;
+253711;FX;EUROPE FERMETURES;A;01 CESSY;NULL;NULL;04 50 28 38 40;europefermetures(a)9business.fr;23226;NULL;
+253712;FX;STORES 82;A;82 MONTAUBAN;NULL;NULL;0 ;NULL;23242;NULL;
+253713;FX;MBA (MENUISERIE BOIS ALU);A;28 SAINT REMY;NULL;NULL;02 37 62 10 52;NULL;23255;NULL;
+253714;FX;SPF (STORES PLAFOND FERM.;A;27 DAUBEUF PR;NULL;NULL;02 32 54 41 96;NULL;23259;NULL;
+253715;FX;CRABOL;A;11 ST HILAIRE;NULL;NULL;04 68 79 82 40;NULL;23268;NULL;
+253716;FX;POUJOIS GEORGES;B;74 ANNECY;NULL;NULL;04 50 46 54 50;NULL;23273;NULL;
+253717;FX;PILLA FRANCISCO;A;18 DUN SUR AU;NULL;NULL;02 48 59 58 96;NULL;23277;NULL;
+253718;FX;LEFER DENIS SARL;A;50 BRICQUEBEC;NULL;NULL;02 33 10 07 91;NULL;23279;NULL;
+253719;FX;TOLIERIE ATELIERS;NULL;44 SAINT NAZA;NULL;NULL;02 40 66 82 05;NULL;23280;NULL;
+253720;FX;PERSIENNE DRANCEENNE;A;93 DRANCY;NULL;NULL;01 48 31 37 09;NULL;23288;NULL;
+253721;FX;HAVLUND SOLTEKNIK 4674;A;DK 2690 KARLS;NULL;NULL;45 43 42 14 01;steen(a)havlund.dk;23293;NULL;
+253722;FX;HAVLUND SOLTEKNIK 4674;A;DK 2690 KARLS;NULL;NULL;0 ;NULL;23293;NULL;
+253723;FX;HAVLUND SOLTEKNIK 4674;A;DK 2690 KARLS;NULL;NULL;0 ;LS(a)havlund.dk;23293;NULL;
+253724;FX;DAVID MARC;B;38 BOURGOIN J;NULL;NULL;04 74 93 05 61;NULL;23298;NULL;
+253725;FX;MEZZOLO JEAN MARC 4852;NULL;40 MIMIZAN PL;NULL;NULL;05 58 07 49 79;NULL;23304;NULL;
+253726;FX;MIROITERIE 102 303102;A;92 ANTONY;NULL;NULL;01 46 66 23 22;NULL;23311;NULL;
+253727;FX;MIROITERIE 102 303102;A;92 ANTONY;NULL;NULL;01 46 66 89 88;NULL;23311;NULL;
+253728;FX;MIROITERIE 102 303102;A;92 ANTONY;NULL;NULL;01 46 66 24 02;NULL;23311;NULL;
+253729;FX;MB MICHEL BETTIGNY SERRURERIE;A;92 CLAMART;NULL;NULL;01 46 38 86 19;NULL;23319;NULL;
+253730;FX;JUDLIN FERMETURES;A;75 PARIS;NULL;NULL;01 45 85 48 47;NULL;23329;NULL;
+253731;FX;CMR (CONSTRUCTIONS METAL-;NULL;44 LA CHAPELL;NULL;NULL;02 40 06 77 25;NULL;23331;NULL;
+253732;FX;BRISSONNEAU THIERRY;NULL;44 ST PHILBER;NULL;NULL;02 40 78 84 58;NULL;23338;NULL;
+253733;FX;OMNIUM SECURITE;NULL;30 NIMES;NULL;NULL;04 66 38 06 19;NULL;23356;NULL;
+253734;FX;STORMANIA 4910;A;78 CONFLANS S;NULL;NULL;01 39 72 75 45;NULL;23370;NULL;
+253735;FX;HAUSKNECHT FRANCOISE 4508;NULL;57 PIERREVILL;NULL;NULL;03 87 17 14 13;NULL;23373;NULL;
+253736;FX;BOIS ESPACE;B;73 ALBERTVILL;NULL;NULL;04 79 37 77 37;NULL;23377;NULL;
+253737;FX;OUEST MENUISERIE - JOS PERON;A+;29 PONT L'ABB;NULL;NULL;02 98 75 03 72;NULL;23382;NULL;
+253738;FX;OUEST MENUISERIE - JOS PERON;A+;29 PONT L'ABB;NULL;NULL;02 98 66 15 51;NULL;23382;NULL;
+253739;FX;ATOUT CARREAU;D;12 MILLAU;NULL;NULL;05 65 61 36 62;NULL;23383;NULL;
+253740;FX;NEGRO;A+;90 BAVILLIERS;NULL;NULL;03 84 55 05 79;NULL;23389;NULL;
+253741;FX;GINISTY ET CIE;B;74 THONON LES;NULL;NULL;04 50 71 82 87;NULL;23398;NULL;
+253742;FX;SAMSE EMBRUN;A;05 EMBRUN;NULL;NULL;04 92 43 46 44;NULL;23418;NULL;
+253743;FX;MANCEAU DENIS;A;49 ETRICHE;NULL;NULL;02 41 42 60 55;NULL;23420;NULL;
+253744;FX;MONVOISIN;A+;35 GOVEN;NULL;NULL;02 99 05 93 97;NULL;23421;NULL;
+253745;FX;POINT P BRETAGNE DINAN;A;22 DINAN;NULL;NULL;02 96 39 60 74;NULL;23422;NULL;
+253746;FX;BATI DECOR 2B;NULL;20 BIGUGLIA;NULL;NULL;04 95 33 40 47;NULL;23448;NULL;
+253747;FX;ARNAULT DIFFUSION;A;86 MIGNE AUXA;NULL;NULL;05 49 18 28 60;isabelle(a)stores.rideaux.com;23456;NULL;
+253748;FX;ARNAULT DIFFUSION;A;86 MIGNE AUXA;NULL;NULL;05 49 18 28 60;NULL;23456;NULL;
+253749;FX;LUYTON PATRICK;B;26 SAINT SORL;NULL;NULL;04 75 31 60 07;NULL;23458;NULL;
+253750;FX;FUNFROCK PASCAL;NULL;67 MARLENHEIM;NULL;NULL;03 88 87 79 80;NULL;23462;NULL;
+253751;FX;AIRIAU SERRURERIE;A;13 LA CIOTAT;NULL;NULL;04 42 08 97 85;NULL;23473;NULL;
+253752;FX;SYTAG SA;NULL;CH 1219 GENEV;NULL;NULL;0 ;NULL;23483;NULL;
+253753;FX;DA SILVA FERNAND;A;32 ISLE JOURD;NULL;NULL;05 62 07 28 75;NULL;23484;NULL;
+253754;FX;GREMMEL J. ET CIE;A+;67 ESCHAU;NULL;NULL;03 88 68 50 56;NULL;23526;NULL;
+253755;FX;WEINSTEIN ET FILS;A+;67 SARRE UNIO;NULL;NULL;03 88 00 30 44;NULL;23527;NULL;
+253756;FX;THERMIDOR;NULL;22 HENON;NULL;NULL;02 96 73 50 29;NULL;23530;NULL;
+253757;FX;BOURDIN;A;49 VARENNES S;NULL;NULL;02 41 51 49 90;NULL;23538;NULL;
+253758;FX;TONY SERVICES SABA ANTONIO;A+;38 ROCHETOIRI;NULL;NULL;04 74 18 01 90;NULL;23539;NULL;
+253759;FX;SERRURERIE NEBATI;A;78 FONTENAY L;NULL;NULL;01 30 58 38 50;NULL;23549;NULL;
+253760;FX;MGM ALU MENUISERIE GALE 419;NULL;13 AUBAGNE;NULL;NULL;04 42 18 72 31;NULL;23551;NULL;
+253761;FX;TOURAINE MIROITERIE;A;37 TOURS;NULL;NULL;02 47 37 76 90;NULL;23555;NULL;
+253762;FX;LUMALE;A;40 MONT DE MA;NULL;NULL;05 58 75 08 94;NULL;23556;NULL;
+253763;FX;LE QUERE ANDRE;A;21 CHENOVE;NULL;NULL;03 80 58 85 08;NULL;23565;NULL;
+253764;FX;SAGA AMENAGEMENTS RAYMOND MICH;A;38 CHAPAREILL;NULL;NULL;04 76 45 20 08;NULL;23567;NULL;
+253765;FX;SAGA AMENAGEMENTS RAYMOND MICH;A;38 CHAPAREILL;NULL;NULL;04 76 45 20 08;mic.co.raymond(a)wanadoo.fr;23567;NULL;
+253766;FX;ABAC SLC STORES;NULL;75 PARIS;NULL;NULL;01 60 46 23 19;NULL;23585;NULL;
+253767;FX;TOUTBOIS AGENCEMENT;A;69 DECINES CH;NULL;NULL;04 78 49 45 97;NULL;23608;NULL;
+253768;FX;TERRIER J. CLAUDE;NULL;61 MESSEI;NULL;NULL;02 33 96 00 40;NULL;23613;NULL;
+253769;FX;CLOMEN;A;81 ALBI;NULL;NULL;05 63 38 13 65;NULL;23620;NULL;
+253770;FX;GIRAUD BARDOUX;NULL;76 OISSEL;NULL;NULL;02 32 91 31 98;achat(a)giraud-bardoux.fr;23625;NULL;
+253771;FX;HABITAT ET STORES ROGER;B;38 BOURGOIN J;NULL;NULL;04 74 28 64 76;NULL;23646;NULL;
+253772;FX;CHAUSSON TRIALIS SUD EST;NULL;84 VALREAS;NULL;NULL;04 90 37 44 29;NULL;23648;NULL;
+253773;FX;CONFORT ISOLATION;B;21 SENNECEY L;NULL;NULL;03 80 47 07 19;NULL;23649;NULL;
+253774;FX;GERBAT;D;27 Beuzeville;NULL;NULL;02 31 63 63 60;NULL;23655;NULL;
+253775;FX;INDUSTRIAS BEC;B;ES 50 ARENYS;NULL;NULL;349 37 92 49 22;bec(a)bec.es;23664;NULL;
+253776;FX;INDUSTRIAS BEC;B;ES 50 ARENYS;NULL;NULL;349 32 25 06 85;killian(a)bec.es;23664;NULL;
+253777;FX;INDUSTRIAS BEC;B;ES 50 ARENYS;NULL;NULL;349 37 92 49 22;NULL;23664;NULL;
+253778;FX;LOUVIER;A;66 LAROQUE-DE;NULL;NULL;04 68 89 67 74;NULL;23677;NULL;
+253779;FX;THALMANN;D;69 MARCY L'ET;NULL;NULL;04 78 87 82 94;NULL;23678;NULL;
+253780;FX;CL DIVERS SUD EST ATC LANGUEDOC;A;30 L.;NULL;NULL;0 ;NULL;23681;NULL;
+253781;FX;VERRE CLAIR;B;60 SAINT MAXI;NULL;NULL;03 44 64 40 64;NULL;23686;NULL;
+253782;FX;ESPACE LE GOFF;A;56 CRAC'H;NULL;NULL;02 97 50 74 42;NULL;23689;NULL;
+253783;FX;FOURNIER;D;91 MONTGERON;NULL;NULL;01 69 52 37 72;stefournier91(a)orange.fr;23702;NULL;
+253784;FX;BERVAS;D;29 PLOUESCAT;NULL;NULL;02 98 61 93 35;NULL;23716;NULL;
+253785;FX;LENOIR METALLERIE;A+;69 VILLEURBAN;NULL;NULL;04 72 97 04 04;jfgauthier(a)lenoirmetallerie.fr;23719;NULL;
+253786;FX;LENOIR METALLERIE;A+;69 VILLEURBAN;NULL;NULL;04 72 97 04 04;NULL;23719;NULL;
+253787;FX;PXR;D;77 SAMOREAU;NULL;NULL;01 64 24 54 07;NULL;23727;NULL;
+253788;FX;SAMSE DIGNE;A;04 DIGNE;NULL;NULL;04 92 32 25 71;NULL;23760;NULL;
+253789;FX;COULON ET FILS;D;75 PARIS;NULL;NULL;01 47 20 10 33;NULL;23767;NULL;
+253790;FX;LE BALC'H VERANDAS 4462;NULL;22 PLOUMAGOAR;NULL;NULL;02 96 44 03 91;NULL;23781;NULL;
+253791;FX;ALU 2000;A;82 CASTELSAGR;NULL;NULL;05 63 95 69 73;NULL;23782;NULL;
+253792;FX;BOUCHET MARIE ROSE - DECO 2000;A+;58 NEVERS;NULL;NULL;03 86 37 69 12;NULL;23789;NULL;
+253793;FX;CRC COMPANHIA LDA;D;PT 0-071 ALDE;NULL;NULL;3512 12 10 07 62;NULL;23796;NULL;
+253794;FX;CRC COMPANHIA LDA;D;PT 0-071 ALDE;NULL;NULL;3512 13 62 12 65;NULL;23796;NULL;
+253795;FX;CRC COMPANHIA LDA;D;PT 0-071 ALDE;NULL;NULL;3512 13 62 12 65;carlosjosecosta(a)crc.pt;23796;NULL;
+253796;FX;MARINIER MAT. BOURG S/AND;NULL;84 VALREAS CE;NULL;NULL;04 75 54 53 99;NULL;23800;NULL;
+253797;FX;STORE DES ILES;A;MU TRE BORNES;NULL;NULL;23 04 24 35 53;sdesil(a)intnet.mu;23813;NULL;
+253798;FX;BAIE OUEST LORIENT;D;56 LORIENT;NULL;NULL;02 97 64 61 06;NULL;23819;NULL;
+253799;FX;NEW DECOR;A;76 LE HAVRE;NULL;NULL;02 35 28 14 74;NULL;23820;NULL;
+253800;FX;BAIE OUEST VANNES SAS PILORGER;D;56 PLOEREN;NULL;NULL;02 97 46 58 92;baie.ouest.vannes(a)wanadoo.fr;23821;NULL;
+253801;FX;CHAUSSON TRIALIS CARPENTRAS;NULL;84 CARPENTRAS;NULL;NULL;04 90 67 36 29;NULL;23838;NULL;
+253802;FX;AUDOUIN;A;61 ALENCON;NULL;NULL;02 33 29 25 43;NULL;23852;NULL;
+253803;FX;GOHON ALAIN;A;14 LISIEUX;NULL;NULL;02 31 62 05 92;NULL;23873;NULL;
+253804;FX;FABRIPOSE;A;72 ARCONNAY;NULL;NULL;02 33 29 46 02;fabripose(a)wanadoo.fr;23875;NULL;
+253805;FX;TEXIA 4812;A;64 PAU;NULL;NULL;0 ;NULL;23879;NULL;
+253806;FX;ALPHA BAIE;A+;31 TOULOUSE;NULL;NULL;05 61 62 01 81;NULL;23888;NULL;
+253807;FX;ALLAIRE PHILIPPE;A;44 ST BREVIN;NULL;NULL;02 40 39 13 43;NULL;23890;NULL;
+253808;FX;TONDOUX NICOLAS;D;35 LUITRE;NULL;NULL;02 99 97 94 51;NULL;23892;NULL;
+253809;FX;MIROITERIE CANNOISE MC;A;06 MOUGINS;NULL;NULL;04 92 92 16 17;NULL;23898;NULL;
+253810;FX;SMRB (STE MENUISERIE;A;45 SULLY SUR;NULL;NULL;02 38 36 29 04;NULL;23899;NULL;
+253811;FX;MAISON CONFORT 4386;A;MA ABLANCA;NULL;NULL;212 22 39 41 40;NULL;23906;NULL;
+253812;FX;NUVOLI PIERRE -MAISON ISOLATION;B;20 BASTIA;NULL;NULL;04 95 31 18 59;NULL;23907;NULL;
+253813;FX;ESPACE MENUISERIE ET;A;37 NAZELLES N;NULL;NULL;02 47 57 46 65;NULL;23909;NULL;
+253814;FX;GEDIMAT UNIBOIS;B;70 LURE;NULL;NULL;03 84 62 72 28;NULL;23910;NULL;
+253815;FX;SICARD VERANDAS;A+;37 TOURS;NULL;NULL;02 47 56 77 95;NULL;23916;NULL;
+253816;FX;POINT P MERIDIONALE BEZIERS;A+;34 BEZIERS CE;NULL;NULL;04 67 49 76 49;NULL;23937;NULL;
+253817;FX;POINT P MERIDIONALE BEZIERS;A+;34 BEZIERS CE;NULL;NULL;05 65 46 12 22;NULL;23937;NULL;
+253818;FX;POINT P MERIDIONALE BEZIERS;A+;34 BEZIERS CE;NULL;NULL;05 34 01 38 20;NULL;23937;NULL;
+253819;FX;POINT P MERIDIONALE CARCASSONN;A;11 CARCASSONN;NULL;NULL;04 68 72 54 81;NULL;23938;NULL;
+253820;FX;POINT P MERIDIONALE PERPIGNAN;A;34 BEZIERS CE;NULL;NULL;04 68 55 70 69;NULL;23940;NULL;
+253821;FX;POINT P MERIDIONALE NIMES;A;34 BEZIERS CE;NULL;NULL;04 66 04 81 99;NULL;23942;NULL;
+253822;FX;MEGNIEN SIMA NIORT;NULL;79 NIORT;NULL;NULL;05 49 17 22 29;NULL;23951;NULL;
+253823;FX;MEGNIEN SIMA LUCON;NULL;85 LUCON;NULL;NULL;02 51 56 81 81;NULL;23952;NULL;
+253824;FX;CHEVALIER;A+;21 POUILLY EN;NULL;NULL;03 80 90 88 44;contact(a)chevalier-sa.fr;23956;NULL;
+253825;FX;AREA (STE DES AUTOROUTES;A;69 BRON CEDEX;NULL;NULL;0 ;NULL;23969;NULL;
+253826;FX;TROUILLARD POINT P PDL THOUARS;A;79 THOUARS;NULL;NULL;05 49 96 36 89;NULL;23979;NULL;
+253827;FX;RIDONET LORRAINE;A+;54 POMPEY;NULL;NULL;03 83 24 37 84;ridonet(a)orange.fr;23991;NULL;
+253828;FX;AD DIFFUSION;A;77 SAINT PIER;NULL;NULL;01 64 78 51 59;NULL;23993;NULL;
+253829;FX;AD DIFFUSION;A;77 SAINT PIER;NULL;NULL;01 64 22 37 98;NULL;23993;NULL;
+253830;FX;COSVAL;NULL;13 SALON DE P;NULL;NULL;04 90 56 70 40;NULL;23995;NULL;
+253831;FX;ROTGE FRANCOIS;A;83 FREJUS;NULL;NULL;04 94 69 92 61;rotgepvm(a)live.fr;23998;NULL;
+253832;FX;CHAUSSON TRIALIS MONTELIMAR;NULL;84 VALREAS CE;NULL;NULL;04 75 51 35 78;NULL;24001;NULL;
+253833;FX;POYADE STORES;NULL;03 VICHY;NULL;NULL;04 70 97 63 71;NULL;24015;NULL;
+253834;FX;BILDSTEIN JEAN JACQUES;A;68 HATTSTATT;NULL;NULL;09 71 70 40 56;jean-jacques.bildstein(a)wanadoo.fr;24016;NULL;
+253835;FX;ROTHERMEL CHARLES SARL;A;57 AMNEVILLE;NULL;NULL;03 87 72 07 29;NULL;24019;NULL;
+253836;FX;ROTHERMEL CHARLES SARL;A;57 AMNEVILLE;NULL;NULL;03 87 71 82 06;NULL;24019;NULL;
+253837;FX;ROTHERMEL CHARLES SARL;A;57 AMNEVILLE;NULL;NULL;03 87 71 82 06;virginie.sar(a)rothermel.fr;24019;NULL;
+253838;FX;GEDIMAT GARNIER;A;72 ST PATERNE;NULL;NULL;02 33 27 34 77;NULL;24022;NULL;
+253839;FX;IRIS 4507;NULL;10 ST THIBAUL;NULL;NULL;01 41 72 06 29;NULL;24025;NULL;
+253840;FX;GLANTENAY;D;21 VENAREY LE;NULL;NULL;03 80 96 19 37;entreprise.glantenay(a)orange.fr;24037;NULL;
+253841;FX;CHAMPIGNY FERMETURES;A;94 CHAMPIGNY;NULL;NULL;01 45 16 91 56;NULL;24043;NULL;
+253842;FX;LESSAGE DANIEL;NULL;72 SAINT SATU;NULL;NULL;02 43 25 65 46;NULL;24055;NULL;
+253843;FX;SUD OUEST CLOTURES 2;A;11 NARBONNE C;NULL;NULL;04 68 41 11 23;NULL;24056;NULL;
+253844;FX;RICARD GILBERT;A;81 MAZAMET;NULL;NULL;05 63 98 98 87;NULL;24065;NULL;
+253845;FX;AVH AMELIORATION DE VOTRE;A;89 TURNY;NULL;NULL;09 71 70 14 82;contact(a)avh89.fr;24068;NULL;
+253846;FX;REISSER KURT;NULL;DE 6829 LANDA;NULL;NULL;49 63 41 35 84;NULL;24077;NULL;
+253847;FX;OUEST OUVERTURES;A;35 FOUGERES;NULL;NULL;02 99 99 50 91;NULL;24078;NULL;
+253848;FX;STORES ALPAGO;A;24 EYMET;NULL;NULL;05 53 23 75 95;NULL;24080;NULL;
+253849;FX;VRIGNAUD VEILLET NELLY;A;17 SAINTES;NULL;NULL;05 46 92 03 72;tonyveillet(a)orange.fr;24085;NULL;
+253850;FX;COMASUD SICOBOIS;A+;13 MARSEILLE;NULL;NULL;04 94 75 69 69;NULL;24088;NULL;
+253851;FX;REZIG MICHEL;A;95 SARCELLES;NULL;NULL;01 34 38 07 30;NULL;24095;NULL;
+253852;FX;STORES 35;A;35 DOMLOUP;NULL;NULL;02 99 37 47 66;NULL;24111;NULL;
+253853;FX;FRANCE FERMETURES;A;77 VILLEMER;NULL;NULL;01 69 09 18 85;NULL;24112;NULL;
+253854;FX;FRANCE FERMETURES;A;77 VILLEMER;NULL;NULL;01 64 24 90 25;NULL;24112;NULL;
+253855;FX;CL DIVERS SUD EST F.LEBEL;A;73 L.;NULL;NULL;02 99 14 86 44;NULL;24114;NULL;
+253856;FX;SEGRIM;A;13 LES PENNES;NULL;NULL;04 91 51 28 20;NULL;24118;NULL;
+253857;FX;SODIMAF (STE DIFFUSION;A;77 CRECY LA C;NULL;NULL;01 64 63 88 37;NULL;24128;NULL;
+253858;FX;FRANCE FERMETURES SAS;A+;74 MEYTHET;NULL;NULL;04 50 52 83 21;NULL;24132;NULL;
+253859;FX;RHEIN CHRISTIAN;B;63 CLERMONT F;NULL;NULL;04 73 92 45 60;NULL;24135;NULL;
+253860;FX;HERTRICH FRANCOIS;NULL;83 ROQUEBRUNE;NULL;NULL;04 94 44 05 63;NULL;24146;NULL;
+253861;FX;JLC 45;D;45 ORLEANS CE;NULL;NULL;02 38 63 88 37;NULL;24148;NULL;
+253862;FX;JLC 45;D;45 ORLEANS CE;NULL;NULL;02 38 64 09 47;NULL;24148;NULL;
+253863;FX;CASTOR DEVELOPPEMENT 4675;NULL;94 SAINT MAUR;NULL;NULL;01 48 89 00 05;NULL;24179;NULL;
+253864;FX;TROUILLARD POINT P PDL AIRVAULT;A;79 AIRVAULT;NULL;NULL;05 49 70 80 23;NULL;24188;NULL;
+253865;FX;LE CHEVILLER H.;B;97 KOUROU CED;NULL;NULL;05 94 32 07 74;llechevil(a)wanadoo.fr;24192;NULL;
+253866;FX;LVI BOURGOGNE STE NVELLE;A;21 POUILLY EN;NULL;NULL;03 80 90 74 70;NULL;24202;NULL;
+253867;FX;MIROITERIE SERVICES;A;56 AURAY;NULL;NULL;02 97 24 80 06;NULL;24205;NULL;
+253868;FX;DT ALU;A;94 VALENTON;NULL;NULL;01 43 89 41 25;NULL;24208;NULL;
+253869;FX;BAR ALU;A;13 MARSEILLE;NULL;NULL;04 91 94 25 07;NULL;24213;NULL;
+253870;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;3512 32 76 77 79;carina.francisco(a)martifer.com;24215;NULL;
+253871;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;05 56 24 07 27;NULL;24215;NULL;
+253872;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;334 37 85 13 65;sidonie.marvalin(a)heytens.be;24215;NULL;
+253873;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;stephanethesin(a)numrs.com;24215;NULL;
+253874;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;36 83 54 60 13;NULL;24215;NULL;
+253875;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;225 21 24 62 14;ludovic.joubert(a)ads-westafrica.com;24215;NULL;
+253876;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;412 19 43 40 08;NULL;24215;NULL;
+253877;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;NULL;NULL;24215;NULL;
+253878;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;01 44 08 62 02;tpoletti(a)viguier.com;24215;NULL;
+253879;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;glpiat(a)ballastinternational.com;24215;NULL;
+253880;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;3902 90 37 65 50;raffaele.rome(a)metalsigma.it;24215;NULL;
+253881;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;kurt.vanmeerhaeghe(a)kyotecgroup.com;24215;NULL;
+253882;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;01 49 97 92 32;damien.cochet(a)kyotecgroup.fr;24215;NULL;
+253883;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;04 78 08 86 32;rchevallard(a)2jpc.com;24215;NULL;
+253884;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;332 40 51 11 43;erbosmia(a)aol.com;24215;NULL;
+253885;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;l.basseville(a)free.fr;24215;NULL;
+253886;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;01 40 86 55 33;NULL;24215;NULL;
+253887;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;morganequeralto(a)numrs.com;24215;NULL;
+253888;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;estelle(a)ikedeco.com;24215;NULL;
+253889;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;NULL;24215;NULL;
+253890;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;mohamed.ghaleb(a)club-internet.fr;24215;NULL;
+253891;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;04 50 96 70 91;NULL;24215;NULL;
+253892;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;becht(a)mbm-konstruktionen.de;24215;NULL;
+253893;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;santos.urtzi(a)gmail.com;24215;NULL;
+253894;FX;CL DIVERS EXPORT avec tva;B;45 CHECY;NULL;NULL;0 ;richardd(a)netvision.net.il;24215;NULL;
+253895;FX;EQUIP'HABITAT;A;87 LIMOGES;NULL;NULL;05 55 01 25 22;NULL;24218;NULL;
+253896;FX;LETORDS THIERRRY;A;94 ST MAUR DE;NULL;NULL;01 48 83 00 05;NULL;24231;NULL;
+253897;FX;VMM VERANDAS MENUIS MONTGAILL;A+;65 TARBES;NULL;NULL;05 62 34 00 05;NULL;24236;NULL;
+253898;FX;MARSOLLIER DIDIER;A;35 Rennes;NULL;NULL;02 99 44 15 94;d.marsollier(a)free.fr;24245;NULL;
+253899;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 34;courtry(a)afd-verandas.com;24252;NULL;
+253900;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 33;NULL;24252;NULL;
+253901;FX;AFD;D;36 LA CHATRE;NULL;NULL;04 76 24 16 23;NULL;24252;NULL;
+253902;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 58 47;courtry(a)afd-verandas.com;24252;NULL;
+253903;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 34;be(a)afd-verandas.com;24252;NULL;
+253904;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 58 47;NULL;24252;NULL;
+253905;FX;AFD;D;36 LA CHATRE;NULL;NULL;02 54 48 61 58;lachatre(a)afd-verandas.com;24252;NULL;
+253906;FX;AFD;D;36 LA CHATRE;NULL;NULL;01 64 21 88 41;barfuss_mederic(a)afd-verandas.com;24252;NULL;
+253907;FX;AFD;D;36 LA CHATRE;NULL;NULL;02á54á48á4182;clement.aupart(a)afd-verandas.com;24252;NULL;
+253908;FX;AFD;D;36 LA CHATRE;NULL;NULL;02 54 48 61 58;NULL;24252;NULL;
+253909;FX;DA SILVA ANTONIO FIB FERMETURE;A;91 MORANGIS;NULL;NULL;01á60129678;antonio.da-silva0361(a)orange.fr;24255;NULL;
+253910;FX;ROBINEAU;A;37 ST NICOLAS;NULL;NULL;02 47 97 47 30;NULL;24258;NULL;
+253911;FX;BOUCHER FABRICE;A;93 Aubervilli;NULL;NULL;01 69 90 10 06;zine.93(a)wanadoo.fr;24260;NULL;
+253912;FX;SAMSE ALBERTVILLE;A;73 ALBERTVILL;NULL;NULL;04 79 37 18 47;NULL;24262;NULL;
+253913;FX;SUREAU;NULL;89 MAGNY;NULL;NULL;03 86 33 02 10;NULL;24265;NULL;
+253914;FX;ALU SPINACE;A+;38 LE TOUVET;NULL;NULL;04 76 08 40 28;NULL;24283;NULL;
+253915;FX;LEMOINE DECORATION;A;41 MONTRICHAR;NULL;NULL;02 54 32 24 27;NULL;24284;NULL;
+253916;FX;QUINETTE YVON;D;50 SAINT LO;NULL;NULL;02 33 55 81 21;NULL;24296;NULL;
+253917;FX;EXPLOITATION FRANCE ENTRETIEN;A;13 MARSEILLE;NULL;NULL;04 91 54 07 80;francentretien(a)wanadoo.fr;24305;NULL;
+253918;FX;EXPLOITATION FRANCE ENTRETIEN;A;13 MARSEILLE;NULL;NULL;04 91 54 07 80;NULL;24305;NULL;
+253919;FX;COUSSINS MATELAS;B;38 ST CLAIR D;NULL;NULL;04 74 97 86 92;NULL;24308;NULL;
+253920;FX;OMBRE PINGEOT;A;86 CHATELLERA;NULL;NULL;05 49 23 19 03;NULL;24314;NULL;
+253921;FX;AMB;A;50 BOURGUENOL;NULL;NULL;02 33 90 04 12;NULL;24321;NULL;
+253922;FX;MELIN MATERIAUX LA CHATRE;A;36 LA CHATRE;NULL;NULL;02 54 06 09 63;NULL;24327;NULL;
+253923;FX;LES VERRERIES DU CENTRE;A;03 MONTLUCON;NULL;NULL;04 70 28 17 57;NULL;24330;NULL;
+253924;FX;LES VERRERIES DU CENTRE;A;03 MONTLUCON;NULL;NULL;0 ;NULL;24330;NULL;
+253925;FX;GUILLOT ELECT BATIMENT;B;38 GRENOBLE;NULL;NULL;04 76 49 42 61;NULL;24335;NULL;
+253926;FX;CHAUSSON TRIALIS BOLLENE;NULL;84 BOLLENE;NULL;NULL;04 90 30 05 14;NULL;24337;NULL;
+253927;FX;RETE SERGE;A;35 LOUVIGNE D;NULL;NULL;02 99 98 19 32;NULL;24338;NULL;
+253928;FX;STORES OTTAN;A;78 TRAPPES;NULL;NULL;01 30 62 24 09;NULL;24340;NULL;
+253929;FX;ALLIX DOMINIQUE;NULL;14 CABOURG;NULL;NULL;02 31 24 79 12;NULL;24358;NULL;
+253930;FX;THOMAS REMI;A;45 LA FERTE S;NULL;NULL;0 ;thomas-remi(a)orange.fr;24382;NULL;
+253931;FX;SNM ALU INDUSTRIE;A;88 LA BRESSE;NULL;NULL;03 29 25 29 66;NULL;24384;NULL;
+253932;FX;SM BOIS;A;77 CLAYE SOUI;NULL;NULL;01 60 26 03 94;NULL;24386;NULL;
+253933;FX;LOGIS CONFORT;A;35 BETTON;NULL;NULL;02 99 55 16 90;NULL;24397;NULL;
+253934;FX;LOGIS CONFORT;A;35 BETTON;NULL;NULL;02 99 55 37 44;logisconfort(a)orange.fr;24397;NULL;
+253935;FX;DE PHILIPPE BERNARD;A;89 MIGENNES;NULL;NULL;08 25 18 69 93;NULL;24404;NULL;
+253936;FX;BAUDRY - DIVISION 2;A;77 SERVON;NULL;NULL;01 60 62 60 29;NULL;24416;NULL;
+253937;FX;DELEVOYE L'OMBRE SUR BAIE;A;31 PORTET SUR;NULL;NULL;05 61 76 05 60;NULL;24424;NULL;
+253938;FX;THOMAS;A;44 ST NAZAIRE;NULL;NULL;02 40 22 46 11;NULL;24426;NULL;
+253939;FX;SERVICE ATERM;A;45 ORLEANS;NULL;NULL;02 38 62 84 09;NULL;24431;NULL;
+253940;FX;CHAMBON;A;71 SEMUR EN B;NULL;NULL;03 85 25 43 57;NULL;24438;NULL;
+253941;FX;PICHARD;A;45 MARIGNY LE;NULL;NULL;02 38 75 14 85;NULL;24442;NULL;
+253942;FX;CLEMENT ALAIN;A;77 VILLEPARIS;NULL;NULL;01 64 67 20 41;NULL;24447;NULL;
+253943;FX;HAINCOURT BERTRAND;NULL;61 LE THEIL;NULL;NULL;02 37 49 77 40;NULL;24450;NULL;
+253944;FX;ILE DE FRANCE FERMETURE 4489;NULL;78 VERNOUILLE;NULL;NULL;01 39 71 68 62;NULL;24464;NULL;
+253945;FX;CARRE MARCEL;A+;38 PONT DE BE;NULL;NULL;04 76 37 04 90;NULL;24467;NULL;
+253946;FX;ISOLA 2000 4833;NULL;93 LE RAINCY;NULL;NULL;01 43 02 73 92;NULL;24469;NULL;
+253947;FX;CHAUSSON TRIALIS ST MITRE;NULL;13 SAINT MITR;NULL;NULL;04 42 80 93 33;NULL;24484;NULL;
+253948;FX;DENJEAN;A;69 ST MARTIN;NULL;NULL;04 78 48 51 72;NULL;24491;NULL;
+253949;FX;DENJEAN;A;69 ST MARTIN;NULL;NULL;04 78 48 51 72;ets.denjean(a)wanadoo.fr;24491;NULL;
+253950;FX;MOTIN JACKY- STORES DUBOIS;NULL;50 SAINT LO;NULL;NULL;02 33 05 30 89;NULL;24493;NULL;
+253951;FX;DECORA STORES EURL;D;31 RAMONVILLE;NULL;NULL;05 61 75 06 80;NULL;24500;NULL;
+253952;FX;CL DIVERS SUD OUEST J GIRAUD;A;32 Auch;NULL;NULL;02 99 14 83 79;NULL;24502;NULL;
+253953;FX;ALU BORMES STORES;A;83 BORMES LES;NULL;NULL;0 ;alubormestores(a)wanadoo.fr;24507;NULL;
+253954;FX;RESEAU PRO VACHERAND;NULL;02 SOISSONS C;NULL;NULL;03 23 73 09 29;NULL;24515;NULL;
+253955;FX;JPA ENTRETIEN;A+;38 L'ALPE D'H;NULL;NULL;04 76 80 63 01;NULL;24517;NULL;
+253956;FX;BOHEMIAFLEX CS SRO;D;CZ 05 OPAVA 5;NULL;NULL;4205 53 73 19 94;ivana(a)bohemiaflex-cs.cz;24523;NULL;
+253957;FX;BOHEMIAFLEX CS SRO;D;CZ 05 OPAVA 5;NULL;NULL;4205 53 73 19 94;NULL;24523;NULL;
+253958;FX;FASS;D;35 SAINT GREG;NULL;NULL;08 11 38 96 47;fass35(a)gmail.com;24526;NULL;
+253959;FX;CORNET MIROITERIE RJ;NULL;13 MARSEILLE;NULL;NULL;04 91 35 54 32;NULL;24531;NULL;
+253960;FX;LEMOINE STORE DECO;A+;02 SAINT-QUEN;NULL;NULL;03 23 67 81 40;NULL;24549;NULL;
+253961;FX;VGSM VOLETS GRILLES;D;92 CHATENAY M;NULL;NULL;01 47 02 36 26;NULL;24554;NULL;
+253962;FX;RHONIBAT;D;69 BRIGNAIS;NULL;NULL;04 78 05 41 66;secretariat(a)rhonibat.com;24567;NULL;
+253963;FX;RHONIBAT;D;69 BRIGNAIS;NULL;NULL;04 78 05 41 66;NULL;24567;NULL;
+253964;FX;TAPISSERIE LONGEAU;A;86 VOUILLE;NULL;NULL;05 49 51 79 14;NULL;24573;NULL;
+253965;FX;MVB (MIROITERIE VITRERIE;A+;27 BERNAY;NULL;NULL;02 32 46 59 10;NULL;24583;NULL;
+253966;FX;FMBA (FRANCHOMME 4055;NULL;62 COURCELLES;NULL;NULL;16 21 77 88 99;NULL;24602;NULL;
+253967;FX;ISOMAT;A;67 BERGBIETEN;NULL;NULL;0 ;NULL;24604;NULL;
+253968;FX;EURAL TECH 4771;A;06 NICE;NULL;NULL;04 93 26 31 11;NULL;24630;NULL;
+253969;FX;AEF (AGENCE EUROPEENNE;A+;75 PARIS;NULL;NULL;01 45 42 00 10;NULL;24632;NULL;
+253970;FX;MEGNIEN SNBM CHANTELOUP;NULL;86 VOUNEUIL S;NULL;NULL;0 ;NULL;24644;NULL;
+253971;FX;ATELIER DU BOIS 302940;NULL;44 ARTHON EN;NULL;NULL;02 40 21 25 01;NULL;24649;NULL;
+253972;FX;AUCLAIR HERVE;D;01 BEYNOST;NULL;NULL;04 78 06 42 87;entreprise-auclair(a)sfr.fr;24653;NULL;
+253973;FX;BROSOLO PIERRE EDOUARD;D;56 QUIBERON;NULL;NULL;02 97 50 42 75;NULL;24660;NULL;
+253974;FX;ATALU SAS;A;67 ERSTEIN CX;NULL;NULL;03 88 59 81 10;NULL;24661;NULL;
+253975;FX;BIG MAT MOUYSSET SAMABOIS;A;12 MILLAU;NULL;NULL;05 65 61 38 62;NULL;24665;NULL;
+253976;FX;CL DIVERS OUEST D. JEANNE;NULL;14 R;NULL;NULL;02 99 14 63 08;NULL;24670;NULL;
+253977;FX;SOFRADI;D;44 TREILLIERE;NULL;NULL;02 28 01 22 35;michel(a)sofradi.fr;24675;NULL;
+253978;FX;SOFRADI;D;44 TREILLIERE;NULL;NULL;01 28 01 22 35;NULL;24675;NULL;
+253979;FX;SOFRADI;D;44 TREILLIERE;NULL;NULL;02 28 01 22 35;NULL;24675;NULL;
+253980;FX;DECORS DE L'HABITAT;A+;35 PACE;NULL;NULL;02 99 69 03 04;NULL;24678;NULL;
+253981;FX;FLAMANT INDUSTRIE 4353;NULL;59 RAISMES;NULL;NULL;03 27 36 85 58;NULL;24680;NULL;
+253982;FX;FLAMANT INDUSTRIE 4353;NULL;59 RAISMES;NULL;NULL;03 27 32 47 90;NULL;24680;NULL;
+253983;FX;BATIMAG;A;51 SAINTE MEN;NULL;NULL;03 26 60 14 51;NULL;24688;NULL;
+253984;FX;MENUISERIE PARRET;NULL;69 MESSIMY;NULL;NULL;04 78 45 15 29;cyrille.parret(a)orange.fr;24690;NULL;
+253985;FX;SCOB STE DE CONSTRUCTION;A;35 BREAL S/S;NULL;NULL;02 23 41 16 17;scob.rennes(a)wanadoo.fr;24695;NULL;
+253986;FX;ISOLATION SERVICE;NULL;36 LE BLANC;NULL;NULL;0 ;NULL;24696;NULL;
+253987;FX;GORET;A;72 LA FLECHE;NULL;NULL;02 43 94 00 81;NULL;24698;NULL;
+253988;FX;ALU CONFORT;A+;59 LOMME;NULL;NULL;03 20 93 21 55;NULL;24706;NULL;
+253989;FX;VENIER WALTER - ACTIBA;A;57 SAINT AVOL;NULL;NULL;03 87 94 59 92;NULL;24715;NULL;
+253990;FX;BREGERAS FREDERIC;A;24 MARSAC S/L;NULL;NULL;05 53 54 88 95;NULL;24734;NULL;
+253991;FX;GEDIMAT GUENEE MATERIAUX;A;35 LOUVIGNE D;NULL;NULL;02 99 98 13 66;NULL;24743;NULL;
+253992;FX;CANTARELLI SERGE - EGPS;A;83 Seyne-sur-;NULL;NULL;04 94 06 78 20;egps(a)sfr.fr;24753;NULL;
+253993;FX;RESEAU PRO BATI DECOR ST BRICE;NULL;54 NANCY;NULL;NULL;03 26 87 37 10;NULL;24757;NULL;
+253994;FX;RESEAU PRO BATI DECORFAGNIERES;NULL;54 NANCY;NULL;NULL;03 26 64 70 38;NULL;24758;NULL;
+253995;FX;VALLADON;A;92 MONTROUGE;NULL;NULL;01 46 57 92 13;valladon.sa(a)wanadoo.fr;24769;NULL;
+253996;FX;GEDIMAT SPIRE;A;80 HARLEVILLE;NULL;NULL;03 24 33 79 80;f.jumeau(a)gedimat.fr;24776;NULL;
+253997;FX;GEDIMAT SPIRE;A;80 HARLEVILLE;NULL;NULL;03 24 33 79 80;NULL;24776;NULL;
+253998;FX;PELLEREI JEAN - MARIE;A;60 MONCEAUX;NULL;NULL;03 44 70 06 93;NULL;24778;NULL;
+253999;FX;GOBERT MENUISERIE;NULL;59 MAING;NULL;NULL;03 27 40 23 09;NULL;24784;NULL;
+254000;FX;ASCI ROY;NULL;91 CROSNE;NULL;NULL;01 69 48 34 56;NULL;24785;NULL;
+254001;FX;TANGUY;A+;29 LANNILIS;NULL;NULL;02 98 04 05 80;NULL;24831;NULL;
+254002;FX;ZANCANARO;A+;07 CHARMES SU;NULL;NULL;04 75 60 87 16;zancanaro-menuiserie(a)wanadoo.fr;24845;NULL;
+254003;FX;LA MAISON DUARTE 4388;NULL;57 SARREBOURG;NULL;NULL;0 ;NULL;24852;NULL;
+254004;FX;ASF ATELIER SERRURERIE;A;29 PLABENNEC;NULL;NULL;02 98 37 92 02;NULL;24853;NULL;
+254005;FX;TROUILLARD POINT P PDL ANCENIS;A;44 ANCENIS;NULL;NULL;02 40 96 35 98;NULL;24874;NULL;
+254006;FX;TROUILLARD POINT P PDL ANGERS;A;49 ANGERS;NULL;NULL;02 41 43 34 91;NULL;24884;NULL;
+254007;FX;TROUILLARD POINT P PDL CHOLET;A;49 CHOLET;NULL;NULL;02á41á75á2249;NULL;24886;NULL;
+254008;FX;TROUILLARD POINT P PDL SAUMUR;A;49 SAUMUR;NULL;NULL;02 41 67 70 16;NULL;24888;NULL;
+254009;FX;POINT P PDL CERIZAY;A;79 CERIZAY;NULL;NULL;05 49 80 00 81;NULL;24889;NULL;
+254010;FX;AID 4721;A;92 GARCHES;NULL;NULL;01 47 41 95 05;NULL;24893;NULL;
+254011;FX;GABORIT JR;A;79 TERVES;NULL;NULL;05 49 80 60 60;NULL;24894;NULL;
+254012;FX;SERAG;B;38 MONTBONNOT;NULL;NULL;04 76 41 83 36;NULL;24899;NULL;
+254013;FX;ROGER CDB;A;80 DURY;NULL;NULL;03 22 95 18 18;NULL;24906;NULL;
+254014;FX;ORCH- ORGANISATION RENOV CONSE;A;76 MAUQUENCHY;NULL;NULL;02 35 90 35 39;NULL;24916;NULL;
+254015;FX;JOCK S;A;78 ARNOUVILLE;NULL;NULL;01 30 93 95 54;NULL;24920;NULL;
+254016;FX;TROUILLARD POINT P PDL;A;85 ST GILLES;NULL;NULL;02 51 55 16 36;NULL;24933;NULL;
+254017;FX;GARNIER 4030;NULL;77 MELUN;NULL;NULL;01 64 39 89 66;NULL;24934;NULL;
+254018;FX;DEGLANE;D;92 ISSY LES M;NULL;NULL;01 46 38 11 04;NULL;24935;NULL;
+254019;FX;BAIE OUEST CAEN;A;14 FLEURY SUR;NULL;NULL;02 31 74 34 69;NULL;24938;NULL;
+254020;FX;ACM MARIE;A;91 STE GENEVI;NULL;NULL;01 60 16 42 47;acm-marie(a)wanadoo.fr;24941;NULL;
+254021;FX;ACM MARIE;A;91 STE GENEVI;NULL;NULL;01 60 16 42 47;NULL;24941;NULL;
+254022;FX;POINT P BRETAGNE PLANCOET;A;22 PLANCOET;NULL;NULL;02 96 80 44 50;NULL;24952;NULL;
+254023;FX;POINT P CHAPIN CHANGE;NULL;35 RENNES CED;NULL;NULL;02 43 56 80 83;NULL;24955;NULL;
+254024;FX;GEDIMAT HOCHET EQUEURDREVILLE;A;50 EQUEURDREV;NULL;NULL;02 33 93 00 76;NULL;24957;NULL;
+254025;FX;DIALUX;A;69 VAULX EN V;NULL;NULL;04 78 49 15 16;NULL;24964;NULL;
+254026;FX;POINT P PDL LES SABLES D OLONN;A;85 LES SABLES;NULL;NULL;02 51 32 86 19;NULL;24986;NULL;
+254027;FX;PIGUET;A;69 VILLEURBAN;NULL;NULL;04 72 89 17 49;NULL;24990;NULL;
+254028;FX;HCL;D;85 LES HERBIE;NULL;NULL;02 51 67 07 00;NULL;24993;NULL;
+254029;FX;HCL;D;85 LES HERBIE;NULL;NULL;0 ;NULL;24993;NULL;
+254030;FX;CHAUSSON TRIALIS ST VALLIER;NULL;26 ST VALLIER;NULL;NULL;04 75 23 13 37;NULL;24995;NULL;
+254031;FX;CHAUSSON TRIALIS ST VALLIER;NULL;26 ST VALLIER;NULL;NULL;04 75 23 13 37;jean.bouchet(a)chausson-materiaux.fr;24995;NULL;
+254032;FX;LEJOLLY GEORGES 4178;NULL;50 CREANCES;NULL;NULL;02 33 46 29 91;NULL;25008;NULL;
+254033;FX;STORES SERVISYSTEM;B;CH 1258 PERLY;NULL;NULL;412 27 71 03 73;storesservisustem(a)bluewin.ch;25011;NULL;
+254034;FX;STORES SERVISYSTEM;B;CH 1258 PERLY;NULL;NULL;412 27 71 03 73;NULL;25011;NULL;
+254035;FX;AUSUD;NULL;84 ORANGE;NULL;NULL;04 90 51 03 83;NULL;25019;NULL;
+254036;FX;CHB MIROITERIE;A;47 NERAC;NULL;NULL;05 53 65 79 31;NULL;25022;NULL;
+254037;FX;MAZILLER GUY;A;01 ST DIDIER;NULL;NULL;04 74 04 95 62;NULL;25025;NULL;
+254038;FX;ARCH;A;34 PORTIRAGNE;NULL;NULL;04 67 01 62 08;sarlarch(a)aol.com;25038;NULL;
+254039;FX;MIROITERIE DE L'OUEST ARMORIQU;A;56 CAUDAN;NULL;NULL;02 97 76 78 44;NULL;25039;NULL;
+254040;FX;MIROITERIE DE L'OUEST ARMORIQU;A;56 CAUDAN;NULL;NULL;02 97 76 86 68;NULL;25039;NULL;
+254041;FX;ALPASER;B;74 LA ROCHE S;NULL;NULL;04 50 25 82 75;NULL;25042;NULL;
+254042;FX;COMPTOIR EQUIPE BAIE 5100;A;94 CACHAN;NULL;NULL;01 45 46 11 30;NULL;25043;NULL;
+254043;FX;HELP BRETAGNE - GOURVEN JACQUE;NULL;29 ROSPORDEN;NULL;NULL;02 98 57 82 98;NULL;25049;NULL;
+254044;FX;ICDS 4743;NULL;50 COUVAINS;NULL;NULL;02 33 57 53 43;NULL;25050;NULL;
+254045;FX;MELIN R. MATERIAUX LE BLANC;NULL;36 LE BLANC;NULL;NULL;02 54 37 85 16;NULL;25064;NULL;
+254046;FX;MARTINEZ FRERES;A;47 VILLENEUVE;NULL;NULL;05 53 01 29 70;NULL;25069;NULL;
+254047;FX;LADENBURGER;A;57 STE BARBE;NULL;NULL;03 87 76 88 59;ladenburger.gilles(a)wanadoo.fr;25071;NULL;
+254048;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 69 83 03 80;NULL;25073;NULL;
+254049;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 64 54 38 51;NULL;25073;NULL;
+254050;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 69 28 73 17;pointp-lesulis-menuiserie(a)saint-gobain.com;25073;NULL;
+254051;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 34 50 58 68;NULL;25073;NULL;
+254052;FX;POINT P CIMA;D;92 NANTERRE C;NULL;NULL;01 69 17 13 89;NULL;25073;NULL;
+254053;FX;CHAVIGNY ST DENIS;A+;28 ST DENIS L;NULL;NULL;0 ;stdenis.menuiseries(a)groupechavigny.fr;25078;NULL;
+254054;FX;CHAVIGNY ST DENIS;A+;28 ST DENIS L;NULL;NULL;02 37 44 54 85;NULL;25078;NULL;
+254055;FX;JAERLING MARC;B;LU 50 PETANGE;NULL;NULL;352 23 65 02 86;NULL;25079;NULL;
+254056;FX;FERIAUD;A;77 TOURNAN EN;NULL;NULL;01 64 25 34 88;NULL;25082;NULL;
+254057;FX;METAL OUDEAU;A;41 SAINT LAUR;NULL;NULL;02 54 87 06 70;NULL;25089;NULL;
+254058;FX;MURAT FRERES;A;24 BOULAZAC;NULL;NULL;0 ;NULL;25093;NULL;
+254059;FX;PAPON ERIC;A;19 USSEL;NULL;NULL;05 55 72 50 47;NULL;25096;NULL;
+254060;FX;LAMY 4651;NULL;72 SABLE;NULL;NULL;02 43 95 70 43;NULL;25109;NULL;
+254061;FX;AERO STORES 4598;NULL;31 BLAGNAC;NULL;NULL;05 61 71 88 14;NULL;25110;NULL;
+254062;FX;GAVARD ERIC;B;74 MARCELLAZ;NULL;NULL;04 50 31 11 90;NULL;25138;NULL;
+254063;FX;STE DE DIFFUSION DE FRANCHISES;A;31 TOULOUSE;NULL;NULL;05 61 25 24 14;NULL;25146;NULL;
+254064;FX;GTB CONSTRUCTION;A;35 RENNES;NULL;NULL;02 99 41 85 86;NULL;25156;NULL;
+254065;FX;LAVISSE DIDIER;A;94 CHOISY LE;NULL;NULL;01 48 92 04 29;NULL;25157;NULL;
+254066;FX;ALU CONCEPT;B;42 BONSON;NULL;NULL;04 77 55 10 02;NULL;25161;NULL;
+254067;FX;ALU BELLA STORES;A;13 SEPTEMES L;NULL;NULL;04 91 09 74 51;contact(a)alubellestores.fr;25163;NULL;
+254068;FX;ALU BELLA STORES;A;13 SEPTEMES L;NULL;NULL;04 91 51 92 15;NULL;25163;NULL;
+254069;FX;LYON STORES;D;69 BRON;NULL;NULL;04 72 37 03 48;NULL;25168;NULL;
+254070;FX;GUILLOUX MATERIAUX;A;50 SARTILLY;NULL;NULL;02 33 89 29 28;NULL;25191;NULL;
+254071;FX;ALU 24;A+;24 BOULAZAC;NULL;NULL;05 53 08 02 92;NULL;25193;NULL;
+254072;FX;AM3 NOUVELLE DIMENSION RJ;A;79 NIORT CEDE;NULL;NULL;05 49 79 00 90;am3nd79(a)wanadoo.fr;25195;NULL;
+254073;FX;AM3 NOUVELLE DIMENSION RJ;A;79 NIORT CEDE;NULL;NULL;05 49 79 00 90;NULL;25195;NULL;
+254074;FX;ATD (AGENCEMENT DECORAT.);B;97 KOUROU CED;NULL;NULL;05 94 32 54 10;yannick.atd(a)wanadoo.fr;25204;NULL;
+254075;FX;ATD (AGENCEMENT DECORAT.);B;97 KOUROU CED;NULL;NULL;0 ;NULL;25204;NULL;
+254076;FX;ATD (AGENCEMENT DECORAT.);B;97 KOUROU CED;NULL;NULL;05 94 32 54 10;atd.sarl(a)wanadoo.fr;25204;NULL;
+254077;FX;LAMY DANIEL;NULL;35 MONTREUIL;NULL;NULL;02 99 74 64 48;NULL;25205;NULL;
+254078;FX;MEROLLI;B;73 AIX LES BA;NULL;NULL;04 79 35 12 44;NULL;25209;NULL;
+254079;FX;MEROLLI;B;73 AIX LES BA;NULL;NULL;04 79 35 12 44;selleriemerolli(a)wanadoo.fr;25209;NULL;
+254080;FX;LOUVET MARC;A;11 TREZIERS;NULL;NULL;04 68 69 57 12;NULL;25216;NULL;
+254081;FX;MATEOS;A;45 ST JEAN DE;NULL;NULL;02 38 43 75 08;NULL;25226;NULL;
+254082;FX;TOULOUSAINE DE MIROITERIE;A;31 PLAISANCE;NULL;NULL;05 62 74 12 56;NULL;25234;NULL;
+254083;FX;ZIEGLER ETS;A;22 GRACES;NULL;NULL;02 96 40 15 61;NULL;25238;NULL;
+254084;FX;CAZENAVE;A;64 BAYONNE;NULL;NULL;05 59 50 37 39;NULL;25239;NULL;
+254085;FX;KHEOPS GUERIN;A;28 LEVES;NULL;NULL;02 37 36 50 90;NULL;25250;NULL;
+254086;FX;FALHER JEAN YVES;B;22 ROSTRENEN;NULL;NULL;0 ;NULL;25255;NULL;
+254087;FX;FALHER JEAN YVES;B;22 ROSTRENEN;NULL;NULL;02 96 24 28 63;NULL;25255;NULL;
+254088;FX;LES ARTISANS DU STORE;A;94 IVRY SUR S;NULL;NULL;01 46 71 21 22;jeanmichel.soussen(a)libertysurf.fr;25270;NULL;
+254089;FX;LES ARTISANS DU STORE;A;94 IVRY SUR S;NULL;NULL;01 46 71 21 22;NULL;25270;NULL;
+254090;FX;OJC DIFFUSION;A+;02 SAINT QUEN;NULL;NULL;03 23 67 11 09;ojc.accueil(a)orange.fr;25271;NULL;
+254091;FX;OJC DIFFUSION;A+;02 SAINT QUEN;NULL;NULL;03 23 67 11 09;NULL;25271;NULL;
+254092;FX;POINT P NOYON;D;60 NOYON;NULL;NULL;03 29 80 21 75;michele.falala(a)saint-gobain.com;25274;NULL;
+254093;FX;POINT P NOYON;D;60 NOYON;NULL;NULL;03 44 09 44 49;NULL;25274;NULL;
+254094;FX;MELIN MATERIAUX DUN;NULL;18 DUN;NULL;NULL;02 48 59 84 14;NULL;25282;NULL;
+254095;FX;APE;A;09 LAROQUE D';NULL;NULL;05 61 01 18 81;NULL;25287;NULL;
+254096;FX;ANBM ACCUEIL NEGOCE BOIS MAT;D;56 HENNEBONT;NULL;NULL;02 97 36 22 32;NULL;25290;NULL;
+254097;FX;ANBM ACCUEIL NEGOCE BOIS MAT;D;56 HENNEBONT;NULL;NULL;02 97 85 04 76;NULL;25290;NULL;
+254098;FX;VAURY ANDRE;A;45 VILLEMANDE;NULL;NULL;02 38 85 01 22;NULL;25294;NULL;
+254099;FX;GESSON JEAN CLAUDE;A;24 NONTRON;NULL;NULL;0 ;jc.gesson6(a)orange.fr;25303;NULL;
+254100;FX;GESSON JEAN CLAUDE;A;24 NONTRON;NULL;NULL;0 ;NULL;25303;NULL;
+254101;FX;CDM AVALLON;B;89 AVALLON;NULL;NULL;03 86 34 04 46;NULL;25304;NULL;
+254102;FX;DBF ENTREPRISES;A;78 Vernouille;NULL;NULL;01á77101659;dbf.entreprises(a)laposte.net;25307;NULL;
+254103;FX;SILVESTRI NICOLA;A;75 PARIS;NULL;NULL;01 43 21 73 61;NULL;25310;NULL;
+254104;FX;VESSIER ALAIN;A;29 FOUESNANT;NULL;NULL;02 98 56 24 93;NULL;25319;NULL;
+254105;FX;NUPIED CHRISTOPHE SARL;A;35 ARBRISSEL;NULL;NULL;02 99 96 46 24;NULL;25322;NULL;
+254106;FX;PETTIER;A;35 FOUGERES;NULL;NULL;02 99 94 08 73;infos(a)pettier.fr;25333;NULL;
+254107;FX;PETTIER;A;35 FOUGERES;NULL;NULL;02 99 94 08 73;NULL;25333;NULL;
+254108;FX;DORNE PIERRE;A+;26 VALENCE;NULL;NULL;04 75 42 73 18;NULL;25335;NULL;
+254109;FX;DORNE PIERRE;A+;26 VALENCE;NULL;NULL;04 75 43 44 21;sarl.dorne(a)dorne-menuiserie.com;25335;NULL;
+254110;FX;ALUPLAN;A+;31 CUGNAUX;NULL;NULL;05 62 87 32 60;NULL;25337;NULL;
+254111;FX;LORMEAU MICKAEL;A;44 COUERON;NULL;NULL;02 40 63 09 62;NULL;25338;NULL;
+254112;FX;CYB STORE;NULL;92 GENNEVILLI;NULL;NULL;01 40 85 42 23;claire.duvigneau(a)cybstores.com;25343;NULL;
+254113;FX;CYB STORE;NULL;92 GENNEVILLI;NULL;NULL;01 40 85 42 23;NULL;25343;NULL;
+254114;FX;CYB STORE;NULL;92 GENNEVILLI;NULL;NULL;01 40 85 42 23;vomscheid(a)cybstores.com;25343;NULL;
+254115;FX;CODICOM LM DECOR;A;56 AURAY;NULL;NULL;02 97 24 20 20;NULL;25345;NULL;
+254116;FX;SERRURERIE DES BUCLOS;A+;38 MEYLAN;NULL;NULL;04 76 90 16 18;muglia.buclos(a)wanadoo.fr;25346;NULL;
+254117;FX;SERRURERIE DES BUCLOS;A+;38 MEYLAN;NULL;NULL;04 76 90 16 18;NULL;25346;NULL;
+254118;FX;ALPHA BAIE ARIEGE 4908;A;09 PAMIERS;NULL;NULL;05 61 60 51 02;NULL;25348;NULL;
+254119;FX;ATELIERS EJARQUE SARL;B;73 CHALLES LE;NULL;NULL;04 79 72 79 62;forge(a)ejarque.pro;25351;NULL;
+254120;FX;ATELIERS EJARQUE SARL;B;73 CHALLES LE;NULL;NULL;04 79 72 79 62;serrurerie(a)ejarque.pro;25351;NULL;
+254121;FX;ATELIERS EJARQUE SARL;B;73 CHALLES LE;NULL;NULL;04 79 72 79 62;automatismes(a)ejarque.pro;25351;NULL;
+254122;FX;PROMOSTORE CONFORT;A;06 NICE;NULL;NULL;04 92 07 07 46;NULL;25353;NULL;
+254123;FX;SOLISO EUROPE;NULL;44 NANTES CED;NULL;NULL;02 40 93 06 72;NULL;25360;NULL;
+254124;FX;ESPINOS ROY 4243;NULL;13 MARSEILLE;NULL;NULL;04 91 66 95 45;NULL;25361;NULL;
+254125;FX;PACARY YVES - PRO VOLETS;A;34 Villeveyra;NULL;NULL;04 67 78 19 25;NULL;25362;NULL;
+254126;FX;GOUPIL JEAN SEBASTIEN;B;73 MERY;NULL;NULL;04 79 61 24 95;volets-goupil(a)hotmail.fr;25370;NULL;
+254127;FX;FERMETURES FERTOISES;NULL;72 CHERRE;NULL;NULL;0 ;NULL;25371;NULL;
+254128;FX;SOPRAL 06;B;06 ANTIBES;NULL;NULL;04 97 21 12 80;NULL;25375;NULL;
+254129;FX;ROLL STORES;A;94 IVRY SUR S;NULL;NULL;01 46 70 07 99;NULL;25387;NULL;
+254130;FX;EGL;A;13 LAMBESC;NULL;NULL;04 42 92 88 57;NULL;25388;NULL;
+254131;FX;ROUVRES & PLEINTEL;D;14 DIVES SUR;NULL;NULL;02 31 91 42 18;NULL;25396;NULL;
+254132;FX;AMB;A;91 VILLEMOISS;NULL;NULL;01 60 16 05 31;NULL;25413;NULL;
+254133;FX;BURLET ETS;D;43 SÚauve-sur;NULL;NULL;0 ;NULL;25418;NULL;
+254134;FX;BURLET ETS;D;43 SÚauve-sur;NULL;NULL;04 77 74 59 72;NULL;25418;NULL;
+254135;FX;PLURISOL;A;76 GRAND QUEV;NULL;NULL;02 35 68 03 38;r.lamy(a)plurisol.com;25421;NULL;
+254136;FX;PLURISOL;A;76 GRAND QUEV;NULL;NULL;02 35 97 16 27;NULL;25421;NULL;
+254137;FX;PLURISOL;A;76 GRAND QUEV;NULL;NULL;02 35 68 03 38;NULL;25421;NULL;
+254138;FX;DESILLES ALAIN;D;35 NOUVOITOU;NULL;NULL;02 99 37 56 39;eurl.desilles(a)orange.fr;25432;NULL;
+254139;FX;ALUVER;NULL;22 PORDIC;NULL;NULL;02 96 79 30 63;NULL;25433;NULL;
+254140;FX;MIROITERIE SEMIS RJ;A;31 TOULOUSE;NULL;NULL;05 62 47 58 01;NULL;25434;NULL;
+254141;FX;OGUEY;B;38 LE VERSOUD;NULL;NULL;04 76 77 36 44;NULL;25440;NULL;
+254142;FX;LVS INDUSTRIE;NULL;91 VIGNEUX SU;NULL;NULL;01 69 52 36 36;NULL;25447;NULL;
+254143;FX;FENETRES BOURLET;A;78 LE PECQ;NULL;NULL;01 39 14 20 25;NULL;25453;NULL;
+254144;FX;LES INTERIEURS DE ROBIEN;A+;35 RENNES;NULL;NULL;02 99 27 06 07;NULL;25462;NULL;
+254145;FX;RACINE C. ESPACE STORES FERMET;A;93 DRANCY;NULL;NULL;01 48 31 19 38;valentino117(a)voila.fr;25466;NULL;
+254146;FX;CAYEUX SOCIETE EXPLOITATION;A;76 LE PETIT Q;NULL;NULL;02 35 72 60 46;NULL;25470;NULL;
+254147;FX;ALUTEC;A;82 MONTAUBAN;NULL;NULL;05 63 20 17 92;NULL;25476;NULL;
+254148;FX;FOGLIA ABP;A;94 VINCENNES;NULL;NULL;01 43 98 15 04;NULL;25484;NULL;
+254149;FX;CHAUSSON TRIALIS DAVEZIEUX;NULL;07 DAVEZIEUX;NULL;NULL;04 75 67 79 45;NULL;25485;NULL;
+254150;FX;BAVOYSI TOLERIE INDUSTRIELLE;A;39 CHAMPAGNOL;NULL;NULL;03 84 52 12 96;NULL;25491;NULL;
+254151;FX;PLANTIER PATRICK;A+;69 AMPLEPUIS;NULL;NULL;04 74 89 28 46;NULL;25492;NULL;
+254152;FX;JPG GRANDJEAN JEAN PIERRE;B;38 VILLEFONTA;NULL;NULL;04 74 96 01 24;j-p-g-sarl509(a)orange.fr;25504;NULL;
+254153;FX;BIG MAT CHAMIGNON;B;03 LURCY LEVI;NULL;NULL;04 70 67 35 55;NULL;25510;NULL;
+254154;FX;MAUREL AGM;A;83 TOULON;NULL;NULL;0 ;gilbert.maurel(a)live.fr;25529;NULL;
+254155;FX;DERLET;A;57 AUDUN LE T;NULL;NULL;03 82 52 21 50;NULL;25532;NULL;
+254156;FX;MONDIAL STORES;A;38 RUY;NULL;NULL;04 74 93 07 19;NULL;25533;NULL;
+254157;FX;ARTHUS;NULL;92 LEVALLOIS;NULL;NULL;01 47 58 08 76;NULL;25551;NULL;
+254158;FX;DAUPHINE STORES;D;38 ST EGREVE;NULL;NULL;04 76 75 49 17;NULL;25568;NULL;
+254159;FX;RATINEAU;A;87 EYMOUTIERS;NULL;NULL;05 55 69 29 30;NULL;25571;NULL;
+254160;FX;FLAMANT SYLVAIN;D;24 MUSSIDAN;NULL;NULL;05 53 80 16 43;NULL;25572;NULL;
+254161;FX;BATIFINI 303107;A;34 ST AUNES;NULL;NULL;04 67 59 24 78;NULL;25578;NULL;
+254162;FX;CL DIVERS PNE F. CHEVAL;NULL;91 P;NULL;NULL;0 ;NULL;25581;NULL;
+254163;FX;CL DIVERS PNE F. CHEVAL;NULL;91 P;NULL;NULL;0.......;NULL;25581;NULL;
+254164;FX;JEANTO;A;69 LYON;NULL;NULL;04 78 69 86 81;NULL;25585;NULL;
+254165;FX;MELIN CHATILLON SUR INDRE;NULL;36 CHATILLON;NULL;NULL;02 54 38 90 76;NULL;25588;NULL;
+254166;FX;GOULET GERARD;A+;41 NEUNG SUR;NULL;NULL;02 54 83 75 41;NULL;25592;NULL;
+254167;FX;MATERIAUX SERVICE;NULL;77 VARENNES S;NULL;NULL;01 60 73 50 33;NULL;25608;NULL;
+254168;FX;MAYTOP ISO 45;NULL;45 FLEURY LES;NULL;NULL;02 38 83 97 48;NULL;25609;NULL;
+254169;FX;CL DIVERS PNE V. VALOGGIA;A;94 P;NULL;NULL;0 ;NULL;25634;NULL;
+254170;FX;SAEB;A+;03 ABREST;NULL;NULL;04 70 98 50 07;NULL;25637;NULL;
+254171;FX;SAEB;A+;03 ABREST;NULL;NULL;04á70á985007;NULL;25637;NULL;
+254172;FX;COLLIN;A;95 SANNOIS;NULL;NULL;01 34 11 16 85;NULL;25641;NULL;
+254173;FX;EYMARD DANIEL;A;24 CHAMPS ROM;NULL;NULL;05 53 56 84 56;NULL;25642;NULL;
+254174;FX;LA MAISON DU STORE;A;01 MIRIBEL;NULL;NULL;04 72 77 91 75;NULL;25651;NULL;
+254175;FX;STOPSOLAR 4569;NULL;31 TOULOUSE C;NULL;NULL;05 61 76 15 14;NULL;25661;NULL;
+254176;FX;STYL DECOR;A+;26 PIERRELATT;NULL;NULL;09 72 33 29 91;info(a)styl-decor.fr;25666;NULL;
+254177;FX;ALLIER STORES FERMETURES;A+;03 CHARMEIL;NULL;NULL;04 70 32 85 43;NULL;25670;NULL;
+254178;FX;ALLIER STORES FERMETURES;A+;03 CHARMEIL;NULL;NULL;0 ;NULL;25670;NULL;
+254179;FX;ALLIER STORES FERMETURES;A+;03 CHARMEIL;NULL;NULL;0 ;thierry.marolles(a)orange.fr;25670;NULL;
+254180;FX;APB MENUISERIE 5068;A+;55 VASSINCOUR;NULL;NULL;03 29 78 51 11;NULL;25674;NULL;
+254181;FX;SERRE MENUISERIE MIROIT;B;13 VELAUX;NULL;NULL;04 42 87 42 92;NULL;25684;NULL;
+254182;FX;VERALIA;A+;30 MARGUERITE;NULL;NULL;04 66 75 26 40;NULL;25685;NULL;
+254183;FX;LERT MENUISERIE;A+;26 ST RESTITU;NULL;NULL;04 75 04 57 04;NULL;25699;NULL;
+254184;FX;S3M ROBERT;A+;92 MALAKOFF;NULL;NULL;01 42 53 95 08;NULL;25701;NULL;
+254185;FX;MVA;D;35 LE RHEU;NULL;NULL;02 99 14 95 29;NULL;25703;NULL;
+254186;FX;CIVEL ERIC;NULL;44 PREFAILLES;NULL;NULL;02 40 64 51 11;NULL;25706;NULL;
+254187;FX;MEGNIEN BMO CHATELLERAULT;NULL;86 CHATELLERA;NULL;NULL;05 49 21 09 21;NULL;25708;NULL;
+254188;FX;EURO VERRE 4610;NULL;63 MOZAC;NULL;NULL;04 73 74 48 71;NULL;25730;NULL;
+254189;FX;LALLIARD BOIS ET DERIVES;A;74 SAINT PIER;NULL;NULL;04 50 03 87 77;NULL;25737;NULL;
+254190;FX;LAMY DANIEL;A;85 MONTAIGU;NULL;NULL;02 51 94 19 62;NULL;25762;NULL;
+254191;FX;AMS;A+;03 AVERMES;NULL;NULL;04 70 46 75 65;NULL;25763;NULL;
+254192;FX;AMS;A+;03 AVERMES;NULL;NULL;0 ;NULL;25763;NULL;
+254193;FX;AMS;A+;03 AVERMES;NULL;NULL;04 70 46 75 65;cb(a)ams-morette.com;25763;NULL;
+254194;FX;AMS;A+;03 AVERMES;NULL;NULL;0 ;hfrancois(a)ams-morette.com;25763;NULL;
+254195;FX;AMS;A+;03 AVERMES;NULL;NULL;04 70 46 75 65;jm(a)ams-morette.com;25763;NULL;
+254196;FX;AMS;A+;03 AVERMES;NULL;NULL;0 ;NULL;25763;NULL;
+254197;FX;APPIANO J.;A;72 RUAUDIN;NULL;NULL;02 43 75 79 43;appiano(a)wanadoo.fr;25767;NULL;
+254198;FX;ECPM;A+;26 LA ROCHE D;NULL;NULL;04 75 84 76 43;NULL;25768;NULL;
+254199;FX;ADM 4420;NULL;79 ST PARDOUX;NULL;NULL;05 49 63 45 57;NULL;25772;NULL;
+254200;FX;PAVEC CONSTRUCTIONS;A+;29 QUIMPERLE;NULL;NULL;02 98 96 19 83;NULL;25788;NULL;
+254201;FX;DUPRE DANIEL;A;57 METZING;NULL;NULL;0 ;NULL;25789;NULL;
+254202;FX;MORENO MARIANO;A;69 DECINES;NULL;NULL;04 72 02 05 79;NULL;25794;NULL;
+254203;FX;BERGE GILBERT;A;45 FLEURY LES;NULL;NULL;02 38 86 31 98;NULL;25808;NULL;
+254204;FX;COMPTOIR FORESTIER;A;45 MONTARGIS;NULL;NULL;02 38 99 02 25;NULL;25813;NULL;
+254205;FX;COMPTOIR FORESTIER;A;45 MONTARGIS;NULL;NULL;02 38 99 02 25;jpluter(a)comptoirforestier.com;25813;NULL;
+254206;FX;LARMOIRE ERIC;D;14 CROISSANVI;NULL;NULL;02 31 23 82 47;NULL;25814;NULL;
+254207;FX;LAMBERT - TOUT FAIRE;A;72 MAYET;NULL;NULL;02 43 46 05 57;NULL;25824;NULL;
+254208;FX;CHAUVET;B;63 LEZOUX;NULL;NULL;04 73 73 12 48;NULL;25827;NULL;
+254209;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;22 ST BRIEUC;NULL;NULL;02 96 68 22 67;NULL;25830;NULL;
+254210;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;22 ST BRIEUC;NULL;NULL;02 96 33 59 41;NULL;25830;NULL;
+254211;FX;MTM;D;37 MONTS;NULL;NULL;02 47 26 71 84;mtm.vilhem-fouquet(a)wanadoo.fr;25848;NULL;
+254212;FX;OXXO;A;71 CLUNY;NULL;NULL;04 72 52 37 30;NULL;25849;NULL;
+254213;FX;BATI ALU;A+;63 ST BONNET;NULL;NULL;04 73 63 31 39;NULL;25854;NULL;
+254214;FX;BATI ALU;A+;63 ST BONNET;NULL;NULL;04 73 63 31 39;bati.alu(a)wanadoo.fr;25854;NULL;
+254215;FX;M3C COURTOIS 4484;NULL;02 SAINT QUEN;NULL;NULL;03 23 51 06 22;NULL;25856;NULL;
+254216;FX;MONTBOYER METAL;A+;16 MONTBOYER;NULL;NULL;05 45 98 40 32;NULL;25859;NULL;
+254217;FX;PHILIPP FRERES;A+;68 COLMAR;NULL;NULL;03 89 27 46 65;NULL;25877;NULL;
+254218;FX;BOTON REGIS;A;79 MONCOUTANT;NULL;NULL;0 ;NULL;25892;NULL;
+254219;FX;CODI;A;35 RENNES;NULL;NULL;02 99 84 08 12;NULL;25894;NULL;
+254220;FX;LECOMTE HIVET;A;76 ROUEN;NULL;NULL;02 35 72 95 75;NULL;25900;NULL;
+254221;FX;BASCOULERGUE PIERRE;A;18 BOURGES;NULL;NULL;02 48 65 93 15;NULL;25909;NULL;
+254222;FX;ALUMINIUM PYRENEES;A;31 ST ALBAN;NULL;NULL;05 61 09 54 92;NULL;25913;NULL;
+254223;FX;RESEAU PRO CANTRELLE ABBEVILLE;NULL;80 ABBEVILLE;NULL;NULL;03 22 20 79 78;NULL;25915;NULL;
+254224;FX;BRIARD JC SOCIETE;D;95 Ermont;NULL;NULL;01 60 60 87 50;NULL;25920;NULL;
+254225;FX;BRIARD JC SOCIETE;D;95 Ermont;NULL;NULL;01 39 95 74 47;NULL;25920;NULL;
+254226;FX;CBC;NULL;83 TOULON CED;NULL;NULL;04 94 08 83 84;NULL;25928;NULL;
+254227;FX;AIME FORMOSA;A;13 MARSEILLE;NULL;NULL;04 91 95 94 73;NULL;25931;NULL;
+254228;FX;NORMANDIE BAIE 4217;NULL;14 IFS;NULL;NULL;02 31 52 20 52;NULL;25938;NULL;
+254229;FX;STRUCTURES ESPACE LUMIERE;A+;13 MIMET;NULL;NULL;04 42 51 47 73;NULL;25954;NULL;
+254230;FX;POINT P COMAT MONTENDRE;A;17 MONTENDRE;NULL;NULL;05 46 49 23 58;NULL;25957;NULL;
+254231;FX;BONGIOVANNI CHARLES;A;13 MARSEILLE;NULL;NULL;04 91 50 56 71;NULL;25963;NULL;
+254232;FX;AP2R (AGENCEMENT PEINTURE;A+;91 SAVIGNY SU;NULL;NULL;01 69 05 55 41;NULL;25976;NULL;
+254233;FX;SAVARY STORES ET BACHES SARL;B;CH 1026 ECHAN;NULL;NULL;412 17 02 27 95;savarystores(a)urbanet.ch;25986;NULL;
+254234;FX;SFP STE FRANCAISE DE PLAFOND;A;94 MANDRES LE;NULL;NULL;01 58 08 60 15;NULL;26025;NULL;
+254235;FX;VIBRAMENAL;NULL;72 VIBRAYE;NULL;NULL;02 43 93 62 14;NULL;26034;NULL;
+254236;FX;GEDIMAT LDP CHENEL MATERI;A;76 LE HAVRE;NULL;NULL;02 35 24 17 80;NULL;26037;NULL;
+254237;FX;LE DORE BOIS ET MATERIAUX;D;56 AURAY CEDE;NULL;NULL;02 97 24 22 58;NULL;26038;NULL;
+254238;FX;MENUISERIE COURCELLES PITOIS;A;45 MARDIE;NULL;NULL;02 38 91 14 73;NULL;26049;NULL;
+254239;FX;MENUBOIS;A+;42 MABLY;NULL;NULL;04 77 70 89 34;NULL;26050;NULL;
+254240;FX;MENUBOIS;A+;42 MABLY;NULL;NULL;0 ;NULL;26050;NULL;
+254241;FX;SUREAU JEAN;A;37 STE MAURE;NULL;NULL;02 47 65 51 31;NULL;26053;NULL;
+254242;FX;EQUIP NORD 4570;NULL;59 DOUAI;NULL;NULL;03 20 88 28 63;NULL;26056;NULL;
+254243;FX;FERMOBAT SUD 4382;NULL;83 LA CADIERE;NULL;NULL;04 94 98 24 55;NULL;26063;NULL;
+254244;FX;BARTHE CHRISTIAN;A;47 NERAC;NULL;NULL;05 53 65 60 10;NULL;26069;NULL;
+254245;FX;DAUPHIN 302849;NULL;93 BONDY;NULL;NULL;01 48 50 73 01;NULL;26071;NULL;
+254246;FX;ABPSI;D;94 VARENNE SA;NULL;NULL;01 48 83 39 54;NULL;26076;NULL;
+254247;FX;MOYNET ALU;A+;79 CHAURAY;NULL;NULL;05 49 76 10 32;NULL;26087;NULL;
+254248;FX;DANE DISTRIBUTION INDUSTRIELLE;A;65 ALLIER;NULL;NULL;05 62 45 98 99;NULL;26094;NULL;
+254249;FX;ATULAM AGENCE LIMOGES;A;23 JARNAGES;NULL;NULL;05 55 33 62 90;NULL;26095;NULL;
+254250;FX;ATULAM AGENCE LIMOGES;A;23 JARNAGES;NULL;NULL;05 55 80 90 59;NULL;26095;NULL;
+254251;FX;STORES ET LOISIRS;A;69 VILLEFRANC;NULL;NULL;04 74 62 28 75;NULL;26099;NULL;
+254252;FX;PROMETAL;B;63 AMBERT;NULL;NULL;04 73 82 49 10;NULL;26100;NULL;
+254253;FX;AGAESSE MICHEL;B;35 LE RHEU;NULL;NULL;02 99 14 74 60;NULL;26101;NULL;
+254254;FX;TMV;A;38 ST EGREVE;NULL;NULL;04 76 75 82 41;NULL;26102;NULL;
+254255;FX;MIROIT. DES CHARENTES RJ;NULL;17 SAINTES;NULL;NULL;05 46 97 21 06;NULL;26103;NULL;
+254256;FX;VBF M.BISTORIN FRANCIS;A;37 ST CYR SUR;NULL;NULL;0 ;francis.bistorin(a)sfr.fr;26109;NULL;
+254257;FX;SCIERIE BOUTOLLEAU;A;85 BEAUVOIR S;NULL;NULL;02 51 49 39 79;NULL;26113;NULL;
+254258;FX;DA COSTA JOSE;A;91 BOUTIGNY S;NULL;NULL;01 64 57 84 39;NULL;26118;NULL;
+254259;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;02 43 29 16 02;j-michel(a)alubarbier.com;26123;NULL;
+254260;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;02 43 29 16 02;metreur(a)alubarbier.com;26123;NULL;
+254261;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;02 43 29 16 02;alu.barbier(a)wanadoo.fr;26123;NULL;
+254262;FX;BARBIER;D;72 BONNETABLE;NULL;NULL;0 ;NULL;26123;NULL;
+254263;FX;LYON FENETRES;D;69 ST PRIEST;NULL;NULL;04 78 90 67 84;lyon.fenetres(a)wanadoo.fr;26129;NULL;
+254264;FX;LYON FENETRES;D;69 ST PRIEST;NULL;NULL;04 78 90 67 84;NULL;26129;NULL;
+254265;FX;MERCIER DAVID;A;88 SAINTE MAR;NULL;NULL;03 29 55 12 11;NULL;26130;NULL;
+254266;FX;ROUSSELOT LIONEL;A;77 CHEVRY COS;NULL;NULL;01 64 05 12 36;NULL;26132;NULL;
+254267;FX;POUILLARD ET FILS 999999;NULL;91 MONTGERON;NULL;NULL;01 64 08 53 14;NULL;26136;NULL;
+254268;FX;POUILLARD ET FILS 999999;NULL;91 MONTGERON;NULL;NULL;01 69 03 66 33;NULL;26136;NULL;
+254269;FX;DEL BIANCO PAOLO;A;16 COGNAC;NULL;NULL;05 45 32 38 36;NULL;26137;NULL;
+254270;FX;MIROITERIE AVIGLASS;A;84 LE PONTET;NULL;NULL;04 90 32 32 61;NULL;26145;NULL;
+254271;FX;GROLLA VERRES;A+;73 MODANE;NULL;NULL;04 79 05 13 07;NULL;26147;NULL;
+254272;FX;LABASTERE SAS;A;64 BAYONNE;NULL;NULL;05 59 50 60 11;NULL;26148;NULL;
+254273;FX;LABASTERE SAS;A;64 BAYONNE;NULL;NULL;05 59 50 60 24;NULL;26148;NULL;
+254274;FX;LABASTERE SAS;A;64 BAYONNE;NULL;NULL;05 59 55 00 45;NULL;26148;NULL;
+254275;FX;BIG MAT PAULIN;A;43 LANGEAC;NULL;NULL;04 71 02 06 76;NULL;26156;NULL;
+254276;FX;CDM BUCHERES;D;10 BUCHERES;NULL;NULL;03 25 71 20 61;NULL;26170;NULL;
+254277;FX;ARAS UVIR;NULL;69 LES CHERES;NULL;NULL;04 78 47 06 04;NULL;26171;NULL;
+254278;FX;MENTOR SOCIETE NOUVELLE;A+;83 TOULON;NULL;NULL;04 94 61 70 93;NULL;26177;NULL;
+254279;FX;CHARRIER;B;91 QUINCY S/S;NULL;NULL;01 69 39 06 57;NULL;26180;NULL;
+254280;FX;GEDIMAT SEFOR HOUILLES;A;78 HOUILLES;NULL;NULL;01 39 57 10 11;NULL;26183;NULL;
+254281;FX;AFC - AUTOMAT.FERMET.CONCEPT;D;14 BRETTEVILL;NULL;NULL;02 31 26 22 45;NULL;26184;NULL;
+254282;FX;POIROT;A;26 CLAVEYSON;NULL;NULL;04 75 68 89 25;NULL;26191;NULL;
+254283;FX;ALU BOIS CONCEPT 4899;A+;83 ROQUEBRUNE;NULL;NULL;04 94 44 05 63;NULL;26192;NULL;
+254284;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;appro(a)ecodis.fr;26200;NULL;
+254285;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;03 88 48 16 92;l.schott(a)ecodis.fr;26200;NULL;
+254286;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;j.dasilva(a)ecodis.fr;26200;NULL;
+254287;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;e.tatangelo(a)ecodis.fr;26200;NULL;
+254288;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 15;s.baillet(a)ecodis.fr;26200;NULL;
+254289;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;04 78 96 69 16;n.vacle(a)ecodis.fr;26200;NULL;
+254290;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;0 ;appro(a)ecodis.fr;26200;NULL;
+254291;FX;ECODIS;D;69 CHAPONNAY;NULL;NULL;0 ;fx.moreau(a)ecodis.fr;26200;NULL;
+254292;FX;MV FERMETURES 4849;NULL;93 EPINAY SUR;NULL;NULL;01 48 41 36 70;NULL;26208;NULL;
+254293;FX;PINSON JEAN MICHEL;A;45 CHUELLES;NULL;NULL;02 38 96 61 47;NULL;26212;NULL;
+254294;FX;OMNES BERNARD;A;45 CHAINGY;NULL;NULL;02 38 88 80 48;NULL;26216;NULL;
+254295;FX;CHALUMEAU MENUISERIE 302838;A;61 SAINT GERM;NULL;NULL;02 33 32 26 82;NULL;26218;NULL;
+254296;FX;CROS STORES ET FERMETURES;A;31 TOULOUSE;NULL;NULL;05 61 48 30 00;NULL;26225;NULL;
+254297;FX;GENIES;D;89 MONETEAU;NULL;NULL;03 86 42 74 73;NULL;26227;NULL;
+254298;FX;BRIAND;A;35 BEDEE;NULL;NULL;02 99 07 11 63;NULL;26243;NULL;
+254299;FX;GSB;A;35 ST GILLES;NULL;NULL;02 99 64 83 73;NULL;26251;NULL;
+254300;FX;COLOMAT;A;86 LOUDUN;NULL;NULL;05 49 98 56 29;NULL;26265;NULL;
+254301;FX;FRABOULET SARL;A+;22 TREVE;NULL;NULL;02 96 28 63 58;NULL;26280;NULL;
+254302;FX;SLC ALUFER;A;44 PORNIC;NULL;NULL;02 40 82 68 84;NULL;26285;NULL;
+254303;FX;LEBRETON MICHEL;A;49 LE LOUROUX;NULL;NULL;02 41 77 48 31;NULL;26288;NULL;
+254304;FX;BOUAISSIER PATRICE;A;35 SAINT AUBI;NULL;NULL;02 99 55 50 01;NULL;26291;NULL;
+254305;FX;ALUMINIUM CONFORT SYSTEMS;A;92 ANTONY;NULL;NULL;01 40 96 86 86;NULL;26293;NULL;
+254306;FX;GEDIMAT DATAS;A;32 SEISSAN;NULL;NULL;05 62 86 25 40;NULL;26295;NULL;
+254307;FX;RIBEAUD;A+;38 CHARAVINES;NULL;NULL;04 76 55 60 80;ribeaud.menuiserie(a)wanadoo.fr;26298;NULL;
+254308;FX;RIBEAUD;A+;38 CHARAVINES;NULL;NULL;04 76 55 60 80;NULL;26298;NULL;
+254309;FX;STORES SUD SERVICES 3S 4262;NULL;20 MEZZAVIA;NULL;NULL;04 95 10 62 60;NULL;26299;NULL;
+254310;FX;CHANTELAUZE PHILIPPE;D;63 LA FORIE;NULL;NULL;04 73 82 18 29;NULL;26303;NULL;
+254311;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;mauvertex.brigitte(a)wanadoo.fr;26304;NULL;
+254312;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;NULL;26304;NULL;
+254313;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;0 ;mauvertex.christophe(a)orange.fr;26304;NULL;
+254314;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;mauvertex.nicole(a)wanadoo.fr;26304;NULL;
+254315;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;0 ;mauvertex.paule(a)wanadoo.fr;26304;NULL;
+254316;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;0 ;mauvertex.frederic(a)wanadoo.fr;26304;NULL;
+254317;FX;MAUVERTEX NBM;D;12 RODEZ;NULL;NULL;05 65 67 42 06;mauvertex.thomas(a)wanadoo.fr;26304;NULL;
+254318;FX;PAGOT SAVOIE MATERIAUX;A;39 Salins-les;NULL;NULL;03 25 32 02 08;NULL;26309;NULL;
+254319;FX;PAGOT SAVOIE MATERIAUX;A;39 Salins-les;NULL;NULL;03 84 33 47 51;morbier(a)pagot-savoie.fr;26309;NULL;
+254320;FX;PAGOT SAVOIE MATERIAUX;A;39 Salins-les;NULL;NULL;03 84 71 87 02;NULL;26309;NULL;
+254321;FX;VMA (VITRERIE MIROITERIE;A+;74 CRANVES SA;NULL;NULL;04 50 36 76 32;NULL;26318;NULL;
+254322;FX;CALIFORNIA STORES 302864;NULL;CH 1024 ECUBL;NULL;NULL;412 16 91 54 15;NULL;26321;NULL;
+254323;FX;CALIFORNIA STORES 302864;NULL;CH 1024 ECUBL;NULL;NULL;02 16 91 54 15;NULL;26321;NULL;
+254324;FX;PERRET;D;69 CHASSIEU;NULL;NULL;04 72 13 35 25;NULL;26326;NULL;
+254325;FX;PERRET;D;69 CHASSIEU;NULL;NULL;04 72 13 35 25;eric(a)passionbois.com;26326;NULL;
+254326;FX;GILBERT DIDIER;A;45 SAINT JEAN;NULL;NULL;02 38 75 08 45;NULL;26335;NULL;
+254327;FX;METALAG 5051;A+;72 LOUE;NULL;NULL;02 43 88 62 00;NULL;26337;NULL;
+254328;FX;INVERSIONES MARTINICA SA;NULL;CO I;NULL;NULL;0 ;NULL;26339;NULL;
+254329;FX;EMG STORES;A+;68 HESINGUE;NULL;NULL;03 89 69 57 00;ferraro-marcello(a)hotmail.fr;26343;NULL;
+254330;FX;EMG STORES;A+;68 HESINGUE;NULL;NULL;03 89 69 57 00;NULL;26343;NULL;
+254331;FX;EMG STORES;A+;68 HESINGUE;NULL;NULL;03 89 69 57 00;stores.emg2(a)wanadoo.fr;26343;NULL;
+254332;FX;LALANDE LIONEL - DIS.PRO.BAT;A+;70 RIOZ;NULL;NULL;03 84 91 73 43;NULL;26344;NULL;
+254333;FX;ARCARENOV;A+;93 NOISY LE S;NULL;NULL;01 48 10 97 62;NULL;26349;NULL;
+254334;FX;KREMBEL RAYMOND;A;68 DANNEMARIE;NULL;NULL;03 89 25 17 29;NULL;26354;NULL;
+254335;FX;EGELIS;A;93 BAGNOLET;NULL;NULL;01 43 02 05 80;NULL;26357;NULL;
+254336;FX;SAINT AMAND MATERIAUX GEDIMAT;NULL;18 SAINT AMAN;NULL;NULL;02 48 96 14 07;NULL;26359;NULL;
+254337;FX;POL AGRET;A;63 CLERMONT F;NULL;NULL;04 73 90 92 79;NULL;26363;NULL;
+254338;FX;ALPHA ALUMINIUM;A;13 MARSEILLE;NULL;NULL;04 91 70 94 14;NULL;26367;NULL;
+254339;FX;ARZEL;A;02 CHATEAU TH;NULL;NULL;03 23 83 01 00;NULL;26377;NULL;
+254340;FX;ARZEL;A;02 CHATEAU TH;NULL;NULL;03 23 83 01 00;arzel(a)arzel.fr;26377;NULL;
+254341;FX;THEVENET JEAN;B;38 ST CLAIR D;NULL;NULL;04 74 97 15 15;NULL;26380;NULL;
+254342;FX;FERMETURES MORATIN;A+;93 ROMAINVILL;NULL;NULL;01 48 45 70 81;NULL;26385;NULL;
+254343;FX;CHARDON PATRICK;A;18 BOURGES;NULL;NULL;02 48 25 95 54;NULL;26388;NULL;
+254344;FX;POULIN PATRICE;A;45 SARAN;NULL;NULL;02 38 65 93 94;NULL;26391;NULL;
+254345;FX;COGECEM SAS;A;45 ST JEAN DE;NULL;NULL;02 38 88 77 06;NULL;26394;NULL;
+254346;FX;POINT P BMSO PERIGUEUX;A+;24 PERIGUEUX;NULL;NULL;05 53 54 69 18;NULL;26401;NULL;
+254347;FX;INTER STORE;A+;68 HABSHEIM;NULL;NULL;03 89 31 86 49;NULL;26404;NULL;
+254348;FX;BACHIMONT;A;28 TOURY;NULL;NULL;02 37 90 55 90;NULL;26409;NULL;
+254349;FX;HARMONIE DECOR STE NELLE;B;73 CHALLES LE;NULL;NULL;04 79 72 76 36;NULL;26414;NULL;
+254350;FX;BORELLA VOGUE DECORATION;B;CH 1207 GENEV;NULL;NULL;412 27 00 16 75;borellavoguedeco(a)bluewin.ch;26415;NULL;
+254351;FX;PHILIPPI CAB;A+;67 OBERNAI;NULL;NULL;03 88 95 06 65;NULL;26417;NULL;
+254352;FX;DELAHAYES JEAN PAUL;A+;35 BECHEREL;NULL;NULL;02 99 66 77 98;NULL;26423;NULL;
+254353;FX;PERRAUD ANCIENS ETS.;A;44 BOUGUENAIS;NULL;NULL;02 51 70 64 65;ae.perraud(a)wanadoo.fr;26426;NULL;
+254354;FX;FRANCHET (STE NOUVELLE) 5049;A+;37 CHAMBRAY L;NULL;NULL;0 ;NULL;26429;NULL;
+254355;FX;RENOV BAIE (BAIE RENOVEES 4581;NULL;92 LEVALLOIS;NULL;NULL;01 47 57 80 65;NULL;26431;NULL;
+254356;FX;AMA ATELIER;A;41 ROMORANTIN;NULL;NULL;02 54 76 50 07;NULL;26432;NULL;
+254357;FX;HEURTEBIZE ETS LA ROCHE STORE;A+;16 LA ROCHEFO;NULL;NULL;05 45 62 15 19;NULL;26433;NULL;
+254358;FX;PREVOT SAS;A;24 BERGERAC;NULL;NULL;05 53 57 65 02;NULL;26448;NULL;
+254359;FX;GUILLEMOT MENUISERIE;B;89 CHEMILLY S;NULL;NULL;03 86 40 11 20;NULL;26454;NULL;
+254360;FX;GEDIMAT TERRAL;A;81 LACAUNE;NULL;NULL;05 63 37 11 10;NULL;26455;NULL;
+254361;FX;CUBIZOLLES;A;15 MASSIAC;NULL;NULL;04 71 23 04 25;NULL;26458;NULL;
+254362;FX;NICOLAU FRERES;A;66 BANUYLS SU;NULL;NULL;04 68 88 19 92;NULL;26462;NULL;
+254363;FX;DURIEUX 4332;NULL;92 CHATENAY M;NULL;NULL;01 46 32 97 71;NULL;26464;NULL;
+254364;FX;RASPAUD XAVIER - REV STORES;A+;38 VEYSSILIEU;NULL;NULL;0 ;xavier.raspaud(a)wanadoo.fr;26466;NULL;
+254365;FX;CAMPS 4760;A;64 COARRAZE;NULL;NULL;05 59 61 24 88;NULL;26475;NULL;
+254366;FX;BRENNER-LOEGEL CLAUDE;A;14 MAIZIERES;NULL;NULL;02 31 90 08 01;NULL;26479;NULL;
+254367;FX;CROSET HERVE;B;74 ANNECY LE;NULL;NULL;04 50 23 63 98;NULL;26488;NULL;
+254368;FX;BOUSQUET;A;34 LA GRANDE;NULL;NULL;04 67 56 37 80;NULL;26491;NULL;
+254369;FX;RENOV'HABITAT;NULL;50 LA HAYE DU;NULL;NULL;02 33 45 60 05;NULL;26498;NULL;
+254370;FX;LYON SOLS - M. COUSSEIROUX;A;69 LYON;NULL;NULL;04 78 29 06 24;NULL;26512;NULL;
+254371;FX;APE ENSEIGNES;A;42 BONSON;NULL;NULL;04 77 41 06 01;NULL;26522;NULL;
+254372;FX;NORD MENUISERIE DIFFUSION;NULL;59 FEIGNIES;NULL;NULL;03 27 62 54 35;NULL;26528;NULL;
+254373;FX;ATELIER DE METALLERIE;A;92 VANVES CED;NULL;NULL;01 46 44 16 50;NULL;26543;NULL;
+254374;FX;MONTEIL BRUNO;D;86 ST GERVAIS;NULL;NULL;05 49 23 18 65;NULL;26546;NULL;
+254375;FX;AGEMA;A;41 BLOIS;NULL;NULL;02 54 74 85 26;NULL;26549;NULL;
+254376;FX;INDIGO;A+;94 ST MAUR DE;NULL;NULL;01 45 11 89 48;NULL;26551;NULL;
+254377;FX;MASSON AGENCEMENT;A;42 SAINT CHAM;NULL;NULL;04 77 31 47 13;NULL;26555;NULL;
+254378;FX;WOLSELEY RESEAU PRO THOUARS;NULL;79 THOUARS;NULL;NULL;0 ;NULL;26565;NULL;
+254379;FX;BLANCHET BRUNO;A;87 LE DORAT;NULL;NULL;05 55 60 74 91;NULL;26573;NULL;
+254380;FX;CPAB - CENTRE PROTECTION;A;42 ST ETIENNE;NULL;NULL;04 77 47 11 84;cpabjpm(a)cegetel.net;26578;NULL;
+254381;FX;DEBOUT RICHARD;NULL;45 SARAN;NULL;NULL;02 38 73 61 92;NULL;26581;NULL;
+254382;FX;TFB 2000 - TOUTES;A;38 ECHIROLLES;NULL;NULL;04 76 25 89 42;NULL;26582;NULL;
+254383;FX;VOILUX RJ;NULL;94 SAINT MAND;NULL;NULL;01 43 74 09 64;NULL;26585;NULL;
+254384;FX;S2S STORE SIGNALETIQUE SERVICE;D;94 ST MAUR DE;NULL;NULL;01 48 89 32 95;NULL;26595;NULL;
+254385;FX;ROQ'ALU;B;34 ROUJAN;NULL;NULL;04 67 38 19 37;NULL;26598;NULL;
+254386;FX;ABCS;A;94 ALFORTVILL;NULL;NULL;01 48 99 61 00;NULL;26621;NULL;
+254387;FX;ATP 77 - APPLICATION;A;77 VILLEMAREC;NULL;NULL;01 60 96 59 95;NULL;26622;NULL;
+254388;FX;LPI;A;69 SAINT PRIE;NULL;NULL;04 78 21 76 42;NULL;26628;NULL;
+254389;FX;LPI;A;69 SAINT PRIE;NULL;NULL;04 50 51 34 08;NULL;26628;NULL;
+254390;FX;JAN DIDIER;A;56 VANNES;NULL;NULL;02 97 40 93 07;NULL;26632;NULL;
+254391;FX;ELECT FERMETURES;A;94 LE PLESSIS;NULL;NULL;01 64 61 05 72;NULL;26636;NULL;
+254392;FX;ELECT FERMETURES;A;94 LE PLESSIS;NULL;NULL;01 45 76 19 40;NULL;26636;NULL;
+254393;FX;BERTAUD SYLVAIN ENTREPRISE SAR;A;86 ITEUIL;NULL;NULL;05 49 52 85 47;NULL;26642;NULL;
+254394;FX;ERTON - EURL SOFATIS;B;22 PERROS GUI;NULL;NULL;02 96 91 23 90;NULL;26643;NULL;
+254395;FX;MATERIAUX CLAMECYCOIS;A;58 CLAMECY;NULL;NULL;03 86 27 02 44;NULL;26646;NULL;
+254396;FX;VITRERIE SAVOYARDE;A+;74 SEYNOD;NULL;NULL;04 50 52 17 77;NULL;26648;NULL;
+254397;FX;ACB AGENCE COMMERCIALE BATIMEN;B;07 ANNONAY;NULL;NULL;04 75 67 90 82;NULL;26651;NULL;
+254398;FX;CORS AMENAGEMENT;B;20 BIGUGLIA;NULL;NULL;04 95 31 30 30;marie(a)buro2b.net;26657;NULL;
+254399;FX;CORS AMENAGEMENT;B;20 BIGUGLIA;NULL;NULL;04 95 31 30 30;buro2b(a)buro2b.net;26657;NULL;
+254400;FX;THERMADOME;A;03 CREUZIER L;NULL;NULL;04 70 97 05 12;NULL;26658;NULL;
+254401;FX;THERMADOME;A;03 CREUZIER L;NULL;NULL;04 70 59 63 75;NULL;26658;NULL;
+254402;FX;BLEVIN YVON;A;22 PLENEUF VA;NULL;NULL;0 ;blevin.yvon(a)orange.fr;26659;NULL;
+254403;FX;ESPACE ALUMINIUM;B;97 KOUROU;NULL;NULL;05 94 32 62 86;NULL;26662;NULL;
+254404;FX;ESPACE ALUMINIUM;B;97 KOUROU;NULL;NULL;05 94 32 62 86;espace-alu(a)wanadoo.fr;26662;NULL;
+254405;FX;VERALUTEC;A;47 FRANCESCAS;NULL;NULL;05 62 68 47 87;NULL;26666;NULL;
+254406;FX;CL DIVERS DG;NULL;45 CHECY;NULL;NULL;0 ;NULL;26670;NULL;
+254407;FX;LANFRANCHI - DECOSTORE;A;78 VELIZY;NULL;NULL;01 30 70 80 71;NULL;26673;NULL;
+254408;FX;SINFAL;NULL;74 EVIAN;NULL;NULL;0 ;NULL;26675;NULL;
+254409;FX;GEDIMAT HOCHET VALOGNES;A;50 EQUEURDREV;NULL;NULL;02 33 21 66 60;NULL;26681;NULL;
+254410;FX;POINT P BMSO;A;17 ROCHEFORT;NULL;NULL;05 46 87 10 39;NULL;26685;NULL;
+254411;FX;SAMMOB BATIMENT INDUSTRIE;NULL;93 NOISY LE G;NULL;NULL;01 43 05 67 96;NULL;26702;NULL;
+254412;FX;L ESPACE DU VERRE;A;06 NICE;NULL;NULL;04 93 55 97 50;NULL;26706;NULL;
+254413;FX;ABER CONFORT 4452;NULL;10 STE SAVINE;NULL;NULL;03 25 78 37 37;NULL;26728;NULL;
+254414;FX;LAPOUJADE BERNARD;A;47 ESTILLAC;NULL;NULL;05 53 87 60 15;NULL;26729;NULL;
+254415;FX;MEUBLES 3A;D;74 SALLANCHES;NULL;NULL;04 50 93 75 74;NULL;26744;NULL;
+254416;FX;MENUISERIE LENOBLE;A+;73 ALBERTVILL;NULL;NULL;04 79 37 70 12;NULL;26763;NULL;
+254417;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;35 VEZIN LE C;NULL;NULL;02 99 14 54 74;NULL;26767;NULL;
+254418;FX;MIROITERIE DE L'OUEST ARMORIQU;A+;35 VEZIN LE C;NULL;NULL;02 99 14 60 91;NULL;26767;NULL;
+254419;FX;EPS (ENTREPRISE PARISIEN-;A;95 EAUBONNE;NULL;NULL;01 39 59 86 10;NULL;26772;NULL;
+254420;FX;CHEF CHRISTOPHE;A;02 LAON;NULL;NULL;03 23 79 67 46;NULL;26779;NULL;
+254421;FX;CHAZELLE;A;42 ST ETIENNE;NULL;NULL;04 77 32 53 10;NULL;26786;NULL;
+254422;FX;UNAFERM;A;68 ASPACH;NULL;NULL;03 89 40 99 44;NULL;26790;NULL;
+254423;FX;REUTTER FERMETURES;A;68 WITTENHEIM;NULL;NULL;03 89 53 72 98;NULL;26791;NULL;
+254424;FX;CHERRIER ALAIN 4171;NULL;37 JOUE LES T;NULL;NULL;02 47 67 58 59;NULL;26794;NULL;
+254425;FX;TROUILLARD POINT P PDL OLONNE SUR MER;A;85 OLONNE SUR;NULL;NULL;02 51 32 86 05;NULL;26798;NULL;
+254426;FX;FIGIEL XAVIER;NULL;59 LE CATEAU;NULL;NULL;03 27 77 98 03;NULL;26802;NULL;
+254427;FX;MENUISERIE JAY;B;73 COGNIN;NULL;NULL;04 79 69 01 42;NULL;26807;NULL;
+254428;FX;FAUCHER ANDRE;D;63 BESSE ET S;NULL;NULL;04 73 79 57 33;NULL;26815;NULL;
+254429;FX;ATELIER DU STORE 4677;NULL;94 SAINT MAUR;NULL;NULL;01 48 89 16 92;NULL;26816;NULL;
+254430;FX;FERDALU;A;13 MARSEILLE;NULL;NULL;04 91 58 65 53;NULL;26820;NULL;
+254431;FX;FERDALU;A;13 MARSEILLE;NULL;NULL;04 91 58 65 53;ferdalu(a)wanadoo.fr;26820;NULL;
+254432;FX;ANJOU CONFORT 4919;A+;49 ST MARTIN;NULL;NULL;02 41 39 58 01;NULL;26822;NULL;
+254433;FX;SODAI;A;69 BRON CEDEX;NULL;NULL;04 78 26 85 60;NULL;26825;NULL;
+254434;FX;MIROITERIE AVALLONNAISE;A;89 MAGNY;NULL;NULL;03 86 33 19 91;NULL;26826;NULL;
+254435;FX;MIROITERIE AVALLONNAISE;A;89 MAGNY;NULL;NULL;03 86 33 06 09;NULL;26826;NULL;
+254436;FX;REYNAUD CAUVIN YVOSE;A+;71 LOUHANS;NULL;NULL;03 85 75 47 39;NULL;26829;NULL;
+254437;FX;COMPTOIR DES MATERIAUX;NULL;27 BRIONNE;NULL;NULL;02 32 44 09 73;NULL;26832;NULL;
+254438;FX;MIROITERIE BERTRAND;A+;65 LOURDES;NULL;NULL;05 62 94 57 90;NULL;26839;NULL;
+254439;FX;MIROITERIE BERTRAND;A+;65 LOURDES;NULL;NULL;05 62 94 57 90;miroiterie(a)miroiterie-bertrand.com;26839;NULL;
+254440;FX;POLYCLOSE HABIMAT;A+;62 Annequin;NULL;NULL;03 21 64 94 45;NULL;26841;NULL;
+254441;FX;MUNCH;A+;68 GUEWENHEIM;NULL;NULL;03 89 82 88 89;NULL;26849;NULL;
+254442;FX;ROSFELDER;D;67 VALFF;NULL;NULL;03 88 08 40 04;NULL;26853;NULL;
+254443;FX;EPL - ELECTRICITE PLAFOND;A;93 LE BOURGET;NULL;NULL;01 48 36 34 34;NULL;26854;NULL;
+254444;FX;FERMETURES MICHEL SIMON;A;77 CHELLES;NULL;NULL;01 64 72 98 93;NULL;26855;NULL;
+254445;FX;LENUD JEAN MARIE;B;27 FLEURY SUR;NULL;NULL;02 32 49 59 28;NULL;26863;NULL;
+254446;FX;AMF ATELIER METALLIQUE;A;93 AUBERVILLI;NULL;NULL;01 48 34 43 64;NULL;26869;NULL;
+254447;FX;CLESTRA HAUSERMANN;A;92 MALAKOFF;NULL;NULL;03 88 28 12 28;NULL;26872;NULL;
+254448;FX;HALLES DECO;B;CM ALA;NULL;NULL;23 73 43 22 98;hallesdeco(a)yahoo.fr;26882;NULL;
+254449;FX;HALLES DECO;B;CM ALA;NULL;NULL;0 ;NULL;26882;NULL;
+254450;FX;LEPINAY PIERRE;A;35 POLIGNE;NULL;NULL;02 99 43 94 61;NULL;26884;NULL;
+254451;FX;MVN - MIROITERIE VITRERIE;B;28 NOGENT LE;NULL;NULL;02 37 52 11 09;NULL;26907;NULL;
+254452;FX;BARBIER PASCAL EURL;B;58 RAVEAU;NULL;NULL;03 86 70 27 52;NULL;26908;NULL;
+254453;FX;MIROITERIE JAMOS;A;42 ST JEAN BO;NULL;NULL;04 77 33 86 78;NULL;26913;NULL;
+254454;FX;LE NAIR PIERRE;D;35 MEILLAC;NULL;NULL;02 99 73 31 64;pierre.le.nair(a)wanadoo.fr;26919;NULL;
+254455;FX;POINT P BRETAGNE PAIMPOL;A;22 PAIMPOL;NULL;NULL;02 96 22 09 13;NULL;26921;NULL;
+254456;FX;ISOLSTORES;A;18 BOURGES;NULL;NULL;02 48 67 93 83;NULL;26937;NULL;
+254457;FX;CL DIVERS SUD OUEST P.HAUCHECO;NULL;45 ORLEANS;NULL;NULL;02 99 14 86 39;NULL;26946;NULL;
+254458;FX;WEISZ;A+;92 FONTENAY A;NULL;NULL;01 47 02 04 55;NULL;26949;NULL;
+254459;FX;WEISZ;A+;92 FONTENAY A;NULL;NULL;01 47 02 04 55;e.gyalay(a)weisz.fr;26949;NULL;
+254460;FX;STORALIL;B;59 LA MADELEI;NULL;NULL;03 20 06 35 38;NULL;26954;NULL;
+254461;FX;SERRURERIE ALLAIN;A;44 NANTES;NULL;NULL;02 51 13 66 14;NULL;26958;NULL;
+254462;FX;MODULES ENSEIGNES;D;35 BREAL SOUS;NULL;NULL;02 99 60 03 48;NULL;26964;NULL;
+254463;FX;ASTEL MENUISERIE;A;10 MARIGNY LE;NULL;NULL;03 25 21 80 81;NULL;26966;NULL;
+254464;FX;DETOURBET 5103;A;52 VOISINES;NULL;NULL;03 25 87 10 33;sasdetourbet(a)wanadoo.fr;26970;NULL;
+254465;FX;DETOURBET 5103;A;52 VOISINES;NULL;NULL;03 25 87 10 33;NULL;26970;NULL;
+254466;FX;SCAN;A;31 BLAGNAC;NULL;NULL;05 61 15 61 02;NULL;26979;NULL;
+254467;FX;ARTIS ARTIS;D;75 PARIS;NULL;NULL;01 43 56 21 81;NULL;26983;NULL;
+254468;FX;ACTI VITRERIE SERRURERIE;A;78 POISSY;NULL;NULL;01 30 74 73 02;NULL;26987;NULL;
+254469;FX;CHAUSSON TRIALIS BOLLENE;NULL;84 VALREAS CE;NULL;NULL;04 90 30 46 24;NULL;26989;NULL;
+254470;FX;DECORATION LITT;NULL;67 GRIESHEIM;NULL;NULL;03 88 08 42 53;NULL;26991;NULL;
+254471;FX;COMASUD ST RAPHAEL;A+;83 BRIGNOLES;NULL;NULL;04 94 82 25 42;NULL;27004;NULL;
+254472;FX;COMASUD GIGNAC;A+;83 BRIGNOLES;NULL;NULL;04 42 31 47 62;NULL;27018;NULL;
+254473;FX;HORIZON OUEST;NULL;29 BREST;NULL;NULL;02 98 43 80 73;NULL;27020;NULL;
+254474;FX;LE MIROIR DU PAVIN;A+;63 BESSE ET S;NULL;NULL;04 73 79 65 48;NULL;27023;NULL;
+254475;FX;AREHAL;A;95 SANNOIS;NULL;NULL;01 39 80 69 43;NULL;27026;NULL;
+254476;FX;LEBLANC ENTREPRISE 5055;A+;53 ERNEE;NULL;NULL;02 43 05 96 32;NULL;27028;NULL;
+254477;FX;LEBLANC ENTREPRISE 5055;A+;53 ERNEE;NULL;NULL;02 43 05 72 52;NULL;27028;NULL;
+254478;FX;VACHER FILS;A+;41 ROMORANTIN;NULL;NULL;02 54 76 51 01;NULL;27029;NULL;
+254479;FX;MERLE;D;24 TERRASSON;NULL;NULL;05 53 51 15 21;NULL;27030;NULL;
+254480;FX;ETABLISSEMENTS CANAC BOURCIER;A+;48 Mende;NULL;NULL;04 66 47 35 04;NULL;27035;NULL;
+254481;FX;ETABLISSEMENTS CANAC BOURCIER;A+;48 Mende;NULL;NULL;04 66 47 35 04;sarlcanac-bourcier(a)orange.fr;27035;NULL;
+254482;FX;LOUISIANE;NULL;22 LOUDEAC;NULL;NULL;02 96 66 13 50;NULL;27041;NULL;
+254483;FX;BASSET BOUVY BATIMENT;A;69 BRINDAS;NULL;NULL;04 78 45 60 36;NULL;27046;NULL;
+254484;FX;ATELIER PIERRICK RAGOT;NULL;44 NANTES;NULL;NULL;02 40 46 63 02;NULL;27048;NULL;
+254485;FX;MEUNIER ERIC;A;95 CERGY;NULL;NULL;01 34 25 01 14;NULL;27052;NULL;
+254486;FX;ALU PROJECT;A+;82 NEGREPELIS;NULL;NULL;05 63 30 85 60;NULL;27053;NULL;
+254487;FX;FERMETURE 2000 4694;A;38 RENAGE;NULL;NULL;04 76 91 01 57;NULL;27055;NULL;
+254488;FX;STORES ET FERMETURES;NULL;44 TRIGNAC;NULL;NULL;02 51 10 56 64;NULL;27056;NULL;
+254489;FX;PERSIANAS EL AVILA, C.A.;A;10 070 CARAC;NULL;NULL;5821 22 51 14 62;NULL;27061;NULL;
+254490;FX;VITRERIE MIROITERIE DES ALPES;A+;73 LE VIVIER;NULL;NULL;04 79 61 67 07;NULL;27083;NULL;
+254491;FX;SORECSO 4387;NULL;36 ST BENOIT;NULL;NULL;02 54 47 67 13;NULL;27103;NULL;
+254492;FX;VERANDALUX;A;26 LAVEYRON;NULL;NULL;0 ;NULL;27104;NULL;
+254493;FX;MENUISERIE VOLLMER;NULL;67 MELSHEIM;NULL;NULL;03 88 89 09 99;NULL;27111;NULL;
+254494;FX;MIROITERIE DU GAVE (EXPL);A;64 BAIGTS DE;NULL;NULL;05 59 65 32 94;NULL;27112;NULL;
+254495;FX;PENTAGONE MENUISERIES;A;04 SAINT TULL;NULL;NULL;04 92 72 51 60;NULL;27119;NULL;
+254496;FX;PERRIN MAZIER 999999;D;39 DOLE;NULL;NULL;03 84 82 13 97;ent.perrin-mazier(a)wanadoo.fr;27121;NULL;
+254497;FX;STORE OUEST;A;78 MAGNANVILL;NULL;NULL;01 34 78 56 26;NULL;27122;NULL;
+254498;FX;DIDIER;A+;51 REIMS;NULL;NULL;03 26 88 52 12;NULL;27128;NULL;
+254499;FX;REALMETAL;A+;68 WITTELSHEI;NULL;NULL;03 89 55 22 11;NULL;27130;NULL;
+254500;FX;LC BATIMENT;A;29 TAULE;NULL;NULL;02 98 79 03 82;NULL;27132;NULL;
+254501;FX;ANCEL;A;67 CHATENOIS;NULL;NULL;03 90 57 39 48;NULL;27135;NULL;
+254502;FX;PORTAL ALUMINIUM SYSTEMS;A+;13 La Ciotat;NULL;NULL;04 42 04 31 88;NULL;27138;NULL;
+254503;FX;GRANDO STORES BACHES;A;42 LA TALAUDI;NULL;NULL;04 77 47 51 66;NULL;27145;NULL;
+254504;FX;GUICHET E;A+;25 BESANCON;NULL;NULL;03 81 82 39 20;NULL;27152;NULL;
+254505;FX;FERNANDES JOAO;A;78 VERNOUILLE;NULL;NULL;01 39 71 71 14;NULL;27157;NULL;
+254506;FX;VMA FENETRIER;A+;74 Ville-la-G;NULL;NULL;04 50 71 91 45;NULL;27158;NULL;
+254507;FX;BORDEAUX STORES;NULL;33 CASTETS EN;NULL;NULL;05 56 62 73 73;NULL;27161;NULL;
+254508;FX;CHAPPUIS SARL;NULL;74 GROISY;NULL;NULL;04 50 68 04 75;NULL;27170;NULL;
+254509;FX;GERBER FRANCK;A;67 WASSELONNE;NULL;NULL;03 88 87 46 41;NULL;27172;NULL;
+254510;FX;LEVEQUE GILLES;A;61 BAGNOLES D;NULL;NULL;02 33 30 82 79;NULL;27175;NULL;
+254511;FX;BMCE POINT P CHATEAUROUX;A;36 CHATEAUROU;NULL;NULL;02 54 61 11 23;NULL;27177;NULL;
+254512;FX;BMCE POINT P BLOIS;B;41 BLOIS;NULL;NULL;0 ;NULL;27178;NULL;
+254513;FX;BMCE POINT P BLOIS;B;41 BLOIS;NULL;NULL;02 54 52 70 01;NULL;27178;NULL;
+254514;FX;BMCE POINT P ORLEANS;A;45 ORLEANS CE;NULL;NULL;02 43 35 43 76;NULL;27179;NULL;
+254515;FX;BMCE POINT P ROMORANTIN;A;41 ROMORANTIN;NULL;NULL;02 54 94 15 31;NULL;27180;NULL;
+254516;FX;ANJOU SERRURERIE;A;49 BRAIN SUR;NULL;NULL;02 41 54 99 09;NULL;27184;NULL;
+254517;FX;SCEMB 56;NULL;56 CAUDAN;NULL;NULL;02 97 76 92 87;NULL;27186;NULL;
+254518;FX;MEUBLES DE PARENTIS;NULL;40 PARENTIS E;NULL;NULL;05 58 78 53 22;NULL;27192;NULL;
+254519;FX;APSM;A+;41 BLOIS;NULL;NULL;02 54 78 83 07;NULL;27193;NULL;
+254520;FX;JOPPE SARL;D;LU 051 ESCH S;NULL;NULL;352 53 08 50 50;joppe(a)pt.lu;27195;NULL;
+254521;FX;COTTIER PASCAL PAM COTTIER;A;37 CHOUZE SUR;NULL;NULL;02 47 95 18 60;NULL;27198;NULL;
+254522;FX;JD SERVICES;A;56 AURAY;NULL;NULL;02 97 24 80 78;NULL;27206;NULL;
+254523;FX;EMIDIO FERREIRA;A;89 CHEVILLON;NULL;NULL;03 86 73 15 04;NULL;27208;NULL;
+254524;FX;MAGE YVAN;A;70 GRAY;NULL;NULL;03 84 65 47 40;NULL;27221;NULL;
+254525;FX;JB MENUISERIES;A+;70 ARC LES GR;NULL;NULL;03 84 65 32 77;NULL;27222;NULL;
+254526;FX;PASTANELLA FRANCOIS CLAUDIO;A+;05 GAP;NULL;NULL;04 92 53 70 55;NULL;27224;NULL;
+254527;FX;MAYOUFI;A;60 STE GENEVI;NULL;NULL;02 51 58 46 03;NULL;27236;NULL;
+254528;FX;BIG MAT BEREZIAT;A;71 MACON;NULL;NULL;03 85 30 32 56;NULL;27237;NULL;
+254529;FX;DRUFIN;A;45 ORLEANS;NULL;NULL;02 38 66 95 37;NULL;27239;NULL;
+254530;FX;FADIER;A;35 ARGENTRE D;NULL;NULL;02 23 55 01 91;NULL;27242;NULL;
+254531;FX;BARON;A+;53 CHANGE;NULL;NULL;02 43 49 25 02;NULL;27244;NULL;
+254532;FX;BARRERE GILLES;A;65 PINAS;NULL;NULL;05 62 40 28 52;NULL;27245;NULL;
+254533;FX;LALLIER AGENCEMENT;NULL;26 HAUTERIVES;NULL;NULL;04 75 68 55 50;NULL;27248;NULL;
+254534;FX;SCIANDRA BORIS;NULL;83 FREJUS;NULL;NULL;04 94 52 17 48;NULL;27249;NULL;
+254535;FX;ALU CONFORT;A+;20 BASTIA;NULL;NULL;04 95 30 65 62;contact(a)aluconfort.fr;27250;NULL;
+254536;FX;FRAUD DOMINIQUE - OUEST SELLERIE;A;35 LOHEAC;NULL;NULL;0 ;loheacsellerie(a)orange.fr;27264;NULL;
+254537;FX;BATIVER;D;65 IBOS;NULL;NULL;05 62 34 73 73;NULL;27266;NULL;
+254538;FX;SFP STORES FILMS PROTECTION;D;94 SAINT MAUR;NULL;NULL;01 48 83 67 82;NULL;27274;NULL;
+254539;FX;ESPACE SOLEIL;A+;58 COSNE SUR;NULL;NULL;03 86 26 95 66;espacesoleil58(a)orange.fr;27275;NULL;
+254540;FX;SMAC ACIEROID;A;31 TOULOUSE C;NULL;NULL;05 34 40 06 11;NULL;27279;NULL;
+254541;FX;BISES;D;78 Neauphlett;NULL;NULL;01 34 97 61 96;jht2(a)wanadoo.fr;27281;NULL;
+254542;FX;SFDR-SERRUR. FERRONNERIE;A;03 YZEURE;NULL;NULL;04 70 46 75 73;NULL;27286;NULL;
+254543;FX;KEREBEL PIERRE;NULL;29 GOUESNOU;NULL;NULL;02 98 37 97 23;NULL;27287;NULL;
+254544;FX;RIBOUT MICHEL;D;41 CELLETTES;NULL;NULL;02 54 70 42 26;NULL;27291;NULL;
+254545;FX;ZAKARIADES LAURENT;A+;20 AJACCIO;NULL;NULL;04 95 21 92 30;idealstores2(a)wanadoo.fr;27292;NULL;
+254546;FX;CONCEPTION MAINTENANCE 4538;NULL;93;NULL;NULL;01 41 58 56 57;NULL;27296;NULL;
+254547;FX;CONCEPTION MAINTENANCE 4538;NULL;93;NULL;NULL;01 48 56 56 57;c2m.montreuil(a)orange.fr;27296;NULL;
+254548;FX;EUROPLAST;A;52 CHALINDREY;NULL;NULL;03 25 88 99 01;NULL;27298;NULL;
+254549;FX;ROUSSEAU GUY;A;45 NEUVILLE A;NULL;NULL;02 38 91 82 16;NULL;27309;NULL;
+254550;FX;SAUVESTRE JEAN-LOUIS;A+;18 ST DOULCHA;NULL;NULL;02 48 65 11 34;jeanlouis.sauvestre(a)dbmail.com;27315;NULL;
+254551;FX;HOLGADO TORRES FRANCISCO VSF;A;63 AULNAT;NULL;NULL;04 73 60 30 99;NULL;27319;NULL;
+254552;FX;MIRAMOND ENTREPRISES;A;13 MARSEILLE;NULL;NULL;04 91 92 03 49;NULL;27322;NULL;
+254553;FX;DECOR SERVICE;A;92 MALAKOFF;NULL;NULL;01 42 53 88 09;NULL;27327;NULL;
+254554;FX;SHANTAKO;A;69 VILLEURBAN;NULL;NULL;0 ;NULL;27333;NULL;
+254555;FX;SHANTAKO;A;69 VILLEURBAN;NULL;NULL;04 72 04 54 26;NULL;27333;NULL;
+254556;FX;ECF ETUDE CONSTRUCTION;A;91 BRETIGNY S;NULL;NULL;01 60 85 30 76;NULL;27342;NULL;
+254557;FX;ECF ETUDE CONSTRUCTION;A;91 BRETIGNY S;NULL;NULL;01 60 85 30 76;e.c.f(a)wanadoo.fr;27342;NULL;
+254558;FX;CANCIANI JEAN VINCENT;A;69 VILLEURBAN;NULL;NULL;04 78 80 95 22;NULL;27347;NULL;
+254559;FX;AULNAY-GLACE;A;93 AULNAY SOU;NULL;NULL;01 48 79 92 07;NULL;27348;NULL;
+254560;FX;EC COM;A;94 ST MAUR DE;NULL;NULL;01 47 41 33 76;NULL;27350;NULL;
+254561;FX;CLAREO;A;10 MARIGNY LE;NULL;NULL;03 25 21 80 81;NULL;27351;NULL;
+254562;FX;FERMETURES & STORES DU;A;28 MEZIERES E;NULL;NULL;02 37 43 82 30;NULL;27352;NULL;
+254563;FX;LAURALU;A;94 ORMESSON S;NULL;NULL;0 ;lauralu(a)alicepro.fr;27353;NULL;
+254564;FX;TROUVE MICHEL;A;49 LIRE;NULL;NULL;02 40 09 91 73;NULL;27365;NULL;
+254565;FX;MECARAY;NULL;91 BONDOUFLE;NULL;NULL;01 60 86 40 76;NULL;27373;NULL;
+254566;FX;HUGUET CREICHE RJ;NULL;45 SAINT JEAN;NULL;NULL;02 38 22 38 20;NULL;27374;NULL;
+254567;FX;ACH 45 4897;NULL;45 CHECY;NULL;NULL;02 38 61 54 55;a.c.h.45(a)wanadoo.fr;27375;NULL;
+254568;FX;MEUNIER ET FILS;A;95 BERNE SUR;NULL;NULL;01 30 34 23 81;NULL;27376;NULL;
+254569;FX;LEROY MICHEL;B;83 BRIGNOLLES;NULL;NULL;04 94 72 01 15;NULL;27380;NULL;
+254570;FX;JCD MATERIAUX -;A;47 NERAC;NULL;NULL;05 53 97 09 44;NULL;27387;NULL;
+254571;FX;MONTIBELLER NICOLAS 4483;NULL;45 ORLEANS;NULL;NULL;02 38 66 39 98;NULL;27388;NULL;
+254572;FX;CICIARELLI ET FILS;A;30 CAISSARGUE;NULL;NULL;04 66 29 55 36;NULL;27391;NULL;
+254573;FX;RESEAU PRO BORDEAUX;NULL;33 BORDEAUX;NULL;NULL;05 56 43 17 96;NULL;27409;NULL;
+254574;FX;DU LEFF;A+;22 CHATELAUDR;NULL;NULL;02 96 74 11 23;NULL;27410;NULL;
+254575;FX;BOLLINGER 4723;NULL;68 VOGELSHEIM;NULL;NULL;03 89 72 97 21;NULL;27418;NULL;
+254576;FX;LA CLEF DU TEMPS;A;67 KILSTETT;NULL;NULL;03 88 96 67 63;NULL;27420;NULL;
+254577;FX;ATLANTIC SOUDURE 4510;NULL;17 LA ROCHELL;NULL;NULL;05 46 28 19 24;NULL;27425;NULL;
+254578;FX;GARNIER CLAUDE;D;35 POCE LES B;NULL;NULL;02 99 74 41 49;NULL;27426;NULL;
+254579;FX;SHMM STE HONFLEUR MENUIS METAL;A+;14 HONFLEUR C;NULL;NULL;02 31 89 09 50;NULL;27433;NULL;
+254580;FX;PERILLAT BERNARD;B;74 CHAPEIRY;NULL;NULL;04 50 68 26 20;NULL;27434;NULL;
+254581;FX;WURTH AIME;NULL;67 BOOTZHEIM;NULL;NULL;03 88 74 99 00;NULL;27439;NULL;
+254582;FX;MIROITERIE LAMOTHE;A;24 RIBERAC;NULL;NULL;05 53 90 00 17;NULL;27442;NULL;
+254583;FX;MPS MENUISERIE POSES;A;27 DAUBEUF PR;NULL;NULL;02 32 40 71 82;NULL;27445;NULL;
+254584;FX;AFL ART FENETRES LUMIERE;A+;45 AMILLY;NULL;NULL;02 38 89 42 47;NULL;27471;NULL;
+254585;FX;AFL ART FENETRES LUMIERE;A+;45 AMILLY;NULL;NULL;02 38 89 42 49;NULL;27471;NULL;
+254586;FX;DORAS ELCE MATERIAUX;NULL;52 LANGRES;NULL;NULL;03 25 87 34 19;NULL;27474;NULL;
+254587;FX;EFPE;A+;26 ST DONAT S;NULL;NULL;0 ;laurent.pollien(a)wanadoo.fr;27498;NULL;
+254588;FX;ED STORES SERRURERIE RJ;A;51 SAINT BRIC;NULL;NULL;03 26 07 24 63;NULL;27503;NULL;
+254589;FX;BIG MAT LABRUGUIERE;NULL;81 LABRUGUIER;NULL;NULL;05 63 74 20 41;NULL;27504;NULL;
+254590;FX;GRASSET SPORAFRIC;A+;CG POINTE NO;NULL;NULL;NULL;NULL;27505;NULL;
+254591;FX;GRASSET SPORAFRIC;A+;CG POINTE NO;NULL;NULL;331 73 76 91 11;jmlerondelle(a)sporafric.net;27505;NULL;
+254592;FX;GRASSET SPORAFRIC;A+;CG POINTE NO;NULL;NULL;02 42 94 47 36;contact(a)sporafric.net;27505;NULL;
+254593;FX;ELVIN;A+;18 BOURGES;NULL;NULL;02 48 48 19 18;o.chaumeau(a)elvin.fr;27508;NULL;
+254594;FX;ELVIN;A+;18 BOURGES;NULL;NULL;02 48 48 19 18;NULL;27508;NULL;
+254595;FX;AFL ANCIEN ETS FOESSEL PS;A;45 MONTARGIS;NULL;NULL;02 38 89 00 26;NULL;27511;NULL;
+254596;FX;AFL ANCIEN ETS FOESSEL PS;A;45 MONTARGIS;NULL;NULL;02 38 89 42 47;NULL;27511;NULL;
+254597;FX;FASQUEL 4413;NULL;83 LE THORONE;NULL;NULL;04 94 60 98 28;NULL;27514;NULL;
+254598;FX;RIDEAUX SERVICES FRANCE;A;69 CRAPONNE;NULL;NULL;04 78 57 95 68;NULL;27520;NULL;
+254599;FX;OMBRES ET STRUCTURES;B;26 ST PAUL LE;NULL;NULL;04 75 71 07 05;NULL;27522;NULL;
+254600;FX;SCHUMER & CIE 4499;NULL;51 SEZANNE;NULL;NULL;03 26 42 81 80;NULL;27523;NULL;
+254601;FX;SCHUMER & CIE 4499;NULL;51 SEZANNE;NULL;NULL;03 26 42 81 81;NULL;27523;NULL;
+254602;FX;COMERCIALIZADORA Y;B;CL TIAGO;NULL;NULL;0 ;osvaldo(a)toldosmacul.cl;27524;NULL;
+254603;FX;COMERCIALIZADORA Y;B;CL TIAGO;NULL;NULL;56 22 37 07 30;carla(a)toldomacul.cl;27524;NULL;
+254604;FX;COMERCIALIZADORA Y;B;CL TIAGO;NULL;NULL;56 22 37 07 30;sebastian(a)toldosmacul.cl;27524;NULL;
+254605;FX;DECORINA;B;CM ALA;NULL;NULL;237 33 42 84 72;NULL;27547;NULL;
+254606;FX;DECORINA;B;CM ALA;NULL;NULL;23 73 43 23 38;decorina(a)yahoo.fr;27547;NULL;
+254607;FX;DECORINA;B;CM ALA;NULL;NULL;23 73 42 84 72;decorinaa(a)yahoo.fr;27547;NULL;
+254608;FX;CCTR;A;69 GIVORS;NULL;NULL;0 ;NULL;27555;NULL;
+254609;FX;FORET;D;43 LEMPDES;NULL;NULL;04 71 76 58 05;gforet(a)foret-entreprise.fr;27567;NULL;
+254610;FX;FORET;D;43 LEMPDES;NULL;NULL;0 ;NULL;27567;NULL;
+254611;FX;CHAVIGNY BLOIS;B;41 BLOIS CEDE;NULL;NULL;02 54 20 85 46;NULL;27573;NULL;
+254612;FX;MENUI PRO;A+;42 ST PRIEST;NULL;NULL;04 77 79 67 19;NULL;27578;NULL;
+254613;FX;BAP FENETRES ET FERMETURE;A;75 PARIS;NULL;NULL;01 40 44 99 35;NULL;27581;NULL;
+254614;FX;ACTEA;A;67 WASSELONNE;NULL;NULL;03 88 59 14 07;NULL;27582;NULL;
+254615;FX;ACTEA;A;67 WASSELONNE;NULL;NULL;03 87 51 24 41;NULL;27582;NULL;
+254616;FX;LAFFEACH PHILIPPE;A;56 VANNES;NULL;NULL;0 ;NULL;27593;NULL;
+254617;FX;DEMANGEAU;D;44 LE LOROUX;NULL;NULL;02 40 36 52 74;NULL;27599;NULL;
+254618;FX;STORES FERMETURES;A+;18 BOURGES;NULL;NULL;02 48 50 74 52;NULL;27600;NULL;
+254619;FX;SMSL 4894;A+;50 AGNEAUX;NULL;NULL;02 33 77 35 31;NULL;27601;NULL;
+254620;FX;ACTI POSE 4780;A;42 SAINT ETIE;NULL;NULL;04 77 34 05 63;NULL;27603;NULL;
+254621;FX;SMAC 4334;NULL;78 MANTES LA;NULL;NULL;01 30 92 69 48;NULL;27608;NULL;
+254622;FX;TECHNI FERMETURES;A+;68 MULHOUSE;NULL;NULL;03 89 65 03 93;NULL;27610;NULL;
+254623;FX;AAA ALUMINIUM AUTOMATISME;D;97 REMIRE MON;NULL;NULL;05 94 35 47 63;aaa973(a)orange.fr;27614;NULL;
+254624;FX;AAA ALUMINIUM AUTOMATISME;D;97 REMIRE MON;NULL;NULL;05 94 35 63 75;micadom(a)orange.fr;27614;NULL;
+254625;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;09 74 76 23 75;NULL;27615;NULL;
+254626;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;09 74 76 15 81;NULL;27615;NULL;
+254627;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;01 47 06 60 25;NULL;27615;NULL;
+254628;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;npalatre(a)mpo-fen.fr;27615;NULL;
+254629;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;NULL;27615;NULL;
+254630;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;pferrion(a)mpofenetres.com;27615;NULL;
+254631;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 86;kjarry(a)mpo-fen.fr;27615;NULL;
+254632;FX;MPO FENETRES - DIVISION CHANTIER;A+;61 ALENCON;NULL;NULL;02 33 31 63 94;NULL;27615;NULL;
+254633;FX;CDC CONCEPTION DEVELOPP.;NULL;80 HUCHENNEVI;NULL;NULL;0 ;NULL;27617;NULL;
+254634;FX;CYPRIANAISE DE MENUISERIE;A;66 SAINT CYPR;NULL;NULL;04 68 21 32 60;NULL;27620;NULL;
+254635;FX;RESEAU PRO HONFLEUR;NULL;14 HONFLEUR;NULL;NULL;02 31 89 24 01;NULL;27621;NULL;
+254636;FX;POLISSET;NULL;41 LAMOTTE BE;NULL;NULL;0 ;NULL;27624;NULL;
+254637;FX;BMCE POINT P;A;23 LA SOUTERR;NULL;NULL;05 55 63 94 85;NULL;27626;NULL;
+254638;FX;LES ATELIERS DU BOIS;B;21 VARANGES;NULL;NULL;03 80 31 34 02;NULL;27629;NULL;
+254639;FX;JACKY SERRE;B;07 CHOMERAC;NULL;NULL;04 75 64 17 24;NULL;27638;NULL;
+254640;FX;SCOP CREABOIS;B;35 MONFORT SU;NULL;NULL;02 99 07 42 75;t.baudoin(a)creabois.net;27640;NULL;
+254641;FX;POINT P BRETAGNE ST POL;A;29 SAINT POL;NULL;NULL;02 98 15 85 21;NULL;27647;NULL;
+254642;FX;VILLEGAS;A+;74 MARGENCEL;NULL;NULL;04 50 72 72 55;NULL;27648;NULL;
+254643;FX;LE TOIT;A;61 ALENCON CE;NULL;NULL;02 33 27 15 69;NULL;27651;NULL;
+254644;FX;LE JAMTEL AGENCEMENTS;A;50 SAINT LO C;NULL;NULL;02 33 57 29 16;NULL;27658;NULL;
+254645;FX;LE JAMTEL AGENCEMENTS;A;50 SAINT LO C;NULL;NULL;0 ;NULL;27658;NULL;
+254646;FX;POMART MICHEL;NULL;62 MONCHY CAY;NULL;NULL;03 21 04 68 52;NULL;27660;NULL;
+254647;FX;WARGNIER;D;91 PARAY VIEI;NULL;NULL;01 69 38 40 48;NULL;27663;NULL;
+254648;FX;BOURGUIGNON MENUISERIE;B;38 BEAUVOIR D;NULL;NULL;04 74 58 69 39;NULL;27669;NULL;
+254649;FX;ISO ECO;A;95 CORMEILLES;NULL;NULL;01 34 50 10 87;NULL;27673;NULL;
+254650;FX;GENERATION SOLEIL;NULL;77 TOUQUIN;NULL;NULL;01 43 63 84 61;NULL;27675;NULL;
+254651;FX;POINT P BRETAGNE - SIEGE PERE;NULL;35 RENNES CED;NULL;NULL;02 99 65 20 22;NULL;27677;NULL;
+254652;FX;LEADERS POSE SERVICES;D;77 Emerainvil;NULL;NULL;01 60 17 28 11;NULL;27679;NULL;
+254653;FX;ALU VERRE 61;A;61 MORTREE;NULL;NULL;02 33 12 59 26;NULL;27681;NULL;
+254654;FX;JOURLIN TOUT FAIRE;B;42 FEURS;NULL;NULL;04 77 26 12 90;NULL;27682;NULL;
+254655;FX;VERANDAS ET HABITAT FAINS 5012;A+;50 ST SAMSON;NULL;NULL;02 33 55 95 57;NULL;27702;NULL;
+254656;FX;ZION ALU VITRERIE;A;60 JAUX;NULL;NULL;03 44 90 75 89;NULL;27705;NULL;
+254657;FX;CLOTURE SERVICE;A+;37 CHAMBRAY L;NULL;NULL;02 47 25 82 72;cloture.service(a)wanadoo.fr;27706;NULL;
+254658;FX;BMRA POINT P ROANNE;A;42 ROANNE CED;NULL;NULL;04 77 72 72 88;NULL;27714;NULL;
+254659;FX;ISOLATION SERVICE;A+;36 LE BLANC;NULL;NULL;02 54 37 94 24;isolation-service(a)orange.fr;27718;NULL;
+254660;FX;CLAIRESPACE;A;60 COMPIEGNE;NULL;NULL;03 44 23 00 03;NULL;27719;NULL;
+254661;FX;SODISTORES 4749;A;45 CHECY;NULL;NULL;02 38 46 63 27;sodistores(a)wanadoo.fr;27721;NULL;
+254662;FX;MAISON PARISOT;A;52 CHAUMONT;NULL;NULL;03 25 01 23 26;Maison.PARISOT(a)wanadoo.fr;27722;NULL;
+254663;FX;RESEAU PRO COMPIEGNE;NULL;60 COMPIEGNE;NULL;NULL;03 44 83 13 54;NULL;27724;NULL;
+254664;FX;BORELLO ISOCLAIR 302837;B;38 ST CLAIR D;NULL;NULL;04 74 97 17 04;tborello(a)borello-isoclair.com;27728;NULL;
+254665;FX;BORELLO ISOCLAIR 302837;B;38 ST CLAIR D;NULL;NULL;0 ;NULL;27728;NULL;
+254666;FX;TRUCHON;A;38 ST MARTIN;NULL;NULL;04 76 44 25 41;NULL;27729;NULL;
+254667;FX;AFMH AGENCEMENT FERMETURE;NULL;94 FRESNES;NULL;NULL;01 49 84 21 83;NULL;27730;NULL;
+254668;FX;AUDIT SECURITE;NULL;33 BORDEAUX;NULL;NULL;05 56 98 17 73;NULL;27731;NULL;
+254669;FX;AUDIT SECURITE;NULL;33 BORDEAUX;NULL;NULL;0 ;NULL;27731;NULL;
+254670;FX;LEMAIRE PHILIPPE;A;92 FONTENAY A;NULL;NULL;01 43 50 33 29;NULL;27733;NULL;
+254671;FX;MIROITERIE BRESTOISE 4709;NULL;29 BREST CEDE;NULL;NULL;02 98 02 78 51;NULL;27735;NULL;
+254672;FX;GLASREN;A;35 RENNES;NULL;NULL;02 99 54 55 92;NULL;27737;NULL;
+254673;FX;GALLEGO SELLERIE;A;87 LIMOGES;NULL;NULL;05 55 30 18 68;NULL;27749;NULL;
+254674;FX;VAL OISE FERM-SOLUTION STORES;NULL;93 AULNAY SOU;NULL;NULL;01 48 19 69 01;NULL;27750;NULL;
+254675;FX;METALLERIE LA BOISSIERE;A;93 MONTREUIL;NULL;NULL;01 48 59 02 97;NULL;27752;NULL;
+254676;FX;DEBAILLE JEAN CLAUDE;A;34 VENDARGUES;NULL;NULL;04 67 02 06 17;NULL;27755;NULL;
+254677;FX;DARGAUD STORES;B;71 MACON;NULL;NULL;03 85 29 15 89;NULL;27757;NULL;
+254678;FX;ABS PROTECTION;B;26 VALENCE;NULL;NULL;04 75 55 54 30;NULL;27767;NULL;
+254679;FX;MIROITERIE DIJONNAISE;B;21 MARSANNAY;NULL;NULL;03 80 73 30 78;NULL;27774;NULL;
+254680;FX;LA FRANCAISE MIROITERIE;A+;94 L'HAY LES;NULL;NULL;01 46 87 17 27;NULL;27780;NULL;
+254681;FX;LA FRANCAISE MIROITERIE;A+;94 L'HAY LES;NULL;NULL;01 46 87 80 23;NULL;27780;NULL;
+254682;FX;CHAUSSON MAT. CAUSSADE;NULL;31 FENOUILLET;NULL;NULL;05 63 65 18 00;NULL;27796;NULL;
+254683;FX;SCI DE L'AQUILON;A+;14 CAEN;NULL;NULL;02 31 86 70 80;NULL;27797;NULL;
+254684;FX;COUTOUX GILLES ET ETIENNE;D;50 GER;NULL;NULL;02 33 69 53 22;NULL;27801;NULL;
+254685;FX;MAILLET DENIS;A;77 COULOMMIER;NULL;NULL;01 64 03 64 68;NULL;27803;NULL;
+254686;FX;SARL DES PLATANES;D;35 MORDELLES;NULL;NULL;02 99 60 04 89;NULL;27805;NULL;
+254687;FX;MIROITERIE VALLANZASCA;A+;74 SALLANCHES;NULL;NULL;04 50 47 92 75;NULL;27809;NULL;
+254688;FX;LAIR BERNARD;NULL;50 ST CLEMENT;NULL;NULL;02 99 14 63 08;NULL;27810;NULL;
+254689;FX;RENOLUX 4423;NULL;77 OZOIR LA F;NULL;NULL;01 64 05 14 51;NULL;27814;NULL;
+254690;FX;PAILLON PHILIPPE;A;37 LA CELLE S;NULL;NULL;0 ;ph.paillon(a)wanadoo.fr;27815;NULL;
+254691;FX;AVIS MTX - TOUT FAIRE;A;22 LOUDEAC;NULL;NULL;02 96 28 08 80;NULL;27824;NULL;
+254692;FX;AMLOR;A;55 BELLEVILLE;NULL;NULL;03 29 84 82 82;NULL;27825;NULL;
+254693;FX;RAFFORT MATERIAUX;A;74 PASSY;NULL;NULL;04 50 58 56 76;NULL;27826;NULL;
+254694;FX;BARD;D;42 RENAISON;NULL;NULL;04 77 64 43 94;etablissements-bard(a)orange.fr;27830;NULL;
+254695;FX;SERRURERIE ADAM;A;75 PARIS;NULL;NULL;01 49 70 01 95;NULL;27832;NULL;
+254696;FX;HA SERVICES;A;34 AGDE;NULL;NULL;04 67 94 12 53;NULL;27833;NULL;
+254697;FX;BARRAU ISOLAT. SERVICE OUVRAGE;D;64 GAN;NULL;NULL;05 59 21 67 56;j.barrau.iso(a)orange.fr;27835;NULL;
+254698;FX;SMSM - SERVICE MAINTENANC;A;77 GUERARD;NULL;NULL;01 64 65 63 26;NULL;27840;NULL;
+254699;FX;SOLOSTORES;A+;77 FONTAINEBL;NULL;NULL;01 64 22 90 14;contact(a)solostores.com;27841;NULL;
+254700;FX;SOLOSTORES;A+;77 FONTAINEBL;NULL;NULL;01 64 22 23 14;contact(a)solostores.com;27841;NULL;
+254701;FX;TISSERANT MTX TOUT FAIRE;A;88 GERARDMER;NULL;NULL;03 29 63 24 39;NULL;27842;NULL;
+254702;FX;JOLLOIS;A;95 SAINT BRIC;NULL;NULL;01 39 92 48 68;NULL;27843;NULL;
+254703;FX;ACECAM;A;01 FAREINS;NULL;NULL;04 74 60 79 89;NULL;27855;NULL;
+254704;FX;IMC INDUSTRIALISE MODULAIR;A;30 ROCHEFORT;NULL;NULL;04 90 15 16 30;imc(a)imcbat.com;27864;NULL;
+254705;FX;IMC INDUSTRIALISE MODULAIR;A;30 ROCHEFORT;NULL;NULL;04 90 15 16 30;NULL;27864;NULL;
+254706;FX;CL DIVERS OUEST V. NOURISSON;NULL;22 R;NULL;NULL;0 ;NULL;27865;NULL;
+254707;FX;MARSALA JM;A;57 GUEBENHOUS;NULL;NULL;01 34 29 61 20;NULL;27876;NULL;
+254708;FX;BEKO LEFEVRE;A;60 NOINTEL;NULL;NULL;04 44 19 18 88;NULL;27877;NULL;
+254709;FX;LES MENUISIERS REUNIS 4921;B;57 THIONVILLE;NULL;NULL;03 82 56 66 88;NULL;27878;NULL;
+254710;FX;STORE NET BACHE;B;35 LIVRE SUR;NULL;NULL;0 ;NULL;27880;NULL;
+254711;FX;MENUISERIE BETHUYS;A;85 CHALLANS;NULL;NULL;02 51 49 83 34;NULL;27882;NULL;
+254712;FX;EUROP FERMETURES;A;92 LEVALLOIS;NULL;NULL;01 42 70 10 00;NULL;27885;NULL;
+254713;FX;CHAUVET FABRICE;D;17 SAINT PIER;NULL;NULL;05 46 47 45 07;NULL;27888;NULL;
+254714;FX;DE NARDA;B;57 ARS SUR MO;NULL;NULL;03 87 60 81 23;NULL;27891;NULL;
+254715;FX;DE NARDA;B;57 ARS SUR MO;NULL;NULL;03 87 77 77 61;NULL;27891;NULL;
+254716;FX;ANGELY 4482;NULL;75 PARIS;NULL;NULL;01 43 38 17 90;NULL;27892;NULL;
+254717;FX;FENETRES ET VERANDAS DE;A;86 POITIERS;NULL;NULL;05 49 38 35 04;NULL;27899;NULL;
+254718;FX;FALSON JACQUES;B;83 TOULON;NULL;NULL;0 ;NULL;27900;NULL;
+254719;FX;LA CONCIERGERIE;A;67 STRASBOURG;NULL;NULL;03 88 22 22 55;NULL;27910;NULL;
+254720;FX;COMAFRANC LURE;A+;70 Lure;NULL;NULL;03 88 67 33 32;NULL;27913;NULL;
+254721;FX;COMAFRANC LURE;A+;70 Lure;NULL;NULL;03 84 22 52 32;NULL;27913;NULL;
+254722;FX;COMAFRANC LURE;A+;70 Lure;NULL;NULL;0 ;lure(a)comafranc.fr;27913;NULL;
+254723;FX;ASTUS;A;67 WOLFISHEIM;NULL;NULL;03 88 76 14 40;NULL;27915;NULL;
+254724;FX;CL DIVERS PNE A.CHAFFIN;NULL;54 P;NULL;NULL;0 ;NULL;27916;NULL;
+254725;FX;LA FENESTRIERE;NULL;54 COSMES ET;NULL;NULL;0 ;NULL;27918;NULL;
+254726;FX;NOVABAT - NOUVELLES;A;13 BOUC BEL A;NULL;NULL;04 42 22 22 45;NULL;27919;NULL;
+254727;FX;GIRAUDEAU;A;60 NOYON;NULL;NULL;03 44 09 00 97;NULL;27924;NULL;
+254728;FX;MONTIER ERICK;A;84 VILLELAURE;NULL;NULL;04 90 09 95 46;NULL;27928;NULL;
+254729;FX;DONATONE PIERRE;NULL;95 ST BRICE S;NULL;NULL;01 39 92 14 09;NULL;27933;NULL;
+254730;FX;NEBOUT ET VALENTIN SARL;D;16 BARBEZIEUX;NULL;NULL;05 45 78 32 14;zouzou.neboutvalentin(a)wanadoo.fr;27938;NULL;
+254731;FX;NEBOUT ET VALENTIN SARL;D;16 BARBEZIEUX;NULL;NULL;05 45 78 32 14;NULL;27938;NULL;
+254732;FX;CHARBONNIER MARTIAL;A;84 LA TOUR D';NULL;NULL;0 ;NULL;27942;NULL;
+254733;FX;PLEIN JOUR 17 4579;NULL;17 AYTRE;NULL;NULL;05 46 34 20 25;NULL;27945;NULL;
+254734;FX;BONNEMAISON JEAN PIERRE;NULL;33 CREON;NULL;NULL;0 ;NULL;27948;NULL;
+254735;FX;BERNARD;A+;91 JANVILLE S;NULL;NULL;01 60 82 75 62;NULL;27949;NULL;
+254736;FX;BHV PARLY 2;A;78 LE CHESNAY;NULL;NULL;01 39 23 38 89;NULL;27952;NULL;
+254737;FX;BHV PARLY 2;A;78 LE CHESNAY;NULL;NULL;01 39 23 34 87;NULL;27952;NULL;
+254738;FX;BHV CRETEIL;D;94 CRETEIL CE;NULL;NULL;01 49 60 45 64;NULL;27955;NULL;
+254739;FX;BHV MONTLHERY;D;91 MONTLHERY;NULL;NULL;01 49 60 46 65;NULL;27956;NULL;
+254740;FX;BHV VILLENEUVE LA GARENNE;D;92 VILLENEUVE;NULL;NULL;01 47 92 30 45;NULL;27958;NULL;
+254741;FX;BHV SAINT GENIS LAVAL;A;69 ST GENIS L;NULL;NULL;04 78 56 40 67;NULL;27960;NULL;
+254742;FX;BHV LIMONEST;D;69 LIMONEST C;NULL;NULL;04 78 35 66 44;NULL;27962;NULL;
+254743;FX;BOBAULT BERNARD;A;41 MAZANGE;NULL;NULL;02 54 72 08 57;NULL;27968;NULL;
+254744;FX;PARIS RIDEAUX;A;94 ALFORTVILL;NULL;NULL;01 43 75 40 14;contact(a)paris-rideaux.fr;27969;NULL;
+254745;FX;ATELIERS C;A;11 MONTFERRAN;NULL;NULL;04 68 60 53 16;NULL;27971;NULL;
+254746;FX;MESMIN;A;19 OBJAT;NULL;NULL;05 55 25 55 07;NULL;27972;NULL;
+254747;FX;MENUISERIE TOUT ALU;D;31 PECHBONNIE;NULL;NULL;05 67 00 70 89;NULL;27980;NULL;
+254748;FX;CHARRETON - ETS FENETRES;A;78 LA SEINE S;NULL;NULL;01 42 00 01 23;NULL;27983;NULL;
+254749;FX;VITRAFRANCE 4504;NULL;45 SULLY SUR;NULL;NULL;02 38 36 49 62;NULL;27984;NULL;
+254750;FX;TECHNIBAIE;D;92 BOULOGNE B;NULL;NULL;01 46 04 03 23;NULL;27986;NULL;
+254751;FX;CL DIVERS SUD EST L MALTETE;A;89 A;NULL;NULL;0 ;NULL;27987;NULL;
+254752;FX;MG ISOLATION VAL DE LOIRE;NULL;45 ST HILAIRE;NULL;NULL;02 38 45 65 12;mgisolation-vdl(a)worldonline.fr;27988;NULL;
+254753;FX;MAISONS ALASKA;A+;45 CHATEAUNEU;NULL;NULL;02 38 58 68 14;NULL;27989;NULL;
+254754;FX;PAGOT SAVOIE CHAMPAGNOLE;A;21 CHENOVE;NULL;NULL;03 84 52 20 71;NULL;27992;NULL;
+254755;FX;PUBLI DECO MEDIA PLUS;A;16 GOND PONTO;NULL;NULL;05 45 68 40 55;NULL;27997;NULL;
+254756;FX;KELPUB;A;69 LYON;NULL;NULL;04 78 64 63 26;NULL;27999;NULL;
+254757;FX;ARC EN CIEL 4502;NULL;75 PARIS;NULL;NULL;01 42 74 25 21;NULL;28004;NULL;
+254758;FX;ALUMINIUM VACHER BLAISOIS;A+;41 BLOIS;NULL;NULL;02 54 42 76 32;avb-etude(a)wanadoo.fr;28008;NULL;
+254759;FX;ALUMINIUM VACHER BLAISOIS;A+;41 BLOIS;NULL;NULL;02 54 42 76 32;NULL;28008;NULL;
+254760;FX;LE COMMERCIALISTE;A;60 BIENVILLE;NULL;NULL;03 44 40 47 85;NULL;28009;NULL;
+254761;FX;BATIMENT SECOND OEUVRE 4459;NULL;45 SAINT DENI;NULL;NULL;02 38 58 89 06;NULL;28010;NULL;
+254762;FX;BANGUI INTERNATIONAL;B;92 NANTERRE C;NULL;NULL;05 96 51 42 86;fabienne.bangui(a)wanadoo.fr;28011;NULL;
+254763;FX;BANGUI INTERNATIONAL;B;92 NANTERRE C;NULL;NULL;05 96 51 42 86;banguicaraibes(a)wanadoo.fr;28011;NULL;
+254764;FX;ATELIER LILLIU;A;48 RIEUTORT D;NULL;NULL;04 66 47 35 46;NULL;28019;NULL;
+254765;FX;SERAC - TOUT FAIRE;A;25 MORTEAU;NULL;NULL;03 81 67 10 06;NULL;28022;NULL;
+254766;FX;STORES FH 4962;NULL;67 HOENHEIM;NULL;NULL;03 88 18 55 76;stores.fh(a)wanadoo.fr;28024;NULL;
+254767;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;04 73 79 15 88;NULL;28025;NULL;
+254768;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;0 ;NULL;28025;NULL;
+254769;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;0 ;servibat.ovtcharenko(a)aliceadsl.fr;28025;NULL;
+254770;FX;SERVIBAT;A+;63 PERIGNAT L;NULL;NULL;0 ;servibat.stievenart(a)aliceadsl.fr;28025;NULL;
+254771;FX;MIPHALU;A;94 BONNEUIL S;NULL;NULL;01 43 77 80 03;NULL;28032;NULL;
+254772;FX;ERAL MATERIAUX LE VERSOUD;B;38 LE VERSOUD;NULL;NULL;04 76 77 21 32;NULL;28037;NULL;
+254773;FX;HABITAT SERVICE FRANCE;NULL;45 TRAINOU;NULL;NULL;02 38 52 70 01;NULL;28039;NULL;
+254774;FX;CL DIVERS PNE J. MAVILLA;B;92 P;NULL;NULL;0 ;NULL;28042;NULL;
+254775;FX;CL DIVERS PNE J. MAVILLA;B;92 P;NULL;NULL;0 ;NULL;28042;NULL;
+254776;FX;CTBVL (CENTRE TECHN.;A;45 ORLEANS;NULL;NULL;02 38 62 45 46;NULL;28043;NULL;
+254777;FX;CTBVL (CENTRE TECHN.;A;45 ORLEANS;NULL;NULL;02 38 51 17 56;NULL;28043;NULL;
+254778;FX;ABD ALUMINIUM BUILDING DEVELOP;B;38 ST ETIENNE;NULL;NULL;04 76 65 52 18;e.escallier(a)alumyr.com;28046;NULL;
+254779;FX;CAREN RENE 4116;NULL;83 SIX FOURS;NULL;NULL;04 94 10 22 34;NULL;28052;NULL;
+254780;FX;POINT P BMSO BERGERAC;NULL;24 BERGERAC;NULL;NULL;05 53 57 03 22;NULL;28053;NULL;
+254781;FX;POINT P BMSO PINEUILH;A+;33 STE FOY LA;NULL;NULL;0 ;elodie.gardes(a)saint-gobain.com;28054;NULL;
+254782;FX;POINT P BMSO PINEUILH;A+;33 STE FOY LA;NULL;NULL;05 57 46 22 75;NULL;28054;NULL;
+254783;FX;RENARD PERE ET FILS TOUT;A;39 BLETTERANS;NULL;NULL;03 84 85 09 65;NULL;28056;NULL;
+254784;FX;MONTMIRAIL MATERIAUX;A;51 MONTMIRAIL;NULL;NULL;03 26 81 16 41;NULL;28057;NULL;
+254785;FX;MONTMIRAIL MATERIAUX;A;51 MONTMIRAIL;NULL;NULL;03 26 81 16 41;montmirailmateriaux.dominique(a)orange.fr;28057;NULL;
+254786;FX;STE D'EXPLOIT. GODELIER G;A+;60 MARGNY LES;NULL;NULL;03 44 83 80 80;godelier(a)wanadoo.fr;28058;NULL;
+254787;FX;ESTENAVES - TOUT FAIRE;A;33 BAZAS;NULL;NULL;05 56 25 13 61;NULL;28059;NULL;
+254788;FX;CMR ILE DE FRANCE 4549;NULL;93 ROSNY SOUS;NULL;NULL;01 48 97 45 72;NULL;28061;NULL;
+254789;FX;CMR ILE DE FRANCE 4549;NULL;93 ROSNY SOUS;NULL;NULL;0 ;NULL;28061;NULL;
+254790;FX;SYLVESTRE MAT. TOUT FAIRE;A;84 ISLE SUR L;NULL;NULL;04 90 76 89 22;NULL;28078;NULL;
+254791;FX;FREYTET - TOUT FAIRE;A;24 DAGLAN;NULL;NULL;05 53 31 32 20;NULL;28089;NULL;
+254792;FX;TURROU PATRICK;A;89 SAINT GEOR;NULL;NULL;03 86 46 55 97;NULL;28090;NULL;
+254793;FX;CL DIVERS OUEST M. GUISSEAU;A;44 R;NULL;NULL;0 ;NULL;28094;NULL;
+254794;FX;LEONARD DANIEL TOUT FAIRE;A;95 SOISY SOUR;NULL;NULL;01 39 34 24 66;NULL;28096;NULL;
+254795;FX;DECORITEX;A;14 CORMELLES;NULL;NULL;02 31 82 21 39;NULL;28102;NULL;
+254796;FX;DUBILLON REMY 4636;NULL;94 VILLIERS S;NULL;NULL;0 ;NULL;28103;NULL;
+254797;FX;FERMETURES NEUVILLAISES;NULL;76 LA NEUVILL;NULL;NULL;02 32 49 20 56;MARC.LELARGE(a)WANADOO.FR.;28105;NULL;
+254798;FX;GRAILLOT;A+;51 DORMANS;NULL;NULL;03 26 58 22 59;NULL;28106;NULL;
+254799;FX;GRAILLOT;A+;51 DORMANS;NULL;NULL;03 26 58 22 59;graillot.sas(a)orange.fr;28106;NULL;
+254800;FX;GRAILLOT;A+;51 DORMANS;NULL;NULL;0 ;NULL;28106;NULL;
+254801;FX;PELLETIER DOMINIQUE;A;41 MER;NULL;NULL;02 54 81 26 63;NULL;28107;NULL;
+254802;FX;CHAUSSON TRIALIS EPINOUZE;NULL;26 EPINOUZE;NULL;NULL;04 75 31 60 74;NULL;28108;NULL;
+254803;FX;LEUILLET PERE ET FILS;NULL;36 LA CHATRE;NULL;NULL;02 54 06 04 43;NULL;28111;NULL;
+254804;FX;LEUILLET PERE ET FILS;NULL;36 LA CHATRE;NULL;NULL;02 54 06 04 03;NULL;28111;NULL;
+254805;FX;THIEVENAZ MTX TOUT FAIRE;A;38 VOIRON;NULL;NULL;04 76 05 50 66;NULL;28116;NULL;
+254806;FX;MOREAU MATERIAUX TOUT FAIRE;A;87 CHALUS;NULL;NULL;05 55 78 54 04;NULL;28117;NULL;
+254807;FX;CABIA MTX - TOUT FAIRE;A;58 CLAMECY;NULL;NULL;03 86 27 28 92;NULL;28121;NULL;
+254808;FX;ESPACE DECO;A;86 LOUDUN;NULL;NULL;0 ;NULL;28123;NULL;
+254809;FX;PROT 4746;NULL;14 DIVES SUR;NULL;NULL;02 31 91 34 66;NULL;28124;NULL;
+254810;FX;BOUTIQUE DES STORES;B;74 CERVENS;NULL;NULL;04 50 94 62 62;pvermostore(a)aol.com;28127;NULL;
+254811;FX;STEINMETZ;B;63 ISSOIRE;NULL;NULL;04 73 55 10 73;NULL;28128;NULL;
+254812;FX;GANZITTI SERGE;A;95 DOMONT CED;NULL;NULL;01 39 35 03 10;NULL;28132;NULL;
+254813;FX;GRIEU SERRURERIE;A+;76 LE HAVRE;NULL;NULL;02 35 46 04 13;NULL;28133;NULL;
+254814;FX;GRIEU SERRURERIE;A+;76 LE HAVRE;NULL;NULL;0 ;NULL;28133;NULL;
+254815;FX;GRIEU SERRURERIE;A+;76 LE HAVRE;NULL;NULL;02 35 49 22 48;NULL;28133;NULL;
+254816;FX;TECHNIQUE ET TRADITION 4602;NULL;45 OUVROUER L;NULL;NULL;02 38 57 21 77;NULL;28134;NULL;
+254817;FX;TECHNIQUE ET TRADITION 4602;NULL;45 OUVROUER L;NULL;NULL;02 38 57 21 77;cso(a)wanadoo.fr;28134;NULL;
+254818;FX;COME CHRISTOPHE;A;45 ORLEANS;NULL;NULL;02 38 43 47 56;NULL;28137;NULL;
+254819;FX;TECHNI POSE 4477;NULL;12 RODEZ;NULL;NULL;05 65 78 99 43;NULL;28138;NULL;
+254820;FX;HORIZON AUTOMATISME;A+;74 CRAN GEVRI;NULL;NULL;04 50 69 09 86;horizon.automatisme(a)securiste.com;28141;NULL;
+254821;FX;HORIZON AUTOMATISME;A+;74 CRAN GEVRI;NULL;NULL;04 50 69 09 86;NULL;28141;NULL;
+254822;FX;IDESTORES;A;94 VILLEUNEUV;NULL;NULL;01 43 68 78 87;NULL;28142;NULL;
+254823;FX;EURO FENETRES 4422;NULL;94 CRETEIL;NULL;NULL;01 49 81 79 99;NULL;28143;NULL;
+254824;FX;DURAND - TOUT FAIRE;A;54 FOUG;NULL;NULL;03 83 62 76 63;NULL;28153;NULL;
+254825;FX;GABRIEL;B;38 Grenay;NULL;NULL;04 74 95 64 40;NULL;28154;NULL;
+254826;FX;AMBROSINI SAS TOUT FAIRE;B;57 ST AVOLD C;NULL;NULL;03 87 92 88 44;NULL;28156;NULL;
+254827;FX;BAFFET MTX - TOUT FAIRE;A;19 ST VIANCE;NULL;NULL;05 55 24 59 75;NULL;28157;NULL;
+254828;FX;WILHELM RIESS;A;68 DURRENENTZ;NULL;NULL;03 89 49 12 39;NULL;28158;NULL;
+254829;FX;MENUISERIE BERNE;A;42 ST CHAMOND;NULL;NULL;04 77 22 17 66;NULL;28159;NULL;
+254830;FX;NORMEN NORMANDIE 4529;NULL;27 ANGERVILLE;NULL;NULL;02 32 28 41 17;NULL;28160;NULL;
+254831;FX;BEAUGRAND;B;10 SAINT GERM;NULL;NULL;03 25 75 30 75;NULL;28161;NULL;
+254832;FX;ORSONI MARIE-FRANCE;A;20 AJACCIO;NULL;NULL;04 95 22 47 22;NULL;28164;NULL;
+254833;FX;MENUISERIE WINNE;NULL;59 DOUAI CEDE;NULL;NULL;03 27 96 82 28;NULL;28167;NULL;
+254834;FX;VERGNES PIERRE FILS TOUT FAIRE;A;24 MONPAZIER;NULL;NULL;05 53 22 43 95;NULL;28172;NULL;
+254835;FX;ISOPROFIL;D;89 MIGENNES;NULL;NULL;03 86 92 95 36;NULL;28176;NULL;
+254836;FX;DEFARGES CHRISTOPHE;A;45 HUISSEAU S;NULL;NULL;02 38 74 60 90;NULL;28180;NULL;
+254837;FX;RENOVATION CONSEIL HABITA 3027;NULL;76 MONTIVILLI;NULL;NULL;02 35 28 14 43;NULL;28182;NULL;
+254838;FX;SDF PALM ET LE NOUVEL;B;35 RENNES;NULL;NULL;02 99 51 27 98;NULL;28183;NULL;
+254839;FX;TREFLE VERT;D;74 MEGEVE;NULL;NULL;04 50 21 11 61;letreflevert(a)orange.fr;28184;NULL;
+254840;FX;BARTHE JACQUES;A;65 LOURDES;NULL;NULL;05 62 94 08 52;NULL;28188;NULL;
+254841;FX;ERKI;A;37 AMBOISE;NULL;NULL;02 47 57 40 65;NULL;28189;NULL;
+254842;FX;RODRIGUEZ JEAN PIERRE;A;65 LOURDES;NULL;NULL;05 62 42 15 47;jeanpierre.rodrigue(a)orange.fr;28199;NULL;
+254843;FX;MANCUSO ANTONIO;A;77 CHALIFERT;NULL;NULL;01 60 43 85 74;NULL;28200;NULL;
+254844;FX;STORE ETOILE;A;77 BROU SUR C;NULL;NULL;01 64 26 20 99;NULL;28201;NULL;
+254845;FX;STAEG (STE THIAISIENNE;A;94 VITRY SUR;NULL;NULL;01 46 82 74 83;NULL;28209;NULL;
+254846;FX;STREC 4838;NULL;93 BONDY;NULL;NULL;01 48 50 04 18;NULL;28216;NULL;
+254847;FX;ERGB ETUDES ET REALISATIONS;A;45 ORLEANS CE;NULL;NULL;02 38 51 02 83;saergb45(a)aol.com;28222;NULL;
+254848;FX;SABLEMAT - AG. MONTOIS;A;57 MONTOIS LA;NULL;NULL;03 82 45 16 98;NULL;28225;NULL;
+254849;FX;CROSNIER ET FILS;A;41 LA CHAUSSE;NULL;NULL;02 54 74 80 56;NULL;28226;NULL;
+254850;FX;SOHIDEL 4317;NULL;83 LA CROIX V;NULL;NULL;04 94 54 30 92;NULL;28230;NULL;
+254851;FX;APM BOURDON;A;45 DONNERY;NULL;NULL;02 38 59 59 25;NULL;28231;NULL;
+254852;FX;VERANDA SYSTEM'ALU;A;31 SEYSSES;NULL;NULL;05 61 56 99 06;NULL;28241;NULL;
+254853;FX;TILHET MTX - TOUT FAIRE;A;64 ARZACQ;NULL;NULL;05 59 04 42 22;NULL;28251;NULL;
+254854;FX;GST RENOVATION;A;45 SEMOY;NULL;NULL;02 38 66 12 21;NULL;28253;NULL;
+254855;FX;MENUISERIE GIRARDIN;A+;54 PAGNY SUR;NULL;NULL;03 83 81 79 14;NULL;28254;NULL;
+254856;FX;MENUISERIE GIRARDIN;A+;54 PAGNY SUR;NULL;NULL;03 83 81 79 14;hcoquard(a)menuiserie-girardin.com;28254;NULL;
+254857;FX;KERNEN SERGE;A;29 MELLAC;NULL;NULL;02 98 71 90 14;NULL;28260;NULL;
+254858;FX;CATENA ETS SMC;B;12 REQUISTA;NULL;NULL;05 65 46 60 21;NULL;28264;NULL;
+254859;FX;REVILLARD J.;A;74 CRUSEILLES;NULL;NULL;04 50 44 25 34;NULL;28271;NULL;
+254860;FX;FORCLUM ATE;A;76 CANTELEU;NULL;NULL;02 32 83 09 20;NULL;28277;NULL;
+254861;FX;MENUISERIE CASSIN;A;19 EGLETONS;NULL;NULL;05 55 93 93 11;NULL;28286;NULL;
+254862;FX;MENUISERIE CASSIN;A;19 EGLETONS;NULL;NULL;05 55 93 00 91;NULL;28286;NULL;
+254863;FX;PASCAL STORES;NULL;06 VENCE;NULL;NULL;04 93 24 07 60;NULL;28287;NULL;
+254864;FX;SERRURERIE SIGWALD;A;67 KRAUTERGER;NULL;NULL;03 88 95 70 93;NULL;28289;NULL;
+254865;FX;JGF FERREIRA JOQUIM GOMES;A;92 CHATENAY M;NULL;NULL;01 40 91 90 50;jgf(a)cegetel.net;28294;NULL;
+254866;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;64 33 65 30 57;NULL;28295;NULL;
+254867;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;0 ;james.adair(a)johnsonandcouzins.co.nz;28295;NULL;
+254868;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;64 33 65 30 57;sales(a)johnsonandcouzins.co.nz;28295;NULL;
+254869;FX;JOHNSON & COUZINS LTD;D;NZ HRISTCHURC;NULL;NULL;64 33 65 30 57;graeme.kerr(a)johnosonandcouzins.co.nz;28295;NULL;
+254870;FX;SAMAC MTX - TOUT FAIRE;A;61 MORTAGNE A;NULL;NULL;02 33 25 53 41;NULL;28297;NULL;
+254871;FX;ROBERT - ETS MCM;NULL;79 THOUARS;NULL;NULL;05 49 66 09 63;NULL;28298;NULL;
+254872;FX;MCSO;A;17 JONZAC CED;NULL;NULL;05 46 48 21 70;NULL;28299;NULL;
+254873;FX;LEBASTARD ALAIN;D;35 BILLE;NULL;NULL;02 99 97 50 40;NULL;28304;NULL;
+254874;FX;EUROSECURITE;A;31 TOULOUSE;NULL;NULL;05 61 43 04 99;NULL;28306;NULL;
+254875;FX;CHAMPARNAUD - TOUT FAIRE;A;24 PERIGUEUX;NULL;NULL;05 53 07 05 48;NULL;28311;NULL;
+254876;FX;ROUSSEAU MTX - TOUT FAIRE;A;51 ESTERNAY;NULL;NULL;03 26 81 95 98;rousseaumateriaux(a)orange.fr;28317;NULL;
+254877;FX;EGLETONS PVC;A;19 EGLETONS;NULL;NULL;05 55 93 00 91;NULL;28319;NULL;
+254878;FX;BRILHAULT-CHARON 4544;NULL;28 CHATEAUDUN;NULL;NULL;02 37 45 67 55;NULL;28324;NULL;
+254879;FX;ABPM;A;63 LA ROCHE B;NULL;NULL;04 73 39 21 21;NULL;28329;NULL;
+254880;FX;BLOC ET JOB;A;54 LUNEVILLE;NULL;NULL;03á83469225;lesmateriauxvv(a)bloc-job.fr;28332;NULL;
+254881;FX;BLOC ET JOB;A;54 LUNEVILLE;NULL;NULL;03 83 73 38 29;expoluneville(a)bloc-job.fr;28332;NULL;
+254882;FX;BLOC ET JOB;A;54 LUNEVILLE;NULL;NULL;03 83 73 38 29;NULL;28332;NULL;
+254883;FX;JACOB AG. VIGNEULE -TOUT FAIRE;B;55 VIGNEULLES;NULL;NULL;03 29 89 56 17;materiaux.jacob(a)wanadoo.fr;28336;NULL;
+254884;FX;MCA - TOUT FAIRE;A;57 AUDUN LE T;NULL;NULL;03 82 91 27 82;NULL;28338;NULL;
+254885;FX;GUILLEMOT MTX TOUT FAIRE;A;56 LE FAOUET;NULL;NULL;02 97 23 04 69;NULL;28345;NULL;
+254886;FX;BRICORAMA HELIODIS LES ABRETS;NULL;38 LES ABRETS;NULL;NULL;04 76 37 43 45;NULL;28347;NULL;
+254887;FX;BOUCLET ETIENNE LORENOVE;A;41 VENDOME;NULL;NULL;02 54 72 21 75;NULL;28349;NULL;
+254888;FX;BERARDI PVC;B;54 HUSSIGNY G;NULL;NULL;03 82 44 40 87;NULL;28353;NULL;
+254889;FX;BOGO BERNARD;A;06 JUAN LES P;NULL;NULL;04 93 67 11 32;NULL;28355;NULL;
+254890;FX;SAISON MTX TOUT FAIRE 4825;NULL;62 LA CALOTER;NULL;NULL;03 21 90 78 28;NULL;28362;NULL;
+254891;FX;BATEC 4945;A;78 TRAPPES;NULL;NULL;01 34 61 39 05;NULL;28363;NULL;
+254892;FX;PS ISOLATION 2000 4229;NULL;57 ROZERIEULL;NULL;NULL;03 87 60 17 15;NULL;28364;NULL;
+254893;FX;LELEU PHILIPPE 4500;NULL;57 RECHICOURT;NULL;NULL;03 87 24 78 38;NULL;28370;NULL;
+254894;FX;MIROITERIE DU COTENTIN;D;50 VALOGNES;NULL;NULL;02 33 95 07 35;NULL;28375;NULL;
+254895;FX;BALUBOIS;A;88 GRANGES SU;NULL;NULL;03 29 57 56 98;NULL;28376;NULL;
+254896;FX;POT ET FILS TOUT FAIRE FLIXECO;NULL;80 FLIXECOURT;NULL;NULL;03 22 51 50 59;NULL;28377;NULL;
+254897;FX;ARENOVA;NULL;03 DROITURIER;NULL;NULL;04 70 55 04 78;NULL;28379;NULL;
+254898;FX;GLOWACZ JEAN;A;77 CRISENOY;NULL;NULL;01 64 38 86 14;NULL;28384;NULL;
+254899;FX;SEES BOIS;A;61 SEES;NULL;NULL;02 33 28 99 39;NULL;28386;NULL;
+254900;FX;AUDE MENUISERIE;A+;11 VILLENEUVE;NULL;NULL;04 68 26 10 92;NULL;28395;NULL;
+254901;FX;GEDIMAT EXCOFFIER;NULL;51 CHALONS EN;NULL;NULL;03 26 65 78 20;NULL;28400;NULL;
+254902;FX;CIDIC;A+;14 CAEN;NULL;NULL;02 31 86 70 80;NULL;28402;NULL;
+254903;FX;ROMANO STORES;A;69 VILLEURBAN;NULL;NULL;04 78 68 17 75;NULL;28404;NULL;
+254904;FX;MURISOL PIC;A;69 TALUYERS;NULL;NULL;04 78 48 27 78;NULL;28406;NULL;
+254905;FX;OG RENOVATION 4903;NULL;45 CHECY;NULL;NULL;02 38 58 85 29;NULL;28407;NULL;
+254906;FX;MVF SOCIETE D EXPLOIT DES ETS CLAUDE;D;19 USSEL;NULL;NULL;05 55 46 17 47;NULL;28413;NULL;
+254907;FX;PERROT DANIEL;A+;58 COSNE COUR;NULL;NULL;03 86 26 84 99;NULL;28415;NULL;
+254908;FX;ARI ABIT'A RENOV ISOL;A;76 GRAND COUR;NULL;NULL;02 35 67 75 32;NULL;28416;NULL;
+254909;FX;REYNAUD CAUVIN YVOSE;NULL;71 LOUHANS;NULL;NULL;05 62 72 38 01;NULL;28417;NULL;
+254910;FX;DESMONTEIX MATERIAUX;A;26 TAIN;NULL;NULL;04 75 07 02 65;NULL;28418;NULL;
+254911;FX;RUBIS ST LAURENT TOUT FAIRE;A;30 ST LAURENT;NULL;NULL;04 66 50 36 83;NULL;28419;NULL;
+254912;FX;GLAUSER INTERNATIONAL 4460;NULL;75 PARIS;NULL;NULL;0 ;NULL;28424;NULL;
+254913;FX;BATI BAIE 4464;NULL;31 SAINT OREN;NULL;NULL;05 62 88 23 69;NULL;28425;NULL;
+254914;FX;GIUSTI LUCIEN ET CIE;A;13 MARSEILLE;NULL;NULL;04 91 92 46 58;info.slg(a)nerim.net;28431;NULL;
+254915;FX;TOULOUSE MENUISERIE;A;31 TOULOUSE;NULL;NULL;05 61 92 86 44;NULL;28435;NULL;
+254916;FX;TOULOUSE MENUISERIE;A;31 TOULOUSE;NULL;NULL;05 61 40 88 22;NULL;28435;NULL;
+254917;FX;LE CHEVALIER;A+;93 MONTFERMEI;NULL;NULL;01 43 30 69 76;NULL;28439;NULL;
+254918;FX;PLOTON TOUT FAIRE;A;89 TOUCY;NULL;NULL;03 86 44 05 94;NULL;28441;NULL;
+254919;FX;GEDIMAT MICHEL;A;14 LIVAROT;NULL;NULL;02 31 63 12 96;NULL;28444;NULL;
+254920;FX;GEDIMAT MICHEL;A;14 LIVAROT;NULL;NULL;02 31 42 64 48;NULL;28444;NULL;
+254921;FX;2CI CASPAR CONFECTION LORENOVE;A;67 DUPPIGHEIM;NULL;NULL;03 88 49 77 20;NULL;28448;NULL;
+254922;FX;MENUISERIES DES LANDES;NULL;33 VILLANDRAU;NULL;NULL;05 56 25 82 09;NULL;28454;NULL;
+254923;FX;GONSARD ERIC;A;72 ST PAVACE;NULL;NULL;02 43 89 15 88;NULL;28455;NULL;
+254924;FX;KLEIN ALFRED;B;57 HARTZVILLE;NULL;NULL;03 87 25 59 98;NULL;28457;NULL;
+254925;FX;COQUEMPOT - TOUT FAIRE;A;62 FAUQUEBERG;NULL;NULL;03 21 39 23 30;NULL;28460;NULL;
+254926;FX;AP DIFFUSION;A;31 L'UNION;NULL;NULL;05 61 09 65 49;NULL;28462;NULL;
+254927;FX;RIO;NULL;31 TOULOUSE;NULL;NULL;05 62 75 39 38;NULL;28463;NULL;
+254928;FX;EURO CONFORT;A;14 CAEN;NULL;NULL;02 31 82 61 62;NULL;28467;NULL;
+254929;FX;DISTRIBAT TOUT FAIRE;A;28 NOGENT LE;NULL;NULL;02 37 51 99 97;NULL;28477;NULL;
+254930;FX;LEROY MERLIN FRANCE MASSY;A;91 MASSY;NULL;NULL;01 69 30 70 58;NULL;28481;NULL;
+254931;FX;LEGUEULT DIDIER;A;78 RAMBOUILLE;NULL;NULL;01 34 85 57 88;NULL;28482;NULL;
+254932;FX;POINT P MERIDIONALE CAUSSADE;A;82 CAUSSADE;NULL;NULL;05 63 65 05 83;NULL;28486;NULL;
+254933;FX;DELAHAYE HERVE;A;55 HEUDICOURT;NULL;NULL;03 29 89 57 80;NULL;28491;NULL;
+254934;FX;EFIBAT;B;08 SECHEVAL;NULL;NULL;03 24 58 43 20;NULL;28506;NULL;
+254935;FX;RAZE MARC;B;35 BRUC SUR;NULL;NULL;02 99 34 35 56;NULL;28521;NULL;
+254936;FX;GLAVERAL;D;37 MONTLOUIS;NULL;NULL;02 47 45 19 01;NULL;28527;NULL;
+254937;FX;DECORUM;A;76 ROUEN;NULL;NULL;02 35 14 96 78;NULL;28529;NULL;
+254938;FX;MOUTH ET CIE TOUT FAIRE;NULL;16 HIERSAC;NULL;NULL;05 45 90 81 89;NULL;28534;NULL;
+254939;FX;VALLETTE;A+;93 AULNAY SOU;NULL;NULL;01 48 65 93 70;NULL;28546;NULL;
+254940;FX;ABM FERMETURES;A;18 BOURGES;NULL;NULL;02 48 50 78 04;NULL;28550;NULL;
+254941;FX;ORGEL FRANCIS;A;57 LORQUIN;NULL;NULL;0 ;NULL;28552;NULL;
+254942;FX;DUMON ET FILS;B;43 FRUGERES L;NULL;NULL;04 71 76 36 17;NULL;28555;NULL;
+254943;FX;MAGISSON TOUT FAIRE;A;52 ST DIZIER;NULL;NULL;03 25 05 85 85;NULL;28561;NULL;
+254944;FX;LE MUR EN VERRE 4428;NULL;94 CHOISY LE;NULL;NULL;01 48 84 86 86;NULL;28562;NULL;
+254945;FX;ABBR SERRURERIE 4611;NULL;41 BLOIS;NULL;NULL;02 54 78 62 91;NULL;28568;NULL;
+254946;FX;ISOGLASS;D;45 SAINT PRYV;NULL;NULL;02 38 72 14 70;NULL;28570;NULL;
+254947;FX;SUD ALU 4673;NULL;20 SAN NICOLA;NULL;NULL;04 95 38 45 04;NULL;28576;NULL;
+254948;FX;LEROY MERLIN FRANCE CHELLES;A;77 CHELLES;NULL;NULL;01 64 21 88 77;NULL;28582;NULL;
+254949;FX;AMGB 4647;NULL;16 COGNAC;NULL;NULL;05 45 36 53 10;NULL;28585;NULL;
+254950;FX;DICAH 4478;NULL;17 ST HILAIRE;NULL;NULL;0 ;NULL;28586;NULL;
+254951;FX;BALOUZAT SERGE;A;03 LE DONJON;NULL;NULL;04 70 99 51 75;NULL;28588;NULL;
+254952;FX;BS BAIE ISOLATION SARL 5004;A;32 AUCH;NULL;NULL;05 62 06 27 36;NULL;28593;NULL;
+254953;FX;BS BAIE ISOLATION SARL 5004;A;32 AUCH;NULL;NULL;05 62 64 01 05;NULL;28593;NULL;
+254954;FX;GES CLAUDE ETS;A;47 MARMANDE;NULL;NULL;05 53 89 27 06;NULL;28594;NULL;
+254955;FX;MAZY FRERES;A;19 SAINT ROBE;NULL;NULL;05 55 25 20 16;NULL;28595;NULL;
+254956;FX;POMMIER MICHEL;A;42 ST JEAN SO;NULL;NULL;04 77 76 36 07;NULL;28600;NULL;
+254957;FX;THARIOT MAX;A;45 BOISCOMMUN;NULL;NULL;02 38 33 76 76;max.thariot(a)wanadoo.fr;28612;NULL;
+254958;FX;MARTIFEL;A;75 PARIS;NULL;NULL;01 47 64 03 73;NULL;28614;NULL;
+254959;FX;LEROY MERLIN FRANCE ANGERS;A;49 ST BARTHEL;NULL;NULL;02 41 34 71 29;NULL;28615;NULL;
+254960;FX;CHEZE TOUT FAIRE;B;03 EBREUIL;NULL;NULL;04 70 90 75 32;NULL;28620;NULL;
+254961;FX;SODEM;A;45 MEUNG SUR;NULL;NULL;02 38 45 19 80;NULL;28621;NULL;
+254962;FX;SPETTEL 302939;NULL;67 DUPPIGHEIM;NULL;NULL;03 88 49 13 40;NULL;28625;NULL;
+254963;FX;ARCELIN ANDRE;A;45 SULLY SUR;NULL;NULL;02 38 67 71 45;menuiserie.arcelin(a)wanadoo.fr;28628;NULL;
+254964;FX;GAUMERAIS;B;50 LE TEILLEU;NULL;NULL;02 33 59 97 59;NULL;28632;NULL;
+254965;FX;MENUISERIE MOREAU JEANDIN;A;71 TRAMAYES;NULL;NULL;0 ;NULL;28646;NULL;
+254966;FX;PAULIN;NULL;43 LANGEAC;NULL;NULL;04 71 02 06 76;NULL;28647;NULL;
+254967;FX;ROUSSEL - C.S.F.;NULL;28 BONNEVAL;NULL;NULL;02 37 47 25 86;NULL;28649;NULL;
+254968;FX;COMAFRANC VESOUL;A+;70 Vesoul;NULL;NULL;0 ;lesmateriaux.vesoul(a)comafranc.fr;28654;NULL;
+254969;FX;COMAFRANC VESOUL;A+;70 Vesoul;NULL;NULL;03 84 76 78 16;NULL;28654;NULL;
+254970;FX;MIROITERIE GENERALE DE;A+;77 TRILPORT;NULL;NULL;01 64 33 96 24;NULL;28660;NULL;
+254971;FX;GASQ CHRISTIAN;A;95 MERY SUR O;NULL;NULL;01 34 40 58 86;c.gasq(a)wanadoo.fr;28672;NULL;
+254972;FX;GASQ CHRISTIAN;A;95 MERY SUR O;NULL;NULL;01 34 21 60 30;NULL;28672;NULL;
+254973;FX;BENOIST MARC;A;22 PLOUEZEC;NULL;NULL;0 ;benoist.menuiserie(a)free.fr;28688;NULL;
+254974;FX;BENOIST MARC;A;22 PLOUEZEC;NULL;NULL;09 55 33 44 71;benoist.menuiserie(a)free.fr;28688;NULL;
+254975;FX;ROUSSEAU;A;49 LE PLESSIS;NULL;NULL;02 41 31 12 29;Nicolas.boisrame(a)rousseausa.fr;28696;NULL;
+254976;FX;ROUSSEAU;A;49 LE PLESSIS;NULL;NULL;02 41 31 12 29;NULL;28696;NULL;
+254977;FX;BRAUN A. SUCCESSEURS;A+;67 KRAUTERGER;NULL;NULL;03 88 95 79 12;NULL;28701;NULL;
+254978;FX;DOMECA;A;67 DUPPIGHEIM;NULL;NULL;03 88 49 77 44;NULL;28702;NULL;
+254979;FX;BRIOUDE FABRICATION;B;07 AUBENAS CE;NULL;NULL;04 75 93 83 33;NULL;28705;NULL;
+254980;FX;CL DIVERS SUD OUEST D LABARBE;NULL;16 A;NULL;NULL;02 99 14 83 82;NULL;28707;NULL;
+254981;FX;CL DIVERS SUD OUEST D LABARBE;NULL;16 A;NULL;NULL;05 56 13 36 76;NULL;28707;NULL;
+254982;FX;HABITAT CONFORT;A;33 BORDEAUX;NULL;NULL;05 56 24 90 22;NULL;28709;NULL;
+254983;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 41 70 10 96;NULL;28713;NULL;
+254984;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 60 44 05 40;NULL;28713;NULL;
+254985;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 64 65 85 05;NULL;28713;NULL;
+254986;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 64 21 61 76;NULL;28713;NULL;
+254987;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 64 84 50 64;NULL;28713;NULL;
+254988;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 48 19 92 16;NULL;28713;NULL;
+254989;FX;ECOTHERME BAILLY;A+;77 Bailly-Rom;NULL;NULL;01 60 94 02 26;NULL;28713;NULL;
+254990;FX;MILITON;A;36 ISSOUDUN;NULL;NULL;02 54 03 20 06;NULL;28725;NULL;
+254991;FX;BSM;A;30 OULINS;NULL;NULL;04 70 34 03 03;NULL;28731;NULL;
+254992;FX;TAHITI NEON 4678;NULL;PF EETE TAHIT;NULL;NULL;0 ;NULL;28738;NULL;
+254993;FX;TEXITOILES;A+;72 SOLESMES;NULL;NULL;02 43 92 56 61;TEXITOILED(a)WANADOO.FR;28740;NULL;
+254994;FX;DOMOREA 4395;NULL;33 PESSAC;NULL;NULL;05 56 15 00 09;NULL;28751;NULL;
+254995;FX;TRIA B;A;75 PARIS;NULL;NULL;0 ;bonnemain.vincent(a)free.fr;28757;NULL;
+254996;FX;TRIA B;A;75 PARIS;NULL;NULL;0 ;NULL;28757;NULL;
+254997;FX;DV CONSTRUCTION;A;33 MERIGNAC C;NULL;NULL;02 38 78 10 62;NULL;28759;NULL;
+254998;FX;DV CONSTRUCTION;A;33 MERIGNAC C;NULL;NULL;02 38 78 11 28;NULL;28759;NULL;
+254999;FX;DV CONSTRUCTION;A;33 MERIGNAC C;NULL;NULL;02 38 78 10 17;NULL;28759;NULL;
+255000;FX;MOUTH NORBERT;A;57 LES ETANGS;NULL;NULL;03 87 64 20 53;NULL;28760;NULL;
+255001;FX;JACQUES ET MONGELLAZ;A;39 MARNOZ;NULL;NULL;03 84 37 52 91;NULL;28766;NULL;
+255002;FX;HUGUET CREICHE METALLERIE 4693;A;45 INGRE;NULL;NULL;02 38 22 38 20;NULL;28767;NULL;
+255003;FX;ESPRIT FREDERIC;A;21 DIJON;NULL;NULL;03 25 87 24 63;NULL;28778;NULL;
+255004;FX;SAFIP D'ARMOR;NULL;22 TREGUIER;NULL;NULL;02 96 92 22 02;NULL;28781;NULL;
+255005;FX;COLSON ET FROMONT;A;10 LA CHAPELL;NULL;NULL;03 25 74 69 13;colson-fromont(a)wanadoo.fr;28782;NULL;
+255006;FX;SOCIETE D'EXPLOITTION RENOFFEN;A;67 REISCHSTET;NULL;NULL;03 88 20 90 81;NULL;28788;NULL;
+255007;FX;BERLO 4597;NULL;66 VINCA;NULL;NULL;04 68 38 53 03;NULL;28792;NULL;
+255008;FX;TROUILLARD POINT P PONTS DE CE;A;49 LES PONTS;NULL;NULL;02 41 69 96 36;NULL;28793;NULL;
+255009;FX;ERIKA DIFFUSION;A;86 NAINTRE;NULL;NULL;05 49 90 28 29;NULL;28795;NULL;
+255010;FX;SMF;A;94 PLESSIS TR;NULL;NULL;01 56 31 06 12;NULL;28796;NULL;
+255011;FX;MANEM JACQUES;A;91 ITTEVILLE;NULL;NULL;01 64 93 69 41;NULL;28797;NULL;
+255012;FX;AVS;B;74 THYEZ;NULL;NULL;04 50 34 94 35;NULL;28801;NULL;
+255013;FX;LOGIPLAST;A+;76 HARFLEUR;NULL;NULL;02 35 24 88 89;NULL;28803;NULL;
+255014;FX;LOGIPLAST;A+;76 HARFLEUR;NULL;NULL;02 35 24 88 89;LOGIPLAST.PRO @ wanadoo.fr;28803;NULL;
+255015;FX;LECLERC JEAN-PAUL;NULL;67 STRASBOURG;NULL;NULL;03 88 34 65 46;NULL;28804;NULL;
+255016;FX;FRANCE FERMETURES;NULL;18 VIERZON;NULL;NULL;0 ;NULL;28806;NULL;
+255017;FX;LAPORTE 4764;NULL;31 L'ISLE EN;NULL;NULL;05 61 88 79 36;NULL;28814;NULL;
+255018;FX;GRAVIER JEAN CLAUDE;NULL;35 RENNES;NULL;NULL;02 99 53 16 08;NULL;28817;NULL;
+255019;FX;SOLER ROBERT;A;60 GOINCOURT;NULL;NULL;03 44 45 28 98;NULL;28829;NULL;
+255020;FX;POIROT DENIS;A;90 LA CHAPELL;NULL;NULL;03 84 27 67 97;NULL;28831;NULL;
+255021;FX;RIDOLFI;D;21 QUETIGNY;NULL;NULL;03 80 46 68 35;NULL;28833;NULL;
+255022;FX;FLORES SERGE 4199;NULL;83 FREJUS;NULL;NULL;04 94 40 10 87;NULL;28840;NULL;
+255023;FX;AVC SECURITE;A;45 ORLEANS;NULL;NULL;02 38 84 35 68;NULL;28843;NULL;
+255024;FX;AVC SECURITE;A;45 ORLEANS;NULL;NULL;02 38 86 19 00;NULL;28843;NULL;
+255025;FX;ORTIZ;A;14 CAEN;NULL;NULL;02 31 73 71 90;NULL;28853;NULL;
+255026;FX;KERBRAT MTX;A;29 PLOUESCAT;NULL;NULL;02 98 61 91 88;NULL;28854;NULL;
+255027;FX;EQUIPEMENT ET CONFORT 4448;NULL;91 SAINT MICH;NULL;NULL;01 69 04 29 11;NULL;28857;NULL;
+255028;FX;LEROY MERLIN FRANCE MONTSOULT;A;95 MONTSOULT;NULL;NULL;01 34 69 98 81;NULL;28865;NULL;
+255029;FX;BOIS ALUMINIUM PVC BAP;A;60 GRANDU;NULL;NULL;03 44 09 76 29;NULL;28868;NULL;
+255030;FX;CHRISTIAN FERMETURES;A+;77 OZOIR LA F;NULL;NULL;01 60 28 63 75;NULL;28871;NULL;
+255031;FX;GUINEHUT ALAIN;A;49 LES ROBIER;NULL;NULL;02 41 38 02 82;NULL;28872;NULL;
+255032;FX;L ATELIER DE LA TOILE;A;85 LA MOTHE A;NULL;NULL;02 51 38 67 09;NULL;28873;NULL;
+255033;FX;LIAUME 4977;A;37 LARCAY;NULL;NULL;0 ;NULL;28874;NULL;
+255034;FX;PROTAG PROTECTION;D;75 PARIS;NULL;NULL;01 45 32 09 44;NULL;28875;NULL;
+255035;FX;RESEAU PRO BATI DECOR METZ;NULL;08 CHARLEVILL;NULL;NULL;03 24 53 39 09;NULL;28878;NULL;
+255036;FX;TAVERNIER JACQUES;A;45 CHATILLON;NULL;NULL;02 38 96 00 98;NULL;28880;NULL;
+255037;FX;LSK FENETRES LORENOVE;NULL;17 LA ROCHELL;NULL;NULL;05 46 43 08 65;NULL;28888;NULL;
+255038;FX;AJI MATERIAUX;B;35 JANZE;NULL;NULL;02 99 47 35 76;NULL;28889;NULL;
+255039;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;mickaelgabillard.spbm(a)orange.fr;28894;NULL;
+255040;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;0 ;franckcherif.spbm(a)orange.fr;28894;NULL;
+255041;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;benoitsable.spbm(a)wanadoo.fr;28894;NULL;
+255042;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;NULL;28894;NULL;
+255043;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;0 ;philippevalat.spbm(a)orange.fr;28894;NULL;
+255044;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;laurentmartin.spbm(a)orange.fr;28894;NULL;
+255045;FX;SPBM;A+;72 ARCONNAY;NULL;NULL;02 33 81 22 20;damienflerchinger.spbm(a)orange.fr;28894;NULL;
+255046;FX;MENUISERIE DU LAURAGAIS;A;31 VILLEFRANC;NULL;NULL;05 61 81 59 29;NULL;28897;NULL;
+255047;FX;TOLEDO FERMETURES;A+;64 LESCAR;NULL;NULL;05 59 81 00 46;NULL;28898;NULL;
+255048;FX;SONDAZ NOEL;D;74 CHOISY;NULL;NULL;04 50 77 46 33;NULL;28901;NULL;
+255049;FX;DEMARET PHILIPPE;NULL;14 NOYERS BOC;NULL;NULL;02 31 77 56 81;NULL;28912;NULL;
+255050;FX;MENUISERIE DE L'EST;B;57 GANDRANGE;NULL;NULL;03 87 58 30 24;menuiserie.est(a)wanadoo.fr;28913;NULL;
+255051;FX;TOP-FERM;A;68 SPECHBACH;NULL;NULL;0 ;NULL;28917;NULL;
+255052;FX;COFELY;A;64 BORDES CED;NULL;NULL;05 59 53 26 55;NULL;28919;NULL;
+255053;FX;FAUCHE JACQUES;A;38 SAINT EGRE;NULL;NULL;04 76 27 43 21;NULL;28928;NULL;
+255054;FX;DEVULDER BERTRAND;NULL;62 FAMPOUX;NULL;NULL;03 21 59 29 52;NULL;28932;NULL;
+255055;FX;ABCD 4609;NULL;34 BEZIERS;NULL;NULL;04 67 11 09 39;NULL;28940;NULL;
+255056;FX;ATA;A;69 MEYZIEU;NULL;NULL;04 72 45 02 53;NULL;28956;NULL;
+255057;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;lionel.groseille(a)franciaflex.com;28958;NULL;
+255058;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;aline.perche(a)franciaflex.com;28958;NULL;
+255059;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;michele.gaultier(a)franciaflex.com;28958;NULL;
+255060;FX;VENTES AU PERSONNEL;NULL;45 CHECY;NULL;NULL;08 10 82 05 10;veronique.lozachmeur(a)franciaflex.com;28958;NULL;
+255061;FX;PHILIPPE JACQUES;NULL;22 MAEL CARHA;NULL;NULL;02 98 10 12 45;NULL;28965;NULL;
+255062;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;swatson(a)theawningcompany.co.uk;28974;NULL;
+255063;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Richard.May(a)theawningcompany.co.uk;28974;NULL;
+255064;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Bryce.Ratcliffe(a)theawningcompany.co.uk;28974;NULL;
+255065;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Catherine.conway(a)theawningcompany.co.uk;28974;NULL;
+255066;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;NULL;28974;NULL;
+255067;FX;THE AWNING COMPANY (UK) LTD;D;GB CASHIRE BL;NULL;NULL;4412 04 54 49 01;Andria.Cowan(a)theawningcompany.co.uk;28974;NULL;
+255068;FX;THAWEEWAT CANVAS;D;TH 10 BANGKOK;NULL;NULL;66 27 42 27 87;nakorn(a)thaweewat.com;28983;NULL;
+255069;FX;MULONNIERE;A;35 JANZE;NULL;NULL;02 99 47 26 34;NULL;28986;NULL;
+255070;FX;POINT P BMSO AYTRE;NULL;17 AYTRE;NULL;NULL;06 46 44 65 66;NULL;28987;NULL;
+255071;FX;ATRIO;A+;38 SASSENAGE;NULL;NULL;08 20 90 07 26;NULL;28989;NULL;
+255072;FX;COMAFRANC CERNAY;A+;68 Cernay;NULL;NULL;03 89 75 64 00;NULL;28993;NULL;
+255073;FX;COMAFRANC CERNAY;A+;68 Cernay;NULL;NULL;0 ;berche(a)comafranc.fr;28993;NULL;
+255074;FX;PUJOL JM;A+;11 PALAJA;NULL;NULL;04 68 79 73 34;NULL;28997;NULL;
+255075;FX;GEDIMAT AUGRY;A;17 VILLIERS C;NULL;NULL;05 46 33 03 08;NULL;29000;NULL;
+255076;FX;METALLERIE GRAND;A;71 LA ROCHE V;NULL;NULL;03 85 37 78 82;NULL;29002;NULL;
+255077;FX;WARSMANN;B;08 NOUZONVILL;NULL;NULL;0 ;NULL;29004;NULL;
+255078;FX;WARSMANN;B;08 NOUZONVILL;NULL;NULL;03 24 53 75 24;NULL;29004;NULL;
+255079;FX;BARRERE DUCOURTHIAL;A;03 MONTLUCON;NULL;NULL;04 70 06 60 09;NULL;29008;NULL;
+255080;FX;ATELIER JAROUSSEAU;A;85 MORTAGNE S;NULL;NULL;02 51 65 17 88;NULL;29011;NULL;
+255081;FX;VBM;D;49 BAUGE;NULL;NULL;02 41 89 01 50;NULL;29012;NULL;
+255082;FX;BMCE POINT P PERE;NULL;45 ORLEANS CE;NULL;NULL;0 ;NULL;29018;NULL;
+255083;FX;COMAFRANC PERE;A+;90 BELFORT;NULL;NULL;03 84 26 33 79;NULL;29019;NULL;
+255084;FX;COMAFRANC PERE;A+;90 BELFORT;NULL;NULL;0 ;compta.fournisseur(a)comafranc.fr;29019;NULL;
+255085;FX;COMASUD PERE;NULL;13 MARSEILLE;NULL;NULL;0 ;NULL;29020;NULL;
+255086;FX;COMASUD PERE;NULL;83 BRIGNOLES;NULL;NULL;04 94 69 33 11;NULL;29025;NULL;
+255087;FX;MATERIAUX SERVICE PERE;NULL;92 CLAMART;NULL;NULL;01 46 30 12 43;NULL;29026;NULL;
+255088;FX;MEGNIEN PERE;NULL;86 VOUNEUIL S;NULL;NULL;0 ;NULL;29027;NULL;
+255089;FX;MOREAU PERE;NULL;54 NANCY;NULL;NULL;0 ;NULL;29028;NULL;
+255090;FX;RESEAU PRO CENTRE OUEST;NULL;37 ST PIERRE;NULL;NULL;0 ;NULL;29030;NULL;
+255091;FX;RESEAU PRO IDF;NULL;94 BONNEUIL S;NULL;NULL;0 ;NULL;29032;NULL;
+255092;FX;POINT P PERE;NULL;73 CHAMBERY C;NULL;NULL;04 79 96 80 49;NULL;29033;NULL;
+255093;FX;POINT P PERE;NULL;60 NOYON;NULL;NULL;0344B094409;NULL;29035;NULL;
+255094;FX;POINT P PERE SONEN;NULL;76 LE HAVRE;NULL;NULL;0 ;NULL;29037;NULL;
+255095;FX;SAMSE;D;38 GRENOBLE;NULL;NULL;04 76 46 88 67;NULL;29040;NULL;
+255096;FX;SAMSE;D;38 GRENOBLE;NULL;NULL;0 ;eric-vogler(a)samse.fr;29040;NULL;
+255097;FX;BRICORAMA PERE;B;93 NOISY LE G;NULL;NULL;0 ;NULL;29045;NULL;
+255098;FX;EURODRAP;NULL;75 PARIS;NULL;NULL;01 43 70 26 99;david(a)suntwist.fr;40002;NULL;
+255099;FX;CL DIVERS INTERIEURS;NULL;45 CHECY;NULL;NULL;0 ;NULL;40009;NULL;
+255100;FX;BS DECORS;NULL;78 LES MUREAU;NULL;NULL;01 30 99 65 50;NULL;40010;NULL;
+255101;FX;MADECO;A+;59 PONT A MAR;NULL;NULL;03 20 18 06 01;NULL;40016;NULL;
+255102;FX;MADECO;A+;59 PONT A MAR;NULL;NULL;0 ;vlecocq(a)madeco.fr;40016;NULL;
+255103;FX;CL DIVERS APPRO INTERIEUR;NULL;45 CHECY;NULL;NULL;02 38 60 41 80;NULL;40021;NULL;
+255104;FX;FIMA 4638;NULL;43 TENCE;NULL;NULL;04 71 65 42 11;NULL;40031;NULL;
+255105;FX;TRANSPORTS LOTRA 6005;NULL;45 ORMES;NULL;NULL;02 38 74 75 74;NULL;40032;NULL;
+255106;FX;CLIPS;A+;14 FALAISE;NULL;NULL;02 31 40 07 50;NULL;40047;NULL;
+255107;FX;BHV PARIS;D;75 PARIS;NULL;NULL;01 42 74 95 63;NULL;40049;NULL;
+255108;FX;BHV PARIS;D;75 PARIS;NULL;NULL;0 ;isabelle.lechampion(a)franciaflex.com;40049;NULL;
+255109;FX;DIMATER;NULL;69 CALUIRE ET;NULL;NULL;04 78 23 30 86;NULL;40061;NULL;
+255110;FX;CL DIVERS INTERIEURS SANS TVA;NULL;45 CHECY;NULL;NULL;0 ;NULL;40062;NULL;
+255111;FX;SNER;A+;14 FALAISE;NULL;NULL;02 54 44 24 33;NULL;40063;NULL;
+255112;FX;SNER;A+;14 FALAISE;NULL;NULL;02 31 40 16 65;NULL;40063;NULL;
+255113;FX;SNER;A+;14 FALAISE;NULL;NULL;0 ;NULL;40063;NULL;
+255114;FX;SNER;A+;14 FALAISE;NULL;NULL;02 35 63 98 52;NULL;40063;NULL;
+255115;FX;ABASSES INGENERIE;A;42 FARNAY;NULL;NULL;04 77 73 44 48;NULL;40065;NULL;
+255116;FX;BCL DECOR SAS;NULL;89 AUXERRE CE;NULL;NULL;03 86 94 82 80;bcl-decor(a)wanadoo.fr;40072;NULL;
+255117;FX;AGENOR;A;45 ST JEAN DE;NULL;NULL;02 38 61 57 99;NULL;40074;NULL;
+255118;FX;CLOISAL;A;56 QUEVEN;NULL;NULL;02 97 05 40 91;NULL;40085;NULL;
+255119;FX;FRANCIAFLEX OUTILS DE VENTE;NULL;45 CHECY;NULL;NULL;0 ;NULL;40090;NULL;
+255120;FX;ROCHE HABITAT;NULL;69 St BONNET;NULL;NULL;04 72 48 31 90;NULL;45001;NULL;
+255121;FX;ROCHE HABITAT;NULL;69 St BONNET;NULL;NULL;0 ;NULL;45001;NULL;
+255122;FX;PERSONNEL VENTES EXTERIEUR;NULL;38 LA TOUR DU;NULL;NULL;0 ;NULL;45004;NULL;
+255123;FX;CL DIVERS EXTERIEURS FOURN;NULL;38 LA TOUR DU;NULL;NULL;02 47 92 22 60;NULL;45009;NULL;
+255124;FX;CL DIVERS EXTERIEURS FOURN;NULL;38 LA TOUR DU;NULL;NULL;0 ;NULL;45009;NULL;
+255125;FX;FRANCE FERMETURES;NULL;18 VIERZON CE;NULL;NULL;08 25 08 08 16;NULL;45027;NULL;
+255126;FX;FRANCE FERMETURES;NULL;18 VIERZON CE;NULL;NULL;02 48 52 11 67;NULL;45027;NULL;
+255127;FX;FRANCE FERMETURES;NULL;18 VIERZON CE;NULL;NULL;0 ;NULL;45027;NULL;
1
0
25 Feb '14
Author: kmorin
Date: 2014-02-25 10:19:54 +0100 (Tue, 25 Feb 2014)
New Revision: 12
Url: http://codelutin.com/projects/faxtomail/repository/revisions/12
Log:
refs #4231 Faire les UI de tous les ?\195?\169crans
Added:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/FaxToMailUserImpl.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentModelAware.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/ButtonHistory.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java
Modified:
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.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/InitFaxToMailService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java
trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties
trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties
trunk/faxtomail-ui-swing/pom.xml
trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeTableModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
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/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
trunk/faxtomail-ui-swing/src/main/resources/log4j.properties
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
trunk/pom.xml
Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/FaxToMailUserImpl.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/FaxToMailUserImpl.java (rev 0)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/FaxToMailUserImpl.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,9 @@
+package com.franciaflex.faxtomail.persistence.entities;
+
+public class FaxToMailUserImpl extends FaxToMailUserAbstract {
+
+ @Override
+ public String toString() {
+ return getTrigraph() + " - " + getFirstName() + " " + getLastName();
+ }
+}
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceSupport.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -32,6 +32,7 @@
import com.franciaflex.faxtomail.services.service.FaxToMailWebApplicationContext;
import com.franciaflex.faxtomail.services.service.MailFilterService;
import com.franciaflex.faxtomail.services.service.MailFolderService;
+import com.franciaflex.faxtomail.services.service.ReferentielService;
import java.util.Date;
@@ -83,4 +84,8 @@
public EmailService getEmailService() {
return newService(EmailService.class);
}
+
+ public ReferentielService getReferentielService() {
+ return newService(ReferentielService.class);
+ }
}
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-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -1,5 +1,7 @@
package com.franciaflex.faxtomail.services.service;
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.persistence.entities.AttachmentTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
@@ -7,6 +9,8 @@
import com.franciaflex.faxtomail.persistence.entities.HistoryTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.HistoryType;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -24,6 +28,43 @@
private static final Log log = LogFactory.getLog(EmailService.class);
+ public Email saveEmail(Email email, FaxToMailUser user) {
+
+ if (email.getAttachment() != null) {
+ AttachmentTopiaDao attachmentDao = getPersistenceContext().getAttachmentDao();
+ for (Attachment attachment : email.getAttachment()) {
+ if (!attachment.isPersisted()) {
+ attachmentDao.create(attachment);
+ } else {
+ attachmentDao.update(attachment);
+ }
+ }
+ }
+
+ if (email.getRangeRow() != null) {
+ RangeRowTopiaDao rangeRowDao = getPersistenceContext().getRangeRowDao();
+ for (RangeRow rangeRow : email.getRangeRow()) {
+ if (!rangeRow.isPersisted()) {
+ rangeRowDao.create(rangeRow);
+ } else {
+ rangeRowDao.update(rangeRow);
+ }
+ }
+ }
+
+ HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
+ History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
+ History.PROPERTY_FAX_TO_MAIL_USER, user,
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+ email.addHistory(history);
+
+ EmailTopiaDao dao = getPersistenceContext().getEmailDao();
+ Email result = dao.update(email);
+ getPersistenceContext().commit();
+
+ return result;
+ }
+
public List<Email> getEmailForFolder(MailFolder folder) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
return new ArrayList<>(dao.forMailFolderEquals(folder).findAll());
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-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -25,6 +25,7 @@
*/
import com.franciaflex.faxtomail.FaxToMailConfiguration;
+import com.franciaflex.faxtomail.persistence.entities.Client;
import com.franciaflex.faxtomail.persistence.entities.Company;
import com.franciaflex.faxtomail.persistence.entities.CompanyTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.ConfigurationTopiaDao;
@@ -34,6 +35,8 @@
import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao;
+import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
+import com.franciaflex.faxtomail.persistence.entities.EtatAttenteTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroupTopiaDao;
@@ -46,6 +49,8 @@
import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.persistence.entities.PriorityTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Range;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.RangeTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
import com.google.common.collect.Lists;
@@ -55,6 +60,10 @@
import org.nuiton.jaxx.application.ApplicationTechnicalException;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -127,40 +136,100 @@
long count = demandTypeDao.count();
if (count == 0) {
+ List<Client> clients;
+ try {
+ File clientFile = new File(ClassLoader.getSystemResource("fx_clients.csv").toURI());
+ clients = getReferentielService().importClients(clientFile);
+
+ } catch(IOException | URISyntaxException e) {
+ clients = new ArrayList<>();
+ }
+
List<DemandType> types = Lists.newArrayList(
demandTypeDao.create(DemandType.PROPERTY_LABEL, "Commande"),
- demandTypeDao.create(DemandType.PROPERTY_LABEL, "SAV")
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Commande Réponse"),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Commande Annulation/Modification"),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Devis Diffus"),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Devis Chantier"),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Devis Gros Chantier"),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Devis Réponse/Modification"),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Réclamation"),
+ demandTypeDao.create(DemandType.PROPERTY_LABEL, "Autres")
);
DemandStatusTopiaDao demandStatusDao = getPersistenceContext().getDemandStatusDao();
List<DemandStatus> statuses = Lists.newArrayList(
- demandStatusDao.create(DemandStatus.PROPERTY_LABEL, "Non traîtée"),
+ demandStatusDao.create(DemandStatus.PROPERTY_LABEL, "Non traîté"),
demandStatusDao.create(DemandStatus.PROPERTY_LABEL, "En cours"),
- demandStatusDao.create(DemandStatus.PROPERTY_LABEL, "Validée")
+ demandStatusDao.create(DemandStatus.PROPERTY_LABEL, "Transmis EDI"),
+ demandStatusDao.create(DemandStatus.PROPERTY_LABEL, "Transféré"),
+ demandStatusDao.create(DemandStatus.PROPERTY_LABEL, "Archive")
);
+ EtatAttenteTopiaDao etatAttenteDao = getPersistenceContext().getEtatAttenteDao();
+ List<EtatAttente> etatAttentes = Lists.newArrayList(
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "REM Attente Remise-accord expo"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "ODC attente Ouverture de Compte"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "GRA attente accord gratuit"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "CLT attente réponse client"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "PPC attente chiffrage BEI PPC"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "SIGN attente réponse BEI signature"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "PROFORMA attente paiement proforma"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "BAT attente retour BAT lettrage-logo"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "GAB attente reception gabarit"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "PROTO attente accord proto"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "DAC attente pour assistance chantier"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "DAV attente analyse avoir"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "RET attente retour materiel"),
+ etatAttenteDao.create(Range.PROPERTY_LABEL, "EXP attente expertise")
+ );
+
PriorityTopiaDao priorityDao = getPersistenceContext().getPriorityDao();
List<Priority> priorities = Lists.newArrayList(
- priorityDao.create(Priority.PROPERTY_LABEL, "Basse"),
- priorityDao.create(Priority.PROPERTY_LABEL, "Normale"),
- priorityDao.create(Priority.PROPERTY_LABEL, "Haute"),
- priorityDao.create(Priority.PROPERTY_LABEL, "Urgente")
+ priorityDao.create(Priority.PROPERTY_LABEL, "-"),
+ priorityDao.create(Priority.PROPERTY_LABEL, "!"),
+ priorityDao.create(Priority.PROPERTY_LABEL, "F")
);
RangeTopiaDao rangeDao = getPersistenceContext().getRangeDao();
List<Range> ranges = Lists.newArrayList(
- rangeDao.create(Range.PROPERTY_LABEL, "Menuiserie"),
- rangeDao.create(Range.PROPERTY_LABEL, "Volets roulants"),
- rangeDao.create(Range.PROPERTY_LABEL, "Accessoires")
+ rangeDao.create(Range.PROPERTY_LABEL, "FFE VR"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FFE AUTRE"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FME FX DROIT"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FME FX CINTRE"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FME NOEL"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FSE BANNE"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FSE ROCH AUTRE"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FSE CHECY"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FSI"),
+ rangeDao.create(Range.PROPERTY_LABEL, "FSI FMI")
);
FaxToMailUserTopiaDao userDao = getPersistenceContext().getFaxToMailUserDao();
- FaxToMailUser marc = userDao.create(FaxToMailUser.PROPERTY_NAME, "Marc Lefebvre", FaxToMailUser.PROPERTY_LOGIN, "mlefebvre");
- FaxToMailUser cyril = userDao.create(FaxToMailUser.PROPERTY_NAME, "Cyril Baillet", FaxToMailUser.PROPERTY_LOGIN, "cbaillet");
- FaxToMailUser frederic = userDao.create(FaxToMailUser.PROPERTY_NAME, "Frédéric Viala", FaxToMailUser.PROPERTY_LOGIN, "fviala");
- FaxToMailUser claire = userDao.create(FaxToMailUser.PROPERTY_NAME, "Claire Marquis", FaxToMailUser.PROPERTY_LOGIN, "cmarquis");
- FaxToMailUser agathe = userDao.create(FaxToMailUser.PROPERTY_NAME, "Agathe Borde", FaxToMailUser.PROPERTY_LOGIN, "aborde");
- FaxToMailUser jeanne = userDao.create(FaxToMailUser.PROPERTY_NAME, "Jeanne Bourgoin", FaxToMailUser.PROPERTY_LOGIN, "jbourgoin");
+ FaxToMailUser marc = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Lefèbvre",
+ FaxToMailUser.PROPERTY_FIRST_NAME, "Marc",
+ FaxToMailUser.PROPERTY_LOGIN, "mlefebvre",
+ FaxToMailUser.PROPERTY_TRIGRAPH, "MLE");
+ FaxToMailUser cyril = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Baillet",
+ FaxToMailUser.PROPERTY_FIRST_NAME, "Cyril",
+ FaxToMailUser.PROPERTY_LOGIN, "cbaillet",
+ FaxToMailUser.PROPERTY_TRIGRAPH, "CBA");
+ FaxToMailUser frederic = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Viala",
+ FaxToMailUser.PROPERTY_FIRST_NAME, "Frédéric",
+ FaxToMailUser.PROPERTY_LOGIN, "fviala",
+ FaxToMailUser.PROPERTY_TRIGRAPH, "FVI");
+ FaxToMailUser claire = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Marquis",
+ FaxToMailUser.PROPERTY_FIRST_NAME, "Claire",
+ FaxToMailUser.PROPERTY_LOGIN, "cmarquis",
+ FaxToMailUser.PROPERTY_TRIGRAPH, "CMA");
+ FaxToMailUser agathe = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Borde",
+ FaxToMailUser.PROPERTY_FIRST_NAME, "Agathe",
+ FaxToMailUser.PROPERTY_LOGIN, "aborde",
+ FaxToMailUser.PROPERTY_TRIGRAPH, "ABO");
+ FaxToMailUser jeanne = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Bourgoin",
+ FaxToMailUser.PROPERTY_FIRST_NAME, "Jeanne",
+ FaxToMailUser.PROPERTY_LOGIN, "jbourgoin",
+ FaxToMailUser.PROPERTY_TRIGRAPH, "JBO");
MailFolderTopiaDao folderDao = getPersistenceContext().getMailFolderDao();
List<MailFolder> folders = new ArrayList<>();
@@ -168,69 +237,24 @@
Random random = new Random();
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
+ RangeRowTopiaDao rangeRowDao = getPersistenceContext().getRangeRowDao();
MailFolder cyrilFolder = folderDao.create(MailFolder.PROPERTY_NAME, "Cyril");
int r = random.nextInt(10) + 5;
for (int i = 0 ; i < r ; i++) {
- History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
- History.PROPERTY_MODIFICATION_DATE, new Date());
-
- Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, RandomStringUtils.randomAlphabetic(8) + "@" + RandomStringUtils.randomAlphabetic(5) + ".fr",
- Email.PROPERTY_OBJECT, RandomStringUtils.randomAlphabetic(10),
- Email.PROPERTY_RECEPTION_DATE, new Date(),
- Email.PROPERTY_MAIL_FOLDER, cyrilFolder,
- Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
- Email.PROPERTY_DEMAND_STATUS, statuses.get(random.nextInt(statuses.size())),
- Email.PROPERTY_PRIORITY, priorities.get(random.nextInt(priorities.size())),
- Email.PROPERTY_RANGE, Lists.newArrayList(ranges.get(random.nextInt(ranges.size()))),
- Email.PROPERTY_HISTORY, Lists.newArrayList(history));
-
-
- if (random.nextBoolean()) {
- getEmailService().addToOpeningHistory(email, cyril, new Date());
- }
+ createEmail(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, statuses, priorities, cyrilFolder, cyril);
}
MailFolder claireFolder = folderDao.create(MailFolder.PROPERTY_NAME, "Claire");
r = random.nextInt(10) + 5;
for (int i = 0 ; i < r ; i++) {
- History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
- History.PROPERTY_MODIFICATION_DATE, new Date());
-
- Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, RandomStringUtils.randomAlphabetic(8) + "@" + RandomStringUtils.randomAlphabetic(5) + ".fr",
- Email.PROPERTY_OBJECT, RandomStringUtils.randomAlphabetic(10),
- Email.PROPERTY_RECEPTION_DATE, new Date(),
- Email.PROPERTY_MAIL_FOLDER, claireFolder,
- Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
- Email.PROPERTY_DEMAND_STATUS, statuses.get(random.nextInt(statuses.size())),
- Email.PROPERTY_PRIORITY, priorities.get(random.nextInt(priorities.size())),
- Email.PROPERTY_RANGE, Lists.newArrayList(ranges.get(random.nextInt(ranges.size()))),
- Email.PROPERTY_HISTORY, Lists.newArrayList(history));
-
- if (random.nextBoolean()) {
- getEmailService().addToOpeningHistory(email, claire, new Date());
- }
+ createEmail(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, statuses, priorities, claireFolder, claire);
}
MailFolder agatheFolder = folderDao.create(MailFolder.PROPERTY_NAME, "Agathe");
r = random.nextInt(10) + 5;
for (int i = 0 ; i < r ; i++) {
- History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
- History.PROPERTY_MODIFICATION_DATE, new Date());
-
- Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, RandomStringUtils.randomAlphabetic(8) + "@" + RandomStringUtils.randomAlphabetic(5) + ".fr",
- Email.PROPERTY_OBJECT, RandomStringUtils.randomAlphabetic(10),
- Email.PROPERTY_RECEPTION_DATE, new Date(),
- Email.PROPERTY_MAIL_FOLDER, agatheFolder,
- Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
- Email.PROPERTY_DEMAND_STATUS, statuses.get(random.nextInt(statuses.size())),
- Email.PROPERTY_PRIORITY, priorities.get(random.nextInt(priorities.size())),
- Email.PROPERTY_RANGE, Lists.newArrayList(ranges.get(random.nextInt(ranges.size()))),
- Email.PROPERTY_HISTORY, Lists.newArrayList(history));
-
- if (random.nextBoolean()) {
- getEmailService().addToOpeningHistory(email, agathe, new Date());
- }
+ createEmail(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, statuses, priorities, agatheFolder, agathe);
}
folders.add(folderDao.create(MailFolder.PROPERTY_NAME, "Chargés de clientèle",
@@ -239,64 +263,19 @@
MailFolder marcFolder = folderDao.create(MailFolder.PROPERTY_NAME, "Marc");
r = random.nextInt(10) + 5;
for (int i = 0 ; i < r ; i++) {
- History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
- History.PROPERTY_MODIFICATION_DATE, new Date());
-
- Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, RandomStringUtils.randomAlphabetic(8) + "@" + RandomStringUtils.randomAlphabetic(5) + ".fr",
- Email.PROPERTY_OBJECT, RandomStringUtils.randomAlphabetic(10),
- Email.PROPERTY_RECEPTION_DATE, new Date(),
- Email.PROPERTY_MAIL_FOLDER, marcFolder,
- Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
- Email.PROPERTY_DEMAND_STATUS, statuses.get(random.nextInt(statuses.size())),
- Email.PROPERTY_PRIORITY, priorities.get(random.nextInt(priorities.size())),
- Email.PROPERTY_RANGE, Lists.newArrayList(ranges.get(random.nextInt(ranges.size()))),
- Email.PROPERTY_HISTORY, Lists.newArrayList(history));
-
- if (random.nextBoolean()) {
- getEmailService().addToOpeningHistory(email, marc, new Date());
- }
+ createEmail(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, statuses, priorities, marcFolder, marc);
}
MailFolder fredericFolder = folderDao.create(MailFolder.PROPERTY_NAME, "Frédéric");
r = random.nextInt(10) + 5;
for (int i = 0 ; i < r ; i++) {
- History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
- History.PROPERTY_MODIFICATION_DATE, new Date());
-
- Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, RandomStringUtils.randomAlphabetic(8) + "@" + RandomStringUtils.randomAlphabetic(5) + ".fr",
- Email.PROPERTY_OBJECT, RandomStringUtils.randomAlphabetic(10),
- Email.PROPERTY_RECEPTION_DATE, new Date(),
- Email.PROPERTY_MAIL_FOLDER, fredericFolder,
- Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
- Email.PROPERTY_DEMAND_STATUS, statuses.get(random.nextInt(statuses.size())),
- Email.PROPERTY_PRIORITY, priorities.get(random.nextInt(priorities.size())),
- Email.PROPERTY_RANGE, Lists.newArrayList(ranges.get(random.nextInt(ranges.size()))),
- Email.PROPERTY_HISTORY, Lists.newArrayList(history));
-
- if (random.nextBoolean()) {
- getEmailService().addToOpeningHistory(email, frederic, new Date());
- }
+ createEmail(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, statuses, priorities, fredericFolder, frederic);
}
MailFolder jeanneFolder = folderDao.create(MailFolder.PROPERTY_NAME, "Jeanne");
r = random.nextInt(10) + 5;
for (int i = 0 ; i < r ; i++) {
- History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
- History.PROPERTY_MODIFICATION_DATE, new Date());
-
- Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, RandomStringUtils.randomAlphabetic(8) + "@" + RandomStringUtils.randomAlphabetic(5) + ".fr",
- Email.PROPERTY_OBJECT, RandomStringUtils.randomAlphabetic(10),
- Email.PROPERTY_RECEPTION_DATE, new Date(),
- Email.PROPERTY_MAIL_FOLDER, jeanneFolder,
- Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
- Email.PROPERTY_DEMAND_STATUS, statuses.get(random.nextInt(statuses.size())),
- Email.PROPERTY_PRIORITY, priorities.get(random.nextInt(priorities.size())),
- Email.PROPERTY_RANGE, Lists.newArrayList(ranges.get(random.nextInt(ranges.size()))),
- Email.PROPERTY_HISTORY, Lists.newArrayList(history));
-
- if (random.nextBoolean()) {
- getEmailService().addToOpeningHistory(email, jeanne, new Date());
- }
+ createEmail(random, historyDao, rangeRowDao, emailDao, ranges, clients, types, statuses, priorities, jeanneFolder, jeanne);
}
folders.add(folderDao.create(MailFolder.PROPERTY_NAME, "SAV",
MailFolder.PROPERTY_CHILDREN, Lists.newArrayList(marcFolder, fredericFolder, jeanneFolder)));
@@ -318,4 +297,53 @@
}
}
+ protected void createEmail(Random random,
+ HistoryTopiaDao historyDao,
+ RangeRowTopiaDao rangeRowDao,
+ EmailTopiaDao emailDao,
+ List<Range> ranges,
+ List<Client> clients,
+ List<DemandType> types,
+ List<DemandStatus> statuses,
+ List<Priority> priorities,
+ MailFolder folder,
+ FaxToMailUser user) {
+
+ History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION,
+ History.PROPERTY_MODIFICATION_DATE, new Date());
+
+ List<RangeRow> rangeRows = new ArrayList<>();
+ for (int j = 0 ; j < random.nextInt(4) + 1 ; j++) {
+ RangeRow rangeRow = rangeRowDao.create(RangeRow.PROPERTY_RANGE, ranges.get(random.nextInt(ranges.size())),
+ RangeRow.PROPERTY_COMMAND_NUMBER, RandomStringUtils.randomNumeric(6),
+ RangeRow.PROPERTY_PRODUCT_QUANTITY, random.nextInt(100),
+ RangeRow.PROPERTY_SAV_QUANTITY, random.nextInt(100));
+ rangeRows.add(rangeRow);
+ }
+
+ Client client = clients.get(random.nextInt(clients.size()));
+ String senderEmail = client.getEmailAddress();
+ if (senderEmail == null && client.getFaxNumber() != null) {
+ senderEmail = client.getFaxNumber().replace(" ", "") + "@franciaflex.fax";
+ }
+
+ boolean opened = random.nextBoolean();
+ Email email = emailDao.create(Email.PROPERTY_SENDER_EMAIL_ADDRESS, senderEmail,
+ Email.PROPERTY_CLIENT_CODE, client.getCode(),
+ Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " +
+ SimpleDateFormat.getDateTimeInstance().format(new Date()),
+ Email.PROPERTY_RECEPTION_DATE, new Date(),
+ Email.PROPERTY_MAIL_FOLDER, folder,
+ Email.PROPERTY_DEMAND_TYPE, types.get(random.nextInt(types.size())),
+ Email.PROPERTY_DEMAND_STATUS, statuses.get(opened ? 1 : 0),
+ Email.PROPERTY_PRIORITY, priorities.get(0),
+ Email.PROPERTY_RANGE_ROW, rangeRows,
+ Email.PROPERTY_HISTORY, Lists.newArrayList(history));
+
+
+ if (opened) {
+ getEmailService().addToOpeningHistory(email, user, new Date());
+ }
+ }
+
}
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-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielService.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -1,18 +1,34 @@
package com.franciaflex.faxtomail.services.service;
+import com.franciaflex.faxtomail.persistence.entities.Client;
+import com.franciaflex.faxtomail.persistence.entities.ClientTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.DemandStatusTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.DemandType;
import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao;
+import com.franciaflex.faxtomail.persistence.entities.EtatAttente;
+import com.franciaflex.faxtomail.persistence.entities.EtatAttenteTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.persistence.entities.PriorityTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Range;
import com.franciaflex.faxtomail.persistence.entities.RangeTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
+import com.franciaflex.faxtomail.services.service.imports.ClientImportModel;
+import com.google.common.base.Charsets;
+import com.google.common.io.Files;
+import org.apache.commons.io.IOUtils;
+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.Reader;
import java.util.ArrayList;
import java.util.List;
+import static org.nuiton.i18n.I18n.t;
+
/**
* @author kmorin <kmorin(a)codelutin.com>
* @since x.x
@@ -38,4 +54,51 @@
RangeTopiaDao dao = getPersistenceContext().getRangeDao();
return new ArrayList<>(dao.findAll());
}
+
+ public List<EtatAttente> getAllEtatAttente() {
+ EtatAttenteTopiaDao dao = getPersistenceContext().getEtatAttenteDao();
+ return new ArrayList<>(dao.findAll());
+ }
+
+ public List<Client> getAllClients() {
+ ClientTopiaDao dao = getPersistenceContext().getClientDao();
+ return new ArrayList<>(dao.findAll());
+ }
+
+ public List<Client> importClients(File csvFile) throws IOException {
+ 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);
+ try {
+ for (Client client : importer) {
+ result.add(dao.create(client));
+ }
+ getPersistenceContext().commit();
+
+ } 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) {
+ message = e.getCause().getMessage();
+ } else {
+ message = e.getMessage();
+ }
+ throw new ApplicationTechnicalException(message, e);
+
+ } finally {
+ IOUtils.closeQuietly(reader);
+ }
+ return result;
+ }
}
Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java (rev 0)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,47 @@
+package com.franciaflex.faxtomail.services.service.imports;
+
+import com.franciaflex.faxtomail.persistence.entities.Client;
+import com.franciaflex.faxtomail.persistence.entities.ClientImpl;
+import org.nuiton.csv.ValueParser;
+import org.nuiton.csv.ext.AbstractImportModel;
+
+import java.text.ParseException;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class ClientImportModel extends AbstractImportModel<Client> {
+
+ public ClientImportModel(char separator) {
+ super(separator);
+
+ ValueParser<String> nullParser = new ValueParser<String>() {
+ @Override
+ public String parse(String s) throws ParseException {
+ if ("NULL".equals(s)) {
+ s = null;
+ }
+ return s;
+ }
+ };
+ newMandatoryColumn("Id_Correspondance", Client.PROPERTY_ID);
+ newMandatoryColumn("Nom", Client.PROPERTY_NAME);
+ newMandatoryColumn("Caracteristique1", Client.PROPERTY_CARACTERISTIC1, nullParser);
+ newMandatoryColumn("Caracteristique2", Client.PROPERTY_CARACTERISTIC2, nullParser);
+ newMandatoryColumn("Caracteristique3", Client.PROPERTY_CARACTERISTIC3, nullParser);
+ newMandatoryColumn("Numero_Fax", Client.PROPERTY_FAX_NUMBER, nullParser);
+ newMandatoryColumn("Adresse_Mail", Client.PROPERTY_EMAIL_ADDRESS, nullParser);
+ newMandatoryColumn("Code_Client", Client.PROPERTY_CODE);
+
+ newIgnoredColumn("Societe");
+ newIgnoredColumn("Client_Top");
+ newIgnoredColumn("Objet_Message");
+ newIgnoredColumn("Destination");
+ }
+
+ @Override
+ public Client newEmptyInstance() {
+ return new ClientImpl();
+ }
+}
Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties
===================================================================
--- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_en_GB.properties 2014-02-25 09:19:54 UTC (rev 12)
@@ -10,6 +10,7 @@
faxtomail.service.compressZipFile.error=
faxtomail.service.config.deleteTempDirectory.error=
faxtomail.service.mkDir.error=
+faxtomail.service.referential.import.clients.error=
tutti.config.option.basedir.description=
tutti.config.option.csv.separator.description=
tutti.config.option.inceptionYear.description=
Modified: trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties
===================================================================
--- trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-service/src/main/resources/i18n/faxtomail-service_fr_FR.properties 2014-02-25 09:19:54 UTC (rev 12)
@@ -10,6 +10,7 @@
faxtomail.service.compressZipFile.error=
faxtomail.service.config.deleteTempDirectory.error=
faxtomail.service.mkDir.error=
+faxtomail.service.referential.import.clients.error=
tutti.config.option.basedir.description=
tutti.config.option.csv.separator.description=
tutti.config.option.inceptionYear.description=
Modified: trunk/faxtomail-ui-swing/pom.xml
===================================================================
--- trunk/faxtomail-ui-swing/pom.xml 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/pom.xml 2014-02-25 09:19:54 UTC (rev 12)
@@ -228,7 +228,26 @@
<scope>runtime</scope>
</dependency>
+ <!--<dependency>-->
+ <!--<groupId>net.atlanticbb.tantlinger</groupId>-->
+ <!--<artifactId>shef</artifactId>-->
+ <!--</dependency>-->
+ <!--<dependency>-->
+ <!--<groupId>jtidy</groupId>-->
+ <!--<artifactId>jtidy</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.bushe</groupId>-->
+ <!--<artifactId>sam</artifactId>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>novaworx</groupId>-->
+ <!--<artifactId>novaworx-syntax</artifactId>-->
+ <!--</dependency>-->
+
</dependencies>
<build>
Modified: trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties 2014-02-25 09:19:54 UTC (rev 12)
@@ -1,24 +1,3 @@
-###
-# #%L
-# FaxToMail :: UI
-# %%
-# Copyright (C) 2014 Franciaflex
-# %%
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program. If not, see
-# <http://www.gnu.org/licenses/gpl-3.0.html>.
-# #L%
-###
# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
@@ -42,11 +21,12 @@
# - MPL 1.1
# - New BSD License
# - The Apache Software License, Version 2.0
+# - The H2 License, Version 1.0
# - license.txt
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Fri Jan 31 09:36:44 CET 2014
+#Tue Feb 25 10:11:09 CET 2014
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ReplyAction.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,31 @@
+package com.franciaflex.faxtomail.ui.swing.actions;
+
+import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUI;
+import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.demande.ReplyFormUIModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class ReplyAction extends AbstractFaxToMailAction<ReplyFormUIModel, ReplyFormUI, ReplyFormUIHandler> {
+
+ private static final Log log = LogFactory.getLog(ReplyAction.class);
+
+ public ReplyAction(ReplyFormUIHandler handler) {
+ super(handler, false);
+ }
+
+ @Override
+ public void doAction() throws Exception {
+ log.warn("do reply");
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ handler.closeDialog();
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,43 @@
+package com.franciaflex.faxtomail.ui.swing.actions;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIHandler;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class SaveDemandeAction extends ShowDemandeListAction {
+
+ protected DemandeUIModel demandeModel;
+
+ public SaveDemandeAction(MainUIHandler handler) {
+ super(handler);
+ }
+
+ public SaveDemandeAction(DemandeUIHandler handler) {
+ super(handler.getContext().getMainUI().getHandler());
+ }
+
+ public DemandeUIModel getDemandeModel() {
+ return demandeModel;
+ }
+
+ public void setDemandeModel(DemandeUIModel demandeModel) {
+ this.demandeModel = demandeModel;
+ }
+
+ @Override
+ public void doAction() throws Exception {
+ FaxToMailUser currentUser = getContext().getCurrentUser();
+ Email currentEmail = getContext().getCurrentEmail();
+ Email email = demandeModel.toEntity(currentEmail);
+ getContext().getEmailService().saveEmail(email, currentUser);
+
+ super.doAction();
+ }
+
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -52,7 +52,7 @@
Email currentEmail = getContext().getCurrentEmail();
if (!getContext().getCurrentUser().equals(currentEmail.getTakenBy())) {
displayWarningMessage(t("faxtomail.alert.alreadyTakenBy.title"),
- t("faxtomail.alert.alreadyTakenBy.message", currentEmail.getTakenBy().getName()));
+ t("faxtomail.alert.alreadyTakenBy.message", currentEmail.getTakenBy().toString()));
}
}
}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/TransmitAction.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,23 @@
+package com.franciaflex.faxtomail.ui.swing.actions;
+
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
+import com.franciaflex.faxtomail.ui.swing.content.demande.MailFolderChooserUI;
+import com.franciaflex.faxtomail.ui.swing.content.demande.MailFolderChooserUIHandler;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class TransmitAction extends AbstractFaxToMailAction<DemandeUIModel, MailFolderChooserUI, MailFolderChooserUIHandler> {
+
+ public TransmitAction(MailFolderChooserUIHandler handler) {
+ super(handler, false);
+ }
+
+ @Override
+ public void doAction() throws Exception {
+ SaveDemandeAction action = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), SaveDemandeAction.class);
+ action.setDemandeModel(getModel());
+ getContext().getActionEngine().runAction(action);
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -341,6 +341,7 @@
Email currentEmail = getContext().getCurrentEmail();
screenTitle = currentEmail.getObject();
icon = JAXXWidgetUtil.createActionIcon("email");
+ rightDecoration = ((DemandeUI) screenUI).getTopToolBar();
break;
default:
@@ -366,10 +367,7 @@
ui.getBody().setTitle(screenTitle);
ui.getBody().add(currentBody);
ui.getBody().setLeftDecoration(new JLabel(icon));
-// ui.getBody().setRightDecoration(rightDecoration);
- // Fix #2510: [AIDE] perte de l'aide contextuelle sur ecran campagne
- //FIXME tchemit-2013-05-28 Find out why
-// ui.getBody().getRightDecoration().setVisible(true);
+ ui.getBody().setRightDecoration(rightDecoration);
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeTableModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeTableModel.java 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeTableModel.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -66,9 +66,9 @@
n("faxtomail.demandeList.table.header.receptionDate"),
n("faxtomail.demandeList.table.header.receptionDate")));
- put(Email.PROPERTY_CLIENT,
+ put(Email.PROPERTY_CLIENT_CODE,
ColumnIdentifier.<Email>newReadOnlyId(
- Email.PROPERTY_CLIENT,
+ Email.PROPERTY_CLIENT_CODE,
n("faxtomail.demandeList.table.header.client"),
n("faxtomail.demandeList.table.header.client")));
@@ -126,9 +126,9 @@
n("faxtomail.demandeList.table.header.projectReference"),
n("faxtomail.demandeList.table.header.projectReference")));
- put(Email.PROPERTY_RANGE,
+ put(Email.PROPERTY_RANGE_ROW,
ColumnIdentifier.<Email>newReadOnlyId(
- Email.PROPERTY_RANGE,
+ Email.PROPERTY_RANGE_ROW,
n("faxtomail.demandeList.table.header.range"),
n("faxtomail.demandeList.table.header.range")));
@@ -140,7 +140,7 @@
}};
- protected DemandeTableModel(TableColumnModelExt columnModel) {
+ public DemandeTableModel(TableColumnModelExt columnModel) {
super(columnModel, false, false);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -20,7 +20,8 @@
* #L%
*/
BeanFilterableComboBox {
- showReset: true;
+ showReset: false;
+ showDecorator: false;
bean: {model};
}
@@ -32,6 +33,17 @@
_selectOnFocus: {true};
}
+.rightLabel {
+ horizontalAlignment: {SwingConstants.RIGHT};
+ font-style: "italic";
+}
+
+#topToolBar {
+ floatable: false;
+ opaque: false;
+ borderPainted: false;
+}
+
#objectLabel {
text: "faxtomail.demande.object.label";
}
@@ -60,6 +72,10 @@
text: "faxtomail.demande.client.label";
}
+#clientField {
+ text: {model.getClientCode()};
+}
+
#docTypeLabel {
text: "faxtomail.demande.docType.label";
}
@@ -69,14 +85,6 @@
selectedItem: {model.getDemandType()};
}
-#demandeNumberLabel {
- text: "faxtomail.demande.demandeNumber.label";
-}
-
-#demandeNumberField {
- text: {model.getCommandNb()};
-}
-
#ediCodeNumberLabel {
text: "faxtomail.demande.ediCodeNumber.label";
}
@@ -99,9 +107,8 @@
text: "faxtomail.demande.status.label";
}
-#statusComboBox {
- property: demandStatus;
- selectedItem: {model.getDemandStatus()};
+#statusField {
+ text: { model.getDemandStatus().getLabel() };
}
#etatAttenteLabel {
@@ -116,28 +123,9 @@
text: {model.getProjectReference()};
}
-#savNumberLabel {
- text: "faxtomail.demande.savNumber.label";
-}
-
-#savNumberField {
- text: {model.getSavNumber()};
-}
-
-#finishedProductsLabel {
- text: "faxtomail.demande.finishedProducts.label";
-}
-
-//#finishedProductsField {
-//
-//}
-
-#gammeLabel {
- text: "faxtomail.demande.gamme.label";
-}
-
#messageLabel {
text: "faxtomail.demande.message.label";
+ verticalAlignment: {SwingConstants.TOP};
}
#takenByLabel {
@@ -145,7 +133,7 @@
}
#takenByField {
- text: {model.getTakenBy().getName()};
+ text: {String.valueOf(model.getTakenBy())};
}
#firstOpenedByLabel {
@@ -153,7 +141,7 @@
}
#firstOpenedByField {
- text: {model.getFirstOpeningUserName()};
+ text: {model.getFirstOpeningUser()};
}
#firstOpeningDateLabel {
@@ -169,7 +157,7 @@
}
#lastModifiedByField {
- text: {model.getLastModificationUserName()};
+ text: {model.getLastModificationUser()};
}
#lastModificationDateLabel {
@@ -180,27 +168,42 @@
text: {SimpleDateFormat.getDateTimeInstance().format(model.getLastModificationDate())};
}
+#rangeTable {
+ selectionMode: {ListSelectionModel.SINGLE_SELECTION};
+}
+
#backButton {
- text: "faxtomail.demande.back.button.label";
- actionIcon: cancel;
- _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class};
+ text: "faxtomail.demande.back.button.label";
+ i18nMnemonic : "faxtomail.demande.back.button.mnemonic";
+ actionIcon: cancel;
+ _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeListAction.class};
}
#saveButton {
- text: "faxtomail.demande.save.button.label";
- actionIcon: save;
+ text: "faxtomail.demande.save.button.label";
+ i18nMnemonic : "faxtomail.demande.save.button.mnemonic";
+ actionIcon: save;
}
#transmitButton {
- text: "faxtomail.demande.transmit.button.label";
- actionIcon: transmit;
+ text: "faxtomail.demande.transmit.button.label";
+ i18nMnemonic : "faxtomail.demande.transmit.button.mnemonic";
+ actionIcon: transmit;
}
#printButton {
text: "faxtomail.demande.print.button.label";
- actionIcon: print;
+ i18nMnemonic : "faxtomail.demande.print.button.mnemonic";
+ actionIcon: print;
}
#archiveButton {
text: "faxtomail.demande.archive.button.label";
+ i18nMnemonic : "faxtomail.demande.archive.button.mnemonic";
}
+
+#replyButton {
+ text: "faxtomail.demande.reply.button.label";
+ i18nMnemonic : "faxtomail.demande.reply.button.mnemonic";
+ actionIcon: reply;
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUI.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -26,18 +26,25 @@
com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext
com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+ com.franciaflex.faxtomail.ui.swing.util.attachment.ButtonAttachment
+ com.franciaflex.faxtomail.ui.swing.util.history.ButtonHistory
com.franciaflex.faxtomail.persistence.entities.Email
com.franciaflex.faxtomail.persistence.entities.DemandType
com.franciaflex.faxtomail.persistence.entities.DemandStatus
com.franciaflex.faxtomail.persistence.entities.Range
com.franciaflex.faxtomail.persistence.entities.Priority
+ com.franciaflex.faxtomail.persistence.entities.EtatAttente
jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
org.jdesktop.swingx.JXDatePicker
org.jdesktop.swingx.JXTitledPanel
+ org.jdesktop.swingx.JXTable
+ javax.swing.ListSelectionModel
+ javax.swing.SwingConstants
+
java.text.SimpleDateFormat
java.util.Date
</import>
@@ -53,209 +60,189 @@
<DemandeUIModel id='model'
initializer='getContextValue(DemandeUIModel.class)'/>
- <JScrollPane id='demandeScrollPane' constraints='BorderLayout.CENTER'>
- <JPanel layout='{new GridLayout(0,1)}'>
+ <JToolBar id='topToolBar'>
+ <ButtonHistory id="historyButton"/>
+ <ButtonAttachment id="attachmentsButton"
+ constructorParams="model"/>
+ </JToolBar>
- <Table fill='horizontal'>
- <row>
- <cell>
- <JLabel id='receivedDateLabel'/>
- </cell>
- <cell>
- <JLabel id='receivedDateField'/>
- </cell>
+ <JSplitPane constraints='BorderLayout.CENTER'
+ orientation="{JSplitPane.VERTICAL_SPLIT}">
- <cell>
- <JLabel id='senderLabel'/>
- </cell>
- <cell>
- <JLabel id='senderField'/>
- </cell>
+ <JSplitPane orientation="{JSplitPane.HORIZONTAL_SPLIT}">
- <cell>
- <JLabel id='clientLabel'/>
- </cell>
- <cell weightx='1'>
- <JTextField id='clientField'/><!-- TODO list of clients -->
- </cell>
- </row>
- </Table>
+ <JScrollPane>
- <Table fill='horizontal'>
- <row>
- <cell anchor='east'>
- <JLabel id='objectLabel'/>
- </cell>
- <cell weightx='1' columns="5">
- <JTextField id='objectField'
- onKeyReleased='handler.setText(event, "object")'/>
- </cell>
- </row>
+ <Table fill='horizontal'>
+ <row>
+ <cell>
+ <JLabel id='receivedDateLabel'/>
+ </cell>
+ <cell>
+ <JLabel id='receivedDateField'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='senderLabel'/>
+ </cell>
+ <cell>
+ <JLabel id='senderField'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='objectLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id='objectField'
+ onKeyReleased='handler.setText(event, "object")'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='clientLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id='clientField'
+ onKeyReleased='handler.setText(event, "clientCode")'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='docTypeLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <BeanFilterableComboBox id='docTypeComboBox'
+ constructorParams='this'
+ genericType="DemandType"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='ediCodeNumberLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id='ediCodeNumberField'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='projectReferenceLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id='projectReferenceField'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='priorityLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <BeanFilterableComboBox id='priorityComboBox'
+ constructorParams='this'
+ genericType="Priority"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='statusLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <JLabel id='statusField'/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='etatAttenteLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <BeanFilterableComboBox id='etatAttenteComboBox'
+ constructorParams='this'
+ genericType="EtatAttente"/>
+ </cell>
+ </row>
- <row>
- <cell anchor='east'>
- <JLabel id='docTypeLabel'/>
- </cell>
- <cell weightx='1'>
- <BeanFilterableComboBox id='docTypeComboBox'
- constructorParams='this'
- genericType="DemandType"/>
- </cell>
+ <!--<row>-->
+ <!--<cell anchor='east'>-->
+ <!--<JLabel id='gammeLabel'/>-->
+ <!--</cell>-->
+ <!--<cell weightx='1' columns='6'>-->
+ <!--<BeanFilterableComboBox id='gammeComboBox'-->
+ <!--constructorParams='this'-->
+ <!--genericType="Range"/>-->
+ <!--</cell>-->
+ <!--</row>-->
+ <row>
+ <cell>
+ <JLabel id="takenByLabel"/>
+ </cell>
+ <cell weightx='1' >
+ <JLabel id="takenByField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="firstOpenedByLabel"/>
+ </cell>
+ <cell>
+ <JLabel id="firstOpenedByField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="firstOpeningDateLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JLabel id="firstOpeningDateField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="lastModifiedByLabel"/>
+ </cell>
+ <cell>
+ <JLabel id="lastModifiedByField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="lastModificationDateLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JLabel id="lastModificationDateField"/>
+ </cell>
+ </row>
- <cell anchor='east'>
- <JLabel id='demandeNumberLabel'/>
- </cell>
- <cell weightx='1'>
- <JTextField id='demandeNumberField'
- onKeyReleased='handler.setText(event, "commandNb")'/>
- </cell>
+ </Table>
- <cell anchor='east'>
- <JLabel id='ediCodeNumberLabel'/>
- </cell>
- <cell weightx='1'>
- <JTextField id='ediCodeNumberField'/>
- </cell>
- </row>
+ </JScrollPane>
- <row>
- <cell anchor='east'>
- <JLabel id='priorityLabel'/>
- </cell>
- <cell weightx='1'>
- <BeanFilterableComboBox id='priorityComboBox'
- constructorParams='this'
- genericType="Priority"/>
- </cell>
+ <JPanel layout="{new BorderLayout()}">
+ <JLabel id='messageLabel'
+ constraints="BorderLayout.NORTH"/>
+ <JScrollPane id='commentPane'
+ constraints="BorderLayout.CENTER">
+ <JEditorPane id='messageField'/>
+ </JScrollPane>
+ </JPanel>
- <cell anchor='east'>
- <JLabel id='statusLabel'/>
- </cell>
- <cell weightx='1'>
- <BeanFilterableComboBox id='statusComboBox'
- constructorParams='this'
- genericType="DemandStatus"/>
- </cell>
+ </JSplitPane>
- <cell anchor='east'>
- <JLabel id='etatAttenteLabel'/>
- </cell>
- <cell weightx='1'>
- <BeanFilterableComboBox id='etatAttenteComboBox'
- constructorParams='this'
- genericType="DemandStatus"/>
- </cell>
- </row>
+ <JScrollPane>
+ <JXTable id='rangeTable'/>
+ </JScrollPane>
- <row>
- <cell anchor='east'>
- <JLabel id='projectReferenceLabel'/>
- </cell>
- <cell weightx='1'>
- <JTextField id='projectReferenceField'/>
- </cell>
+ </JSplitPane>
- <cell anchor='east'>
- <JLabel id='savNumberLabel'/>
- </cell>
- <cell weightx='1'>
- <JTextField id='savNumberField'/>
- </cell>
-
- <cell anchor='east'>
- <JLabel id='finishedProductsLabel'/>
- </cell>
- <cell weightx='1'>
- <JTextField id='finishedProductsField'/>
- </cell>
- </row>
-
- <row>
- <cell anchor='east'>
- <JLabel id='gammeLabel'/>
- </cell>
- <cell weightx='1' columns='6'>
- <BeanFilterableComboBox id='gammeComboBox'
- constructorParams='this'
- genericType="Range"/>
- </cell>
- </row>
-
- <row>
- <cell anchor='east'>
- <JLabel id='messageLabel'/>
- </cell>
- <cell weightx='1' columns='5'>
- <JScrollPane id='commentPane'>
- <JTextArea id='messageField'/>
- </JScrollPane>
- </cell>
- </row>
- </Table>
-
- <Table fill='horizontal'>
- <row>
- <cell>
- <JLabel id="takenByLabel"/>
- </cell>
- <cell weightx='1' >
- <JLabel id="takenByField"/>
- </cell>
- <cell>
- <JLabel id="firstOpenedByLabel"/>
- </cell>
- <cell>
- <JLabel id="firstOpenedByField"/>
- </cell>
- <cell>
- <JLabel id="firstOpeningDateLabel"/>
- </cell>
- <cell weightx='1' >
- <JLabel id="firstOpeningDateField"/>
- </cell>
- <cell>
- <JLabel id="lastModifiedByLabel"/>
- </cell>
- <cell>
- <JLabel id="lastModifiedByField"/>
- </cell>
- <cell>
- <JLabel id="lastModificationDateLabel"/>
- </cell>
- <cell weightx='1'>
- <JLabel id="lastModificationDateField"/>
- </cell>
- </row>
-
- </Table>
-
- <JPanel id="attachmentsPanel"
- border='{BorderFactory.createTitledBorder("Pièces jointes")}'
- layout='{new GridLayout(0,1)}'>
- <JPanel layout="{new java.awt.FlowLayout(java.awt.FlowLayout.LEADING)}">
- <JLabel text="Fax - TIF (25ko)"/>
- <JButton text="Voir"/>
- <JButton text="Editer"/>
- <JButton text="Supprimer"/>
- </JPanel>
- <JPanel layout="{new java.awt.FlowLayout(java.awt.FlowLayout.LEADING)}">
- <JLabel text="Plans - DXF (254ko)"/>
- <JButton text="Voir"/>
- <JButton text="Supprimer"/>
- </JPanel>
-
- <JButton text="Ajouter"/>
- </JPanel>
-
- </JPanel>
- </JScrollPane>
-
- <JPanel constraints='BorderLayout.SOUTH'>
+ <JPanel layout='{new GridLayout(1,0)}'
+ constraints='BorderLayout.SOUTH'>
<JButton id="backButton"/>
- <JButton id="saveButton"/>
- <JButton id="transmitButton"/>
+ <JButton id="saveButton" onActionPerformed="handler.saveDemande()"/>
+ <JButton id="transmitButton" onActionPerformed="handler.transmitDemande()"/>
<JButton id="printButton"/>
<JButton id="archiveButton"/>
+ <JButton id="replyButton" onActionPerformed="handler.reply()"/>
</JPanel>
</JPanel>
\ 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-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -23,24 +23,51 @@
*/
+import com.franciaflex.faxtomail.persistence.entities.Client;
import com.franciaflex.faxtomail.persistence.entities.Company;
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.Range;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.services.service.ReferentielService;
+import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAction;
+import com.franciaflex.faxtomail.ui.swing.actions.ShowDemandeAction;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUI;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
import com.franciaflex.faxtomail.ui.swing.util.CloseableUI;
import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import org.jdesktop.swingx.table.TableColumnModelExt;
+import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.jaxx.application.swing.table.MoveToNextEditableCellAction;
+import org.nuiton.jaxx.application.swing.table.MoveToNextEditableRowAction;
+import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableCellAction;
+import org.nuiton.jaxx.application.swing.table.MoveToPreviousEditableRowAction;
import javax.swing.*;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableCellEditor;
+import javax.swing.text.Document;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.StyleSheet;
+import java.awt.*;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Date;
import java.util.List;
import static org.nuiton.i18n.I18n.t;
@@ -63,6 +90,8 @@
*/
// private final PersistenceService persistenceService;
+ protected RangeTableModel rangeTableModel;
+
@Override
public void beforeInit(DemandeUI ui) {
@@ -83,9 +112,144 @@
ReferentielService referentielService = getContext().getReferentielService();
initBeanFilterableComboBox(ui.getDocTypeComboBox(), referentielService.getAllDemandType(), model.getDemandType());
- initBeanFilterableComboBox(ui.getStatusComboBox(), referentielService.getAllDemandStatus(), model.getDemandStatus());
initBeanFilterableComboBox(ui.getPriorityComboBox(), referentielService.getAllPriority(), model.getPriority());
- initBeanFilterableComboBox(ui.getGammeComboBox(), referentielService.getAllRange(), null);
+ initBeanFilterableComboBox(ui.getEtatAttenteComboBox(), referentielService.getAllEtatAttente(), model.getEtatAttente());
+
+// HTMLEditorPane editor = ui.getMessageField();
+// HTMLEditorActionFactory.createFontSizeActionList();
+// HTMLEditorActionFactory.createInlineActionList();
+// HTMLEditorActionFactory.createBlockElementActionList();
+
+ // create some simple html as a string
+// String htmlString = "<html>\n"
+// + "<body>\n"
+// + "<h1>Welcome!</h1>\n"
+// + "<h2>This is an H2 header</h2>\n"
+// + "<p>This is some sample text</p>\n"
+// + "<p><a href=\"http://devdaily.com/blog/\">devdaily blog</a></p>\n"
+// + "</body>\n";
+
+ // create a document, set it on the jeditorpane, then add the html
+// editor.setText(htmlString);
+
+ // init table
+ final JXTable table = ui.getRangeTable();
+
+ TableColumnModelExt columnModel = new DefaultTableColumnModelExt();
+ addComboDataColumnToModel(columnModel,
+ RangeTableModel.RANGE_COLUMN,
+ getDecorator(Range.class, null),
+ referentielService.getAllRange());
+ addColumnToModel(columnModel,
+ RangeTableModel.COMMAND_NUMBER_COLUMN);
+ addIntegerColumnToModel(columnModel,
+ RangeTableModel.PRODUCT_QUANTITY_COLUMN,
+ null,
+ table);
+ addIntegerColumnToModel(columnModel,
+ RangeTableModel.SAV_QUANTITY_COLUMN,
+ null,
+ table);
+
+ rangeTableModel = new RangeTableModel(columnModel);
+ rangeTableModel.setRows(new ArrayList<RangeRow>(model.getRangeRow()));
+ table.setModel(rangeTableModel);
+ table.setColumnModel(columnModel);
+ table.getTableHeader().setReorderingAllowed(false);
+
+ final MoveToNextEditableCellAction nextCellAction =
+ MoveToNextEditableCellAction.newAction(rangeTableModel, table);
+ final MoveToPreviousEditableCellAction previousCellAction =
+ MoveToPreviousEditableCellAction.newAction(rangeTableModel, table);
+
+ final MoveToNextEditableRowAction nextRowAction =
+ MoveToNextEditableRowAction.newAction(rangeTableModel, table);
+ final MoveToPreviousEditableRowAction previousRowAction =
+ MoveToPreviousEditableRowAction.newAction(rangeTableModel, table);
+
+ KeyAdapter keyAdapter = new KeyAdapter() {
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ TableCellEditor editor = table.getCellEditor();
+
+ int keyCode = e.getKeyCode();
+ if (keyCode == KeyEvent.VK_LEFT ||
+ (keyCode == KeyEvent.VK_TAB && e.isShiftDown())) {
+ e.consume();
+ if (editor != null) {
+ editor.stopCellEditing();
+ }
+ previousCellAction.actionPerformed(null);
+
+ } else if (keyCode == KeyEvent.VK_RIGHT ||
+ keyCode == KeyEvent.VK_TAB) {
+ e.consume();
+ if (editor != null) {
+ editor.stopCellEditing();
+ }
+ nextCellAction.actionPerformed(null);
+
+ } else if (keyCode == KeyEvent.VK_UP ||
+ (keyCode == KeyEvent.VK_ENTER && e.isShiftDown())) {
+ e.consume();
+ if (editor != null) {
+ editor.stopCellEditing();
+ }
+ previousRowAction.actionPerformed(null);
+
+ } else if (e.getKeyCode() == KeyEvent.VK_ENTER ||
+ keyCode == KeyEvent.VK_DOWN) {
+ e.consume();
+ if (editor != null) {
+ editor.stopCellEditing();
+ }
+ nextRowAction.actionPerformed(null);
+ }
+ }
+ };
+
+ table.addKeyListener(keyAdapter);
+
+// Highlighter highlighter = new Highlighter() {
+// @Override
+// public Component highlight(Component renderer, ComponentAdapter adapter) {
+// int viewRow = adapter.row;
+// int modelRow = adapter.convertRowIndexToModel(viewRow);
+// Email row = (Email) tableModel.getEntry(modelRow);
+// boolean highlight = row.getTakenBy() == null;
+// if (highlight) {
+// Font font = renderer.getFont();
+// renderer.setFont(font.deriveFont(Font.BOLD));
+// }
+// return renderer;
+// }
+//
+// @Override
+// public void addChangeListener(ChangeListener l) {
+// }
+//
+// @Override
+// public void removeChangeListener(ChangeListener l) {
+// }
+//
+// @Override
+// public ChangeListener[] getChangeListeners() {
+// return new ChangeListener[0];
+// }
+// };
+// table.addHighlighter(highlighter);
+
+ rangeTableModel.addTableModelListener(new TableModelListener() {
+ @Override
+ public void tableChanged(TableModelEvent e) {
+ if (e.getType() == TableModelEvent.INSERT) {
+ RangeRow row = rangeTableModel.getEntry(e.getFirstRow());
+ getModel().addRangeRow(row);
+ }
+ }
+ });
+
}
@Override
@@ -119,4 +283,25 @@
public SwingValidator<DemandeUIModel> getValidator() {
return null;
}
+
+ public void saveDemande() {
+ SaveDemandeAction action = getContext().getActionFactory().createLogicAction(this, SaveDemandeAction.class);
+ action.setDemandeModel(getModel());
+ getContext().getActionEngine().runAction(action);
+ }
+
+ public void transmitDemande() {
+ MailFolderChooserUI dialogContent = new MailFolderChooserUI(ui);
+ dialogContent.setModel(getModel());
+ openDialog(dialogContent, t("faxtomail.chooseMailFolder.title"), new Dimension(300, 500));
+ }
+
+ public void reply() {
+ ReplyFormUI dialogContent = new ReplyFormUI(ui);
+ ReplyFormUIModel model = dialogContent.getModel();
+ String client = getModel().getClientCode();
+ model.setObject(client == null ? null : client);
+ model.setTo(getModel().getSenderEmailAddress());
+ openFrame(dialogContent, t("faxtomail.reply.title", getModel().getObject()), new Dimension(800, 600));
+ }
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -22,6 +22,7 @@
* #L%
*/
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.Client;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.DemandType;
@@ -31,15 +32,20 @@
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.History;
import com.franciaflex.faxtomail.persistence.entities.HistoryType;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.persistence.entities.Priority;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
+import java.util.List;
import static org.nuiton.i18n.I18n.t;
@@ -47,7 +53,7 @@
* @author kmorin <kmorin(a)codelutin.com>
* @since x.x
*/
-public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeUIModel> {
+public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeUIModel> implements AttachmentModelAware {
private static final Log log = LogFactory.getLog(DemandeUIModel.class);
@@ -68,6 +74,11 @@
super(fromBeanBinder, toBeanBinder);
}
+ public Email toEntity(Email email) {
+ toBeanBinder.copy((DemandeUIModel) this, email);
+ return email;
+ }
+
@Override
public void fromEntity(Email entity) {
super.fromEntity(entity);
@@ -125,14 +136,14 @@
return editObject.getObject();
}
- public void setClient(Client client) {
- Object oldValue = getClient();
- editObject.setClient(client);
- firePropertyChanged(Email.PROPERTY_CLIENT, oldValue, client);
+ public void setClientCode(String clientCode) {
+ Object oldValue = getClientCode();
+ editObject.setClientCode(clientCode);
+ firePropertyChanged(Email.PROPERTY_CLIENT_CODE, oldValue, clientCode);
}
- public Client getClient() {
- return editObject.getClient();
+ public String getClientCode() {
+ return editObject.getClientCode();
}
public void setEtatAttente(EtatAttente etatAttente) {
@@ -270,8 +281,8 @@
return firstOpeningHistory;
}
- public String getFirstOpeningUserName() {
- return getFirstOpeningHistory().getFaxToMailUser().getName();
+ public String getFirstOpeningUser() {
+ return String.valueOf(getFirstOpeningHistory().getFaxToMailUser());
}
public Date getFirstOpeningDate() {
@@ -285,11 +296,11 @@
return lastModificationHistory;
}
- public String getLastModificationUserName() {
+ public String getLastModificationUser() {
String result;
FaxToMailUser user = getLastModificationHistory().getFaxToMailUser();
if (user != null) {
- result = user.getName();
+ result = user.toString();
} else {
result = t("faxtomail.systemUser");
}
@@ -300,8 +311,67 @@
return getLastModificationHistory().getModificationDate();
}
+ @Override
+ public Collection<Attachment> getAttachment() {
+ return editObject.getAttachment();
+ }
@Override
+ public void addAllAttachment(Collection<Attachment> attachment) {
+ editObject.addAllAttachment(attachment);
+ firePropertyChange(Email.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void addAttachment(Attachment attachment) {
+ editObject.addAttachment(attachment);
+ firePropertyChange(Email.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void removeAttachment(Attachment attachment) {
+ editObject.removeAttachment(attachment);
+ firePropertyChange(Email.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ public void setAttachment(Collection<Attachment> attachment) {
+ editObject.setAttachment(attachment);
+ firePropertyChange(Email.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ public Collection<RangeRow> getRangeRow() {
+ return editObject.getRangeRow();
+ }
+
+ public void addRangeRow(RangeRow rangeRow) {
+ editObject.addRangeRow(rangeRow);
+ firePropertyChange(Email.PROPERTY_RANGE_ROW, null, getRangeRow());
+ }
+
+ public void addAllRangeRow(Collection<RangeRow> rangeRow) {
+ editObject.addAllRangeRow(rangeRow);
+ firePropertyChange(Email.PROPERTY_RANGE_ROW, null, getRangeRow());
+ }
+
+ public void removeRangeRow(RangeRow rangeRow) {
+ editObject.removeRangeRow(rangeRow);
+ firePropertyChange(Email.PROPERTY_RANGE_ROW, null, getRangeRow());
+ }
+
+ public void setRangeRow(Collection<RangeRow> rangeRow) {
+ editObject.setRangeRow(rangeRow);
+ firePropertyChange(Email.PROPERTY_RANGE_ROW, null, getRangeRow());
+ }
+
+ public MailFolder getMailFolder() {
+ return editObject.getMailFolder();
+ }
+
+ public void setMailFolder(MailFolder mailFolder) {
+ editObject.setMailFolder(mailFolder);
+ }
+
+ @Override
protected Email newEntity() {
return new EmailImpl();
}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,20 @@
+#navigationTree {
+ font-size: "11";
+ rootVisible: false;
+ showsRootHandles: true;
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "faxtomail.chooseMailFolder.action.cancel";
+ toolTipText: "faxtomail.chooseMailFolder.action.cancel.tip";
+ i18nMnemonic: "faxtomail.chooseMailFolder.action.cancel.mnemonic";
+}
+
+#validateButton {
+ actionIcon: validate;
+ text: "faxtomail.chooseMailFolder.action.validate";
+ toolTipText: "faxtomail.chooseMailFolder.action.validate.tip";
+ i18nMnemonic: "faxtomail.chooseMailFolder.action.validate.mnemonic";
+ _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.TransmitAction.class};
+}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUI.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,30 @@
+<JPanel id='mailFolderChooser' layout='{new BorderLayout()}'
+ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<DemandeUIModel, MailFolderChooserUIHandler>'>
+
+ <import>
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+
+ javax.swing.tree.DefaultTreeModel
+ </import>
+
+ <script><![CDATA[
+
+ public MailFolderChooserUI(FaxToMailUI parentUI) {
+ FaxToMailUIUtil.setParentUI(this, parentUI);
+ }
+
+ ]]></script>
+
+ <DemandeUIModel id='model' javaBean='null'/>
+
+ <JScrollPane constraints='BorderLayout.CENTER'>
+ <JTree id="navigationTree"/>
+ </JScrollPane>
+
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='validateButton'/>
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/MailFolderChooserUIHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,103 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.Company;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
+import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
+import jaxx.runtime.validator.swing.SwingValidator;
+
+import javax.swing.*;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class MailFolderChooserUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, MailFolderChooserUI> implements Cancelable {
+
+ @Override
+ public void afterInit(MailFolderChooserUI mailFolderChooserUI) {
+ initUI(mailFolderChooserUI);
+
+ JTree navigationTree = ui.getNavigationTree();
+ // init tree
+ DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
+
+ Company franciaflex = getContext().getCurrentCompany();
+ Collection<MailFolder> folders = franciaflex.getMailFolder();
+ List<MailFolder> foldersToExpand = getContext().getExpandedFolders();
+ Map<MailFolder, DefaultMutableTreeNode> nodesByFolder = new HashMap<MailFolder, DefaultMutableTreeNode>();
+ for (MailFolder folder : folders) {
+ nodesByFolder.putAll(createFolderTree(root, folder));
+ }
+
+ DefaultTreeModel treeModel = new DefaultTreeModel(root);
+ navigationTree.setModel(treeModel);
+
+ // use the folder icon for the leaf
+ DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
+ Icon folderIcon = renderer.getDefaultClosedIcon();
+ renderer.setLeafIcon(folderIcon);
+ navigationTree.setCellRenderer(renderer);
+
+ navigationTree.addTreeSelectionListener(new TreeSelectionListener() {
+ @Override
+ public void valueChanged(TreeSelectionEvent e) {
+ FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent();
+ MailFolder folder = folderNode.getMailFolder();
+ getModel().setMailFolder(folder);
+ }
+ });
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ @Override
+ public SwingValidator<DemandeUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ public void cancel() {
+ closeDialog();
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return ui.getNavigationTree();
+ }
+
+ /**
+ * Creates the tree nodes and returns a map of the nodes by folder
+ * @param parent the node parent
+ * @param folder the folder to add to the tree
+ * @return the map of the nodes by folder
+ */
+ protected Map<MailFolder, DefaultMutableTreeNode> createFolderTree(DefaultMutableTreeNode parent, MailFolder folder) {
+ Map<MailFolder, DefaultMutableTreeNode> result = new HashMap<MailFolder, DefaultMutableTreeNode>();
+
+ DefaultMutableTreeNode node = new FolderTreeNode(folder);
+ result.put(folder, node);
+
+ parent.add(node);
+ if (folder.isChildrenNotEmpty()) {
+ for (MailFolder child : folder.getChildren()) {
+ result.putAll(createFolderTree(node, child));
+ }
+ }
+ return result;
+ }
+
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/RangeTableModel.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,46 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+import com.franciaflex.faxtomail.persistence.entities.RangeRowImpl;
+import org.jdesktop.swingx.table.TableColumnModelExt;
+import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.jaxx.application.swing.table.ColumnIdentifier;
+
+import static org.nuiton.i18n.I18n.n;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class RangeTableModel extends AbstractApplicationTableModel<RangeRow> {
+
+ public static final ColumnIdentifier<RangeRow> RANGE_COLUMN = ColumnIdentifier.newId(
+ RangeRow.PROPERTY_RANGE,
+ n("faxtomail.rangeRows.table.header.range"),
+ n("faxtomail.rangeRows.table.header.range"));
+
+ public static final ColumnIdentifier<RangeRow> COMMAND_NUMBER_COLUMN = ColumnIdentifier.newId(
+ RangeRow.PROPERTY_COMMAND_NUMBER,
+ n("faxtomail.rangeRows.table.header.command_number"),
+ n("faxtomail.rangeRows.table.header.command_number"));
+
+ public static final ColumnIdentifier<RangeRow> PRODUCT_QUANTITY_COLUMN = ColumnIdentifier.newId(
+ RangeRow.PROPERTY_PRODUCT_QUANTITY,
+ n("faxtomail.rangeRows.table.header.product_column"),
+ n("faxtomail.rangeRows.table.header.product_column"));
+
+ public static final ColumnIdentifier<RangeRow> SAV_QUANTITY_COLUMN = ColumnIdentifier.newId(
+ RangeRow.PROPERTY_SAV_QUANTITY,
+ n("faxtomail.rangeRows.table.header.sav_quantity"),
+ n("faxtomail.rangeRows.table.header.sav_quantity"));
+
+ public RangeTableModel(TableColumnModelExt columnModel) {
+ super(columnModel, true, true);
+ setNoneEditableCols();
+ }
+
+ @Override
+ public RangeRow createNewRow() {
+ return new RangeRowImpl();
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,38 @@
+#fromLabel {
+ text: "faxtomail.reply.from";
+}
+
+#toLabel {
+ text: "faxtomail.reply.to";
+}
+
+#toField {
+ text: {model.getTo()};
+}
+
+#objectLabel {
+ text: "faxtomail.reply.object";
+}
+
+#objectField {
+ text: {model.getObject()};
+}
+
+#attachmentLabel {
+ text: "faxtomail.reply.attachment";
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "faxtomail.reply.action.cancel";
+ toolTipText: "faxtomail.reply.action.cancel.tip";
+ i18nMnemonic: "faxtomail.reply.action.cancel.mnemonic";
+}
+
+#validateButton {
+ actionIcon: validate;
+ text: "faxtomail.reply.action.validate";
+ toolTipText: "faxtomail.reply.action.validate.tip";
+ i18nMnemonic: "faxtomail.reply.action.validate.mnemonic";
+ _applicationAction: {com.franciaflex.faxtomail.ui.swing.actions.ReplyAction.class};
+}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUI.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,105 @@
+<!--
+ #%L
+ FaxToMail :: UI
+ %%
+ Copyright (C) 2014 Franciaflex
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+<JPanel id='replyPanel' layout='{new BorderLayout()}'
+ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<ReplyFormUIModel, ReplyFormUIHandler>'>
+
+ <import>
+ com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+ com.franciaflex.faxtomail.ui.swing.util.attachment.ButtonAttachment
+
+ com.franciaflex.faxtomail.persistence.entities.Email
+ com.franciaflex.faxtomail.persistence.entities.DemandType
+ com.franciaflex.faxtomail.persistence.entities.DemandStatus
+ com.franciaflex.faxtomail.persistence.entities.Range
+ com.franciaflex.faxtomail.persistence.entities.Priority
+
+ jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
+
+ org.jdesktop.swingx.JXDatePicker
+ org.jdesktop.swingx.JXTitledPanel
+
+ java.text.SimpleDateFormat
+ java.util.Date
+ </import>
+
+ <script><![CDATA[
+
+ public ReplyFormUI(FaxToMailUI parentUI) {
+ FaxToMailUIUtil.setParentUI(this, parentUI);
+ }
+
+ ]]></script>
+
+ <ReplyFormUIModel id='model'
+ initializer='getContextValue(ReplyFormUIModel.class)'/>
+
+ <Table constraints='BorderLayout.CENTER'
+ fill='both'>
+ <row>
+ <cell>
+ <JLabel id="fromLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="fromField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="toLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="toField"/>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id="objectLabel"/>
+ </cell>
+ <cell weightx='1'>
+ <JTextField id="objectField"/>
+ </cell>
+ </row>
+ <row weighty='1'>
+ <cell columns='2'>
+ <JEditorPane id="message" />
+ </cell>
+ </row>
+ <row>
+ <cell columns='2'>
+ <JPanel layout='{new BorderLayout()}'>
+ <JLabel id="attachmentLabel" constraints="BorderLayout.CENTER"/>
+ <ButtonAttachment id="attachmentButton"
+ constructorParams="model"
+ constraints="BorderLayout.EAST"/>
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='validateButton'/>
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,54 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.ui.swing.actions.ReplyAction;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
+import com.franciaflex.faxtomail.ui.swing.util.Cancelable;
+import jaxx.runtime.validator.swing.SwingValidator;
+
+import javax.swing.*;
+import javax.swing.text.html.HTMLEditorKit;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIModel, ReplyFormUI> implements Cancelable {
+
+ @Override
+ public void beforeInit(ReplyFormUI ui) {
+
+ super.beforeInit(ui);
+
+ ReplyFormUIModel model = new ReplyFormUIModel();
+
+ this.ui.setContextValue(model);
+ }
+
+ @Override
+ public void afterInit(ReplyFormUI replyFormUIModel) {
+ initUI(ui);
+
+ JEditorPane editor = ui.getMessage();
+ editor.setEditorKitForContentType("text/html", new HTMLEditorKit());
+ editor.setContentType("text/html");
+ }
+
+ @Override
+ public void cancel() {
+ getParentContainer(JFrame.class).setVisible(false);
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ @Override
+ public SwingValidator<ReplyFormUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return null;
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/ReplyFormUIModel.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,90 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class ReplyFormUIModel extends AbstractSerializableBean implements AttachmentModelAware {
+
+ public static final String PROPERTY_TO = "to";
+ public static final String PROPERTY_FROM = "from";
+ public static final String PROPERTY_OBJECT = "object";
+ public static final String PROPERTY_MESSAGE = "message";
+
+ protected String to;
+ protected String from;
+ protected String object;
+ protected String message;
+ protected List<Attachment> attachments = new ArrayList<Attachment>();
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ Object oldValue = getTo();
+ this.to = to;
+ firePropertyChange(PROPERTY_TO, oldValue, to);
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ Object oldValue = getFrom();
+ this.from = from;
+ firePropertyChange(PROPERTY_FROM, oldValue, from);
+ }
+
+ public String getObject() {
+ return object;
+ }
+
+ public void setObject(String object) {
+ Object oldValue = getObject();
+ this.object = object;
+ firePropertyChange(PROPERTY_OBJECT, oldValue, object);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ Object oldValue = getMessage();
+ this.message = message;
+ firePropertyChange(PROPERTY_MESSAGE, oldValue, message);
+ }
+
+ @Override
+ public Collection<Attachment> getAttachment() {
+ return attachments;
+ }
+
+ @Override
+ public void addAllAttachment(Collection<Attachment> attachments) {
+ this.attachments.addAll(attachments);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void addAttachment(Attachment attachment) {
+ attachments.add(attachment);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void removeAttachment(Attachment attachment) {
+ attachments.remove(attachment);
+ firePropertyChange(AttachmentModelAware.PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -30,13 +30,21 @@
import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler;
import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
+import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.SwingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.decorator.Decorator;
import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
+import org.nuiton.jaxx.application.swing.ApplicationUI;
import org.nuiton.jaxx.application.swing.action.ApplicationActionUI;
+import org.nuiton.jaxx.application.swing.util.*;
-import java.awt.Component;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
@@ -222,4 +230,51 @@
}
return labelList;
}
+
+ public void openFrame(ApplicationUI dialogContent,
+ String title, Dimension dim) {
+ Component topestUI = getTopestUI();
+
+ JFrame result = new JFrame(title);
+
+ result.add((Component) dialogContent);
+ result.setResizable(true);
+
+ result.setSize(dim);
+
+ final AbstractApplicationUIHandler handler = dialogContent.getHandler();
+
+ if (handler instanceof org.nuiton.jaxx.application.swing.util.Cancelable) {
+
+ // add a auto-close action
+ JRootPane rootPane = result.getRootPane();
+
+ KeyStroke shortcutClosePopup = getContext().getConfiguration().getShortcutClosePopup();
+
+ rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
+ shortcutClosePopup, "close");
+ rootPane.getActionMap().put("close", new AbstractAction() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ((org.nuiton.jaxx.application.swing.util.Cancelable) handler).cancel();
+ }
+ });
+ }
+
+ result.addWindowListener(new WindowAdapter() {
+
+ @Override
+ public void windowClosed(WindowEvent e) {
+ Component ui = (Component) e.getSource();
+ if (log.isDebugEnabled()) {
+ log.debug("Destroy ui " + ui);
+ }
+ JAXXUtil.destroy(ui);
+ }
+ });
+ SwingUtil.center(getContext().getMainUI(), result);
+ result.setVisible(true);
+ }
}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,98 @@
+package com.franciaflex.faxtomail.ui.swing.util;
+
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import jaxx.runtime.SwingUtil;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
+import java.awt.List;
+import java.awt.event.HierarchyBoundsAdapter;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.*;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public abstract class AbstractToolbarPopupButton<UI extends AbstractToolbarPopupUI> extends JToggleButton {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final UI popup;
+
+ protected boolean popupMoving;
+
+ public AbstractToolbarPopupButton() {
+
+ setIcon(SwingUtil.createActionIcon(getActionIcon()));
+
+ popup = createNewPopup();
+
+ popup.addWindowListener(new WindowAdapter() {
+
+ @Override
+ public void windowOpened(WindowEvent e) {
+ setSelected(true);
+ }
+
+ @Override
+ public void windowClosing(WindowEvent e) {
+ setSelected(false);
+ }
+
+ @Override
+ public void windowClosed(WindowEvent e) {
+ setSelected(false);
+ }
+ });
+
+ addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ if (isSelected()) {
+ if (!popup.isVisible()) {
+ popup.openEditor(AbstractToolbarPopupButton.this);
+ }
+ } else {
+ popup.closeEditor();
+ }
+ }
+ });
+
+ addHierarchyBoundsListener(new HierarchyBoundsAdapter() {
+
+ @Override
+ public void ancestorMoved(HierarchyEvent e) {
+ if (popup.isShowing()) {
+
+ // place dialog just under the button
+ Point point = new Point(getLocationOnScreen());
+ point.translate(-popup.getWidth() + getWidth(), getHeight());
+ popupMoving = true;
+ try {
+ popup.setLocation(point);
+ } finally {
+ popupMoving = false;
+ }
+ }
+ }
+ });
+ }
+
+ protected abstract String getActionIcon();
+
+ protected abstract UI createNewPopup();
+
+ public void onCloseUI() {
+ setSelected(false);
+ }
+}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,124 @@
+package com.franciaflex.faxtomail.ui.swing.util;
+
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.swing.ComponentMover;
+import jaxx.runtime.swing.ComponentResizer;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public abstract class AbstractToolbarPopupHandler<M, UI extends AbstractToolbarPopupUI<M, ?>> extends AbstractFaxToMailUIHandler<M,UI> {
+
+ public static final String CLOSE_DIALOG_ACTION = "closeDialog";
+
+ public static final String SHOW_DIALOG_ACTION = "showDialog";
+
+ @Override
+ public void afterInit(UI ui) {
+
+ ui.pack();
+ ui.setResizable(true);
+
+ ComponentResizer cr = new ComponentResizer();
+ cr.registerComponent(ui);
+ ComponentMover cm = new ComponentMover();
+ cm.setDragInsets(cr.getDragInsets());
+ cm.registerComponent(ui);
+
+ JRootPane rootPane = ui.getRootPane();
+
+ KeyStroke shortcutClosePopup = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
+
+ rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
+ shortcutClosePopup, CLOSE_DIALOG_ACTION);
+
+ closeAction = new AbstractAction() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ AbstractToolbarPopupHandler.this.ui.dispose();
+ AbstractToolbarPopupHandler.this.ui.setVisible(false);
+ }
+ };
+
+ openAction = new AbstractAction() {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ AbstractToolbarPopupHandler.this.ui.setVisible(true);
+ }
+ };
+
+ ImageIcon actionIcon = SwingUtil.createActionIcon("close-dialog");
+ closeAction.putValue(Action.SMALL_ICON, actionIcon);
+ closeAction.putValue(Action.LARGE_ICON_KEY, actionIcon);
+ closeAction.putValue(Action.ACTION_COMMAND_KEY, "close");
+ closeAction.putValue(Action.NAME, "close");
+ closeAction.putValue(Action.SHORT_DESCRIPTION, t("faxtomail.attachmentEditor.action.closeAttachment.tip"));
+
+ rootPane.getActionMap().put(CLOSE_DIALOG_ACTION, closeAction);
+ rootPane.getActionMap().put(SHOW_DIALOG_ACTION, openAction);
+
+ JButton closeButton = new JButton(closeAction);
+ closeButton.setText(null);
+ closeButton.setFocusPainted(false);
+ closeButton.setRequestFocusEnabled(false);
+ closeButton.setFocusable(false);
+
+ JToolBar jToolBar = new JToolBar();
+ jToolBar.setOpaque(false);
+ jToolBar.add(closeAction);
+ jToolBar.setBorderPainted(false);
+ jToolBar.setFloatable(false);
+ ui.getBody().setRightDecoration(jToolBar);
+ }
+
+ protected Action closeAction;
+
+ protected Action openAction;
+
+ public void closeEditor() {
+
+ closeAction.actionPerformed(null);
+ }
+
+ public void openEditor(JComponent component) {
+
+ if (component != null) {
+ place(component);
+ }
+ openAction.actionPerformed(null);
+ }
+
+ public void place(JComponent component) {
+ // Computes the location of bottom left corner of the cell
+ Component comp = component;
+ int x = 0;
+ int y = component.getHeight();
+ while (comp != null) {
+ x += comp.getX();
+ y += comp.getY();
+ comp = comp.getParent();
+ }
+
+ ui.pack();
+ // if the editor is too big on the right,
+ // then align its right side to the right side of the cell
+ if (x + ui.getWidth() > ui.getOwner().getX() + ui.getOwner().getWidth()) {
+ x = x - ui.getWidth() + component.getWidth();
+ }
+ ui.setLocation(x, y);
+ }
+
+}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,4 @@
+#dialog {
+ undecorated: true;
+ alwaysOnTop: true;
+}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,33 @@
+<JDialog layout='{new BorderLayout()}'
+ id='dialog'
+ abstract='true'
+ genericType="M, H extends AbstractToolbarPopupHandler<M, ?>"
+ implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<M, H>'>
+
+ <import>
+ com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext
+ com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil
+
+ org.jdesktop.swingx.JXTitledPanel
+ javax.swing.JComponent
+ </import>
+
+ <script><![CDATA[
+
+public AbstractToolbarPopupUI(FaxToMailUIContext context) {
+ super(context.getMainUI());
+ FaxToMailUIUtil.setApplicationContext(this, context);
+}
+
+public void openEditor(JComponent component) {
+ getHandler().openEditor(component);
+}
+
+public void closeEditor() {
+ getHandler().closeEditor();
+}
+ ]]></script>
+
+ <JXTitledPanel id='body' constraints='BorderLayout.CENTER'>
+ </JXTitledPanel>
+</JDialog>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellEditor.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,142 @@
+package com.franciaflex.faxtomail.ui.swing.util.attachment;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id: AttachmentCellEditor.java 1564 2014-01-31 10:56:26Z tchemit $
+ * $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-ui-swing/src/main/java… $
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI;
+import com.google.common.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+
+import javax.swing.*;
+import javax.swing.border.LineBorder;
+import javax.swing.event.CellEditorListener;
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.TableCellEditor;
+import java.awt.*;
+import java.util.EventObject;
+
+/**
+ * To edit attachments from a table cell.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @author kmorin <morin(a)codelutin.com>
+ * @since 1.0.2
+ */
+public class AttachmentCellEditor extends AbstractCellEditor implements TableCellEditor {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(AttachmentCellEditor.class);
+
+ public static TableCellEditor newEditor(FaxToMailUI ui) {
+
+ return new AttachmentCellEditor(FaxToMailUIContext.getApplicationContext());
+ }
+
+ protected JTable table;
+
+ protected AbstractApplicationTableModel<AbstractFaxToMailBeanUIModel> tableModel;
+
+ protected Integer rowIndex;
+
+ protected Integer columnIndex;
+
+ protected final ButtonAttachment editorButton;
+
+ public AttachmentCellEditor(FaxToMailUIContext context) {
+
+ this.editorButton = new ButtonAttachment(null);
+ this.editorButton.setBorder(new LineBorder(Color.BLACK));
+ addCellEditorListener(new CellEditorListener() {
+ @Override
+ public void editingStopped(ChangeEvent e) {
+ editorButton.setSelected(false);
+ }
+
+ @Override
+ public void editingCanceled(ChangeEvent e) {
+ editorButton.setSelected(false);
+ }
+ });
+ }
+
+ @Override
+ public Component getTableCellEditorComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ int row,
+ int column) {
+ this.table = table;
+ this.tableModel = (AbstractApplicationTableModel<AbstractFaxToMailBeanUIModel>) table.getModel();
+
+ rowIndex = row;
+ columnIndex = column;
+
+ AttachmentModelAware model =
+ (AttachmentModelAware) tableModel.getEntry(row);
+
+ editorButton.init(model);
+
+ return editorButton;
+ }
+
+ @Override
+ public boolean shouldSelectCell(EventObject anEvent) {
+ return false;
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+
+ AttachmentModelAware model = editorButton.getBean();
+ Preconditions.checkNotNull(model, "No model found in editor.");
+
+ Object result = model.getAttachment();
+ if (log.isDebugEnabled()) {
+ log.debug("editor value: " + result);
+ }
+
+ return result;
+ }
+
+ @Override
+ public boolean stopCellEditing() {
+ boolean b = super.stopCellEditing();
+ if (b) {
+ editorButton.setBean(null);
+ }
+ return b;
+ }
+
+ @Override
+ public void cancelCellEditing() {
+ editorButton.setBean(null);
+ super.cancelCellEditing();
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentCellRenderer.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,102 @@
+package com.franciaflex.faxtomail.ui.swing.util.attachment;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import jaxx.runtime.SwingUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.nuiton.decorator.Decorator;
+
+import javax.swing.*;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.awt.*;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n.n;
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Renderer of a attachement editor in a table cell.
+ *
+ * @author kmorin <morin(a)codelutin.com>
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0.2
+ */
+public class AttachmentCellRenderer extends DefaultTableCellRenderer {
+
+ public static final String TEXT_PATTERN = "<html><body>%s</body></html>";
+
+ private static final long serialVersionUID = 1L;
+
+ private final String noneText;
+
+ private final Decorator<Attachment> decorator;
+
+ private Font defaulfFont;
+
+ private Font selectedFont;
+
+ public static AttachmentCellRenderer newRender(Decorator<Attachment> decorator) {
+ return new AttachmentCellRenderer(decorator);
+ }
+
+ protected AttachmentCellRenderer(Decorator<Attachment> decorator) {
+ setHorizontalAlignment(CENTER);
+ setIcon(SwingUtil.createActionIcon("edit-attachment"));
+ this.noneText = n("faxtomail.attachmentEditor.none.tip");
+ this.decorator = decorator;
+ }
+
+ @Override
+ protected void setValue(Object value) {
+ // do nothing
+ }
+
+ @Override
+ public JComponent getTableCellRendererComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ boolean hasFocus,
+ int row,
+ int column) {
+
+ if (defaulfFont == null) {
+ defaulfFont = UIManager.getFont("Table.font");
+ selectedFont = defaulfFont.deriveFont(Font.BOLD);
+ }
+
+ List<Attachment> attachments = (List<Attachment>) value;
+
+ String toolTipTextValue;
+
+ if (CollectionUtils.isEmpty(attachments)) {
+
+ // use HTML to show the tooltip in italic
+ toolTipTextValue = "<i>" + t(noneText) + "</i>";
+
+
+ } else {
+
+ StringBuilder sb = new StringBuilder();
+ for (Attachment attachment : attachments) {
+ sb.append("<br/>").append(decorator.toString(attachment));
+ }
+ // use html to display the tooltip on several lines
+ toolTipTextValue = sb.substring(5);
+ }
+ String textValue = ButtonAttachment.getButtonText(attachments);
+ boolean editable = table.isCellEditable(row, column);
+ toolTipTextValue = String.format(TEXT_PATTERN, toolTipTextValue);
+ setEnabled(editable);
+ setText(textValue);
+ setToolTipText(toolTipTextValue);
+ setBackground(null);
+ setForeground(Color.BLACK);
+
+ if (isSelected) {
+ setFont(selectedFont);
+ } else {
+ setFont(defaulfFont);
+ }
+
+ return this;
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,25 @@
+#body {
+ title: "faxtomail.attachmentEditor.title";
+}
+
+#fileLabel {
+ text: "faxtomail.attachmentEditor.field.file";
+ labelFor: {file};
+}
+
+#fileNameLabel {
+ text: "faxtomail.attachmentEditor.field.fileName";
+ labelFor: {fileName};
+}
+
+#fileCommentLabel {
+ text: "faxtomail.attachmentEditor.field.fileComment";
+ labelFor: {fileComment};
+}
+
+#addButton {
+ actionIcon: add;
+ toolTipText: "faxtomail.attachmentEditor.action.add.tip";
+ i18nMnemonic: "faxtomail.attachmentEditor.action.add.mnemonic";
+}
+
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,70 @@
+<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI
+ superGenericType="FaxToMailUIContext, AttachmentEditorUIHandler"
+ id='attachmentDialog'>
+
+ <import>
+ com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext
+
+ jaxx.runtime.swing.editor.FileEditor
+ org.jdesktop.swingx.JXTitledPanel
+ javax.swing.JComponent
+ </import>
+
+ <!-- if true, display the form to add attachments
+ and the button to remove existing attachments -->
+ <Boolean id='editable' javaBean='true'/>
+
+ <!-- bean property -->
+ <AttachmentModelAware id='bean' javaBean='null'/>
+
+ <FaxToMailUIContext id='model'
+ initializer='getContextValue(FaxToMailUIContext.class)'/>
+
+ <JXTitledPanel id='body'>
+ <JScrollPane id='attachmentBodyScrollPane'>
+ <Table id='mainPanel'>
+
+ <row fill='both' weighty='1'>
+ <cell fill='both' weightx='1' columns='3'>
+ <JPanel id='attachments' layout='{new GridLayout(0, 1)}'></JPanel>
+ </cell>
+ </row>
+ <row fill='both'>
+ <cell fill='both' weightx='1' columns='3'>
+ <JSeparator/>
+ </cell>
+ </row>
+ <row fill='both'>
+ <cell fill='both' weightx='1'>
+ <JLabel id='fileLabel'/>
+ </cell>
+ <cell fill='both' weightx='1'>
+ <FileEditor id='file'/>
+ </cell>
+ <cell fill='both' rows='3'>
+ <JButton id='addButton'
+ onActionPerformed='handler.addAttachment()'/>
+ </cell>
+ </row>
+ <!--<row fill='both'>-->
+ <!--<cell fill='both' weightx='1'>-->
+ <!--<JLabel id='fileNameLabel'/>-->
+ <!--</cell>-->
+ <!--<cell fill='both' weightx='1'>-->
+ <!--<JTextField id='fileName'/>-->
+ <!--</cell>-->
+ <!--</row>-->
+ <!--<row fill='both' weighty='1'>-->
+ <!--<cell fill='both' weightx='1'>-->
+ <!--<JLabel id='fileCommentLabel'/>-->
+ <!--</cell>-->
+ <!--<cell fill='both' weightx='1'>-->
+ <!--<JScrollPane>-->
+ <!--<JTextArea id='fileComment' rows='3'/>-->
+ <!--</JScrollPane>-->
+ <!--</cell>-->
+ <!--</row>-->
+ </Table>
+ </JScrollPane>
+ </JXTitledPanel>
+</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,190 @@
+package com.franciaflex.faxtomail.ui.swing.util.attachment;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler;
+import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.swing.ComponentMover;
+import jaxx.runtime.swing.ComponentResizer;
+import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.jaxx.application.ApplicationTechnicalException;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * @author kmorin <morin(a)codelutin.com>
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class AttachmentEditorUIHandler extends AbstractToolbarPopupHandler<FaxToMailUIContext, AttachmentEditorUI> {
+
+ @Override
+ public void beforeInit(AttachmentEditorUI ui) {
+ super.beforeInit(ui);
+
+ getUI().addPropertyChangeListener(AttachmentEditorUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ init();
+ }
+ });
+ }
+
+ @Override
+ public void afterInit(AttachmentEditorUI ui) {
+ ui.getFile().setDialogOwner(ui);
+ super.afterInit(ui);
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getFile();
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ @Override
+ public SwingValidator<FaxToMailUIContext> getValidator() {
+ return null;
+ }
+
+ public void init() {
+ resetFields();
+ ui.getAttachments().removeAll();
+ AttachmentModelAware bean = ui.getBean();
+ if (bean != null) {
+ Collection<Attachment> attachments = bean.getAttachment();
+ if (attachments != null) {
+ for (Attachment attachment : attachments) {
+ addAttachment(attachment);
+ }
+ }
+ }
+ }
+
+ public void place(JComponent component) {
+ // Computes the location of bottom left corner of the cell
+ Component comp = component;
+ int x = 0;
+ int y = component.getHeight();
+ while (comp != null) {
+ x += comp.getX();
+ y += comp.getY();
+ comp = comp.getParent();
+ }
+
+ ui.pack();
+ // if the editor is too big on the right,
+ // then align its right side to the right side of the cell
+ if (x + ui.getWidth() > ui.getOwner().getX() + ui.getOwner().getWidth()) {
+ x = x - ui.getWidth() + component.getWidth();
+ }
+ ui.setLocation(x, y);
+ }
+
+ public void addAttachment() {
+ AttachmentModelAware bean = ui.getBean();
+ Attachment attachment = new AttachmentImpl();
+
+ File file = ui.getFile().getSelectedFile();
+ if (file != null) {
+// String name = ui.getFileName().getText();
+// if (StringUtils.isEmpty(name)) {
+ String name = file.getName();
+// }
+// attachment.setObjectType(bean.getObjectType());
+// attachment.setObjectId(bean.getObjectId());
+// attachment.setName(name);
+// attachment.setComment(ui.getFileComment().getText());
+ attachment.setFile(file);
+
+// attachment = getPersistenceService().createAttachment(attachment, file);
+ bean.addAttachment(attachment);
+
+ resetFields();
+ addAttachment(attachment);
+
+ ui.pack();
+ }
+ }
+
+ protected void addAttachment(final Attachment attachment) {
+ AttachmentItem item = new AttachmentItem();
+ item.setAttachment(attachment);
+ item.setHandler(this);
+ ui.getAttachments().add(item);
+ }
+
+ protected void resetFields() {
+ ui.getFile().setSelectedFilePath(null);
+// ui.getFileName().setText("");
+// ui.getFileComment().setText("");
+ }
+
+ public void openAttachment(Attachment attachment) {
+// File file = getPersistenceService().getAttachmentFile(attachment.getId());
+ File file = attachment.getFile();
+
+ if (!file.exists()) {
+ throw new ApplicationTechnicalException(t("faxtomail.attachmentEditor.fileNotFound", file.getAbsolutePath()));
+ }
+
+ Desktop desktop = FaxToMailUIUtil.getDesktopForBrowse();
+ try {
+ desktop.browse(file.toURI());
+
+ } catch (IOException e) {
+ getContext().getErrorHelper().showErrorDialog(t("swing.error.cannot.open.file"));
+ }
+ }
+
+ public void saveAttachment(Attachment attachment) {
+
+ SaveAttachmentAction action = getContext().getActionFactory().createLogicAction(
+ this, SaveAttachmentAction.class);
+ action.setAttachment(attachment);
+ getContext().getActionEngine().runAction(action);
+ }
+
+ public void removeAttachment(AttachmentItem attachmentItem) {
+ Attachment attachment = attachmentItem.getAttachment();
+ boolean hackDialog = ui.isAlwaysOnTop();
+ if (hackDialog) {
+ ui.setAlwaysOnTop(false);
+ }
+ int answer = JOptionPane.showConfirmDialog(ui,
+ t("faxtomail.attachmentEditor.deleteAttachment.message", attachment.getFile()),
+ t("faxtomail.attachmentEditor.deleteAttachment.title"),
+ JOptionPane.YES_NO_OPTION);
+ if (hackDialog) {
+ ui.setAlwaysOnTop(true);
+ }
+
+ if (answer == JOptionPane.YES_OPTION) {
+ AttachmentModelAware bean = ui.getBean();
+
+// getPersistenceService().deleteAttachment(attachment.getId());
+ bean.removeAttachment(attachment);
+ ui.getAttachments().remove(attachmentItem);
+
+ ui.pack();
+ }
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,26 @@
+#attachmentNameLabel {
+ text: {attachment != null ? getAttachment().getFile().getName() : null};
+}
+
+#toolbar {
+ borderPainted: false;
+ floatable: false;
+}
+
+#openAttachmentButton {
+ actionIcon: "open-file";
+ toolTipText: "faxtomail.attachmentEditor.action.open.tip";
+ i18nMnemonic: "faxtomail.attachmentEditor.action.open.mnemonic";
+}
+
+#saveAttachmentButton {
+ actionIcon: "import";
+ toolTipText: "faxtomail.attachmentEditor.action.save.tip";
+ i18nMnemonic: "faxtomail.attachmentEditor.action.save.mnemonic";
+}
+
+#removeAttachmentButton {
+ actionIcon: "delete";
+ toolTipText: "faxtomail.attachmentEditor.action.remove.tip";
+ i18nMnemonic: "faxtomail.attachmentEditor.action.remove.mnemonic";
+}
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentItem.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,24 @@
+<JPanel id='attachmentPanel' layout='{new BorderLayout()}'>
+
+ <import>
+ com.franciaflex.faxtomail.persistence.entities.Attachment
+ static org.nuiton.i18n.I18n.t
+ static jaxx.runtime.JAXXUtil.getStringValue
+ </import>
+
+ <Attachment id='attachment' javaBean='null'/>
+
+ <AttachmentEditorUIHandler id='handler' javaBean='null'/>
+
+ <JLabel id='attachmentNameLabel' constraints='BorderLayout.CENTER'/>
+
+ <JToolBar id='toolbar' constraints='BorderLayout.EAST'>
+ <JButton id='openAttachmentButton'
+ onActionPerformed='handler.openAttachment(attachment)'/>
+ <JButton id='saveAttachmentButton'
+ onActionPerformed='handler.saveAttachment(attachment)'/>
+ <JButton id='removeAttachmentButton'
+ onActionPerformed='handler.removeAttachment(this)'/>
+ </JToolBar>
+
+</JPanel>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentModelAware.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentModelAware.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/AttachmentModelAware.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,33 @@
+package com.franciaflex.faxtomail.ui.swing.util.attachment;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * To place on model wich supports attachments.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0.2
+ */
+public interface AttachmentModelAware extends Serializable {
+
+ String PROPERTY_ATTACHMENT = "attachment";
+
+ String PROPERTY_OBJECT_ID = "objectId";
+
+// AttachementObjectTypeEnum getObjectType();
+
+// Integer getObjectId();
+
+ Collection<Attachment> getAttachment();
+
+ void addAllAttachment(Collection<Attachment> attachments);
+
+ void addAttachment(Attachment attachment);
+
+ void removeAttachment(Attachment attachment);
+
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/ButtonAttachment.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,98 @@
+package com.franciaflex.faxtomail.ui.swing.util.attachment;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton;
+import jaxx.runtime.SwingUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
+import java.awt.event.HierarchyBoundsAdapter;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Collection;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Button to edit attachments.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.1
+ */
+public class ButtonAttachment extends AbstractToolbarPopupButton<AttachmentEditorUI> {
+
+ private transient PropertyChangeListener listenAttachmentsChanged;
+
+ public ButtonAttachment(AttachmentModelAware model) {
+ setToolTipText(t("faxtomail.attachmentEditor.action.tip"));
+ setBean(model);
+ }
+
+ @Override
+ protected String getActionIcon() {
+ return "edit-attachment";
+ }
+
+ @Override
+ protected AttachmentEditorUI createNewPopup() {
+ return new AttachmentEditorUI(FaxToMailUIContext.getApplicationContext());
+ }
+
+ public static String getButtonText(Collection<Attachment> attachments) {
+ int attachmentNb = CollectionUtils.size(attachments);
+ return t("faxtomail.attachmentEditor.text", attachmentNb);
+ }
+
+ public void init() {
+ popup.getHandler().init();
+ }
+
+ public void init(AttachmentModelAware model) {
+ setBean(model);
+ init();
+ }
+
+ public AttachmentModelAware getBean() {
+ return popup.getBean();
+ }
+
+ protected void setBean(AttachmentModelAware model) {
+ AttachmentModelAware bean = popup.getBean();
+ if (bean != null) {
+ ((AbstractSerializableBean) bean).removePropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, getListenAttachmentsChanged());
+ }
+ popup.setBean(model);
+
+ if (model != null) {
+
+ ((AbstractSerializableBean) model).addPropertyChangeListener(AttachmentModelAware.PROPERTY_ATTACHMENT, getListenAttachmentsChanged());
+ Collection<Attachment> attachments = model.getAttachment();
+ setText(ButtonAttachment.getButtonText(attachments));
+ }
+ }
+
+ protected PropertyChangeListener getListenAttachmentsChanged() {
+ if (listenAttachmentsChanged == null) {
+ listenAttachmentsChanged = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ List<Attachment> attachment = (List<Attachment>) evt.getNewValue();
+ setText(getButtonText(attachment));
+ if (!popup.isVisible()) {
+ init();
+ }
+ }
+ };
+ }
+ return listenAttachmentsChanged;
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/attachment/SaveAttachmentAction.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,81 @@
+package com.franciaflex.faxtomail.ui.swing.util.attachment;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction;
+import org.nuiton.jaxx.application.ApplicationIOUtil;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * To persist a attachment.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4
+ */
+public class SaveAttachmentAction extends AbstractFaxToMailAction<FaxToMailUIContext, AttachmentEditorUI, AttachmentEditorUIHandler> {
+
+ private Attachment attachment;
+
+ public SaveAttachmentAction(AttachmentEditorUIHandler handler) {
+ super(handler, false);
+ }
+
+ protected File file;
+
+ protected File attachmentFile;
+
+ @Override
+ public boolean prepareAction() throws Exception {
+ boolean doAction = super.prepareAction();
+ if (doAction) {
+
+ attachmentFile = attachment.getFile();
+
+ file = saveFile(
+ ApplicationIOUtil.getBaseName(attachmentFile.getName()),
+ ApplicationIOUtil.getExtension(attachmentFile.getName()),
+ t("faxtomail.attachmentEditor.saveAttachment.title"),
+ t("faxtomail.attachmentEditor.saveAttachment.button"));
+ doAction = file != null;
+ }
+ return doAction;
+ }
+
+ @Override
+ public void doAction() throws Exception {
+
+ AttachmentEditorUI ui = getUI();
+
+ boolean hackDialog = ui.isAlwaysOnTop();
+ if (hackDialog) {
+ ui.setAlwaysOnTop(false);
+ }
+ try {
+
+ ApplicationIOUtil.copyFile(attachmentFile, file,
+ t("faxtomail.attachmentEditor.saveAttachment.error.message", attachmentFile, file.getName()));
+ sendMessage(
+ t("faxtomail.attachmentEditor.saveAttachment.success.message", file.getName()));
+
+ } finally {
+ if (hackDialog) {
+ ui.setAlwaysOnTop(true);
+ }
+ }
+ }
+
+ public void setAttachment(Attachment attachment) {
+ this.attachment = attachment;
+ }
+
+ @Override
+ public void releaseAction() {
+ super.releaseAction();
+ attachmentFile = null;
+ attachment = null;
+ file = null;
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/ButtonHistory.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/ButtonHistory.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/ButtonHistory.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,49 @@
+package com.franciaflex.faxtomail.ui.swing.util.history;
+
+import com.franciaflex.faxtomail.persistence.entities.Attachment;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton;
+import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentEditorUI;
+import com.franciaflex.faxtomail.ui.swing.util.attachment.AttachmentModelAware;
+import jaxx.runtime.SwingUtil;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
+import java.awt.event.HierarchyBoundsAdapter;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Button to edit attachments.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.1
+ */
+public class ButtonHistory extends AbstractToolbarPopupButton<HistoryListUI> {
+
+ public ButtonHistory() {
+ setToolTipText(t("faxtomail.historyList.action.tip"));
+ int historySize = popup.getModel().sizeHistory();
+ setText(t("faxtomail.historyList.text", historySize));
+ }
+
+ @Override
+ protected String getActionIcon() {
+ return "view-history";
+ }
+
+ @Override
+ protected HistoryListUI createNewPopup() {
+ return new HistoryListUI(FaxToMailUIContext.getApplicationContext());
+ }
+
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,11 @@
+#type {
+ text : { model.getTypeAsString() };
+}
+
+#user {
+ text : { model.getFaxToMailUserAsString() };
+}
+
+#date {
+ text : { model.getModificationDateAsString() };
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItem.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,28 @@
+<JPanel id='historyItemPanel' layout="{new GridLayout(0,1)}">
+
+ <import>
+ com.franciaflex.faxtomail.persistence.entities.History
+
+ static org.nuiton.i18n.I18n.t
+ static jaxx.runtime.JAXXUtil.getStringValue
+ </import>
+
+ <HistoryItemModel id='model' initializer="new HistoryItemModel(getContextValue(History.class))" />
+
+ <HistoryListUIHandler id="handler" initializer="getContextValue(HistoryListUIHandler.class)" />
+
+ <script><![CDATA[
+public HistoryItem(History history, HistoryListUIHandler handler) {
+ setContextValue(history);
+ setContextValue(handler);
+}
+ ]]></script>
+
+ <JLabel id='type'/>
+
+ <JPanel>
+ <JLabel id='user'/>
+ <JLabel id='date'/>
+ </JPanel>
+
+</JPanel>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryItemModel.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,93 @@
+package com.franciaflex.faxtomail.ui.swing.util.history;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.History;
+import com.franciaflex.faxtomail.persistence.entities.HistoryImpl;
+import com.franciaflex.faxtomail.persistence.entities.HistoryType;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class HistoryItemModel extends AbstractFaxToMailBeanUIModel<History, HistoryItemModel> {
+
+ protected static Binder<HistoryItemModel, History> toBeanBinder =
+ BinderFactory.newBinder(HistoryItemModel.class,
+ History.class);
+
+ protected static Binder<History, HistoryItemModel> fromBeanBinder =
+ BinderFactory.newBinder(History.class, HistoryItemModel.class);
+
+ protected final History editObject = new HistoryImpl();
+
+ public HistoryItemModel(History history) {
+ super(fromBeanBinder, toBeanBinder);
+ fromEntity(history);
+ }
+
+ public String getTypeAsString() {
+ HistoryType type = editObject.getType();
+ if (type == null) {
+ return null;
+ }
+ return type.toString();
+ }
+
+ public HistoryType getType() {
+ return editObject.getType();
+ }
+
+ public void setType(HistoryType type) {
+ Object oldValue = editObject.getType();
+ editObject.setType(type);
+ firePropertyChanged(History.PROPERTY_TYPE + "AsString", oldValue, type);
+ }
+
+ public String getModificationDateAsString() {
+ Date date = editObject.getModificationDate();
+ if (date == null) {
+ return null;
+ }
+ return DateFormat.getDateTimeInstance().format(date);
+ }
+
+ public Date getModificationDate() {
+ return editObject.getModificationDate();
+ }
+
+ public void setModificationDate(Date modificationDate) {
+ Object oldValue = editObject.getModificationDate();
+ editObject.setModificationDate(modificationDate);
+ firePropertyChanged(History.PROPERTY_MODIFICATION_DATE + "AsString", oldValue, modificationDate);
+ }
+
+ public String getFaxToMailUserAsString() {
+ FaxToMailUser user = editObject.getFaxToMailUser();
+ if (user == null) {
+ return "faxtomail.systemUser";
+ }
+ return user.toString();
+ }
+
+ public FaxToMailUser getFaxToMailUser() {
+ return editObject.getFaxToMailUser();
+ }
+
+ public void setFaxToMailUser(FaxToMailUser faxToMailUser) {
+ Object oldValue = editObject.getFaxToMailUser();
+ editObject.setFaxToMailUser(faxToMailUser);
+ firePropertyChanged(History.PROPERTY_FAX_TO_MAIL_USER + "AsString", oldValue, faxToMailUser);
+ }
+
+ @Override
+ protected History newEntity() {
+ return new HistoryImpl();
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.css 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,3 @@
+#body {
+ title: "faxtomail.historyList.title";
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUI.jaxx 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,18 @@
+<com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI
+ superGenericType="HistoryListUIModel, HistoryListUIHandler"
+ id='historyListDialog'>
+
+ <import>
+ org.jdesktop.swingx.JXTitledPanel
+ </import>
+
+ <HistoryListUIModel id='model'
+ initializer='getContextValue(HistoryListUIModel.class)'/>
+
+ <JXTitledPanel id='body'>
+ <JScrollPane id='attachmentBodyScrollPane'>
+ <JPanel id='histories' layout='{new GridLayout(0, 1)}'></JPanel>
+ </JScrollPane>
+ </JXTitledPanel>
+
+</com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupUI>
\ No newline at end of file
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIHandler.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,57 @@
+package com.franciaflex.faxtomail.ui.swing.util.history;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.History;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupHandler;
+import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class HistoryListUIHandler extends AbstractToolbarPopupHandler<HistoryListUIModel, HistoryListUI> {
+
+ private final static Log log = LogFactory.getLog(HistoryListUIHandler.class);
+
+ @Override
+ public void beforeInit(HistoryListUI ui) {
+ super.beforeInit(ui);
+
+ Email currentEmail = getContext().getCurrentEmail();
+ HistoryListUIModel model = new HistoryListUIModel();
+ model.fromBean(currentEmail);
+
+ this.ui.setContextValue(model);
+ }
+
+ @Override
+ public void afterInit(HistoryListUI ui) {
+ super.afterInit(ui);
+
+ for (History history : getModel().getHistory()) {
+ HistoryItem item = new HistoryItem(history, this);
+ ui.getHistories().add(item);
+ }
+ }
+
+ @Override
+ public void onCloseUI() {
+ }
+
+ @Override
+ public SwingValidator<HistoryListUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return null;
+ }
+}
Added: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/history/HistoryListUIModel.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -0,0 +1,55 @@
+package com.franciaflex.faxtomail.ui.swing.util.history;
+
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
+import com.franciaflex.faxtomail.persistence.entities.History;
+import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailBeanUIModel;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
+
+import java.util.Collection;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class HistoryListUIModel extends AbstractFaxToMailBeanUIModel<Email, HistoryListUIModel> {
+
+ protected static Binder<HistoryListUIModel, Email> toBeanBinder =
+ BinderFactory.newBinder(HistoryListUIModel.class,
+ Email.class);
+
+ protected static Binder<Email, HistoryListUIModel> fromBeanBinder =
+ BinderFactory.newBinder(Email.class, HistoryListUIModel.class);
+
+ protected final Email editObject = new EmailImpl();
+
+ public HistoryListUIModel() {
+ super(fromBeanBinder, toBeanBinder);
+ }
+
+ public void setHistory(Collection<History> history) {
+ editObject.setHistory(history);
+ }
+
+ public Collection<History> getHistory() {
+ return editObject.getHistory();
+ }
+
+ public int sizeHistory() {
+ return editObject.sizeHistory();
+ }
+
+ public boolean isHistoryEmpty() {
+ return editObject.isHistoryEmpty();
+ }
+
+ public boolean isHistoryNotEmpty() {
+ return editObject.isHistoryNotEmpty();
+ }
+
+ @Override
+ protected Email newEntity() {
+ return new EmailImpl();
+ }
+}
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_en_GB.properties 2014-02-25 09:19:54 UTC (rev 12)
@@ -16,7 +16,35 @@
faxtomail.alert.alreadyTakenBy.message=
faxtomail.alert.alreadyTakenBy.title=
faxtomail.archive.button.label=
+faxtomail.attachmentEditor.action.add.mnemonic=
+faxtomail.attachmentEditor.action.add.tip=
+faxtomail.attachmentEditor.action.closeAttachment.tip=
+faxtomail.attachmentEditor.action.open.mnemonic=
+faxtomail.attachmentEditor.action.open.tip=
+faxtomail.attachmentEditor.action.remove.mnemonic=
+faxtomail.attachmentEditor.action.remove.tip=
+faxtomail.attachmentEditor.action.save.mnemonic=
+faxtomail.attachmentEditor.action.save.tip=
+faxtomail.attachmentEditor.action.tip=
+faxtomail.attachmentEditor.deleteAttachment.message=
+faxtomail.attachmentEditor.deleteAttachment.title=
+faxtomail.attachmentEditor.field.file=
+faxtomail.attachmentEditor.fileNotFound=
+faxtomail.attachmentEditor.none.tip=
+faxtomail.attachmentEditor.saveAttachment.button=
+faxtomail.attachmentEditor.saveAttachment.error.message=
+faxtomail.attachmentEditor.saveAttachment.success.message=
+faxtomail.attachmentEditor.saveAttachment.title=
+faxtomail.attachmentEditor.text=
+faxtomail.attachmentEditor.title=
faxtomail.back.button.label=
+faxtomail.chooseMailFolder.action.cancel=
+faxtomail.chooseMailFolder.action.cancel.mnemonic=
+faxtomail.chooseMailFolder.action.cancel.tip=
+faxtomail.chooseMailFolder.action.validate=
+faxtomail.chooseMailFolder.action.validate.mnemonic=
+faxtomail.chooseMailFolder.action.validate.tip=
+faxtomail.chooseMailFolder.title=
faxtomail.common.askBeforeDelete.help=
faxtomail.common.askCancelEditBeforeLeaving.help=
faxtomail.common.askCancelEditBeforeLeaving.title=
@@ -66,7 +94,9 @@
faxtomail.demand.alreadyTakenBy=
faxtomail.demande.alreadyTakenBy=
faxtomail.demande.archive.button.label=
+faxtomail.demande.archive.button.mnemonic=
faxtomail.demande.back.button.label=
+faxtomail.demande.back.button.mnemonic=
faxtomail.demande.client.label=
faxtomail.demande.demandeNumber.label=
faxtomail.demande.docType.label=
@@ -81,19 +111,24 @@
faxtomail.demande.message.label=
faxtomail.demande.object.label=
faxtomail.demande.print.button.label=
+faxtomail.demande.print.button.mnemonic=
faxtomail.demande.priority.label=
faxtomail.demande.projectReference.label=
faxtomail.demande.received.label=
faxtomail.demande.receivedDate.label=
faxtomail.demande.ref.label=
+faxtomail.demande.reply.button.label=
+faxtomail.demande.reply.button.mnemonic=
faxtomail.demande.savNumber.label=
faxtomail.demande.save.button.label=
+faxtomail.demande.save.button.mnemonic=
faxtomail.demande.sender.label=
faxtomail.demande.status.label=
faxtomail.demande.takenBy.label=
faxtomail.demande.tcc.label=
faxtomail.demande.title=
faxtomail.demande.transmit.button.label=
+faxtomail.demande.transmit.button.mnemonic=
faxtomail.demandeList.action.attachment=
faxtomail.demandeList.action.attachment.mnemonic=
faxtomail.demandeList.action.attachment.tip=
@@ -125,6 +160,9 @@
faxtomail.error.ui.business.error=
faxtomail.error.ui.business.warning=
faxtomail.error.ui.other.error=
+faxtomail.historyList.action.tip=
+faxtomail.historyList.text=
+faxtomail.historyList.title=
faxtomail.i18n.deleteCache.error=
faxtomail.i18n.mkDir.error=
faxtomail.main.action.configuration=
@@ -152,6 +190,21 @@
faxtomail.print.button.label=
faxtomail.property.get.error=
faxtomail.property.set.error=
+faxtomail.rangeRows.table.header.command_number=
+faxtomail.rangeRows.table.header.product_column=
+faxtomail.rangeRows.table.header.range=
+faxtomail.rangeRows.table.header.sav_quantity=
+faxtomail.reply.action.cancel=
+faxtomail.reply.action.cancel.mnemonic=
+faxtomail.reply.action.cancel.tip=
+faxtomail.reply.action.validate=
+faxtomail.reply.action.validate.mnemonic=
+faxtomail.reply.action.validate.tip=
+faxtomail.reply.attachment=
+faxtomail.reply.from=
+faxtomail.reply.object=
+faxtomail.reply.title=
+faxtomail.reply.to=
faxtomail.save.button.label=
faxtomail.search.between2ndPart.label=
faxtomail.search.button.label=
@@ -171,12 +224,36 @@
faxtomail.systemUser=
faxtomail.transmit.button.label=
swing.error.cannot.mail=
+swing.error.cannot.open.file=
swing.error.cannot.open.link=
swing.error.desktop.browse.not.supported=
swing.error.desktop.mail.not.supported=
swing.error.desktop.not.supported=
test=
tutti.action.create.error=
+tutti.attachmentEditor.action.add.mnemonic=
+tutti.attachmentEditor.action.add.tip=
+tutti.attachmentEditor.action.closeAttachment.tip=
+tutti.attachmentEditor.action.open.mnemonic=
+tutti.attachmentEditor.action.open.tip=
+tutti.attachmentEditor.action.remove.mnemonic=
+tutti.attachmentEditor.action.remove.tip=
+tutti.attachmentEditor.action.save.mnemonic=
+tutti.attachmentEditor.action.save.tip=
+tutti.attachmentEditor.action.tip=
+tutti.attachmentEditor.deleteAttachment.message=
+tutti.attachmentEditor.deleteAttachment.title=
+tutti.attachmentEditor.field.file=
+tutti.attachmentEditor.field.fileComment=
+tutti.attachmentEditor.field.fileName=
+tutti.attachmentEditor.fileNotFound=
+tutti.attachmentEditor.none.tip=
+tutti.attachmentEditor.saveAttachment.button=
+tutti.attachmentEditor.saveAttachment.error.message=
+tutti.attachmentEditor.saveAttachment.success.message=
+tutti.attachmentEditor.saveAttachment.title=
+tutti.attachmentEditor.text=
+tutti.attachmentEditor.title=
tutti.common.datefield.tip=
tutti.config.title=
tutti.db.deleteCache.error=
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-02-25 09:19:54 UTC (rev 12)
@@ -14,10 +14,42 @@
application.error.ui.business.warning=
faxtomail.alert.alreadyTakenBy.message=Le document est déjà attribué à l'utilisateur %s.
faxtomail.alert.alreadyTakenBy.title=Document déjà attribué
+faxtomail.attachmentEditor.action.add.mnemonic=A
+faxtomail.attachmentEditor.action.add.tip=Ajouter une pièce jointe
+faxtomail.attachmentEditor.action.closeAttachment.tip=Fermer la fenêtre des pièces-jointes
+faxtomail.attachmentEditor.action.open.mnemonic=O
+faxtomail.attachmentEditor.action.open.tip=Ouvrir la pièce jointe
+faxtomail.attachmentEditor.action.remove.mnemonic=u
+faxtomail.attachmentEditor.action.remove.tip=Supprimer la pièce jointe
+faxtomail.attachmentEditor.action.save.mnemonic=E
+faxtomail.attachmentEditor.action.save.tip=Enregistrer la pièce jointe en local
+faxtomail.attachmentEditor.action.tip=Pièces jointes
+faxtomail.attachmentEditor.deleteAttachment.message=Êtes-vous sûr de vouloir supprimer la pièce-jointe %s ?
+faxtomail.attachmentEditor.deleteAttachment.title=Suppression de pièce-jointe
+faxtomail.attachmentEditor.field.file=Fichier
+faxtomail.attachmentEditor.field.fileComment=Commentaire
+faxtomail.attachmentEditor.field.fileName=Nom
+faxtomail.attachmentEditor.fileNotFound=Le fichier %s de la pièce jointe n'a pas été trouvé
+faxtomail.attachmentEditor.none.tip=Pas de pièce-jointes
+faxtomail.attachmentEditor.saveAttachment.button=Enregistrer
+faxtomail.attachmentEditor.saveAttachment.error.message=Erreur lors de l'enregistrement de la pièce jointe %1s dans le fichier %2s
+faxtomail.attachmentEditor.saveAttachment.success.message=Le fichier %s a été sauvegardé sur votre machine
+faxtomail.attachmentEditor.saveAttachment.title=Enregistrer la pièce-jointe
+faxtomail.attachmentEditor.text=Pièces jointes (%s)
+faxtomail.attachmentEditor.title=Pièces jointes
+faxtomail.chooseMailFolder.action.cancel=Annuler
+faxtomail.chooseMailFolder.action.cancel.mnemonic=A
+faxtomail.chooseMailFolder.action.cancel.tip=Annuler et fermer la popup
+faxtomail.chooseMailFolder.action.validate=Valider
+faxtomail.chooseMailFolder.action.validate.mnemonic=V
+faxtomail.chooseMailFolder.action.validate.tip=Valider et transférer le mail
+faxtomail.chooseMailFolder.title=Choisissez le dossier où transférer le mail
faxtomail.config.application=
faxtomail.config.title=
faxtomail.demande.archive.button.label=Archiver
+faxtomail.demande.archive.button.mnemonic=V
faxtomail.demande.back.button.label=Annuler
+faxtomail.demande.back.button.mnemonic=A
faxtomail.demande.client.label=Client
faxtomail.demande.demandeNumber.label=N° Devis/Cde
faxtomail.demande.docType.label=Type
@@ -32,15 +64,20 @@
faxtomail.demande.message.label=Message
faxtomail.demande.object.label=Objet
faxtomail.demande.print.button.label=Imprimer
+faxtomail.demande.print.button.mnemonic=I
faxtomail.demande.priority.label=Priorité
faxtomail.demande.projectReference.label=Référence travaux
faxtomail.demande.receivedDate.label=Reçu le
+faxtomail.demande.reply.button.label=Répondre
+faxtomail.demande.reply.button.mnemonic=R
faxtomail.demande.savNumber.label=SAV
faxtomail.demande.save.button.label=Enregistrer
+faxtomail.demande.save.button.mnemonic=E
faxtomail.demande.sender.label=Émetteur
faxtomail.demande.status.label=Statut
faxtomail.demande.takenBy.label=Pris par
faxtomail.demande.transmit.button.label=Transmettre
+faxtomail.demande.transmit.button.mnemonic=T
faxtomail.demandeList.action.attachment=Ajouter une pièce-jointe
faxtomail.demandeList.action.attachment.mnemonic=A
faxtomail.demandeList.action.attachment.tip=Ajouter une pièce-jointe
@@ -66,6 +103,9 @@
faxtomail.demandeList.table.header.user=Pris pas
faxtomail.demandeList.table.header.waitingState=État attente
faxtomail.demandeList.title=Gestion des fax
+faxtomail.historyList.action.tip=Historique
+faxtomail.historyList.text=Historique (%s)
+faxtomail.historyList.title=Historique
faxtomail.i18n.deleteCache.error=
faxtomail.i18n.mkDir.error=
faxtomail.main.action.configuration=Configuration
@@ -88,6 +128,21 @@
faxtomail.main.title.application=FaxToMail
faxtomail.main.title.applicationName=FaxToMail
faxtomail.main.title.nodb=
+faxtomail.rangeRows.table.header.command_number=Numéro de commande / devis
+faxtomail.rangeRows.table.header.product_column=Quantité de produits
+faxtomail.rangeRows.table.header.range=Gamme
+faxtomail.rangeRows.table.header.sav_quantity=Quantité de SAV
+faxtomail.reply.action.cancel=Annuler
+faxtomail.reply.action.cancel.mnemonic=A
+faxtomail.reply.action.cancel.tip=Annuler et fermer la popup
+faxtomail.reply.action.validate=Valider
+faxtomail.reply.action.validate.mnemonic=V
+faxtomail.reply.action.validate.tip=Valider et répondre au mail
+faxtomail.reply.attachment=
+faxtomail.reply.from=De \:
+faxtomail.reply.object=Objet \:
+faxtomail.reply.title=Réponse à \: %s
+faxtomail.reply.to=À \:
faxtomail.search.between2ndPart.label=et le
faxtomail.search.button.label=Rechercher
faxtomail.search.chantier.label=Chantier
@@ -104,3 +159,4 @@
faxtomail.search.status.label=Statut
faxtomail.search.title=Recherche
faxtomail.systemUser=Système
+swing.error.cannot.open.file=
Modified: trunk/faxtomail-ui-swing/src/main/resources/log4j.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/log4j.properties 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-swing/src/main/resources/log4j.properties 2014-02-25 09:19:54 UTC (rev 12)
@@ -26,7 +26,7 @@
log4j.appender.console.layout.ConversionPattern=%d{yyyy/MM/dd hh:mm:ss} %5p (%F:%L) %M %m%n
# global level
-log4j.logger.com.franciaflex.faxtomail=DEBUG
+log4j.logger.com.franciaflex.faxtomail.ui.swing=DEBUG
### persistence level
# log4j.logger.org.nuiton.topia=TRACE
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-02-25 09:19:54 UTC (rev 12)
@@ -158,13 +158,14 @@
result.put(Email.PROPERTY_PROJECT_REFERENCE, "Référence travaux");
result.put(Email.PROPERTY_PRIORITY, "Priorité");
result.put(Email.PROPERTY_SAV_NUMBER, "Numéro SAV");
- result.put(Email.PROPERTY_RANGE, "Gamme");
+ result.put(Email.PROPERTY_RANGE_ROW, "Gamme");
result.put(Email.PROPERTY_MAIL_FOLDER, "Dossier");
result.put(Email.PROPERTY_CLIENT, "Client");
result.put(Email.PROPERTY_DEMAND_STATUS, "Statut");
result.put(Email.PROPERTY_DEMAND_TYPE, "Type");
result.put(Email.PROPERTY_TAKEN_BY, "Pris par");
result.put(Email.PROPERTY_ETAT_ATTENTE, "État attente");
+ result.put(Email.PROPERTY_ATTACHMENT, "Pièces jointes");
return result;
}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-02-18 09:55:51 UTC (rev 11)
+++ trunk/pom.xml 2014-02-25 09:19:54 UTC (rev 12)
@@ -449,6 +449,30 @@
<scope>compile</scope>
</dependency>
+ <!--<dependency>-->
+ <!--<groupId>net.atlanticbb.tantlinger</groupId>-->
+ <!--<artifactId>shef</artifactId>-->
+ <!--<version>2009-05-12</version>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>jtidy</groupId>-->
+ <!--<artifactId>jtidy</artifactId>-->
+ <!--<version>8.0</version>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.bushe</groupId>-->
+ <!--<artifactId>sam</artifactId>-->
+ <!--<version>1.0</version>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>novaworx</groupId>-->
+ <!--<artifactId>novaworx-syntax</artifactId>-->
+ <!--<version>0.0.7</version>-->
+ <!--</dependency>-->
+
</dependencies>
</dependencyManagement>
1
0
Author: kmorin
Date: 2014-02-18 10:55:51 +0100 (Tue, 18 Feb 2014)
New Revision: 11
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/11
Log:
remove unuseful required properties
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-02-14 17:28:56 UTC (rev 10)
+++ trunk/pom.xml 2014-02-18 09:55:51 UTC (rev 11)
@@ -554,18 +554,18 @@
<phase>initialize</phase>
<configuration>
<rules>
- <requireProperty>
- <property>jreVersion</property>
- <message>You must set a jreVersion property!</message>
- </requireProperty>
- <requireProperty>
- <property>dbVersion</property>
- <message>You must set a dbVersion property!</message>
- </requireProperty>
- <requireProperty>
- <property>reportVersion</property>
- <message>You must set a reportVersion property!</message>
- </requireProperty>
+ <!--<requireProperty>-->
+ <!--<property>jreVersion</property>-->
+ <!--<message>You must set a jreVersion property!</message>-->
+ <!--</requireProperty>-->
+ <!--<requireProperty>-->
+ <!--<property>dbVersion</property>-->
+ <!--<message>You must set a dbVersion property!</message>-->
+ <!--</requireProperty>-->
+ <!--<requireProperty>-->
+ <!--<property>reportVersion</property>-->
+ <!--<message>You must set a reportVersion property!</message>-->
+ <!--</requireProperty>-->
</rules>
<ignoreCache>true</ignoreCache>
<failFast>true</failFast>
1
0