From 25423c50e504676f15c7a57c03aad40bfc35c7e6 Mon Sep 17 00:00:00 2001 From: Michael Dürre Date: Wed, 20 Jul 2022 09:32:50 +0200 Subject: migrate sdnr features to sulfur MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix sdnr code for sulfur Issue-ID: CCSDK-3692 Signed-off-by: Michael Dürre Change-Id: I0a62ade424bb978222e7ce6450215fb327f957b7 Signed-off-by: Michael Dürre --- sdnr/wt/data-provider/dblib/pom.xml | 3 ++- .../database/DatabaseDataProvider.java | 3 ++- .../database/sqldb/data/SqlDBDataProvider.java | 14 +++++----- .../sqldb/data/rpctypehelper/QueryResult.java | 8 +++++- .../database/sqldb/database/SqlDBMapper.java | 23 ++++++++++------ .../database/sqldb/database/SqlDBStatusReader.java | 16 +++++++---- .../database/sqldb/query/SelectQuery.java | 5 ++-- .../database/sqldb/query/SqlQuery.java | 31 +++++++++++++++------- .../sqldb/query/filters/RegexSqlDBFilter.java | 9 ++++++- .../dblib/test/TestMariaDataProvider.java | 6 +++-- .../dataprovider/dblib/test/TestQuerySyntax.java | 27 ++++++++++++++----- 11 files changed, 101 insertions(+), 44 deletions(-) (limited to 'sdnr/wt/data-provider/dblib') diff --git a/sdnr/wt/data-provider/dblib/pom.xml b/sdnr/wt/data-provider/dblib/pom.xml index 3e7329056..073d95ac8 100644 --- a/sdnr/wt/data-provider/dblib/pom.xml +++ b/sdnr/wt/data-provider/dblib/pom.xml @@ -22,13 +22,14 @@ ~ ============LICENSE_END======================================================= ~ --> + 4.0.0 org.onap.ccsdk.parent binding-parent - 2.4.0 + 2.4.1-SNAPSHOT diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/DatabaseDataProvider.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/DatabaseDataProvider.java index 20b86e661..fbd105aa1 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/DatabaseDataProvider.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/DatabaseDataProvider.java @@ -48,6 +48,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder; @@ -102,7 +103,7 @@ public interface DatabaseDataProvider { ReadPmdata24hDeviceListOutputBuilder readPmdata24hDeviceList(EntityInput input) throws IOException; - ReadStatusOutputBuilder readStatus() throws IOException; + ReadStatusOutputBuilder readStatus(EntityInput input) throws IOException; boolean waitForYellowDatabaseStatus(long timeout, TimeUnit unit); diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/SqlDBDataProvider.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/SqlDBDataProvider.java index 1bb30dc69..cabe6bed0 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/SqlDBDataProvider.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/SqlDBDataProvider.java @@ -297,7 +297,7 @@ public class SqlDBDataProvider extends HtDatabaseEventsService implements Databa outputBuilder.setPagination( new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.ltp.list.output.PaginationBuilder( result.getPagination()).build()); - outputBuilder.setData(result.getResult()); + outputBuilder.setData(result.getResultSet()); return outputBuilder; } @@ -308,7 +308,7 @@ public class SqlDBDataProvider extends HtDatabaseEventsService implements Databa outputBuilder.setPagination( new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.device.list.output.PaginationBuilder( result.getPagination()).build()); - outputBuilder.setData(result.getResult()); + outputBuilder.setData(result.getResultSet()); return outputBuilder; } @@ -322,7 +322,7 @@ public class SqlDBDataProvider extends HtDatabaseEventsService implements Databa outputBuilder.setPagination( new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.ltp.list.output.PaginationBuilder( result.getPagination()).build()); - outputBuilder.setData(result.getResult()); + outputBuilder.setData(result.getResultSet()); return outputBuilder; } @@ -335,14 +335,14 @@ public class SqlDBDataProvider extends HtDatabaseEventsService implements Databa outputBuilder.setPagination( new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.device.list.output.PaginationBuilder( result.getPagination()).build()); - outputBuilder.setData(result.getResult()); + outputBuilder.setData(result.getResultSet()); return outputBuilder; } @Override - public ReadStatusOutputBuilder readStatus() throws IOException { + public ReadStatusOutputBuilder readStatus(EntityInput input) throws IOException { QueryResult result = - readStatus.getDataStatus(); + readStatus.getDataStatus(input); ReadStatusOutputBuilder outputBuilder = new ReadStatusOutputBuilder(); outputBuilder.setData(result.getResult()); @@ -352,7 +352,7 @@ public class SqlDBDataProvider extends HtDatabaseEventsService implements Databa @Override public CreateNetworkElementConnectionOutputBuilder createNetworkElementConnection( NetworkElementConnectionEntity input) throws IOException { - String id = this.networkelementConnectionRW.write(input, input.getNodeId()); + String id = this.networkelementConnectionRW.updateOrInsert(input, input.getNodeId()); if (id == null) { throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE); } diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/rpctypehelper/QueryResult.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/rpctypehelper/QueryResult.java index c81725073..db4e980af 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/rpctypehelper/QueryResult.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/data/rpctypehelper/QueryResult.java @@ -22,7 +22,10 @@ package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.rpctypehelper; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; + import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PaginationOutputG; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.PaginationBuilder; import org.opendaylight.yangtools.yang.common.Uint32; @@ -43,8 +46,11 @@ public class QueryResult { pagination = x.build(); } + public Set getResultSet() { + return new HashSet<>(this.result); + } public List getResult() { - return result; + return this.result; } public PaginationOutputG getPagination() { diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBMapper.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBMapper.java index 19323b9f7..1c24636db 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBMapper.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBMapper.java @@ -33,6 +33,8 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; + import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.filters.DBKeyValuePair; import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapper; import org.onap.ccsdk.features.sdnr.wt.yang.mapper.YangToolsMapperHelper; @@ -40,7 +42,6 @@ import org.onap.ccsdk.features.sdnr.wt.yang.mapper.mapperextensions.YangToolsBui import org.onap.ccsdk.features.sdnr.wt.yang.mapper.mapperextensions.YangToolsDeserializerModifier; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity; -import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.Enumeration; import org.opendaylight.yangtools.yang.common.Uint16; @@ -223,7 +224,7 @@ public class SqlDBMapper { String type = mariaDBTypeMap.getOrDefault(valueType, null); if (type == null) { if (implementsInterface(valueType, DataObject.class) || implementsInterface(valueType, List.class) - || implementsInterface(valueType, Map.class)) { + || implementsInterface(valueType, Map.class) || implementsInterface(valueType, Set.class)) { return "JSON"; } if (implementsInterface(valueType, Enumeration.class)) { @@ -352,13 +353,13 @@ public class SqlDBMapper { } @SuppressWarnings("unchecked") - public static List read(ResultSet data, Class clazz, String column) + public static List read(ResultSet data, Class clazz, String column) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, SQLException, InstantiationException, SecurityException, NoSuchMethodException, JsonProcessingException { if(data==null) { return Arrays.asList(); } - Builder builder = findPOJOBuilder(clazz); + S builder = findPOJOBuilder(clazz); if(builder==null && column==null) { throw new InstantiationException("unable to find builder for class "+clazz.getName()); } @@ -374,7 +375,7 @@ public class SqlDBMapper { m.setAccessible(true); m.invoke(builder, getValueOrDefault(data, col, argType, null)); } - list.add(builder.build()); + list.add(callBuild(builder)); } else { Object value = getValueOrDefault(data, column, clazz, null); if (value != null) { @@ -386,7 +387,13 @@ public class SqlDBMapper { } @SuppressWarnings("unchecked") - private static Builder findPOJOBuilder(Class ac) throws InstantiationException, IllegalAccessException, + private static T callBuild(S builder) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { + Method method = builder.getClass().getMethod("build"); + return (T) method.invoke(builder); + } + + @SuppressWarnings("unchecked") + private static S findPOJOBuilder(Class ac) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchMethodException { try { String builder = null; @@ -400,8 +407,8 @@ public class SqlDBMapper { } if (builder != null) { Class innerBuilder = YangToolsMapperHelper.findClass(builder); - Class> builderClass = (Class>) innerBuilder; - return builderClass.getDeclaredConstructor().newInstance(); + //Class> builderClass = (Class>) innerBuilder; + return (S) innerBuilder.getDeclaredConstructor().newInstance(); } } catch (ClassNotFoundException e) { diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBStatusReader.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBStatusReader.java index b0b169d18..75d8c9ad2 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBStatusReader.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/database/SqlDBStatusReader.java @@ -24,11 +24,16 @@ package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arrays; +import java.util.Map; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.SqlDBClient; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.data.rpctypehelper.QueryResult; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.SqlQuery; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionLogStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.FilterKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.status.output.Data; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.status.output.DataBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.status.entity.FaultsBuilder; @@ -49,8 +54,8 @@ public class SqlDBStatusReader { this.controllerId = controllerId; } - public QueryResult getDataStatus() { - String selectQuery = createCountQuery("severity", Entity.Faultcurrent, this.controllerId); + public QueryResult getDataStatus(EntityInput input) { + String selectQuery = createCountQuery("severity", Entity.Faultcurrent, this.controllerId, input); long criticalCount = 0; long majorCount = 0; long minorCount = 0; @@ -81,7 +86,7 @@ public class SqlDBStatusReader { DataBuilder builder = new DataBuilder().setFaults( new FaultsBuilder().setCriticals(Uint32.valueOf(criticalCount)).setMajors(Uint32.valueOf(majorCount)) .setMinors(Uint32.valueOf(minorCount)).setWarnings(Uint32.valueOf(warningCount)).build()); - selectQuery = createCountQuery("status", Entity.NetworkelementConnection, this.controllerId); + selectQuery = createCountQuery("status", Entity.NetworkelementConnection, this.controllerId, input); NetworkElementConnectionsBuilder neBuilder = new NetworkElementConnectionsBuilder(); String state; long connectedCount = 0, connectingCount = 0, disconnectedCount = 0, mountedCount = 0, unableToConnectCount = 0, @@ -123,10 +128,11 @@ public class SqlDBStatusReader { return new QueryResult(Arrays.asList(builder.build()), 1, 1, 1); } - private static String createCountQuery(String key, Entity e, String controllerId) { + private static String createCountQuery(String key, Entity e, String controllerId, EntityInput input) { + Map filter = input != null ? input.getFilter() : null; return String.format("SELECT `%s`, COUNT(`%s`) " + "FROM `%s` " + "%s " + "GROUP BY `%s`;", key, key, e.getName(), - controllerId != null ? String.format("WHERE `%s`='%s'", SqlDBMapper.ODLID_DBCOL, controllerId) : "", + SqlQuery.getWhereExpression(filter!=null?filter.values():null, controllerId), key); } diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SelectQuery.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SelectQuery.java index 6403a5c1d..a4df26bae 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SelectQuery.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SelectQuery.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import org.eclipse.jdt.annotation.Nullable; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBMapper; @@ -114,7 +115,7 @@ public class SelectQuery implements SqlQuery { private static Filter cleanFilter(Filter filter) { final String sFilter = filter.getFiltervalue(); - final List sFilters = filter.getFiltervalues(); + final Set sFilters = filter.getFiltervalues(); //if only single filter value is set if (sFilter != null && (sFilters == null || sFilter.isEmpty())) { return "*".equals(filter.getFiltervalue()) ? null : filter; @@ -128,7 +129,7 @@ public class SelectQuery implements SqlQuery { } ; return new FilterBuilder().setProperty(filter.getProperty()).setFiltervalue(filter.getFiltervalue()) .setFiltervalues( - filter.getFiltervalues().stream().filter(e -> !"*".equals(e)).collect(Collectors.toList())) + filter.getFiltervalues().stream().filter(e -> !"*".equals(e)).collect(Collectors.toSet())) .build(); } } diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SqlQuery.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SqlQuery.java index 3e26d0935..c954faadb 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SqlQuery.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/SqlQuery.java @@ -24,18 +24,22 @@ package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Set; import java.util.TimeZone; import java.util.stream.Collectors; import org.eclipse.jdt.annotation.Nullable; import org.onap.ccsdk.features.sdnr.wt.common.database.data.DbFilter; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.database.SqlDBMapper; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.filters.DBFilterKeyValuePair; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.filters.RangeSqlDBFilter; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.filters.RegexSqlDBFilter; import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.NetconfTimeStamp; import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.NetconfTimeStampImpl; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.entity.input.Filter; +import io.netty.util.internal.StringUtil; public interface SqlQuery { @@ -50,18 +54,25 @@ public interface SqlQuery { static final boolean DEFAULT_IGNORE_CONTROLLERID = false; static final boolean DEFAULT_IGNORE_ID_FIELD = false; - public static String getWhereExpression(List filters) { - if (filters == null) { + public static String getWhereExpression(Collection filters) { + return getWhereExpression(filters, null); + } + public static String getWhereExpression(Collection filters, String controllerId) { + if (filters == null && controllerId == null) { return ""; } StringBuilder sb = new StringBuilder(); - filters = filters.stream().filter(e -> !"*".equals(e.getFiltervalue())).collect(Collectors.toList()); - if (!filters.isEmpty()) { - - sb.append(" WHERE (" + getFilterExpression(filters.get(0)) + ")"); - for (int i = 1; i < filters.size(); i++) { - sb.append(" AND (" + getFilterExpression(filters.get(i)) + ")"); - } + List filters2 = + filters != null + ? filters.stream().filter(e -> !"*".equals(e.getFiltervalue())).map(e -> getFilterExpression(e)) + .collect(Collectors.toList()) + : new ArrayList<>(); + if(controllerId!=null) { + filters2.add(getFilterExpression(SqlDBMapper.ODLID_DBCOL, controllerId)); + } + if (!filters2.isEmpty() ) { + sb.append(" WHERE "); + sb.append(StringUtil.join(" AND ", filters2)); } return sb.toString(); } @@ -107,7 +118,7 @@ public interface SqlQuery { return new DBFilterKeyValuePair(property, value).getFilterExpression(); } - static List collectValues(String filtervalue, List filtervalues) { + static List collectValues(String filtervalue, Set filtervalues) { if (filtervalues == null) { return Arrays.asList(filtervalue); } diff --git a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/filters/RegexSqlDBFilter.java b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/filters/RegexSqlDBFilter.java index 4ef1b9a55..65e0c54e4 100644 --- a/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/filters/RegexSqlDBFilter.java +++ b/sdnr/wt/data-provider/dblib/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/sqldb/query/filters/RegexSqlDBFilter.java @@ -21,7 +21,7 @@ */ package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.filters; -public class RegexSqlDBFilter extends DBKeyValuePair implements SqlDBFilter{ +public class RegexSqlDBFilter extends DBKeyValuePair implements SqlDBFilter { public RegexSqlDBFilter(String key, String value) { @@ -32,4 +32,11 @@ public class RegexSqlDBFilter extends DBKeyValuePair implements SqlDBFil public String getFilterExpression() { return String.format("`%s` RLIKE '%s'", this.getKey(), this.getValue()); } + + @Override + public String getValue() { + String value = super.getValue(); + return value != null ? value.replace("*", ".*") : null; + } } + diff --git a/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestMariaDataProvider.java b/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestMariaDataProvider.java index c9cf27c68..34c4d6fe8 100644 --- a/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestMariaDataProvider.java +++ b/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestMariaDataProvider.java @@ -183,7 +183,8 @@ public class TestMariaDataProvider { assertEquals(2, faultCurrents.getData().size()); ReadStatusOutputBuilder status = null; try { - status = dbProvider.readStatus(); + EntityInput input=null; + status = dbProvider.readStatus(input); } catch (IOException e) { e.printStackTrace(); fail("failed to read status"); @@ -567,7 +568,8 @@ public class TestMariaDataProvider { ReadStatusOutputBuilder status = null; try { - status = dbProvider.readStatus(); + EntityInput input=null; + status = dbProvider.readStatus(input); } catch (IOException e) { e.printStackTrace(); fail("failed to read status"); diff --git a/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestQuerySyntax.java b/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestQuerySyntax.java index 576a3825c..7dd2464f9 100644 --- a/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestQuerySyntax.java +++ b/sdnr/wt/data-provider/dblib/src/test/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/dblib/test/TestQuerySyntax.java @@ -1,5 +1,4 @@ -/* - * ============LICENSE_START======================================================= +/* ============LICENSE_START======================================================= * ONAP : ccsdk features * ================================================================================ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. @@ -27,6 +26,8 @@ import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.Set; + import org.junit.Test; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.CountQuery; import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.sqldb.query.SelectQuery; @@ -169,7 +170,7 @@ public class TestQuerySyntax { public void testSelectForFilterValues() { EntityInput input = new ReadGuiCutThroughEntryInputBuilder() .setFilter(YangToolsMapperHelper.toMap(Arrays.asList( - new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("das", "das2")).build()))) + new FilterBuilder().setProperty("id").setFiltervalues(Set.of("das", "das2")).build()))) .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build()) .build(); SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID); @@ -190,7 +191,7 @@ public class TestQuerySyntax { public void testSelectForFilterValues3() { EntityInput input = new ReadGuiCutThroughEntryInputBuilder() .setFilter(YangToolsMapperHelper.toMap(Arrays.asList( - new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("*","abc")).build()))) + new FilterBuilder().setProperty("id").setFiltervalues(Set.of("*","abc")).build()))) .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build()) .build(); SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID); @@ -201,8 +202,8 @@ public class TestQuerySyntax { public void testSelectForFilterValues4() { EntityInput input = new ReadGuiCutThroughEntryInputBuilder() .setFilter(YangToolsMapperHelper.toMap(Arrays.asList( - new FilterBuilder().setProperty("id").setFiltervalues(Arrays.asList("abc")).build(), - new FilterBuilder().setProperty("node-id").setFiltervalues(Arrays.asList("*")).build()))) + new FilterBuilder().setProperty("id").setFiltervalues(Set.of("abc")).build(), + new FilterBuilder().setProperty("node-id").setFiltervalues(Set.of("*")).build()))) .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build()) .build(); SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID); @@ -210,6 +211,20 @@ public class TestQuerySyntax { assertFalse(query.toSql().contains("RLIKE")); } @Test + public void testSelectForFilterValues5() { + EntityInput input = new ReadGuiCutThroughEntryInputBuilder() + .setFilter(YangToolsMapperHelper.toMap(Arrays.asList( + new FilterBuilder().setProperty("id").setFiltervalues(Set.of("abc")).build(), + new FilterBuilder().setProperty("node-id").setFiltervalues(Set.of("*ran*")).build()))) + .setPagination(new PaginationBuilder().setSize(Uint32.valueOf(20)).setPage(Uint64.valueOf(1)).build()) + .build(); + SelectQuery query = new SelectQuery(TABLENAME1, input, CONTROLLERID); + System.out.println(query.toSql()); + assertTrue(query.toSql().contains("RLIKE")); + assertTrue(query.toSql().contains(".*")); + + } + @Test public void testCount() { CountQuery query = new CountQuery(Entity.Eventlog, TestMariaDataProvider.createInput(1, 20)); String sQuery = query.toSql(); -- cgit 1.2.3-korg