Commit 163adba8 authored by Anastasios Poimenidis's avatar Anastasios Poimenidis
Browse files

refactor: remove deprecated use of Parameters in Panache calls

parent 62badde0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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>
+24 −21
Original line number Diff line number Diff line
@@ -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;
@@ -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);

@@ -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);
@@ -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();

@@ -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(",");
@@ -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) {
+10 −3
Original line number Diff line number Diff line
@@ -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> {

@@ -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());
    }
}