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.DesignPatternDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.ProgrammingLanguageDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.SourceCodeDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.Test; import br.ufrgs.inf.dsmoura.repository.model.entity.TestMethodTypeDTO; import br.ufrgs.inf.dsmoura.repository.model.entity.TestTypeDTO; public class TestMB implements Validation { public static final String GENERAL_ARTIFACT_REFERENCE_PATH = "Solution\\Test\\General Artifact"; public static final String SOURCE_CODE_REFERENCE_PATH = "Solution\\Test\\Source Code"; private AssetMB assetMB; private TestTypeDTO testTypeDTOAux; private TestMethodTypeDTO testMethodTypeDTOAux; private DesignPatternDTO designPatternDTOAux; private ProgrammingLanguageDTO programmingLanguageDTOAux; private ArtifactMB artifactMB; private ArtifactMB sourceCodeMB; public TestMB(AssetMB assetMB) { this.assetMB = assetMB; this.initMB(); } private void initMB() { testTypeDTOAux = new TestTypeDTO(); testMethodTypeDTOAux = new TestMethodTypeDTO(); designPatternDTOAux = new DesignPatternDTO(); programmingLanguageDTOAux = new ProgrammingLanguageDTO(); artifactMB = new ArtifactMB(this.assetMB, getDTO().getArtifactDTOs(), ArtifactType.GENERAL); sourceCodeMB = new ArtifactMB(this.assetMB, getDTO().getSourceCodeDTOs(), ArtifactType.SOURCE_CODE); } public Test getDTO() { return this.assetMB.getAsset().getSolution().getTest(); } @Override public String validate() { if (testTypeDTOAux != null) { return "Select the test type then click in Add."; } if (testMethodTypeDTOAux != null) { return "Select the test method type then click in Add."; } if (programmingLanguageDTOAux != null) { return "Select the programming language then click in Add."; } for (SourceCodeDTO sourceCodeDTO : getDTO().getSourceCodeDTOs()) { if (!ValidationUtil.validate(sourceCodeDTO) || sourceCodeDTO.getSourceCodeTypeDTO() == null) { return "Enter all blank fields of source code artifacts."; } } for (Artifactable artifactDTO : getDTO().getArtifactDTOs()) { if (!ValidationUtil.validate(artifactDTO)) { return "Enter all blank fields of general artifacts."; } } return ""; } public List<Artifactable> getArtifacts() { List<Artifactable> artifacts = new ArrayList<Artifactable>(); for (Artifactable artifactDTO : getDTO().getSourceCodeDTOs()) { artifactDTO.setLocation(SOURCE_CODE_REFERENCE_PATH); } for (Artifactable artifactDTO : getDTO().getArtifactDTOs()) { artifactDTO.setLocation(GENERAL_ARTIFACT_REFERENCE_PATH); } artifacts.addAll(getDTO().getSourceCodeDTOs()); artifacts.addAll(getDTO().getArtifactDTOs()); return artifacts; } public Boolean getHasTest() { return getDTO().getArtifactDTOs().size() > 0 || getDTO().getDesignPatternDTOs().size() > 0 || getDTO().getProgrammingLanguageDTOs().size() > 0 || getDTO().getSourceCodeDTOs().size() > 0 || getDTO().getTestMethodTypeDTOs().size() > 0 || getDTO().getTestTypeDTOs().size() > 0; } /* TEST TYPE */ public String addTestType() { if ((testTypeDTOAux != null) && (testTypeDTOAux.getTesttypePk() != null)) { if ( ! getDTO().getTestTypeDTOs().contains( testTypeDTOAux ) ) { getDTO().getTestTypeDTOs().add( testTypeDTOAux ); } testTypeDTOAux = new TestTypeDTO(); } return ""; } public String removeTestType() { int testTypePkToRemove = Integer.parseInt( JSFUtil.getRequestParameter("testTypePkToRemove") ); for (TestTypeDTO testTypeDTO : getDTO().getTestTypeDTOs()) { if (testTypeDTO.getTesttypePk() == testTypePkToRemove) { getDTO().getTestTypeDTOs().remove( testTypeDTO ); break; } } return ""; } /* TEST METHOD TYPE */ public String addTestMethodType() { if ((testMethodTypeDTOAux != null) && (testMethodTypeDTOAux.getTestmethodtypePk() != null)) { if ( ! getDTO().getTestMethodTypeDTOs().contains( testMethodTypeDTOAux ) ) { getDTO().getTestMethodTypeDTOs().add( testMethodTypeDTOAux ); } testMethodTypeDTOAux = new TestMethodTypeDTO(); } return ""; } public String removeTestMethodType() { int testMethodTypePkToRemove = Integer.parseInt( JSFUtil.getRequestParameter("testMethodTypePkToRemove") ); for (TestMethodTypeDTO testMethodTypeDTO : getDTO().getTestMethodTypeDTOs()) { if (testMethodTypeDTO.getTestmethodtypePk() == testMethodTypePkToRemove) { getDTO().getTestMethodTypeDTOs().remove( testMethodTypeDTO ); break; } } return ""; } /* DESIGN PATTERNS */ public String addDesignPattern() { if ((designPatternDTOAux != null) && (designPatternDTOAux.getDesignpatternPk() != null)) { if ( ! getDTO().getDesignPatternDTOs().contains( designPatternDTOAux ) ) { getDTO().getDesignPatternDTOs().add( designPatternDTOAux ); } designPatternDTOAux = new DesignPatternDTO(); } return ""; } public String removeDesignPattern() { int designPatternPkToRemove = Integer.parseInt( JSFUtil.getRequestParameter("designPatternPkToRemove") ); for (DesignPatternDTO designPatternDTO : getDTO().getDesignPatternDTOs()) { if (designPatternDTO.getDesignpatternPk() == designPatternPkToRemove) { getDTO().getDesignPatternDTOs().remove( designPatternDTO ); break; } } return ""; } /* PROGRAMMING LANGUAGES */ public String addProgrammingLanguage() { if ((programmingLanguageDTOAux != null) && (programmingLanguageDTOAux.getProgramminglanguagePk() != null)) { if ( ! getDTO().getProgrammingLanguageDTOs().contains( programmingLanguageDTOAux ) ) { getDTO().getProgrammingLanguageDTOs().add( programmingLanguageDTOAux ); } programmingLanguageDTOAux = new ProgrammingLanguageDTO(); } return ""; } public String removeProgrammingLanguage() { int programmingLanguagePkToRemove = Integer.parseInt( JSFUtil.getRequestParameter("programmingLanguagePkToRemove") ); for (ProgrammingLanguageDTO programmingLanguageDTO : getDTO().getProgrammingLanguageDTOs()) { if (programmingLanguageDTO.getProgramminglanguagePk() == programmingLanguagePkToRemove) { getDTO().getProgrammingLanguageDTOs().remove( programmingLanguageDTO ); break; } } return ""; } public ArtifactMB getArtifactMB() { return artifactMB; } public void setArtifactMB(ArtifactMB artifactMB) { this.artifactMB = artifactMB; } public ArtifactMB getSourceCodeMB() { return sourceCodeMB; } public void setSourceCodeMB(ArtifactMB sourceCodeMB) { this.sourceCodeMB = sourceCodeMB; } public DesignPatternDTO getDesignPatternDTOAux() { return designPatternDTOAux; } public void setDesignPatternDTOAux(DesignPatternDTO designPatternDTOAux) { this.designPatternDTOAux = designPatternDTOAux; } public ProgrammingLanguageDTO getProgrammingLanguageDTOAux() { return programmingLanguageDTOAux; } public void setProgrammingLanguageDTOAux( ProgrammingLanguageDTO programmingLanguageDTOAux) { this.programmingLanguageDTOAux = programmingLanguageDTOAux; } public TestTypeDTO getTestTypeDTOAux() { return testTypeDTOAux; } public void setTestTypeDTOAux(TestTypeDTO testTypeDTOAux) { this.testTypeDTOAux = testTypeDTOAux; } public TestMethodTypeDTO getTestMethodTypeDTOAux() { return testMethodTypeDTOAux; } public void setTestMethodTypeDTOAux(TestMethodTypeDTO testMethodTypeDTOAux) { this.testMethodTypeDTOAux = testMethodTypeDTOAux; } }