Vradi-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
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
May 2011
- 4 participants
- 74 discussions
Author: sletellier
Date: 2011-05-03 14:55:48 +0200 (Tue, 03 May 2011)
New Revision: 12
Url: http://chorem.org/repositories/revision/vradi/12
Log:
Up to nuiton-widget 1.1.1
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-05-03 12:39:49 UTC (rev 11)
+++ trunk/pom.xml 2011-05-03 12:55:48 UTC (rev 12)
@@ -113,7 +113,7 @@
<jaxxVersion>2.4</jaxxVersion>
<nuitonUtilsVersion>2.1.2</nuitonUtilsVersion>
<nuitonI18nVersion>2.3.2</nuitonI18nVersion>
- <nuitonWidgetVersion>1.1</nuitonWidgetVersion>
+ <nuitonWidgetVersion>1.1.1</nuitonWidgetVersion>
<generatorPluginVersion>2.3.3</generatorPluginVersion>
<wikittyVersion>3.1</wikittyVersion>
<oooVersion>3.2.1</oooVersion>
1
0
Author: sletellier
Date: 2011-05-03 14:39:49 +0200 (Tue, 03 May 2011)
New Revision: 11
Url: http://chorem.org/repositories/revision/vradi/11
Log:
Update documentation
Modified:
trunk/src/site/rst/fluxXML.rst
Modified: trunk/src/site/rst/fluxXML.rst
===================================================================
--- trunk/src/site/rst/fluxXML.rst 2011-05-03 12:29:24 UTC (rev 10)
+++ trunk/src/site/rst/fluxXML.rst 2011-05-03 12:39:49 UTC (rev 11)
@@ -70,6 +70,10 @@
tous les quarts d'heure. Choisissez la fréquence souhaitée dans les trois listes
à votre disposition et validez. L'application doit être démarrée à l'heure où
l'alarme se déclenche pour que l'import s'effectue.
+Vous pouvez cocher l'option "Sélection automatique des formulaires", celle-ci
+permet de lancer la sélection automatique des formulaire lors de l'import des
+flux. Si il y a des propositions de descripteurs pour le formulaire importé,
+celui-ci va être sélectionné.
Forcer l'import d'un flux XML
=============================
1
0
Author: sletellier
Date: 2011-05-03 14:29:24 +0200 (Tue, 03 May 2011)
New Revision: 10
Url: http://chorem.org/repositories/revision/vradi/10
Log:
#321 Add an autoSend configuration option
- Move some method from VradiStorageService to managers
- Fix client validation error
- Fix upload template upload file name verification
Added:
trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AutoSendTasks.java
Modified:
trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfiguration.java
trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfigurationHelper.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/MailingManager.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java
trunk/vradi-services/src/main/resources/i18n/vradi-services_fr_FR.properties
trunk/vradi-services/src/test/java/org/chorem/vradi/services/VradiStorageServiceTest.java
trunk/vradi-services/src/test/java/org/chorem/vradi/services/managers/MailingManagerTest.java
trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/AdminHandler.java
trunk/vradi-swing/src/main/resources/org/chorem/vradi/entities/Client-error-validation.xml
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfiguration.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfiguration.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfiguration.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -316,6 +316,12 @@
"vradi.WebHarvestPreview.dir",
_("vradi.service.config.migration.skip.description"),
getDefaultDir(WEB_HARVERT_SCRIPT_PREVIEW_DEFAULT_DIR_NAME),
+ String.class, false, false),
+
+ AUTO_SEND_HOUR(
+ "vradi.autoSend.hour",
+ _("vradi.autoSend.hour.description"),
+ null,
String.class, false, false);
public String key;
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfigurationHelper.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfigurationHelper.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceConfigurationHelper.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -194,6 +194,10 @@
return config.getOptionAsBoolean(VradiServiceOption.SKIP_MIGRATION.key);
}
+ public static String getSendTaskHour(ApplicationConfig config) {
+ return config.getOption(VradiServiceOption.AUTO_SEND_HOUR.key);
+ }
+
public static List<String> getOptionAsList(ApplicationConfig config, String key) {
List<String> result = new ArrayList<String>();
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -133,7 +133,7 @@
thesaurusManager = new ThesaurusManager(wikittyProxy);
clientManager = new ClientManager(config, wikittyProxy);
formTypeManager = new FormTypeManager(config, wikittyProxy);
- mailingManager = new MailingManager(config, wikittyProxy);
+ mailingManager = new MailingManager(config, wikittyProxy, formTypeManager);
fileService = new FileServiceImpl(config);
searchManager = new SearchManager(wikittyProxy, thesaurusManager);
@@ -408,47 +408,7 @@
@Override
public String generatePDF(String formId, boolean force) throws VradiException {
-
- String uri = null;
-
- String extensionName = null;
- Form form = wikittyProxy.restore(Form.class, formId);
- for (String ext : form.getExtensionNames()) {
- if (!ext.equals(Infogene.EXT_INFOGENE)
- && !ext.equals(Form.EXT_FORM)) {
- extensionName = ext;
- break;
- }
-
- }
- WikittyExtension extension = formTypeManager.getFormType(extensionName);
- // VradiHelper.getFormTypeTemplate(extension);
- String template = extension.getTagValue(VradiConstants.FormTypeTemplateEnum.FIELD_TEMPLATE_ATTRIBUTE.getValue());
- File templateFile = formTypeManager.getTemplate(extensionName, template);
- Map<String, String> fieldMap = getAssociatedFields(extension.getName(), template);
-
- if (log.isDebugEnabled()) {
- log.debug("Generating PDF file for form " + form.getWikittyId() +
- " (template = " + template + ")");
- }
-
- try {
- // but only those associated with current templates !
- List<Form> currentForms = Collections.singletonList(form);
- List<File> filesToAdd = generateFilledDocumentInPDF(
- templateFile, currentForms, fieldMap, force);
-
- if (filesToAdd != null && !filesToAdd.isEmpty()) {
- uri = filesToAdd.get(0).getName();
- }
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't generate pdf", ex);
- }
- throw new VradiException("Can't generate pdf", ex);
- }
-
- return uri;
+ return mailingManager.generatePDF(formId, force);
}
@@ -485,182 +445,10 @@
return documentsFields;
}
- /**
- * Generate offer PDF form given forms with specified template.
- *
- * @param template template to use to generate PDF
- * @param forms to to generate
- * @param fieldBindings map between template field name and form fields names
- * @param replace replace already existing generated forms
- * @return generated pdf files
- * @throws VradiException for various possible errors
- */
- protected List<File> generateFilledDocumentInPDF(File template, List<Form> forms,
- Map<String, String> fieldBindings,
- boolean replace)
- throws VradiException {
-
- List<File> generatedPDFList = null;
-
- if (template == null) {
- if (log.isWarnEnabled()) {
- log.warn("Try to generate form pdf without template");
- }
- } else if (fieldBindings == null) {
- if (log.isWarnEnabled()) {
- log.warn("No association field found, abording");
- }
- } else {
- TemplateManager templateManager = new TemplateManager(config, template);
-
- // split fqn form field name in an array
- // composed of extension name, and extension field
- // TODO EC20100510 set in commun with same function in
- // {@link generateFilledDocumentInPDF(TemplateManager, Form form, Map<String, String[]>, boolean)
- Map<String, String[]> map = new HashMap<String, String[]>();
- for (Map.Entry<String, String> binding : fieldBindings.entrySet()) {
- String fieldFQName = binding.getValue();
- if (fieldFQName != null && fieldFQName.indexOf(".") > 0) {
- int dot = fieldFQName.indexOf(".");
- String[] fqField = new String[2];
- fqField[0] = fieldFQName.substring(0, dot);
- fqField[1] = fieldFQName.substring(dot + 1);
- map.put(binding.getKey(), fqField);
- }
- }
-
- generatedPDFList = new ArrayList<File>();
- for (Form form : forms) {
- File f = generateFilledDocumentInPDF(templateManager, form, map, replace);
- generatedPDFList.add(f);
- }
- }
-
- return generatedPDFList;
- }
-
- /**
- * Generate a single pdf file for specified form.
- *
- * @param templateManager pdf template manager
- * @param form form to get pdf
- * @param fieldBindings association between field name and form fields (couple extension name, extension field)
- * @param replace replace already existing pdf
- * @return the pdf file associated with pdf
- * @throws VradiException for various possible errors
- */
- protected File generateFilledDocumentInPDF(TemplateManager templateManager,
- Form form, Map<String, String[]> fieldBindings,
- boolean replace) throws VradiException {
-
- // generated pdf are cached
- File result = mailingManager.getGeneratedPdfFile(form);
- if (!replace && result.exists()) {
- return result;
- }
-
- Map<String, Object> fieldValues = new HashMap<String, Object>();
- for (Map.Entry<String, String[]> binding : fieldBindings.entrySet()) {
- String[] fqField = binding.getValue();
- Object value = form.getField(fqField[0], fqField[1]);
- fieldValues.put(binding.getKey(),
- value != null ? value.toString() : null);
- }
-
- // Extract files
- List<String> formUrls = new ArrayList<String>();
- if (form.getFiles() != null) {
- for (String file : form.getFiles()) {
- String formUrl = fileService.getFormEmbeddedUrl(file, form.getWikittyId());
- formUrls.add(formUrl);
- }
- }
-
- templateManager.generateDoc(result.getPath(), fieldValues,
- formUrls.toArray(new String[formUrls.size()]));
-
- return result;
- }
-
@Override
public String sendMessages(String sessionId) throws VradiException {
- Session session = wikittyProxy.restore(Session.class, sessionId);
-
- if (SessionStatus.isSent(session)) {
- return StringUtils.EMPTY;
- }
-
- // Pass to active for session in error or stopped
- if (SessionStatus.isToRestart(session)) {
-
- log.info("Session was stopped or in error, resume sending");
-
- session.setStatus(SessionStatus.ACTIVE.getValue());
- session.setSessionLogs(StringUtils.EMPTY);
- session = wikittyProxy.store(session);
- }
-
- // Get all files to attach
- Set<String> filesNames = session.getFiles();
- List<File> files = new ArrayList<File>();
- if (filesNames != null) {
- for (String fileName : filesNames) {
- File file = fileService.downloadSessionAttachment(fileName, sessionId);
- files.add(file);
- log.info("Files founds for session : " + session.getSessionDate() + " : " + (file == null ? "not found" : file.getName()));
- }
- }
-
- // Init logger to keep exception
- List<String> sessionLogger = new ArrayList<String>();
-
- Set<String> sendingIds = session.getSending();
- if (sendingIds != null) {
-
- for (String sendingId : sendingIds) {
-
- // Flag to detect if it's canceled by user
- session = wikittyProxy.restore(Session.class, session.getWikittyId());
- if (SessionStatus.isStopped(session)) {
- log.warn("Sending stopped by user");
- sessionLogger.add(_("vradi.error.session.stopped", session.getNum(),
- DateUtil.formatDate(session.getSessionDate(), DateUtil.DEFAULT_PATTERN)));
- }
-
- Sending sending = wikittyProxy.restore(Sending.class, sendingId);
- if (sending != null) {
- if (SendingStatus.isSent(sending)) {
- if (log.isDebugEnabled()) {
- log.debug("Sending " + sendingId + " already sent, skip");
- }
- } else if (SendingStatus.isToSend(sending)) {
-
- // Send
- String log = sendMessage(sendingId, session.getParagraph(), files);
- if (log != null) {
- sessionLogger.add(log);
- }
- }
- }
- }
- }
-
- // Get logs
- String formatedLogs = formatSessionLog(sessionLogger);
-
- // Set session to sent or error
- if (sessionLogger.isEmpty()) {
- session.setStatus(SessionStatus.SENT.getValue());
- session.setSessionLogs(StringUtils.EMPTY);
- } else {
- session.setStatus(SessionStatus.ERROR.getValue());
- session.setSessionLogs(formatedLogs);
- }
- session.setSessionDate(new Date());
- wikittyProxy.store(session);
-
- return formatedLogs;
+ return mailingManager.sendMessages(sessionId);
}
@Override
@@ -674,105 +462,9 @@
}
public String sendMessage(String sendingId, String sessionParagraph, String email, boolean reSend, Collection<File> filesToAttach) throws VradiException {
-
- Sending sending = wikittyProxy.restore(Sending.class, sendingId);
- User user = clientManager.getUser(sending.getUser());
-
- // Will resend sending already sent
- if (!reSend) {
- // Do nothing
- if (!SendingStatus.isToSend(sending)) {
- return null;
- }
- }
-
- // If its client or group sending : do nothing
- // Never append
-// if (sending.getUser() == null) {
-// sending.setStatus(VradiConstants.SendingStatus.SENT.getValue());
-// return wikittyProxy.store(sending);
-// }
-
- Set<String> formsIds = SendingHelper.extractForms(wikittyProxy, sending.getGroupForms());
-
- // If no forms founds
- if (formsIds.isEmpty()) {
-
- // Set session in error
- sending.setStatus(SendingStatus.DELETED.getValue());
- wikittyProxy.store(sending);
-
- // Do nothing
- return null;
- }
-
- // Get email address
- // si aucune n'est specifiée, on utilise celle du client
- if (StringUtils.isBlank(email)) {
- email = user.getEmail();
-
- // il peut arriver qu'un user n'est pas d'email et que l'admin
- // souhaite quand meme faire l'envoie d'une session.
- // dans ce cas on ne traite pas l'envoi de mail courant.
- if (StringUtils.isBlank(email)) {
-
- if (log.isWarnEnabled()) {
- log.warn("User " + user.getName() + " has not valid email (skip current mail sending)");
- }
- // Set session in error
- sending.setStatus(SendingStatus.ERROR.getValue());
- wikittyProxy.store(sending);
-
- return _("vradi.error.sending.emailIsBlank", user.getName());
- }
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Sending message to " + email);
- }
-
- String subject = VradiServiceConfigurationHelper.getOfferMailSubject(config);
-
- // Set message
- String message = sessionParagraph + "\n\n" + sending.getParagraph();
-
- List<Form> forms = wikittyProxy.restore(Form.class, new ArrayList<String>(formsIds));
-
- boolean receptionProof = sending.getReceptionProof();
-
- // Post mail and save msg id
- String messageId;
- try {
- messageId = mailingManager.postMail(
- email, subject, message, forms, receptionProof, filesToAttach);
-
- } catch (VradiException eee) {
-
- log.error("Failed to send sending for email : " + email, eee);
-
- // Set sending in error
- sending.setStatus(SendingStatus.ERROR.getValue());
- wikittyProxy.store(sending);
-
- return _("vradi.error.sending.failedToSend", user.getName(), eee.getMessage());
- }
- sending.setMessageId(messageId);
-
- // Set sending status
- sending.setStatus(receptionProof ?
- SendingStatus.WAITING_RECEPTION_PROOF.getValue() :
- SendingStatus.SENT.getValue());
-
- // Update sending
- wikittyProxy.store(sending);
-
- return null;
+ return mailingManager.sendMessage(sendingId, sessionParagraph, email, reSend, filesToAttach);
}
- protected String formatSessionLog(List<String> logs) {
- return StringUtils.join(logs, ",\n");
- }
-
@Override
public void receiveMessages() throws VradiException {
mailingManager.receiveMails();
@@ -797,41 +489,7 @@
*/
@Override
public void generatePDFForSession(String sessionId) throws VradiException {
- List<String> formsIdsToGenerate = new ArrayList<String>();
-
- Session session = wikittyProxy.restore(Session.class, sessionId);
-
- Set<String> sendingIds = session.getSending();
-
- if (sendingIds == null) {
- return;
- }
-
- for (String id : sendingIds) {
- Sending sending = wikittyProxy.restore(Sending.class, id);
-
- if (sending != null) {
- Set<String> formsIds = SendingHelper.extractForms(wikittyProxy, sending.getGroupForms());
-
- if (formsIds != null) {
- for (String formId : formsIds) {
-
- if (!formsIdsToGenerate.contains(formId)) {
- formsIdsToGenerate.add(formId);
- }
- }
- }
- }
- }
-
- for (String formId : formsIdsToGenerate) {
- try {
- generatePDF(formId, true);
- } catch (VradiException eee) {
- throw new VradiException("An error occurred while generating PDF file for " +
- "form : " + formId, eee);
- }
- }
+ mailingManager.generatePDFForSession(sessionId);
}
/**
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/MailingManager.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/MailingManager.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/MailingManager.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -32,13 +32,20 @@
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.sax.BodyContentHandler;
+import org.chorem.vradi.VradiConstants;
import org.chorem.vradi.VradiServiceConfigurationHelper;
+import org.chorem.vradi.beans.SendingHelper;
import org.chorem.vradi.entities.Form;
+import org.chorem.vradi.entities.Infogene;
import org.chorem.vradi.entities.Sending;
import org.chorem.vradi.entities.User;
+import org.chorem.vradi.services.FileService;
+import org.chorem.vradi.services.FileServiceImpl;
import org.chorem.vradi.services.VradiException;
import org.nuiton.util.ApplicationConfig;
+import org.nuiton.util.DateUtil;
import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
@@ -73,11 +80,16 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import static org.chorem.vradi.VradiConstants.SendingStatus;
import static org.nuiton.i18n.I18n._;
@@ -102,9 +114,15 @@
protected WikittyProxy wikittyProxy;
- public MailingManager(ApplicationConfig config, WikittyProxy wikittyProxy) {
+ protected FileService fileService;
+
+ protected FormTypeManager formTypeManager;
+
+ public MailingManager(ApplicationConfig config, WikittyProxy wikittyProxy, FormTypeManager formTypeManager) {
this.config = config;
this.wikittyProxy = wikittyProxy;
+ this.fileService = new FileServiceImpl(config);
+ this.formTypeManager = formTypeManager;
}
/**
@@ -602,4 +620,370 @@
log.info("Mine type of " + file.getName() + " is : " + result);
return result;
}
+
+ /**
+ * Generate all the PDFs needed to send a session.
+ *
+ * @param sessionId the session wikitty id
+ */
+ public void generatePDFForSession(String sessionId) throws VradiException {
+ List<String> formsIdsToGenerate = new ArrayList<String>();
+
+ org.chorem.vradi.entities.Session session = wikittyProxy.restore(org.chorem.vradi.entities.Session.class, sessionId);
+
+ Set<String> sendingIds = session.getSending();
+
+ if (sendingIds == null) {
+ return;
+ }
+
+ for (String id : sendingIds) {
+ Sending sending = wikittyProxy.restore(Sending.class, id);
+
+ if (sending != null) {
+ Set<String> formsIds = SendingHelper.extractForms(wikittyProxy, sending.getGroupForms());
+
+ if (formsIds != null) {
+ for (String formId : formsIds) {
+
+ if (!formsIdsToGenerate.contains(formId)) {
+ formsIdsToGenerate.add(formId);
+ }
+ }
+ }
+ }
+ }
+
+ for (String formId : formsIdsToGenerate) {
+ try {
+ generatePDF(formId, true);
+ } catch (VradiException eee) {
+ throw new VradiException("An error occurred while generating PDF file for " +
+ "form : " + formId, eee);
+ }
+ }
+ }
+
+ public String generatePDF(String formId, boolean force) throws VradiException {
+
+ String uri = null;
+
+ String extensionName = null;
+ Form form = wikittyProxy.restore(Form.class, formId);
+ for (String ext : form.getExtensionNames()) {
+ if (!ext.equals(Infogene.EXT_INFOGENE)
+ && !ext.equals(Form.EXT_FORM)) {
+ extensionName = ext;
+ break;
+ }
+
+ }
+ WikittyExtension extension = formTypeManager.getFormType(extensionName);
+ // VradiHelper.getFormTypeTemplate(extension);
+ String template = extension.getTagValue(VradiConstants.FormTypeTemplateEnum.FIELD_TEMPLATE_ATTRIBUTE.getValue());
+ File templateFile = formTypeManager.getTemplate(extensionName, template);
+ Map<String, String> fieldMap = formTypeManager.getAssociatedFields(extension.getName(), template);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Generating PDF file for form " + form.getWikittyId() +
+ " (template = " + template + ")");
+ }
+
+ try {
+ // but only those associated with current templates !
+ List<Form> currentForms = Collections.singletonList(form);
+ List<File> filesToAdd = generateFilledDocumentInPDF(
+ templateFile, currentForms, fieldMap, force);
+
+ if (filesToAdd != null && !filesToAdd.isEmpty()) {
+ uri = filesToAdd.get(0).getName();
+ }
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't generate pdf", ex);
+ }
+ throw new VradiException("Can't generate pdf", ex);
+ }
+
+ return uri;
+ }
+
+
+ /**
+ * Generate offer PDF form given forms with specified template.
+ *
+ * @param template template to use to generate PDF
+ * @param forms to to generate
+ * @param fieldBindings map between template field name and form fields names
+ * @param replace replace already existing generated forms
+ * @return generated pdf files
+ * @throws VradiException for various possible errors
+ */
+ protected List<File> generateFilledDocumentInPDF(File template, List<Form> forms,
+ Map<String, String> fieldBindings,
+ boolean replace)
+ throws VradiException {
+
+ List<File> generatedPDFList = null;
+
+ if (template == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Try to generate form pdf without template");
+ }
+ } else if (fieldBindings == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("No association field found, abording");
+ }
+ } else {
+ TemplateManager templateManager = new TemplateManager(config, template);
+
+ // split fqn form field name in an array
+ // composed of extension name, and extension field
+ // TODO EC20100510 set in commun with same function in
+ // {@link generateFilledDocumentInPDF(TemplateManager, Form form, Map<String, String[]>, boolean)
+ Map<String, String[]> map = new HashMap<String, String[]>();
+ for (Map.Entry<String, String> binding : fieldBindings.entrySet()) {
+ String fieldFQName = binding.getValue();
+ if (fieldFQName != null && fieldFQName.indexOf(".") > 0) {
+ int dot = fieldFQName.indexOf(".");
+ String[] fqField = new String[2];
+ fqField[0] = fieldFQName.substring(0, dot);
+ fqField[1] = fieldFQName.substring(dot + 1);
+ map.put(binding.getKey(), fqField);
+ }
+ }
+
+ generatedPDFList = new ArrayList<File>();
+ for (Form form : forms) {
+ File f = generateFilledDocumentInPDF(templateManager, form, map, replace);
+ generatedPDFList.add(f);
+ }
+ }
+
+ return generatedPDFList;
+ }
+
+ /**
+ * Generate a single pdf file for specified form.
+ *
+ * @param templateManager pdf template manager
+ * @param form form to get pdf
+ * @param fieldBindings association between field name and form fields (couple extension name, extension field)
+ * @param replace replace already existing pdf
+ * @return the pdf file associated with pdf
+ * @throws VradiException for various possible errors
+ */
+ protected File generateFilledDocumentInPDF(TemplateManager templateManager,
+ Form form, Map<String, String[]> fieldBindings,
+ boolean replace) throws VradiException {
+
+ // generated pdf are cached
+ File result = getGeneratedPdfFile(form);
+ if (!replace && result.exists()) {
+ return result;
+ }
+
+ Map<String, Object> fieldValues = new HashMap<String, Object>();
+ for (Map.Entry<String, String[]> binding : fieldBindings.entrySet()) {
+ String[] fqField = binding.getValue();
+ Object value = form.getField(fqField[0], fqField[1]);
+ fieldValues.put(binding.getKey(),
+ value != null ? value.toString() : null);
+ }
+
+ // Extract files
+ List<String> formUrls = new ArrayList<String>();
+ if (form.getFiles() != null) {
+ for (String file : form.getFiles()) {
+ String formUrl = fileService.getFormEmbeddedUrl(file, form.getWikittyId());
+ formUrls.add(formUrl);
+ }
+ }
+
+ templateManager.generateDoc(result.getPath(), fieldValues,
+ formUrls.toArray(new String[formUrls.size()]));
+
+ return result;
+ }
+
+ public String sendMessages(String sessionId) throws VradiException {
+
+ org.chorem.vradi.entities.Session session = wikittyProxy.restore(org.chorem.vradi.entities.Session.class, sessionId);
+
+ if (VradiConstants.SessionStatus.isSent(session)) {
+ return StringUtils.EMPTY;
+ }
+
+ // Pass to active for session in error or stopped
+ if (VradiConstants.SessionStatus.isToRestart(session)) {
+
+ log.info("Session was stopped or in error, resume sending");
+
+ session.setStatus(VradiConstants.SessionStatus.ACTIVE.getValue());
+ session.setSessionLogs(StringUtils.EMPTY);
+ session = wikittyProxy.store(session);
+ }
+
+ // Get all files to attach
+ Set<String> filesNames = session.getFiles();
+ List<File> files = new ArrayList<File>();
+ if (filesNames != null) {
+ for (String fileName : filesNames) {
+ File file = fileService.downloadSessionAttachment(fileName, sessionId);
+ files.add(file);
+ log.info("Files founds for session : " + session.getSessionDate() + " : " + (file == null ? "not found" : file.getName()));
+ }
+ }
+
+ // Init logger to keep exception
+ List<String> sessionLogger = new ArrayList<String>();
+
+ Set<String> sendingIds = session.getSending();
+ if (sendingIds != null) {
+
+ for (String sendingId : sendingIds) {
+
+ // Flag to detect if it's canceled by user
+ session = wikittyProxy.restore(org.chorem.vradi.entities.Session.class, session.getWikittyId());
+ if (VradiConstants.SessionStatus.isStopped(session)) {
+ log.warn("Sending stopped by user");
+ sessionLogger.add(_("vradi.error.session.stopped", session.getNum(),
+ DateUtil.formatDate(session.getSessionDate(), DateUtil.DEFAULT_PATTERN)));
+ }
+
+ Sending sending = wikittyProxy.restore(Sending.class, sendingId);
+ if (sending != null) {
+ if (SendingStatus.isSent(sending)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Sending " + sendingId + " already sent, skip");
+ }
+ } else if (SendingStatus.isToSend(sending)) {
+
+ // Send
+ String log = sendMessage(sendingId, session.getParagraph(), null, false, files);
+ if (log != null) {
+ sessionLogger.add(log);
+ }
+ }
+ }
+ }
+ }
+
+ // Get logs
+ String formatedLogs = formatSessionLog(sessionLogger);
+
+ // Set session to sent or error
+ if (sessionLogger.isEmpty()) {
+ session.setStatus(VradiConstants.SessionStatus.SENT.getValue());
+ session.setSessionLogs(StringUtils.EMPTY);
+ } else {
+ session.setStatus(VradiConstants.SessionStatus.ERROR.getValue());
+ session.setSessionLogs(formatedLogs);
+ }
+ session.setSessionDate(new Date());
+ wikittyProxy.store(session);
+
+ return formatedLogs;
+ }
+
+ protected String formatSessionLog(List<String> logs) {
+ return StringUtils.join(logs, ",\n");
+ }
+
+ public String sendMessage(String sendingId, String sessionParagraph, String email, boolean reSend, Collection<File> filesToAttach) throws VradiException {
+
+ Sending sending = wikittyProxy.restore(Sending.class, sendingId);
+ User user = wikittyProxy.restore(User.class, sending.getUser());
+
+ // Will resend sending already sent
+ if (!reSend) {
+ // Do nothing
+ if (!SendingStatus.isToSend(sending)) {
+ return null;
+ }
+ }
+
+ // If its client or group sending : do nothing
+ // Never append
+// if (sending.getUser() == null) {
+// sending.setStatus(VradiConstants.SendingStatus.SENT.getValue());
+// return wikittyProxy.store(sending);
+// }
+
+ Set<String> formsIds = SendingHelper.extractForms(wikittyProxy, sending.getGroupForms());
+
+ // If no forms founds
+ if (formsIds.isEmpty()) {
+
+ // Set session in error
+ sending.setStatus(SendingStatus.DELETED.getValue());
+ wikittyProxy.store(sending);
+
+ // Do nothing
+ return null;
+ }
+
+ // Get email address
+ // si aucune n'est specifiée, on utilise celle du client
+ if (StringUtils.isBlank(email)) {
+ email = user.getEmail();
+
+ // il peut arriver qu'un user n'est pas d'email et que l'admin
+ // souhaite quand meme faire l'envoie d'une session.
+ // dans ce cas on ne traite pas l'envoi de mail courant.
+ if (StringUtils.isBlank(email)) {
+
+ if (log.isWarnEnabled()) {
+ log.warn("User " + user.getName() + " has not valid email (skip current mail sending)");
+ }
+ // Set session in error
+ sending.setStatus(SendingStatus.ERROR.getValue());
+ wikittyProxy.store(sending);
+
+ return _("vradi.error.sending.emailIsBlank", user.getName());
+ }
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Sending message to " + email);
+ }
+
+ String subject = VradiServiceConfigurationHelper.getOfferMailSubject(config);
+
+ // Set message
+ String message = sessionParagraph + "\n\n" + sending.getParagraph();
+
+ List<Form> forms = wikittyProxy.restore(Form.class, new ArrayList<String>(formsIds));
+
+ boolean receptionProof = sending.getReceptionProof();
+
+ // Post mail and save msg id
+ String messageId;
+ try {
+ messageId = postMail(
+ email, subject, message, forms, receptionProof, filesToAttach);
+
+ } catch (VradiException eee) {
+
+ log.error("Failed to send sending for email : " + email, eee);
+
+ // Set sending in error
+ sending.setStatus(SendingStatus.ERROR.getValue());
+ wikittyProxy.store(sending);
+
+ return _("vradi.error.sending.failedToSend", user.getName(), eee.getMessage());
+ }
+ sending.setMessageId(messageId);
+
+ // Set sending status
+ sending.setStatus(receptionProof ?
+ SendingStatus.WAITING_RECEPTION_PROOF.getValue() :
+ SendingStatus.SENT.getValue());
+
+ // Update sending
+ wikittyProxy.store(sending);
+
+ return null;
+ }
+
}
Added: trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AutoSendTasks.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AutoSendTasks.java (rev 0)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AutoSendTasks.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -0,0 +1,57 @@
+package org.chorem.vradi.services.tasks;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.vradi.entities.Session;
+import org.chorem.vradi.services.VradiException;
+import org.chorem.vradi.services.managers.FormManager;
+import org.chorem.vradi.services.managers.MailingManager;
+
+import java.util.TimerTask;
+
+/**
+ * @author sletellier
+ */
+public class AutoSendTasks extends TimerTask {
+
+ private static final Log log = LogFactory.getLog(AutoSendTasks.class);
+
+
+ protected FormManager formManager;
+ protected MailingManager mailingManager;
+
+ public AutoSendTasks(FormManager formManager, MailingManager mailingManager) {
+ this.formManager = formManager;
+ this.mailingManager = mailingManager;
+ }
+
+ @Override
+ public void run() {
+
+ try {
+ // Get open session of open
+ Session session = formManager.getLastOpenSession();
+
+ // If no session is opened, creating new one
+ if (session == null) {
+ session = formManager.createNewSession();
+ }
+
+ // Bind all forms
+ session= formManager.bindForms(session);
+
+ String sessionId = session.getWikittyId();
+
+ // Generate pdf for session
+ mailingManager.generatePDFForSession(sessionId);
+
+ // Send email for session
+ String logs = mailingManager.sendMessages(sessionId);
+
+ log.info("Send email is finished : " + logs);
+
+ } catch (VradiException e) {
+ log.error("Failled to auto send session");
+ }
+ }
+}
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -29,6 +29,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.vradi.VradiConstants;
+import org.chorem.vradi.VradiServiceConfigurationHelper;
import org.chorem.vradi.entities.XmlStream;
import org.chorem.vradi.services.managers.BindingManager;
import org.chorem.vradi.services.managers.FormManager;
@@ -76,6 +77,11 @@
/** Cron task to import streams. */
protected ScheduledExecutorService xmlStreamScheduler;
+ /** Cron task to enable auto send task. */
+ protected ScheduledExecutorService autoSendScheduler;
+
+ protected ScheduledFuture<?> autoSendTask;
+
protected ReceiveMailTasks receiveMailTasks;
/** Map entre les id des flux, et les taches gérant. */
@@ -111,8 +117,26 @@
public void initTasks() {
initMailTask();
initXmlStreamTasks();
+
+ // If hour is fill in properties
+ String sendTaskHour = VradiServiceConfigurationHelper.getSendTaskHour(config);
+ if (!StringUtils.isEmpty(sendTaskHour)) {
+
+ // Create autoSend task
+ initAutoSendTask(sendTaskHour);
+ }
}
+ protected void initAutoSendTask(String sendTaskHour) {
+
+ // les imports sont fait sequentiellement
+ autoSendScheduler = Executors.newScheduledThreadPool(1);
+
+ TimerTask task = new AutoSendTasks(formManager, mailingManager);
+
+ autoSendTask = initDaylyTask(autoSendScheduler, task, sendTaskHour);
+ }
+
/** Init and start mail tasks (check every 10 minutes) */
protected void initMailTask() {
mailCronTimer = new Timer("vradi-mail-task");
@@ -148,7 +172,24 @@
streamImportTime = "0:0";
}
- Matcher matchImportTime = VradiConstants.XML_STREAM_IMPORT_TIME.matcher(streamImportTime);
+ // TODO EC20100921 prevoir le cas où une tâche dure plus d'une journée
+ TimerTask autoImportTask;
+ if (xmlStream.getAutoAssign()) {
+ autoImportTask = new AssignXmlStreamTasks(config, wikittyProxy, bindingManager, thesaurusManager, formManager, xmlStream.getWikittyId());
+ } else {
+ autoImportTask = new ImportXmlStreamTasks(config, wikittyProxy, bindingManager, xmlStream.getWikittyId());
+ }
+ ScheduledFuture<?> sheduledImportTask = initDaylyTask(xmlStreamScheduler, autoImportTask, streamImportTime);
+
+ if (log.isInfoEnabled()) {
+ log.info("Starting import of xml stream " + xmlStream.getName() + " at " + streamImportTime);
+ }
+ xmlStreamImportTasks.put(xmlStream.getWikittyId(), sheduledImportTask);
+ }
+
+ public ScheduledFuture<?> initDaylyTask(ScheduledExecutorService scheduledExecutorService, TimerTask task, String hour) {
+
+ Matcher matchImportTime = VradiConstants.XML_STREAM_IMPORT_TIME.matcher(hour);
if (matchImportTime.find()) {
String hours = matchImportTime.group(1);
String minutes = matchImportTime.group(2);
@@ -166,27 +207,16 @@
if (delayInMinute < 0) {
delayInMinute += 24 * 60;
}
-
- // TODO EC20100921 prevoir le cas où une tâche dure plus d'une journée
-
- TimerTask task;
- if (xmlStream.getAutoAssign()) {
- task = new AssignXmlStreamTasks(config, wikittyProxy, bindingManager, thesaurusManager, formManager, xmlStream.getWikittyId());
- } else {
- task = new ImportXmlStreamTasks(config, wikittyProxy, bindingManager, xmlStream.getWikittyId());
+ if (log.isInfoEnabled()) {
+ log.info(task.getClass().getName() + " - in scheduler, delai : " + delayInMinute + "min, period " + 24 * 60 + "min");
}
- ScheduledFuture<?> sheduledImportTask = xmlStreamScheduler.scheduleAtFixedRate(task, delayInMinute, 24 * 60, TimeUnit.MINUTES);
+ return scheduledExecutorService.scheduleAtFixedRate(task, delayInMinute, 24 * 60, TimeUnit.MINUTES);
- if (log.isInfoEnabled()) {
- log.info("Starting import of xml stream " + xmlStream.getName() + " at " + streamImportTime);
- log.info(" - in scheduler, delai : " + delayInMinute + "min, period " + 24 * 60 + "min");
- }
- xmlStreamImportTasks.put(xmlStream.getWikittyId(), sheduledImportTask);
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Can't parse " + streamImportTime + " for stream " + xmlStream.getWikittyId());
- }
}
+ if (log.isWarnEnabled()) {
+ log.warn("Can't parse " + hour);
+ }
+ return null;
}
/**
Modified: trunk/vradi-services/src/main/resources/i18n/vradi-services_fr_FR.properties
===================================================================
--- trunk/vradi-services/src/main/resources/i18n/vradi-services_fr_FR.properties 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/main/resources/i18n/vradi-services_fr_FR.properties 2011-05-03 12:29:24 UTC (rev 10)
@@ -8,6 +8,7 @@
vradi.adminXmlStream.config.interval.days=jours
vradi.adminXmlStream.config.interval.hours=heures
vradi.adminXmlStream.config.interval.minutes=minutes
+vradi.autoSend.hour.description=
vradi.email.status.deleted=Supprim\u00E9e
vradi.email.status.error=Erreur
vradi.email.status.received=Re\u00E7u
Modified: trunk/vradi-services/src/test/java/org/chorem/vradi/services/VradiStorageServiceTest.java
===================================================================
--- trunk/vradi-services/src/test/java/org/chorem/vradi/services/VradiStorageServiceTest.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/test/java/org/chorem/vradi/services/VradiStorageServiceTest.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -60,6 +60,7 @@
import org.chorem.vradi.entities.UserImpl;
import org.chorem.vradi.entities.XmlFieldBinding;
import org.chorem.vradi.entities.XmlStream;
+import org.chorem.vradi.services.managers.FormTypeManager;
import org.chorem.vradi.services.managers.MailingManager;
import org.junit.Assert;
import org.junit.Ignore;
@@ -1032,7 +1033,7 @@
* @throws VradiException when an error occurred during test
*/
public void testPostMessage() throws VradiException {
- MailingManager mailingManager = new MailingManager(config, null);
+ MailingManager mailingManager = new MailingManager(config, null, null);
mailingManager.postMail("toto(a)codelutin.com", "test",
"ceci est un test", null, true, null);
}
Modified: trunk/vradi-services/src/test/java/org/chorem/vradi/services/managers/MailingManagerTest.java
===================================================================
--- trunk/vradi-services/src/test/java/org/chorem/vradi/services/managers/MailingManagerTest.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-services/src/test/java/org/chorem/vradi/services/managers/MailingManagerTest.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -49,7 +49,7 @@
@Before
public void initMailingManager() {
- mailingManager = new MailingManager(config, wikittyProxy);
+ mailingManager = new MailingManager(config, wikittyProxy, null);
}
/** Test get header parsing in mail content. */
Modified: trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/AdminHandler.java
===================================================================
--- trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/AdminHandler.java 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/AdminHandler.java 2011-05-03 12:29:24 UTC (rev 10)
@@ -263,7 +263,7 @@
// Invoke instance creation
ui = constructor.newInstance(navUI);
} catch (Exception eee) {
- log.error(eee);
+ log.error(eee.getMessage(), eee);
ErrorDialogUI.showError(eee);
}
@@ -396,8 +396,8 @@
helper.createAndSelectClientNode(client.getWikittyId());
- } catch (Exception e) {
- log.error("Cant save client : ", e);
+ } catch (Exception eee) {
+ log.error("Cant save client : ", eee);
}
return client;
@@ -426,8 +426,8 @@
saveGroups(parentUI, helper, new ArrayList<Group>(groups));
}
- } catch (Exception e) {
- log.error("Cant save user : ", e);
+ } catch (Exception eee) {
+ log.error("Cant save user : ", eee);
}
return user;
@@ -435,8 +435,6 @@
/**
* Export all clients database (with groups, users, clients) as CSV.
- * <p/>
- * Used in {@link org.chorem.vradi.ui.admin.AdminClientNavUI}.
*
* @param adminNavUI parent ui
*/
@@ -1836,8 +1834,8 @@
// interdiction des characteres spéciaux dans les noms de fichier
// bug hessian et pas top d'avoir des accents
String filename = template.getName();
- if (!filename.matches("[a-zA-Z0-9_]+")) {
- JOptionPane.showMessageDialog(adminFormTypeUI, _("vradi.file.template.wrongFileNamePattern"));
+ if (!filename.matches("[a-zA-Z0-9_\\.]+")) {
+ JOptionPane.showMessageDialog(adminFormTypeUI, _("vradi.file.template.wrongFileNamePattern", filename));
} else {
String extensionName = adminFormTypeUI.getBean().getName();
String uri = VradiService.getFileService().uploadTemplate(template, extensionName);
Modified: trunk/vradi-swing/src/main/resources/org/chorem/vradi/entities/Client-error-validation.xml
===================================================================
--- trunk/vradi-swing/src/main/resources/org/chorem/vradi/entities/Client-error-validation.xml 2011-05-02 16:09:43 UTC (rev 9)
+++ trunk/vradi-swing/src/main/resources/org/chorem/vradi/entities/Client-error-validation.xml 2011-05-03 12:29:24 UTC (rev 10)
@@ -33,10 +33,4 @@
</field-validator>
</field>
- <field name="email">
- <field-validator type="email">
- <message>vradi.adminUi.invalid.email</message>
- </field-validator>
- </field>
-
</validators>
\ No newline at end of file
1
0
Author: sletellier
Date: 2011-05-02 18:09:43 +0200 (Mon, 02 May 2011)
New Revision: 9
Url: http://chorem.org/repositories/revision/vradi/9
Log:
- #320 Add autoAssign configuration option
Added:
trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceHelper.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AssignXmlStreamTasks.java
Modified:
trunk/vradi-entities/src/main/xmi/vradi.zargo
trunk/vradi-services/src/main/java/org/chorem/vradi/beans/XmlStreamImportResult.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageService.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/BindingManager.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/FormManager.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/ImportXmlStreamTasks.java
trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java
trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiConfig.java
trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiHelper.java
trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/content/XmlStreamConfigUI.jaxx
trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/offer/OfferEditHandler.java
trunk/vradi-swing/src/main/resources/i18n/vradi-swing_fr_FR.properties
Modified: trunk/vradi-entities/src/main/xmi/vradi.zargo
===================================================================
(Binary files differ)
Added: trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceHelper.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceHelper.java (rev 0)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/VradiServiceHelper.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -0,0 +1,21 @@
+package org.chorem.vradi;
+
+import org.nuiton.wikitty.entities.BusinessEntity;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author sletellier
+ */
+public class VradiServiceHelper {
+
+ public static List<String> extractIds(Collection<? extends BusinessEntity> beans) {
+ List<String> ids = new ArrayList<String>();
+ for (BusinessEntity bean : beans) {
+ ids.add(bean.getWikittyId());
+ }
+ return ids;
+ }
+}
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/beans/XmlStreamImportResult.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/beans/XmlStreamImportResult.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/beans/XmlStreamImportResult.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -26,6 +26,8 @@
package org.chorem.vradi.beans;
import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
/**
* Import xml stream results.
@@ -55,6 +57,8 @@
protected int numberParsingError;
+ protected Set<String> createdFormsIds;
+
public int getCreatedFormCount() {
return createdFormCount;
}
@@ -86,4 +90,19 @@
public void setNumberParsingError(int numberParsingError) {
this.numberParsingError = numberParsingError;
}
+
+ public Set<String> getCreatedFormsIds() {
+ return createdFormsIds;
+ }
+
+ public void setCreatedFormsIds(Set<String> createdFormsIds) {
+ this.createdFormsIds = createdFormsIds;
+ }
+
+ public void addCreatedFormsIds(String wikittyId) {
+ if (createdFormsIds == null) {
+ createdFormsIds = new HashSet<String>();
+ }
+ createdFormsIds.add(wikittyId);
+ }
}
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageService.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageService.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageService.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -25,6 +25,7 @@
package org.chorem.vradi.services;
import org.chorem.vradi.beans.XmlStreamImportResult;
+import org.chorem.vradi.entities.Form;
import org.chorem.vradi.entities.Group;
import org.chorem.vradi.entities.QueryMaker;
import org.chorem.vradi.entities.Sending;
@@ -393,4 +394,13 @@
*/
List<Sending> revertGroupDeletion(String sessionId, String groupId, String formId);
+ /**
+ * Update forms and attach forms to specified thesaurus.
+ *
+ * @param form form to modify
+ * @param thesaurusIdsToAttach thesaurus to attach form to (set empty set to clear thesaurus, null = no thesaurus management)
+ * @return forms saved
+ * @throws VradiException if exception occured
+ */
+ Form updateForms(Form form, List<String> thesaurusIdsToAttach) throws VradiException;
}
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/VradiStorageServiceImpl.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -139,7 +139,7 @@
searchManager = new SearchManager(wikittyProxy, thesaurusManager);
formManager = new FormManager(config, wikittyProxy, thesaurusManager, searchManager);
bindingManager = new BindingManager(config, wikittyProxy, formTypeManager, formManager);
- tasksManager = new TasksManager(config, wikittyProxy, mailingManager, bindingManager);
+ tasksManager = new TasksManager(config, wikittyProxy, thesaurusManager, formManager, mailingManager, bindingManager);
// init cron tasks
tasksManager.initTasks();
@@ -911,4 +911,9 @@
public List<Sending> revertGroupDeletion(String sessionId, String groupId, String formId) {
return formManager.revertGroupDeletion(sessionId, groupId, formId);
}
+
+ @Override
+ public Form updateForms(Form form, List<String> thesaurusIdsToAttach) throws VradiException {
+ return formManager.updateForm(form, thesaurusIdsToAttach);
+ }
}
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/BindingManager.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/BindingManager.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/BindingManager.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -611,7 +611,12 @@
FormImpl form = createForm(formType, bindings, feedElement, namespace, bindingContext);
bindingContext.nbCreated++;
- form.setId(formDateId + form.getWikittyId());
+ String wikittyId = form.getWikittyId();
+ form.setId(formDateId + wikittyId);
+
+ // Keep id for result
+ result.addCreatedFormsIds(wikittyId);
+
form.setXmlStream(stream.getWikittyId());
form.setStatus(toTreatId);
form.setImportContentHash(contentSHA1Hash);
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/FormManager.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/FormManager.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/managers/FormManager.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -62,6 +62,7 @@
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
@@ -106,12 +107,24 @@
/**
* Update forms and attach forms to specified thesaurus.
*
+ * @param form form to modify
+ * @param thesaurus thesaurus to attach form to (set empty set to clear thesaurus, null = no thesaurus management)
+ * @return forms saved
+ * @throws VradiException if exception occured
+ */
+ public Form updateForm(Form form, Collection<String> thesaurus) throws VradiException {
+ return updateForms(Collections.singletonList(form), thesaurus).get(0);
+ }
+
+ /**
+ * Update forms and attach forms to specified thesaurus.
+ *
* @param forms forms to save
* @param thesaurus thesaurus to attach form to (set empty set to clear thesaurus, null = no thesaurus management)
* @return forms saved
* @throws VradiException if exception occured
*/
- public List<Form> updateForms(List<Form> forms, Set<String> thesaurus) throws VradiException {
+ public List<Form> updateForms(List<Form> forms, Collection<String> thesaurus) throws VradiException {
if (log.isDebugEnabled()) {
log.debug("updateForms(forms)");
}
@@ -367,77 +380,18 @@
// Restore updated session
currentSession = wikittyProxy.restore(Session.class, currentSession.getWikittyId());
- // Only selected forms
- String status = getSelectionneStatus().getWikittyId();
-
List<GroupForms> groupFormToSave = new ArrayList<GroupForms>();
// recherche de tous les executeurs de requette (client, groupes...)
// was all query make before
- //List<QueryMaker> queryMakers = searchManager.findQueryMakersWithQueries();
List<Group> groups = searchManager.findGroupsWithQueries();
// iterate on the group
for (Group group : groups) {
- // List of the forms to bind ( = not yet bound)
- Set<String> formsIdsToBind = new HashSet<String>();
+ // Only selected forms
+ Set<String> formsIdsToBind = getFormsIdsFromRequest(group, getSelectionneStatus());
- // normalement c'est pas null, sinon la requette findGroupsWithQueries
- // marche pas
- Set<String> queries = group.getQueries();
-
- for (String queryEntry : queries) {
-
- try {
- // Get query
- QueryBean queryBean = new QueryBean(queryEntry);
- String query = queryBean.getQuery();
-
- // Create filter
- Search filter = Search.query();
- filter.eq(Form.FQ_FIELD_INFOGENE_STATUS, status);
-
- // Limited on older inscription date
- Search filterDateModification = filter.or();
- Date olderInscriptionDate = getOlderInscriptionDate(group.getUser());
-
- // Limited on date modification
- filterDateModification.isNull(ModificationTag.FQ_FIELD_MODIFICATIONTAG_LASTMODIFIED);
- filterDateModification.ge(ModificationTag.FQ_FIELD_MODIFICATIONTAG_LASTMODIFIED, WikittyUtil.formatDate(olderInscriptionDate));
-
- // Limited on date peremption
- Search filterDatePeremption = filter.or();
- filterDatePeremption.isNull(Form.FQ_FIELD_FORM_DATEPEREMPTION);
- filterDatePeremption.ge(Form.FQ_FIELD_FORM_DATEPEREMPTION, WikittyUtil.formatDate(new Date()));
-
- Criteria criteria = filter.criteria();
-
- // create a new VradiFormPage to find all the forms corresponding to the query
- FormPagedResult vradiFormPage = new FormPagedResult();
-
- // Execute request
- vradiFormPage = searchManager.findForms(query, criteria, vradiFormPage);
-
- // Extract result
- Set<String> resultFormsIds = new HashSet<String>(vradiFormPage.getFormsIdsToShow());
-
- if (log.isDebugEnabled()) {
- log.debug("Query " + query + " return " + resultFormsIds.size() + " forms");
- }
-
- formsIdsToBind.addAll(resultFormsIds);
- } catch (IOException eee) {
- throw new VradiException("Can't parse group query", eee);
-
- } catch (UnsupportedQueryException eee) {
- throw new VradiException("Can't execute group query", eee);
-
- } catch (ParseException eee) {
- throw new VradiException("Cant format date : ", eee);
- }
- }
-
// if some forms are to be bound, bind them
if (!formsIdsToBind.isEmpty()) {
@@ -524,6 +478,68 @@
return currentSession;
}
+ protected Set<String> getFormsIdsFromRequest(Group group, Status status) throws VradiException {
+
+ // List of the forms to bind ( = not yet bound)
+ Set<String> formsIdsToBind = new HashSet<String>();
+
+ // normalement c'est pas null, sinon la requette findGroupsWithQueries
+ // marche pas
+ Set<String> queries = group.getQueries();
+
+ for (String queryEntry : queries) {
+
+ try {
+ // Get query
+ QueryBean queryBean = new QueryBean(queryEntry);
+ String query = queryBean.getQuery();
+
+ // Create filter
+ Search filter = Search.query();
+ filter.eq(Form.FQ_FIELD_INFOGENE_STATUS, status.getWikittyId());
+
+ // Limited on older inscription date
+ Search filterDateModification = filter.or();
+ Date olderInscriptionDate = getOlderInscriptionDate(group.getUser());
+
+ // Limited on date modification
+ filterDateModification.isNull(ModificationTag.FQ_FIELD_MODIFICATIONTAG_LASTMODIFIED);
+ filterDateModification.ge(ModificationTag.FQ_FIELD_MODIFICATIONTAG_LASTMODIFIED, WikittyUtil.formatDate(olderInscriptionDate));
+
+ // Limited on date peremption
+ Search filterDatePeremption = filter.or();
+ filterDatePeremption.isNull(Form.FQ_FIELD_FORM_DATEPEREMPTION);
+ filterDatePeremption.ge(Form.FQ_FIELD_FORM_DATEPEREMPTION, WikittyUtil.formatDate(new Date()));
+
+ Criteria criteria = filter.criteria();
+
+ // create a new VradiFormPage to find all the forms corresponding to the query
+ FormPagedResult vradiFormPage = new FormPagedResult();
+
+ // Execute request
+ vradiFormPage = searchManager.findForms(query, criteria, vradiFormPage);
+
+ // Extract result
+ Set<String> resultFormsIds = new HashSet<String>(vradiFormPage.getFormsIdsToShow());
+
+ if (log.isDebugEnabled()) {
+ log.debug("Query " + query + " return " + resultFormsIds.size() + " forms");
+ }
+
+ formsIdsToBind.addAll(resultFormsIds);
+ } catch (IOException eee) {
+ throw new VradiException("Can't parse group query", eee);
+
+ } catch (UnsupportedQueryException eee) {
+ throw new VradiException("Can't execute group query", eee);
+
+ } catch (ParseException eee) {
+ throw new VradiException("Cant format date : ", eee);
+ }
+ }
+ return formsIdsToBind;
+ }
+
/**
* Use to replace forms by previous replace forms
*
@@ -700,7 +716,7 @@
*
* @param currentSession
* @param forms
- * @param queryMaker
+ * @param user
* @return
*/
protected Set<Form> removeAlreadyBound(Session currentSession, Set<Form> forms, User user) {
@@ -776,8 +792,8 @@
* Retourne la plus ancienne date du query maker si c'est une date
* ou des user gu groupe si c'est un groupe.
*
- * @param queryMaker queryMaker
- * @return
+ * @param usersIds
+ * @return olderInscriptionDate
*/
protected Date getOlderInscriptionDate(Set<String> usersIds) {
Date result = new Date();
@@ -990,7 +1006,7 @@
/**
* Check if template file form extension name in param
*
- * @param forms to remove
+ * @param formsIds to remove
* @return false if no session is opened
* @throws VradiException
*/
@@ -1001,7 +1017,7 @@
/**
* Check if template file form extension name in param
*
- * @param forms to remove
+ * @param formsIds to remove
* @return false if no session is opened
* @throws VradiException
*/
@@ -1069,7 +1085,7 @@
* Le sending retourné n'est pas affecter au query maker.
*
* @param currentSession
- * @param queryMaker
+ * @param user
* @return
*/
protected Sending findExistingOrCreateSending(Session currentSession, User user) {
@@ -1094,8 +1110,8 @@
* <p/>
* Le sending retourné n'est pas affecter au query maker.
*
- * @param currentSession
- * @param queryMaker
+ * @param sendings
+ * @param user
* @return
*/
protected Sending findExistingOrCreateSending(List<Sending> sendings, User user) {
Added: trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AssignXmlStreamTasks.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AssignXmlStreamTasks.java (rev 0)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/AssignXmlStreamTasks.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -0,0 +1,84 @@
+package org.chorem.vradi.services.tasks;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.vradi.VradiServiceHelper;
+import org.chorem.vradi.entities.Form;
+import org.chorem.vradi.entities.Thesaurus;
+import org.chorem.vradi.services.VradiException;
+import org.chorem.vradi.services.managers.BindingManager;
+import org.chorem.vradi.services.managers.FormManager;
+import org.chorem.vradi.services.managers.ThesaurusManager;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.util.TimeLog;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.BusinessEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author sletellier
+ */
+public class AssignXmlStreamTasks extends ImportXmlStreamTasks {
+
+ private static final Log log = LogFactory.getLog(AssignXmlStreamTasks.class);
+
+ private final static TimeLog timeLog = new TimeLog(AssignXmlStreamTasks.class, 5000, 1000);
+
+ protected ThesaurusManager thesaurusManager;
+ protected FormManager formManager;
+
+ public AssignXmlStreamTasks(ApplicationConfig config,
+ WikittyProxy wikittyProxy,
+ BindingManager bindingManager,
+ ThesaurusManager thesaurusManager,
+ FormManager formManager,
+ String xmlStreamId) {
+
+ super(config, wikittyProxy, bindingManager, xmlStreamId);
+
+ this.thesaurusManager = thesaurusManager;
+ this.formManager = formManager;
+ }
+
+ @Override
+ public void run() {
+
+ // Import stream before assign
+ super.run();
+
+ long start = TimeLog.getTime();
+
+ // Get import (super) result
+ Set<String> createdFormsIds = importResult.getCreatedFormsIds();
+
+ // Auto selection propositions
+ List<BusinessEntity> toStore = new ArrayList<BusinessEntity>();
+ for (String formId : createdFormsIds) {
+ try {
+
+ // Get thesaurus proposition for form
+ List<Thesaurus> thesaurusProposed = thesaurusManager.proposeThesaurus(formId);
+ if (!thesaurusProposed.isEmpty()) {
+ Form form = wikittyProxy.restore(Form.class, formId);
+ form = formManager.updateForm(form, VradiServiceHelper.extractIds(thesaurusProposed));
+
+ // Set form as selected
+ form.setStatus(formManager.getSelectionneStatus().getWikittyId());
+ toStore.add(form);
+ }
+ } catch (VradiException eee) {
+ log.error("Failled to propose thesaurus for form : " + formId, eee);
+ }
+ }
+
+ // Store forms
+ wikittyProxy.store(toStore);
+
+ // Log execution duration
+ timeLog.log(start, "AssignXmlStreamTasks");
+ }
+}
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/ImportXmlStreamTasks.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/ImportXmlStreamTasks.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/ImportXmlStreamTasks.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -35,6 +35,7 @@
import org.chorem.vradi.services.managers.BindingManager;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ExceptionUtil;
+import org.nuiton.util.TimeLog;
import org.nuiton.wikitty.WikittyProxy;
import javax.mail.Authenticator;
@@ -68,16 +69,24 @@
private static final Log log = LogFactory.getLog(ImportXmlStreamTasks.class);
+ private final static TimeLog timeLog = new TimeLog(ImportXmlStreamTasks.class, 5000, 1000);
+
protected ApplicationConfig config;
protected WikittyProxy wikittyProxy;
protected BindingManager bindingManager;
+ protected XmlStreamImportResult importResult;
+
/** Il faut l'id du flux et non le flux (wikitty obselete). */
protected String xmlStreamId;
- public ImportXmlStreamTasks(ApplicationConfig config, WikittyProxy wikittyProxy, BindingManager bindingManager, String xmlStreamId) {
+ public ImportXmlStreamTasks(ApplicationConfig config,
+ WikittyProxy wikittyProxy,
+ BindingManager bindingManager,
+ String xmlStreamId) {
+
this.config = config;
this.wikittyProxy = wikittyProxy;
this.bindingManager = bindingManager;
@@ -90,12 +99,13 @@
@Override
public void run() {
+ long start = TimeLog.getTime();
try {
XmlStream xmlStream = wikittyProxy.restore(XmlStream.class, xmlStreamId);
if (log.isInfoEnabled()) {
log.info("Starting xml stream import on : " + xmlStream.getName() + "...");
}
- XmlStreamImportResult importResult = bindingManager.importFormsFromXmlStream(xmlStream);
+ importResult = bindingManager.importFormsFromXmlStream(xmlStream);
if (log.isInfoEnabled()) {
log.info("Xml stream " + xmlStream.getName() + " imported : " + importResult.getCreatedFormCount() + " new forms.");
}
@@ -105,6 +115,9 @@
}
sendEmailError(xmlStreamId, eee);
}
+
+ // Log execution duration
+ timeLog.log(start, "importXmlStreamTasks");
}
protected void sendEmailError(String xmlStreamId, VradiException error) {
Modified: trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java
===================================================================
--- trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-services/src/main/java/org/chorem/vradi/services/tasks/TasksManager.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -31,7 +31,9 @@
import org.chorem.vradi.VradiConstants;
import org.chorem.vradi.entities.XmlStream;
import org.chorem.vradi.services.managers.BindingManager;
+import org.chorem.vradi.services.managers.FormManager;
import org.chorem.vradi.services.managers.MailingManager;
+import org.chorem.vradi.services.managers.ThesaurusManager;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.entities.Wikitty;
@@ -45,6 +47,7 @@
import java.util.Map;
import java.util.Set;
import java.util.Timer;
+import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
@@ -84,11 +87,23 @@
protected BindingManager bindingManager;
- public TasksManager(ApplicationConfig config, WikittyProxy wikittyProxy, MailingManager mailingManager, BindingManager bindingManager) {
+ protected ThesaurusManager thesaurusManager;
+
+ protected FormManager formManager;
+
+ public TasksManager(ApplicationConfig config,
+ WikittyProxy wikittyProxy,
+ ThesaurusManager thesaurusManager,
+ FormManager formManager,
+ MailingManager mailingManager,
+ BindingManager bindingManager) {
+
this.config = config;
this.wikittyProxy = wikittyProxy;
this.mailingManager = mailingManager;
this.bindingManager = bindingManager;
+ this.thesaurusManager = thesaurusManager;
+ this.formManager = formManager;
xmlStreamImportTasks = new HashMap<String, ScheduledFuture<?>>();
}
@@ -153,14 +168,20 @@
}
// TODO EC20100921 prevoir le cas où une tâche dure plus d'une journée
- ImportXmlStreamTasks importTask = new ImportXmlStreamTasks(config, wikittyProxy, bindingManager, xmlStream.getWikittyId());
- ScheduledFuture<?> sheduledImportTask = xmlStreamScheduler.scheduleAtFixedRate(importTask, delayInMinute, 24 * 60, TimeUnit.MINUTES);
- xmlStreamImportTasks.put(xmlStream.getWikittyId(), sheduledImportTask);
+ TimerTask task;
+ if (xmlStream.getAutoAssign()) {
+ task = new AssignXmlStreamTasks(config, wikittyProxy, bindingManager, thesaurusManager, formManager, xmlStream.getWikittyId());
+ } else {
+ task = new ImportXmlStreamTasks(config, wikittyProxy, bindingManager, xmlStream.getWikittyId());
+ }
+ ScheduledFuture<?> sheduledImportTask = xmlStreamScheduler.scheduleAtFixedRate(task, delayInMinute, 24 * 60, TimeUnit.MINUTES);
+
if (log.isInfoEnabled()) {
log.info("Starting import of xml stream " + xmlStream.getName() + " at " + streamImportTime);
log.info(" - in scheduler, delai : " + delayInMinute + "min, period " + 24 * 60 + "min");
}
+ xmlStreamImportTasks.put(xmlStream.getWikittyId(), sheduledImportTask);
} else {
if (log.isWarnEnabled()) {
log.warn("Can't parse " + streamImportTime + " for stream " + xmlStream.getWikittyId());
Modified: trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiConfig.java
===================================================================
--- trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiConfig.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiConfig.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -49,10 +49,8 @@
* Last update : $Date$
* By : $Author$
*/
-public class
+public class VradiConfig {
- VradiConfig {
-
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(VradiConfig.class);
Modified: trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiHelper.java
===================================================================
--- trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiHelper.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-swing/src/main/java/org/chorem/vradi/VradiHelper.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -44,7 +44,6 @@
import org.nuiton.util.StringUtil;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.addons.WikittyI18nUtil;
-import org.nuiton.wikitty.entities.BusinessEntity;
import org.nuiton.wikitty.entities.FieldType;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.entities.WikittyI18n;
@@ -67,7 +66,7 @@
import static org.nuiton.i18n.I18n._;
/** @author letellier */
-public class VradiHelper {
+public class VradiHelper extends VradiServiceHelper {
private static final Log log = LogFactory.getLog(VradiHelper.class);
@@ -718,14 +717,6 @@
return false;
}
- public static List<String> extractIds(Collection<? extends BusinessEntity> beans) {
- List<String> ids = new ArrayList<String>();
- for (BusinessEntity bean : beans) {
- ids.add(bean.getWikittyId());
- }
- return ids;
- }
-
public static Form initForm(Form form) {
String newId = VradiConstants.FORM_ID_DATE_FORMAT
.format(new GregorianCalendar().getTime())
Modified: trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/content/XmlStreamConfigUI.jaxx
===================================================================
--- trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/content/XmlStreamConfigUI.jaxx 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/admin/content/XmlStreamConfigUI.jaxx 2011-05-02 16:09:43 UTC (rev 9)
@@ -81,7 +81,8 @@
} else {
// clear UI
hourDays.setSelectedItem(0);
- minuteDays.setSelectedItem(0);;
+ minuteDays.setSelectedItem(0);
+ assignAuto.setSelected(false);
}
}
});
@@ -97,18 +98,23 @@
bean.setImportTime(importTime);
}
}
-
]]>
</script>
<JLabel text='vradi.adminXmlStream.config.load'/>
- <JComboBox id='hourDays' selectedItem='{0}'
+ <JComboBox id='hourDays'
+ selectedItem='{0}'
model='{UIHelper.getHourModel()}'
renderer='{UIHelper.get2DigitsRenderer()}'
onActionPerformed='setImportTimeValue()'/>
<JLabel text='vradi.common.timeseparator'/>
- <JComboBox id='minuteDays' selectedItem='{0}'
+ <JComboBox id='minuteDays'
+ selectedItem='{0}'
model='{UIHelper.getMinuteModel()}'
renderer='{UIHelper.get2DigitsRenderer()}'
onActionPerformed='setImportTimeValue()'/>
+ <JCheckBox id='assignAuto'
+ text='vradi.adminXmlStream.assignAuto'
+ selected='{getBean().getAutoAssign()}'
+ onActionPerformed='bean.setAutoAssign(assignAuto.isSelected())'/>
</JPanel>
\ No newline at end of file
Modified: trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/offer/OfferEditHandler.java
===================================================================
--- trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/offer/OfferEditHandler.java 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-swing/src/main/java/org/chorem/vradi/ui/offer/OfferEditHandler.java 2011-05-02 16:09:43 UTC (rev 9)
@@ -282,8 +282,9 @@
OfferEditUI offerEditUI = getUI(context);
- try {
- List<Thesaurus> thesaurusToSave = new ArrayList<Thesaurus>();
+ // sletellier : use FormManager.updateForms()
+// try {
+ List<String> thesaurusIdsToAttach = new ArrayList<String>();
// Find all propositions selected
for (Object s : offerEditUI.getPropositionList().getSelectedValues()) {
@@ -291,11 +292,12 @@
// Save thesaurus
//selected = ThesaurusDataHelper.restoreThesaurus(selected.getWikittyId());
- selected.addAttachment(form.getWikittyId());
+// selected.addAttachment(form.getWikittyId());
- if (!thesaurusToSave.contains(selected)) {
- thesaurusToSave.add(selected);
- }
+// if (!thesaurusToSave.contains(selected)) {
+// thesaurusToSave.add(selected);
+// }
+ thesaurusIdsToAttach.add(selected.getWikittyId());
}
// Find all thesaurus selected
@@ -309,27 +311,35 @@
// Save thesaurus
//thesaurus = ThesaurusDataHelper.restoreThesaurus(thesaurus.getWikittyId());
- thesaurus.addAttachment(form.getWikittyId());
+// thesaurus.addAttachment(form.getWikittyId());
- if (!thesaurusToSave.contains(thesaurus)) {
- thesaurusToSave.add(thesaurus);
- }
+// if (!thesaurusToSave.contains(thesaurus)) {
+// thesaurusToSave.add(thesaurus);
+// }
+ thesaurusIdsToAttach.add(thesaurus.getWikittyId());
}
}
// supprime tous les thesaurus qui ne sont plus selectionné
- List<Thesaurus> actualThesauruses = getDataService().getThesaurusAttachedToForm(form);
- for (Thesaurus actualThesaurus : actualThesauruses) {
- if (!thesaurusToSave.contains(actualThesaurus)) {
- actualThesaurus.removeAttachment(form.getWikittyId());
- thesaurusToSave.add(actualThesaurus);
- }
- }
+// List<Thesaurus> actualThesauruses = getDataService().getThesaurusAttachedToForm(form);
+// for (Thesaurus actualThesaurus : actualThesauruses) {
+// if (!thesaurusToSave.contains(actualThesaurus)) {
+// actualThesaurus.removeAttachment(form.getWikittyId());
+// thesaurusToSave.add(actualThesaurus);
+// }
+// }
- proxy.store(thesaurusToSave);
- } catch (Exception eee) {
- log.error("Can't save thesaurus : ", eee);
- ErrorDialogUI.showError(eee);
+// proxy.store(thesaurusToSave);
+// } catch (Exception eee) {
+// log.error("Can't save thesaurus : ", eee);
+// ErrorDialogUI.showError(eee);
+// }
+
+ // Attach thesaurus to form
+ try {
+ form = VradiService.getVradiStorageService().updateForms(form, thesaurusIdsToAttach);
+ } catch (VradiException eee) {
+ log.error("Failled to assign thesaurus to form : " + form.getObjet(), eee);
}
// Save dynamic content
Modified: trunk/vradi-swing/src/main/resources/i18n/vradi-swing_fr_FR.properties
===================================================================
--- trunk/vradi-swing/src/main/resources/i18n/vradi-swing_fr_FR.properties 2011-04-27 16:09:14 UTC (rev 8)
+++ trunk/vradi-swing/src/main/resources/i18n/vradi-swing_fr_FR.properties 2011-05-02 16:09:43 UTC (rev 9)
@@ -168,6 +168,7 @@
vradi.adminUser.removeGroup=Retirer l'utilisateur du groupe s\u00E9lectionn\u00E9
vradi.adminUser.service=Service
vradi.adminUser.title=Utilisateur \: %1$s
+vradi.adminXmlStream.assignAuto=S\u00E9lection automatique des formulaires
vradi.adminXmlStream.config=Configurer les flux XML
vradi.adminXmlStream.config.label.hours=\u00E0 la minute
vradi.adminXmlStream.config.load=Charger les nouveaux formulaires \u00E0
1
0