import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.junit.Test;
import org.junit.runner.RunWith;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
.partner(partnerRepository.findAll().get(0))
.projectStatus(projectStatusRepository.findAll().get(0))
.name("Teszt projekt")
+ .humanId("2092-1123")
.active(true)
.build();
try {
projectRepository.saveAndFlush(project);
-// log.info("Template source: {}", workflowProperties.getPrepareProject().getTemplateSourceFolder());
+ WorkflowProperties.PrepareProject pp = workflowProperties.getPrepareProject();
+ assertEquals(pp.getProposalPostfixDateFormat(),"yyyyMMdd");
+ assertEquals(pp.getValidityDateFormat(),"yyyy. MMMM dd.");
+ assertEquals(pp.getProjectNameSeparator()," - ");
+ assertEquals(pp.getAjanlatkeres(),"01_Ajánlatkérés");
+ assertEquals(pp.getBejovoAjanlatkeres(),"02_Bejövő ajánlatok");
+ assertEquals(pp.getKalkulacio(),"03_Kalkuláció");
+ assertEquals(pp.getKimenoAjanlatok(),"04_Kimenő ajánlatok");
+ assertEquals(pp.getMegrendeles(),"05_Megrendelés");
+ assertEquals(pp.getTeljesites(),"06_Teljesítés");
+ assertEquals(pp.getAjanlatNamePrefix(),"USER_Ajánlat_");
+ assertEquals(pp.getProposalNamePrefix(),"USER_Proposal_");
+ assertEquals(pp.getTigNamePrefix(),"USER_TIG_");
+ assertEquals(pp.getKalkulacioNamePrefix(),"USER_Kalkuláció_");
+ assertEquals(pp.getSmbMountPointForSalesDirector(),"/Users/marcellszabo/Downloads/SALES");
+ assertEquals(pp.getAjanlatTemplateDocx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Ajánlat_v1.docx");
+ assertEquals(pp.getProposalTemplateDocx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Proposal_v1.docx");
+ assertEquals(pp.getTigTemplateDocx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/TIG_Sablon_v1.docx");
+ assertEquals(pp.getCalculationXlsx(),"/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_kalkuláció_v1.xlsx");
+ log.info("Postfixdate format: {}", workflowProperties.getPrepareProject().getProposalPostfixDateFormat());
cancelRunningProcesses(PROCESSID);
ImmutableMap<String, Object> params = ImmutableMap.of("projectId", project.getId());
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(PROCESSID, params);
input-path: /temp/invoice-import
project-id-pattern: \d{4}-\d{4}
prepare-project:
- template-source-folder: "valami"
+ proposal-postfix-date-format: "yyyyMMdd"
+ validity-date-format: "yyyy. MMMM dd."
+ project-name-separator: " - "
+ ajanlatkeres: "01_Ajánlatkérés"
+ bejovo-ajanlatkeres: "02_Bejövő ajánlatok"
+ kalkulacio: "03_Kalkuláció"
+ kimeno-ajanlatok: "04_Kimenő ajánlatok"
+ megrendeles: "05_Megrendelés"
+ teljesites: "06_Teljesítés"
+ ajanlat-name-prefix: "USER_Ajánlat_"
+ proposal-name-prefix: "USER_Proposal_"
+ tig-name-prefix: "USER_TIG_"
+ kalkulacio-name-prefix: "USER_Kalkuláció_"
+ smb-mount-point-for-sales-director: "/Users/marcellszabo/Downloads/SALES"
+ ajanlat-template-docx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Ajánlat_v1.docx"
+ proposal-template-docx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_Proposal_v1.docx"
+ tig-template-docx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/TIG_Sablon_v1.docx"
+ calculation-xlsx: "/Users/marcellszabo/Downloads/SALES/SABLONOK/USER_kalkuláció_v1.xlsx"
+
service:
nav:
trust:
import org.springframework.stereotype.Component;
import javax.persistence.EntityNotFoundException;
+import java.io.File;
@Log4j2
@Component
public class CreateProjectFolders implements JavaDelegate {
+ private final static String fileSeparator = File.separator; // or FileSystems.getDefault().getSeparator(); File.separatorChar;
+
@Autowired
private ProjectRepository projectRepository;
Long projectId = (Long) delegateExecution.getVariable("projectId");
Project project = projectRepository.findById(projectId).orElseThrow(EntityNotFoundException::new);
log.info("Executing on project ID {}", projectId);
+ log.info("Executing on project Name {}", project.getName());
+ createFolder(project.getPartner().getName(), project.getHumanId(), project.getName());
// delegateExecution.setVariableLocal("invoices", invoices);
+
+ }
+
+ private void createFolder(String partnerShortName, String projectID, String projectName) throws SlyException {
+ WorkflowProperties.PrepareProject pp = workflowProperties.getPrepareProject();
+
+ log.info("Creating project folder for " + partnerShortName + ", and " + projectID + pp.getProjectNameSeparator()
+ + projectName + ". File system separator: " + fileSeparator);
+ if (partnerShortName == null || partnerShortName.isEmpty() || partnerShortName.trim().isEmpty()) {
+ log.error("Project folder creation failed, Partner Short Name is Null or Empty!");
+ throw new SlyException("Partner Short Name is Null or Empty!");
+ }
+
+ if (projectID == null || projectID.isEmpty() || projectID.trim().isEmpty()) {
+ log.error("Project folder creation failed, Project ID is Null or Empty!");
+ throw new SlyException("Project ID is Null or Empty!");
+ }
+
+ if (projectName == null || projectName.isEmpty() || projectName.trim().isEmpty()) {
+ log.error("Project folder creation failed, Project Name is Null or Empty!");
+ throw new SlyException("Project Name is Null or Empty!");
+ }
+
+ String path = pp.getSmbMountPointForSalesDirector() + fileSeparator + partnerShortName.trim() + fileSeparator
+ + projectID.trim() + pp.getProjectNameSeparator() + projectName.trim();
+ log.info("Project folder path: " + path + ".");
+ File baseDir = new File(path);
+ File ajanlatkeresDir = new File(path + fileSeparator + pp.getAjanlatkeres());
+ File bejovoDir = new File(path + fileSeparator + pp.getBejovoAjanlatkeres());
+ File kalkulacioDir = new File(path + fileSeparator + pp.getKalkulacio());
+ File kimenoDir = new File(path + fileSeparator + pp.getKimenoAjanlatok());
+ File megrendelesDir = new File(path + fileSeparator + pp.getMegrendeles());
+ File teljesitesDir = new File(path + fileSeparator + pp.getTeljesites());
+ if (baseDir.exists()) {
+ log.error("Project folder (" + path + ") already exists!");
+ throw new SlyException("Project folder (" + path + ") already exists!");
+ }
+
+ try {
+ baseDir.mkdirs();
+ ajanlatkeresDir.mkdirs();
+ bejovoDir.mkdirs();
+ kalkulacioDir.mkdirs();
+ kimenoDir.mkdirs();
+ megrendelesDir.mkdirs();
+ teljesitesDir.mkdirs();
+
+ } catch (Exception e) {
+ throw new SlyException(e.getMessage());
+ } finally {
+ log.info("Project folder has been created: " + path + ".");
+
+ }
}
}
--- /dev/null
+package hu.user.lis.workflow.project;
+
+public class SlyException extends Exception {
+
+ private String exception;
+
+ public SlyException(String exception) {
+ this.exception = exception;
+ }
+
+ @Override
+ public String getMessage() {
+ return exception;
+ }
+}
@Getter
@Setter
public static class PrepareProject {
- private String templateSourceFolder;
+ private String proposalPostfixDateFormat;
+ private String validityDateFormat;
+ private String projectNameSeparator;
+ private String ajanlatkeres;
+ private String bejovoAjanlatkeres;
+ private String kalkulacio;
+ private String kimenoAjanlatok;
+ private String megrendeles;
+ private String teljesites;
+ private String ajanlatNamePrefix;
+ private String proposalNamePrefix;
+ private String tigNamePrefix;
+ private String kalkulacioNamePrefix;
+ private String smbMountPointForSalesDirector;
+ private String ajanlatTemplateDocx;
+ private String proposalTemplateDocx;
+ private String tigTemplateDocx;
+ private String calculationXlsx;
}
}