diff --git a/src/main/java/it/istat/is2/app/util/TreeNode.java b/src/main/java/it/istat/is2/app/util/TreeNode.java new file mode 100644 index 00000000..e0622751 --- /dev/null +++ b/src/main/java/it/istat/is2/app/util/TreeNode.java @@ -0,0 +1,72 @@ +/** + * Copyright 2019 ISTAT + * + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://ec.europa.eu/idabc/eupl5 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + * + * @author Francesco Amato + * @author Mauro Bruno + * @author Paolo Francescangeli + * @author Renzo Iannacone + * @author Stefano Macone + * @version 1.0 + */ +package it.istat.is2.app.util; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +public class TreeNode implements Iterable> { + + T data; + TreeNode parent; + List> children; + + public TreeNode(T data) { + this.data = data; + this.children = new LinkedList>(); + } + + public TreeNode addChild(T child) { + TreeNode childNode = new TreeNode(child); + childNode.parent = this; + this.children.add(childNode); + return childNode; + } + + @Override + public Iterator> iterator() { + // TODO Auto-generated method stub + return null; + } + + public T getData() { + return data; + } + + public List> getChildren() { + return children; + } + + public void setChildren(List> children) { + this.children = children; + } + + public void setData(T data) { + this.data = data; + } + + // other features ... + +} \ No newline at end of file diff --git a/src/main/java/it/istat/is2/design/controller/DesignController.java b/src/main/java/it/istat/is2/design/controller/DesignController.java new file mode 100644 index 00000000..66769dd9 --- /dev/null +++ b/src/main/java/it/istat/is2/design/controller/DesignController.java @@ -0,0 +1,117 @@ +/** + * Copyright 2019 ISTAT + * + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://ec.europa.eu/idabc/eupl5 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + * + * @author Francesco Amato + * @author Mauro Bruno + * @author Paolo Francescangeli + * @author Renzo Iannacone + * @author Stefano Macone + * @version 1.0 + */ +package it.istat.is2.design.controller; + + +import java.util.ArrayList; + +import java.util.List; + + +import org.springframework.beans.factory.annotation.Autowired; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import org.springframework.web.bind.annotation.RequestMapping; +import it.istat.is2.app.service.NotificationService; +import it.istat.is2.app.util.TreeNode; +import it.istat.is2.workflow.dao.BusinessProcessDao; +import it.istat.is2.workflow.domain.BusinessFunction; +import it.istat.is2.workflow.domain.BusinessProcess; +import it.istat.is2.workflow.domain.ProcessStep; +import it.istat.is2.workflow.service.BusinessFunctionService; +import it.istat.is2.workflow.service.ProcessStepService; +import it.istat.is2.workflow.service.BusinessProcessService; + + + +@Controller +public class DesignController { + + + @Autowired + private NotificationService notificationService; + + @Autowired + private BusinessFunctionService businessFunctionService; + @Autowired + private BusinessProcessService businessProcessService; + + @Autowired + private ProcessStepService processStepService; + + + + + @RequestMapping("/settings") + public String viewSettings(Model model) { + notificationService.removeAllMessages(); + List listaFunzioni = businessFunctionService.findBFunctions(); + //List listaBp = businessProcessService.findBProcessByIdFunction(new Long(1)); + List listaBp = businessProcessService.findAll(); + + List listaBs = processStepService.findAll(); + + + List listaAllBp = businessProcessService.findAllProcesses(); + List listaAllSubBp = businessProcessService.findAllSubProcesses(); + + + List albero = new ArrayList(); + BusinessProcessDao temp = null; + + + listaFunzioni.forEach((n) -> {albero.add(new TreeNode(n.getName())); n.getBusinessProcesses().forEach((m) ->{ if(m.getBusinessProcessParent()==null){albero.get(albero.size()- 1).addChild(m.getName()); listaBp.forEach((s) -> + {if(s.getBusinessProcessParent()!=null && s.getBusinessProcessParent().getId()== m.getId()){TreeNode tempNode = ((TreeNode) albero.get(albero.size()- 1).getChildren().get(albero.get(albero.size()- 1).getChildren().size() - 1)).addChild(s.getName()); + listaBs.forEach((p)->{p.getBusinessProcesses().forEach((k)->{if(k.getId().equals(s.getId())){tempNode.addChild(p.getDescr()); }; }); }); }; });}}); }); + + +// listaFunzioni.forEach((n) -> {albero.add(new TreeNode(n.getNome())); n.getBusinessProcesses().forEach((m) ->{ if(m.getSxBProcessParent()==null){albero.get(albero.size()- 1).addChild(m.getNome()); listaBp.forEach((s) -> +// {if(s.getSxBProcessParent()!=null && s.getSxBProcessParent().getId()== m.getId()){TreeNode tempNode = ((TreeNode) albero.get(albero.size()- 1).getChildren().get(albero.get(albero.size()- 1).getChildren().size() - 1)).addChild(s.getNome()); +// listaBs.forEach((p)->{p.getBusinessProcesses().forEach((k)->{if(k.getId().equals(s.getId())){tempNode.addChild(p.getNome()); }; }); }); }; });}}); }); +// + + model.addAttribute("albero", albero); + + + + + + + model.addAttribute("listaBp", listaBp); + model.addAttribute("listaAllBp", listaAllBp); + model.addAttribute("listaAllSubBp", listaAllSubBp); + model.addAttribute("listaFunzioni", listaFunzioni); + model.addAttribute("listaBusinessStep", listaBs); + + + + return "workflow/settings"; + + } + + +} diff --git a/src/main/java/it/istat/is2/workflow/dao/BusinessProcessDao.java b/src/main/java/it/istat/is2/workflow/dao/BusinessProcessDao.java index bb6c9ada..a24d00d6 100644 --- a/src/main/java/it/istat/is2/workflow/dao/BusinessProcessDao.java +++ b/src/main/java/it/istat/is2/workflow/dao/BusinessProcessDao.java @@ -23,6 +23,8 @@ */ package it.istat.is2.workflow.dao; import java.util.List; + +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @@ -32,6 +34,10 @@ @Repository public interface BusinessProcessDao extends CrudRepository { + @Query("SELECT bp FROM BusinessProcess bp WHERE bp.businessProcessParent IS NULL ORDER BY bp.order ASC ") + List findAllProcesses(); + @Query("SELECT bp FROM BusinessProcess bp WHERE bp.businessProcessParent IS NOT NULL ORDER BY bp.order ASC") + List findAllSubProcesses(); List findAll(); @SuppressWarnings("rawtypes") List findByBusinessFunctions( @Param("idfunction")List businessFunctions); diff --git a/src/main/java/it/istat/is2/workflow/dao/BusinessStepDao.java b/src/main/java/it/istat/is2/workflow/dao/ProcessStepDao.java similarity index 94% rename from src/main/java/it/istat/is2/workflow/dao/BusinessStepDao.java rename to src/main/java/it/istat/is2/workflow/dao/ProcessStepDao.java index b9b16dbc..0640485b 100644 --- a/src/main/java/it/istat/is2/workflow/dao/BusinessStepDao.java +++ b/src/main/java/it/istat/is2/workflow/dao/ProcessStepDao.java @@ -30,9 +30,10 @@ import it.istat.is2.workflow.domain.ProcessStep; @Repository -public interface BusinessStepDao extends CrudRepository { +public interface ProcessStepDao extends CrudRepository { List findAll(); @SuppressWarnings("rawtypes") List findByBusinessProcesses(@Param("idprocess")List businessProcess); + } diff --git a/src/main/java/it/istat/is2/workflow/domain/BusinessProcess.java b/src/main/java/it/istat/is2/workflow/domain/BusinessProcess.java index 4b33a610..a962c21d 100644 --- a/src/main/java/it/istat/is2/workflow/domain/BusinessProcess.java +++ b/src/main/java/it/istat/is2/workflow/domain/BusinessProcess.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonManagedReference; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.ArrayList; import java.util.List; @@ -52,6 +53,7 @@ public class BusinessProcess implements Serializable { private String label; @Column(name="ORDER") private Short order; + @JsonBackReference @ManyToMany(mappedBy = "businessProcesses") @@ -70,6 +72,9 @@ public class BusinessProcess implements Serializable { @OneToMany(mappedBy = "businessProcessParent") private List businessSubProcesses = new ArrayList<>(); + + + public BusinessProcess() { } @@ -79,3 +84,6 @@ public BusinessProcess(Long idFunction) { } } + + + diff --git a/src/main/java/it/istat/is2/workflow/domain/ProcessStep.java b/src/main/java/it/istat/is2/workflow/domain/ProcessStep.java index 1708bda6..550c0d4b 100644 --- a/src/main/java/it/istat/is2/workflow/domain/ProcessStep.java +++ b/src/main/java/it/istat/is2/workflow/domain/ProcessStep.java @@ -72,5 +72,11 @@ public ProcessStep(Long id) { super(); this.id = id; } + + + + + + } diff --git a/src/main/java/it/istat/is2/workflow/domain/StepInstance.java b/src/main/java/it/istat/is2/workflow/domain/StepInstance.java index c24e15e7..5b455dea 100644 --- a/src/main/java/it/istat/is2/workflow/domain/StepInstance.java +++ b/src/main/java/it/istat/is2/workflow/domain/StepInstance.java @@ -66,4 +66,5 @@ public class StepInstance implements Serializable { public StepInstance() { } + } diff --git a/src/main/java/it/istat/is2/workflow/service/BusinessProcessService.java b/src/main/java/it/istat/is2/workflow/service/BusinessProcessService.java index d481e147..5f3f5aa6 100644 --- a/src/main/java/it/istat/is2/workflow/service/BusinessProcessService.java +++ b/src/main/java/it/istat/is2/workflow/service/BusinessProcessService.java @@ -48,4 +48,15 @@ public List findBProcessByIdFunction(Long idfunction) { public BusinessProcess findBProcessById(long idprocess) { return businessProcessDao.findById(idprocess).orElse(null); } + public List findAllProcesses() { + return businessProcessDao.findAllProcesses(); + } + + public List findAllSubProcesses() { + return businessProcessDao.findAllSubProcesses(); + } + public List findAll() { + // TODO Auto-generated method stub + return businessProcessDao.findAll(); + } } diff --git a/src/main/java/it/istat/is2/workflow/service/BusinessStepService.java b/src/main/java/it/istat/is2/workflow/service/BusinessStepService.java index d33f8214..27c2097a 100644 --- a/src/main/java/it/istat/is2/workflow/service/BusinessStepService.java +++ b/src/main/java/it/istat/is2/workflow/service/BusinessStepService.java @@ -30,23 +30,29 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import it.istat.is2.workflow.dao.BusinessStepDao; +import it.istat.is2.workflow.dao.ProcessStepDao; import it.istat.is2.workflow.domain.BusinessProcess; import it.istat.is2.workflow.domain.ProcessStep; +import it.istat.is2.workflow.domain.StepInstance; @Service public class BusinessStepService { @Autowired - BusinessStepDao businessStepDao; + ProcessStepDao processStepDao; public List findBStepByIdProcess(Long idprocess) { List businessProcesses = new ArrayList<>(); businessProcesses.add(new BusinessProcess(idprocess)); - return businessStepDao.findByBusinessProcesses(businessProcesses); + return processStepDao.findByBusinessProcesses(businessProcesses); } public Optional findBusinessStep(Long idbstep) { - return businessStepDao.findById(idbstep); + return processStepDao.findById(idbstep); } + + public List findAll() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/main/java/it/istat/is2/workflow/service/ProcessStepService.java b/src/main/java/it/istat/is2/workflow/service/ProcessStepService.java new file mode 100644 index 00000000..f54f6be5 --- /dev/null +++ b/src/main/java/it/istat/is2/workflow/service/ProcessStepService.java @@ -0,0 +1,36 @@ +package it.istat.is2.workflow.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import it.istat.is2.workflow.dao.ProcessStepDao; + +import it.istat.is2.workflow.domain.BusinessProcess; +import it.istat.is2.workflow.domain.ProcessStep; + + +@Service +public class ProcessStepService { + + + @Autowired + ProcessStepDao ProcessStepDao; + + public List findBStepByIdProcess(Long idprocess) { + List businessProcesses = new ArrayList<>(); + businessProcesses.add(new BusinessProcess(idprocess)); + return ProcessStepDao.findByBusinessProcesses(businessProcesses); + } + public List findAll() { + return ProcessStepDao.findAll(); + } + + public Optional findProcessStep(Long idbstep) { + return ProcessStepDao.findById(idbstep); + } + +}