diff --git a/pom.xml b/pom.xml index 503b66b..b4fe623 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.sitenv.vocabulary codevalidator-api - 1.0.12 + 1.0.13 Code Validator API http://www.sitenv.org diff --git a/src/main/java/org/sitenv/vocabularies/validation/repositories/CodeRepository.java b/src/main/java/org/sitenv/vocabularies/validation/repositories/CodeRepository.java index 87af522..7299cd0 100644 --- a/src/main/java/org/sitenv/vocabularies/validation/repositories/CodeRepository.java +++ b/src/main/java/org/sitenv/vocabularies/validation/repositories/CodeRepository.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Set; /** * Created by Brian on 2/7/2016. @@ -14,25 +15,25 @@ @Repository public interface CodeRepository extends JpaRepository { @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM Code c WHERE c.codeSystem in (:codesystems)") - boolean foundCodesystems(@Param("codesystems")List codesystems); + boolean foundCodesystems(@Param("codesystems")Set codesystems); @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM Code c WHERE c.code = :code and c.displayName = :displayName and c.codeSystem in (:codesystems)") boolean foundCodeAndDisplayNameInCodesystem(@Param("code")String code, @Param("displayName")String displayName, @Param("codesystems")List codesystems); @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM Code c WHERE c.code = :code and c.displayName = :displayName and c.codeSystemOID = :codeSystemOID and c.codeSystem in (:codesystems) and c.active = true") - boolean foundActiveCodeAndDisplayNameAndCodeSystemOIDInCodesystem(@Param("code")String code, @Param("displayName")String displayName, @Param("codeSystemOID")String codeSystemOID, @Param("codesystems")List codesystems); + boolean foundActiveCodeAndDisplayNameAndCodeSystemOIDInCodesystem(@Param("code")String code, @Param("displayName")String displayName, @Param("codeSystemOID")String codeSystemOID, @Param("codesystems")Set codesystems); @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM Code c WHERE c.code = :code and c.codeSystem in (:codesystems)") - boolean foundCodeInCodesystems(@Param("code")String code, @Param("codesystems")List codesystems); + boolean foundCodeInCodesystems(@Param("code")String code, @Param("codesystems")Set codesystems); @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM Code c WHERE c.displayName = :displayName and c.codeSystem in (:codesystems)") - boolean foundDisplayNameInCodesystems(@Param("displayName")String displayName, @Param("codesystems")List codesystems); + boolean foundDisplayNameInCodesystems(@Param("displayName")String displayName, @Param("codesystems")Set codesystems); @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM Code c WHERE c.codeSystemOID = :codeSystemOID and c.codeSystem in (:codesystems)") - boolean foundCodeSystemOIDInCodesystems(@Param("codeSystemOID")String codeSystemOID, @Param("codesystems")List codesystems); + boolean foundCodeSystemOIDInCodesystems(@Param("codeSystemOID")String codeSystemOID, @Param("codesystems")Set codesystems); List findByCodeAndCodeSystemIn(String code, List codesystems); - @Query("SELECT c.active FROM Code c WHERE c.code = :code and c.codeSystem in (:codesystems)") - boolean codeIsActive(@Param("code")String code, @Param("codesystems")List codesystems); + @Query("SELECT c.active FROM Code c WHERE c.active = 1 AND c.code = :code and c.codeSystem in (:codesystems)") + boolean codeIsActive(@Param("code")String code, @Param("codesystems")Set codesystems); } diff --git a/src/main/java/org/sitenv/vocabularies/validation/services/VocabularyCodeService.java b/src/main/java/org/sitenv/vocabularies/validation/services/VocabularyCodeService.java index cccdf27..14e96a6 100644 --- a/src/main/java/org/sitenv/vocabularies/validation/services/VocabularyCodeService.java +++ b/src/main/java/org/sitenv/vocabularies/validation/services/VocabularyCodeService.java @@ -1,14 +1,15 @@ package org.sitenv.vocabularies.validation.services; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.sitenv.vocabularies.validation.entities.Code; import org.sitenv.vocabularies.validation.repositories.CodeRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - /** * Created by Brian on 2/23/2016. */ @@ -34,7 +35,7 @@ public boolean isFoundByCodeAndDisplayNameInCodeSystems(String code, String disp public boolean isFoundByCodeInCodeSystems(String code, Set codeSystems){ String cleanedCode = code.trim().toUpperCase(); - ArrayList cleanedCodeSystems = new ArrayList<>(); + Set cleanedCodeSystems = new HashSet<>(); for(String codeSystem : codeSystems){ cleanedCodeSystems.add(codeSystem.trim().toUpperCase()); } diff --git a/src/main/java/org/sitenv/vocabularies/validation/validators/nodetypes/CodeSystemCodeValidator.java b/src/main/java/org/sitenv/vocabularies/validation/validators/nodetypes/CodeSystemCodeValidator.java index 6afe00c..a7234ed 100644 --- a/src/main/java/org/sitenv/vocabularies/validation/validators/nodetypes/CodeSystemCodeValidator.java +++ b/src/main/java/org/sitenv/vocabularies/validation/validators/nodetypes/CodeSystemCodeValidator.java @@ -1,5 +1,16 @@ package org.sitenv.vocabularies.validation.validators.nodetypes; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathExpressionException; + import org.apache.log4j.Logger; import org.sitenv.vocabularies.configuration.ConfiguredValidationResultSeverityLevel; import org.sitenv.vocabularies.configuration.ConfiguredValidator; @@ -13,14 +24,6 @@ import org.springframework.stereotype.Component; import org.w3c.dom.Node; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - @Component(value = "CodeSystemCodeValidator") public class CodeSystemCodeValidator extends NodeValidator { private static final Logger logger = Logger.getLogger(CodeSystemCodeValidator.class); @@ -51,7 +54,7 @@ public List validateNode(ConfiguredValidator configu throw new RuntimeException("ERROR getting node values " + e.getMessage()); } - List allowedConfiguredCodeSystemNames = new ArrayList<>(Arrays.asList(configuredValidator.getAllowedCodesystemNames().split(","))); + Set allowedConfiguredCodeSystemNames = new HashSet<>(Arrays.asList(configuredValidator.getAllowedCodesystemNames().split(","))); NodeValidationResult nodeValidationResult = new NodeValidationResult(); nodeValidationResult.setValidatedDocumentXpathExpression(XpathUtils.buildXpathFromNode(node));