private void sendMail( String htmlTemplate, Document doc, List<HTUser> receipients, Map<String, Object> params) { if (receipients == null || receipients.isEmpty()) { return; } /** * Sending mail * * <p>Schedule async */ CommandContext context = new CommandContext(); params.put("callbacks", CommandCodes.SendEmailCallback.name()); params.put("To", receipients); params.put("From", params.get("From") == null ? "*****@*****.**" : params.get("From")); params.put( "docDate", SimpleDateFormat.getDateInstance(SimpleDateFormat.MEDIUM) .format(doc.getDocumentDate() == null ? doc.getCreated() : doc.getDocumentDate())); DocumentType type = doc.getType(); params.put("DocType", type.getDisplayName()); params.put("DocumentURL", getDocUrl(doc.getId())); params.put("ownerId", doc.getOwner()); try { if (htmlTemplate == null) { InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("email.html"); ByteArrayOutputStream bout = new ByteArrayOutputStream(); IOUtils.copy(is, bout); htmlTemplate = new String(bout.toByteArray()); } // Merge params & doc for (String key : params.keySet()) { doc.setValue( key, params.get(key) == null ? null : new StringValue(params.get(key).toString())); } htmlTemplate = parse(htmlTemplate, doc); params.put("Body", htmlTemplate); } catch (Exception e) { e.printStackTrace(); } params.put("businessKey", UUID.randomUUID().toString()); context.setData(params); log.info("BODY = " + htmlTemplate); ExecutorModule.getInstance() .getExecutorServiceEntryPoint() .scheduleRequest(CommandCodes.SendEmailCommand, context); }
/** * @param document * @return */ private static DocumentModel getDoc(Document document) { DocumentModel model = new DocumentModel( document.getId(), document.getCaseNo(), document.getDescription(), getType(document.getType())); model.setDocumentDate(document.getDocumentDate()); model.setPartner(document.getPartner()); model.setPriority(document.getPriority()); model.setValue(document.getValue()); model.setCreated(document.getCreated()); model.setStatus(document.getStatus()); model.setProcessInstanceId(document.getProcessInstanceId()); model.setSessionId(document.getSessionId()); return model; }
/** * This method saves updates a document * * @param document * @return Document * @throws InvalidSubjectExeption */ public static Document save(Document document) throws InvalidSubjectExeption { DocumentDaoImpl dao = DB.getDocumentDao(); // save if (document.getId() == null) { if (exists(document.getCaseNo())) { throw new InvalidSubjectExeption( "Case '" + document.getCaseNo() + "' already exists, this number cannot be reused"); } if (document.getCaseNo() == null) { ADDocType type = dao.getDocumentTypeByName(document.getType().getName()); document.setCaseNo(dao.generateDocumentSubject(type)); Value value = document.getValues().get("caseNo"); if (value == null) { value = new StringValue(null, "caseNo", ""); } value.setValue(document.getCaseNo()); document.setValue("caseNo", value); } if (document.getDescription() == null) { document.setDescription(document.getCaseNo()); Value value = document.getValues().get("description"); if (value == null) { value = new StringValue(null, "description", ""); } value.setValue(document.getCaseNo()); document.getValues().put("description", value); } } DocumentModel model = getDoc(document); if (document.getId() != null) { model = dao.getById(document.getId()); model.setDescription(document.getDescription()); model.setDocumentDate(document.getDocumentDate()); model.setPartner(document.getPartner()); model.setPriority(document.getPriority()); model.setSubject(document.getCaseNo()); model.setType(getType(document.getType())); model.setValue(document.getValue()); model.setStatus(document.getStatus()); model.setProcessInstanceId(document.getProcessInstanceId()); model.setSessionId(document.getSessionId()); } model.getValues().clear(); Map<String, Value> vals = document.getValues(); Collection<Value> values = vals.values(); for (Value val : values) { if (val == null || (val instanceof GridValue)) { // Ignore continue; } ADValue previousValue = new ADValue(); if (val.getId() != null) { previousValue = DB.getFormDao().getValue(val.getId()); } ADValue adValue = getValue(previousValue, val); assert adValue != null; model.addValue(adValue); } // setDetails setDetails(model, document.getDetails()); model = dao.saveDocument(model); Document doc = getDoc(model); return doc; }