/** * @param model * @return */ public static Document getDoc(DocumentModel model) { if (model == null) { return null; } Document doc = new Document(); doc.setCreated(model.getCreated()); doc.setDescription(model.getDescription()); doc.setDocumentDate(model.getDocumentDate()); doc.setId(model.getId()); doc.setOwner(LoginHelper.get().getUser(model.getCreatedBy())); doc.setCaseNo(model.getSubject()); doc.setType(getType(model.getType())); doc.setDocumentDate(model.getDocumentDate()); doc.setPartner(model.getPartner()); doc.setPriority(model.getPriority()); doc.setValue(model.getValue()); doc.setStatus(model.getStatus()); doc.setProcessInstanceId(model.getProcessInstanceId()); if (model.getProcessInstanceId() != null) { ProcessInstanceLog log = JPAProcessInstanceDbLog.findProcessInstance(model.getProcessInstanceId()); if (log != null) doc.setDateSubmitted(log.getStart()); } if (model.getProcessInstanceId() != null) { try { JBPMHelper.get().loadProgressInfo(doc, model.getProcessInstanceId()); } catch (Exception e) { e.printStackTrace(); } } if (model.getProcessId() == null && model.getType() != null) { doc.setProcessId(model.getType().getProcessDef().getProcessId()); } else { doc.setProcessId(model.getProcessId()); } if (doc.getProcessId() != null) { doc.setProcessName(JBPMHelper.get().getProcessName(doc.getProcessId())); } doc.setSessionId(model.getSessionId()); doc.setHasAttachment(DB.getAttachmentDao().getHasAttachment(model.getId())); Collection<ADValue> values = model.getValues(); if (values != null) { for (ADValue val : values) { // val. DataType type = getDataType(val); doc.setValue(val.getFieldName(), getValue(val, type)); } } doc.setDetails(getDetails(model.getDetails())); return doc; }
/** * 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; }