Loading pom.xml +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ <dependency> <groupId>org.etsi.osl.hypo.api</groupId> <artifactId>tmf.schema</artifactId> <version>2.4.0</version> <version>2.4.1</version> </dependency> <dependency> Loading src/main/java/org/etsi/osl/hypo/api/tmf/common/api/repository/AbstractBaseRepository.java +24 −21 Original line number Diff line number Diff line Loading @@ -12,10 +12,10 @@ import static org.etsi.osl.hypo.api.tmf.common.api.constants.ApiConstants.ORDER_ import static org.etsi.osl.hypo.api.tmf.common.api.constants.ApiConstants.SORT; import io.micrometer.common.util.StringUtils; import io.quarkus.panache.common.Parameters; import io.quarkus.panache.common.Sort; import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; Loading @@ -39,7 +39,7 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { String id, Map<String, String> params, List<String> listOfIDs) { String className = entityClass.getSimpleName(); Parameters queryParameters = parseAndTransformParameters(params, id, listOfIDs); Map<String, Object> queryParameters = parseAndTransformParameters(params, id, listOfIDs); String queryStr = UtilService.findWithCriteriaQuery(className, id, params, listOfIDs); Loading @@ -57,7 +57,7 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { } public long countWithCriteriaQuery(Map<String, String> params, List<String> listOfIDs) { Parameters queryParameters = parseAndTransformParameters(params, null, listOfIDs); Map<String, Object> queryParameters = parseAndTransformParameters(params, null, listOfIDs); String className = entityClass.getSimpleName(); String queryStr = UtilService.findWithCriteriaQuery(className, null, params, listOfIDs); Loading Loading @@ -91,24 +91,25 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { return String.join(".", qualifier, column); } private Parameters parseAndTransformParameters( private Map<String, Object> parseAndTransformParameters( Map<String, String> parametersMap, String id, List<String> ids) { Parameters parameters = new Parameters(); Map<String, Object> parameters = new HashMap<>(); parametersMap.entrySet().stream() .filter(entry -> !entry.getKey().equals(IS_KUBERNETES)) .forEach(entry -> handleParameters(parameters, entry)); if (id != null && !id.isEmpty()) { parameters.and(ID, id); parameters.put(ID, id); } if (!Objects.isNull(ids) && !ids.isEmpty()) { parameters.and(ID_LIST, ids); parameters.put(ID_LIST, ids); } return parameters; } private static void handleParameters(Parameters parameters, Map.Entry<String, String> entry) { private static void handleParameters( Map<String, Object> parameters, Map.Entry<String, String> entry) { String key = entry.getKey(); String value = entry.getValue(); Loading Loading @@ -136,7 +137,7 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { ServiceStateType stateType = ServiceStateType.valueOf(s); serviceStates.add(stateType); } parameters.and(ApiConstants.STATE, serviceStates); parameters.put(ApiConstants.STATE, serviceStates); } case ApiConstants.ORDER_STATE -> { String[] valueSplit = value.split(","); Loading @@ -145,47 +146,49 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { ServiceOrderStateType serviceOrderStateType = ServiceOrderStateType.valueOf(s); serviceOrderStateTypes.add(serviceOrderStateType); } parameters.and(ApiConstants.STATE, serviceOrderStateTypes); parameters.put(ApiConstants.STATE, serviceOrderStateTypes); } case ApiConstants.STATUS -> { ProductStatusType statusType = ProductStatusType.valueOf(value); parameters.and(key, statusType); parameters.put(key, statusType); } case ApiConstants.IS_BUNDLE -> handleBooleanParameter(parameters, key, value); case "alarmType" -> { AlarmType alarmType = AlarmType.valueOf(value.toUpperCase()); parameters.and(key, alarmType); parameters.put(key, alarmType); } case "perceivedSeverity" -> { PerceivedSeverity perceivedSeverity = PerceivedSeverity.valueOf(value.toUpperCase()); parameters.and(key, perceivedSeverity); parameters.put(key, perceivedSeverity); } case "plannedOutageIndicator" -> { PlannedOutageIndicatorEnum plannedOutageIndicator = PlannedOutageIndicatorEnum.valueOf(value.toUpperCase()); parameters.and(key, plannedOutageIndicator); parameters.put(key, plannedOutageIndicator); } default -> parameters.and(key, value); default -> parameters.put(key, value); } } } private static void handleBooleanParameter(Parameters parameters, String key, String value) { private static void handleBooleanParameter( Map<String, Object> parameters, String key, String value) { if (value.equalsIgnoreCase("true")) { parameters.and(key, true); parameters.put(key, true); } else if (value.equalsIgnoreCase("false")) { parameters.and(key, false); parameters.put(key, false); } else if (value.equalsIgnoreCase("")) { parameters.and(key, null); parameters.put(key, null); } else { throw new IllegalArgumentException("Invalid value for isBundle"); } } private static void handleOffsetDateTime(Parameters parameters, String key, String value) { private static void handleOffsetDateTime( Map<String, Object> parameters, String key, String value) { String dateString = value.replace(" ", "+").replace("\"", ""); OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateString); parameters.and(key, offsetDateTime); parameters.put(key, offsetDateTime); } private boolean shouldUseRange(Map<String, String> params) { Loading src/main/java/org/etsi/osl/hypo/api/tmf/common/api/repository/BaseRepository.java +10 −3 Original line number Diff line number Diff line Loading @@ -3,9 +3,11 @@ package org.etsi.osl.hypo.api.tmf.common.api.repository; import static org.etsi.osl.hypo.api.tmf.common.constants.ColumnConstants.TMFID; import io.quarkus.hibernate.orm.panache.PanacheRepository; import io.quarkus.panache.common.Parameters; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public interface BaseRepository<T> extends PanacheRepository<T> { Loading @@ -18,7 +20,12 @@ public interface BaseRepository<T> extends PanacheRepository<T> { } default List<T> findByIdsList(List<String> ids) { Parameters queryParameters = Parameters.with("idsList", ids); return find("where tmfId in :idsList", queryParameters).list(); Map<String, Object> params = Map.of("idsList", ids); return find("tmfId in :idsList", params).list(); } default Set<T> findByIdsSet(Set<String> ids) { Map<String, Object> params = Map.of("idsList", ids); return find("tmfId in :idsList", params).stream().collect(Collectors.toSet()); } } Loading
pom.xml +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ <dependency> <groupId>org.etsi.osl.hypo.api</groupId> <artifactId>tmf.schema</artifactId> <version>2.4.0</version> <version>2.4.1</version> </dependency> <dependency> Loading
src/main/java/org/etsi/osl/hypo/api/tmf/common/api/repository/AbstractBaseRepository.java +24 −21 Original line number Diff line number Diff line Loading @@ -12,10 +12,10 @@ import static org.etsi.osl.hypo.api.tmf.common.api.constants.ApiConstants.ORDER_ import static org.etsi.osl.hypo.api.tmf.common.api.constants.ApiConstants.SORT; import io.micrometer.common.util.StringUtils; import io.quarkus.panache.common.Parameters; import io.quarkus.panache.common.Sort; import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; Loading @@ -39,7 +39,7 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { String id, Map<String, String> params, List<String> listOfIDs) { String className = entityClass.getSimpleName(); Parameters queryParameters = parseAndTransformParameters(params, id, listOfIDs); Map<String, Object> queryParameters = parseAndTransformParameters(params, id, listOfIDs); String queryStr = UtilService.findWithCriteriaQuery(className, id, params, listOfIDs); Loading @@ -57,7 +57,7 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { } public long countWithCriteriaQuery(Map<String, String> params, List<String> listOfIDs) { Parameters queryParameters = parseAndTransformParameters(params, null, listOfIDs); Map<String, Object> queryParameters = parseAndTransformParameters(params, null, listOfIDs); String className = entityClass.getSimpleName(); String queryStr = UtilService.findWithCriteriaQuery(className, null, params, listOfIDs); Loading Loading @@ -91,24 +91,25 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { return String.join(".", qualifier, column); } private Parameters parseAndTransformParameters( private Map<String, Object> parseAndTransformParameters( Map<String, String> parametersMap, String id, List<String> ids) { Parameters parameters = new Parameters(); Map<String, Object> parameters = new HashMap<>(); parametersMap.entrySet().stream() .filter(entry -> !entry.getKey().equals(IS_KUBERNETES)) .forEach(entry -> handleParameters(parameters, entry)); if (id != null && !id.isEmpty()) { parameters.and(ID, id); parameters.put(ID, id); } if (!Objects.isNull(ids) && !ids.isEmpty()) { parameters.and(ID_LIST, ids); parameters.put(ID_LIST, ids); } return parameters; } private static void handleParameters(Parameters parameters, Map.Entry<String, String> entry) { private static void handleParameters( Map<String, Object> parameters, Map.Entry<String, String> entry) { String key = entry.getKey(); String value = entry.getValue(); Loading Loading @@ -136,7 +137,7 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { ServiceStateType stateType = ServiceStateType.valueOf(s); serviceStates.add(stateType); } parameters.and(ApiConstants.STATE, serviceStates); parameters.put(ApiConstants.STATE, serviceStates); } case ApiConstants.ORDER_STATE -> { String[] valueSplit = value.split(","); Loading @@ -145,47 +146,49 @@ public class AbstractBaseRepository<T> implements BaseRepository<T> { ServiceOrderStateType serviceOrderStateType = ServiceOrderStateType.valueOf(s); serviceOrderStateTypes.add(serviceOrderStateType); } parameters.and(ApiConstants.STATE, serviceOrderStateTypes); parameters.put(ApiConstants.STATE, serviceOrderStateTypes); } case ApiConstants.STATUS -> { ProductStatusType statusType = ProductStatusType.valueOf(value); parameters.and(key, statusType); parameters.put(key, statusType); } case ApiConstants.IS_BUNDLE -> handleBooleanParameter(parameters, key, value); case "alarmType" -> { AlarmType alarmType = AlarmType.valueOf(value.toUpperCase()); parameters.and(key, alarmType); parameters.put(key, alarmType); } case "perceivedSeverity" -> { PerceivedSeverity perceivedSeverity = PerceivedSeverity.valueOf(value.toUpperCase()); parameters.and(key, perceivedSeverity); parameters.put(key, perceivedSeverity); } case "plannedOutageIndicator" -> { PlannedOutageIndicatorEnum plannedOutageIndicator = PlannedOutageIndicatorEnum.valueOf(value.toUpperCase()); parameters.and(key, plannedOutageIndicator); parameters.put(key, plannedOutageIndicator); } default -> parameters.and(key, value); default -> parameters.put(key, value); } } } private static void handleBooleanParameter(Parameters parameters, String key, String value) { private static void handleBooleanParameter( Map<String, Object> parameters, String key, String value) { if (value.equalsIgnoreCase("true")) { parameters.and(key, true); parameters.put(key, true); } else if (value.equalsIgnoreCase("false")) { parameters.and(key, false); parameters.put(key, false); } else if (value.equalsIgnoreCase("")) { parameters.and(key, null); parameters.put(key, null); } else { throw new IllegalArgumentException("Invalid value for isBundle"); } } private static void handleOffsetDateTime(Parameters parameters, String key, String value) { private static void handleOffsetDateTime( Map<String, Object> parameters, String key, String value) { String dateString = value.replace(" ", "+").replace("\"", ""); OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateString); parameters.and(key, offsetDateTime); parameters.put(key, offsetDateTime); } private boolean shouldUseRange(Map<String, String> params) { Loading
src/main/java/org/etsi/osl/hypo/api/tmf/common/api/repository/BaseRepository.java +10 −3 Original line number Diff line number Diff line Loading @@ -3,9 +3,11 @@ package org.etsi.osl.hypo.api.tmf.common.api.repository; import static org.etsi.osl.hypo.api.tmf.common.constants.ColumnConstants.TMFID; import io.quarkus.hibernate.orm.panache.PanacheRepository; import io.quarkus.panache.common.Parameters; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; public interface BaseRepository<T> extends PanacheRepository<T> { Loading @@ -18,7 +20,12 @@ public interface BaseRepository<T> extends PanacheRepository<T> { } default List<T> findByIdsList(List<String> ids) { Parameters queryParameters = Parameters.with("idsList", ids); return find("where tmfId in :idsList", queryParameters).list(); Map<String, Object> params = Map.of("idsList", ids); return find("tmfId in :idsList", params).list(); } default Set<T> findByIdsSet(Set<String> ids) { Map<String, Object> params = Map.of("idsList", ids); return find("tmfId in :idsList", params).stream().collect(Collectors.toSet()); } }