package br.ufrgs.inf.dsmoura.repository.controller.asset; import java.util.ArrayList; import java.util.List; import br.ufrgs.inf.dsmoura.repository.controller.util.JSFUtil; import br.ufrgs.inf.dsmoura.repository.controller.validator.ValidationUtil; import br.ufrgs.inf.dsmoura.repository.model.entity.Artifactable; import br.ufrgs.inf.dsmoura.repository.model.entity.FunctionalRequirementDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.InternationalizationTypeDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.NonFunctionalRequirementDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.OperationalSystemTypeDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.Requirements; import br.ufrgs.inf.dsmoura.repository.model.entity.UseCaseDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.UserInterfaceDTO; public class RequirementsMB implements Validation { public static final String FUNCTIONAL_REQ_REFERENCE_PATH = "Solution\\Requirements\\Functional Requirements"; public static final String USER_INTERFACE_REFERENCE_PATH = "Solution\\Requirements\\User Interface"; public static final String USE_CASE_REFERENCE_PATH = "Solution\\Requirements\\Use Case"; public static final String NON_FUNCTIONAL_REQ_REFERENCE_PATH = "Solution\\Requirements\\Non-Functional Requirements"; private AssetMB assetMB; private InternationalizationTypeDTO internationalizationTypeDTOAux; private OperationalSystemTypeDTO operationalSystemTypeDTOAux; private ArtifactMB functionalRequirementMB; private ArtifactMB useCaseMB; private ArtifactMB userInterfaceMB; private ArtifactMB nonFunctionalRequirementMB; public RequirementsMB(AssetMB assetMB) { this.assetMB = assetMB; initMB(); } private void initMB() { internationalizationTypeDTOAux = new InternationalizationTypeDTO(); operationalSystemTypeDTOAux = new OperationalSystemTypeDTO(); functionalRequirementMB = new ArtifactMB(this.assetMB, getDTO().getFunctionalRequirementDTOs(), ArtifactType.FUNCTIONAL_REQ); useCaseMB = new ArtifactMB(this.assetMB, getDTO().getUseCaseDTOs(), ArtifactType.USE_CASE); userInterfaceMB = new ArtifactMB(this.assetMB, getDTO().getUserInterfaceDTOs(), ArtifactType.USER_INTERFACE); nonFunctionalRequirementMB = new ArtifactMB(this.assetMB, getDTO().getNonFunctionalRequirementDTOs(), ArtifactType.NON_FUNCTIONAL_REQ); } public Requirements getDTO() { return this.assetMB.getAsset().getSolution().getRequirements(); } @Override public String validate() { if (internationalizationTypeDTOAux != null) { return "Select the internationalization language then click in Add."; } if (operationalSystemTypeDTOAux != null) { return "Select the operational system then click in Add."; } for (FunctionalRequirementDTO functionalRequirementDTO : getDTO().getFunctionalRequirementDTOs()) { if (!ValidationUtil.validate(functionalRequirementDTO) || functionalRequirementDTO.getFunctionalRequirementTypeDTO() == null) { return "Enter all blank fields of functional requirements."; } } for (UseCaseDTO useCaseDTO : getDTO().getUseCaseDTOs()) { if (!ValidationUtil.validate(useCaseDTO)) { return "Enter all blank fields of use cases."; } } for (UserInterfaceDTO uiDTO : getDTO().getUserInterfaceDTOs()) { if (!ValidationUtil.validate(uiDTO) || uiDTO.getUserInterfaceTypeDTO() == null) { return "Enter all blank fields of user interface artifacts."; } } for (NonFunctionalRequirementDTO nonFunctionalRequirementDTO : getDTO().getNonFunctionalRequirementDTOs()) { if (!ValidationUtil.validate(nonFunctionalRequirementDTO) || nonFunctionalRequirementDTO.getNonFunctionalRequirementTypeDTO() == null) { return "Enter all blank fields of non-functional requirements."; } } return ""; } public List<Artifactable> getArtifacts() { List<Artifactable> artifacts = new ArrayList<Artifactable>(); for (Artifactable artifactDTO : getDTO().getFunctionalRequirementDTOs()) { artifactDTO.setLocation(FUNCTIONAL_REQ_REFERENCE_PATH); } for (Artifactable artifactDTO : getDTO().getUseCaseDTOs()) { artifactDTO.setLocation(USE_CASE_REFERENCE_PATH); } for (Artifactable artifactDTO : getDTO().getUserInterfaceDTOs()) { artifactDTO.setLocation(USER_INTERFACE_REFERENCE_PATH); } for (Artifactable artifactDTO : getDTO().getNonFunctionalRequirementDTOs()) { artifactDTO.setLocation(NON_FUNCTIONAL_REQ_REFERENCE_PATH); } artifacts.addAll(getDTO().getFunctionalRequirementDTOs()); artifacts.addAll(getDTO().getUserInterfaceDTOs()); artifacts.addAll(getDTO().getUseCaseDTOs()); artifacts.addAll(getDTO().getNonFunctionalRequirementDTOs()); return artifacts; } public Boolean getHasRequirements() { return getDTO().getFunctionalRequirementDTOs().size() > 0 || getDTO().getInternationalizationTypeDTOs().size() > 0 || getDTO().getNonFunctionalRequirementDTOs().size() > 0 || getDTO().getOperationalSystemTypeDTOs().size() > 0 || getDTO().getUserInterfaceDTOs().size() > 0 || getDTO().getUseCaseDTOs().size() > 0; } /* INTERNATIONALIZATION */ public String addInternationalization() { if ((internationalizationTypeDTOAux != null) && (internationalizationTypeDTOAux.getInternationalizationtypePk() != null)) { if ( ! getDTO().getInternationalizationTypeDTOs().contains( internationalizationTypeDTOAux ) ) { getDTO().getInternationalizationTypeDTOs().add( internationalizationTypeDTOAux ); } internationalizationTypeDTOAux = new InternationalizationTypeDTO(); } return ""; } public String removeInternationalization() { int internationalizationTypePkToRemove = Integer.parseInt( JSFUtil.getRequestParameter("internationalizationTypePkToRemove") ); for (InternationalizationTypeDTO internationalizationTypeDTO : getDTO().getInternationalizationTypeDTOs()) { if (internationalizationTypeDTO.getInternationalizationtypePk() == internationalizationTypePkToRemove) { getDTO().getInternationalizationTypeDTOs().remove( internationalizationTypeDTO ); break; } } return ""; } /* OPERATIONAL SYSTEM */ public String addOperationalSystem() { if ((operationalSystemTypeDTOAux != null) && (operationalSystemTypeDTOAux.getOperationalsystemtypePk() != null)) { if ( ! getDTO().getOperationalSystemTypeDTOs().contains( operationalSystemTypeDTOAux ) ) { getDTO().getOperationalSystemTypeDTOs().add( operationalSystemTypeDTOAux ); } operationalSystemTypeDTOAux = new OperationalSystemTypeDTO(); } return ""; } public String removeOperationalSystem() { int operationalSystemTypePkToRemove = Integer.parseInt( JSFUtil.getRequestParameter("operationalSystemTypePkToRemove") ); for (OperationalSystemTypeDTO operationalSystemTypeDTO : getDTO().getOperationalSystemTypeDTOs()) { if (operationalSystemTypeDTO.getOperationalsystemtypePk() == operationalSystemTypePkToRemove) { getDTO().getOperationalSystemTypeDTOs().remove( operationalSystemTypeDTO ); break; } } return ""; } public ArtifactMB getFunctionalRequirementMB() { return functionalRequirementMB; } public void setFunctionalRequirementMB(ArtifactMB functionalRequirementMB) { this.functionalRequirementMB = functionalRequirementMB; } public ArtifactMB getUserInterfaceMB() { return userInterfaceMB; } public void setUserInterfaceMB(ArtifactMB userInterfaceMB) { this.userInterfaceMB = userInterfaceMB; } public ArtifactMB getUseCaseMB() { return useCaseMB; } public void setUseCaseMB(ArtifactMB useCaseMB) { this.useCaseMB = useCaseMB; } public ArtifactMB getNonFunctionalRequirementMB() { return nonFunctionalRequirementMB; } public void setNonFunctionalRequirementMB(ArtifactMB nonFunctionalRequirementMB) { this.nonFunctionalRequirementMB = nonFunctionalRequirementMB; } public InternationalizationTypeDTO getInternationalizationTypeDTOAux() { return internationalizationTypeDTOAux; } public void setInternationalizationTypeDTOAux( InternationalizationTypeDTO internationalizationTypeDTOAux) { this.internationalizationTypeDTOAux = internationalizationTypeDTOAux; } public OperationalSystemTypeDTO getOperationalSystemTypeDTOAux() { return operationalSystemTypeDTOAux; } public void setOperationalSystemTypeDTOAux( OperationalSystemTypeDTO operationalSystemTypeDTOAux) { this.operationalSystemTypeDTOAux = operationalSystemTypeDTOAux; } }