X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fspi%2Frepository%2FYangResourceNativeRepositoryImpl.java;h=c84ff427e6ac2e5674ee40fdce0373d41c938327;hb=7bacf478fc69fb97d2abf29c4678552f58575b74;hp=e21fecb2b17316fa4c3328f0b80b861185953089;hpb=ad3b6214229bd71d3ec7a79f06078d7e190cc7e9;p=cps.git diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceNativeRepositoryImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceNativeRepositoryImpl.java index e21fecb2b..c84ff427e 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceNativeRepositoryImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceNativeRepositoryImpl.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2022 Nordix Foundation. + * Copyright (C) 2022-2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,17 +20,20 @@ package org.onap.cps.spi.repository; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Query; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.StringJoiner; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.Query; +import lombok.extern.slf4j.Slf4j; import org.hibernate.type.StandardBasicTypes; import org.onap.cps.spi.model.ModuleReference; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; +@Slf4j @Repository public class YangResourceNativeRepositoryImpl implements YangResourceNativeRepository { @@ -39,20 +42,28 @@ public class YangResourceNativeRepositoryImpl implements YangResourceNativeRepos @Override @Transactional - public List getResourceIdsByModuleReferences(final Collection moduleReferences) { + public List getResourceIdsByModuleReferences(final Collection moduleReferences) { + if (moduleReferences.isEmpty()) { + return Collections.emptyList(); + } final Query query = entityManager.createNativeQuery(getCombinedSelectSqlQuery(moduleReferences)) .unwrap(org.hibernate.query.NativeQuery.class) - .addScalar("id", StandardBasicTypes.LONG); - return query.getResultList(); + .addScalar("id", StandardBasicTypes.INTEGER); + final List yangResourceIds = query.getResultList(); + if (yangResourceIds.size() != moduleReferences.size()) { + log.warn("ModuleReferences size : {} and QueryResult size : {}", moduleReferences.size(), + yangResourceIds.size()); + } + return yangResourceIds; } private String getCombinedSelectSqlQuery(final Collection moduleReferences) { final StringJoiner sqlQueryJoiner = new StringJoiner(" UNION ALL "); - moduleReferences.stream().forEach(moduleReference -> { + moduleReferences.forEach(moduleReference -> sqlQueryJoiner.add(String.format("SELECT id FROM yang_resource WHERE module_name='%s' and revision='%s'", moduleReference.getModuleName(), - moduleReference.getRevision())); - }); + moduleReference.getRevision())) + ); return sqlQueryJoiner.toString(); } }