|
15 | 15 | */
|
16 | 16 | package com.dqops.metadata.search;
|
17 | 17 |
|
18 |
| -import com.dqops.checks.CheckTarget; |
19 |
| -import com.dqops.checks.CheckTimeScale; |
20 |
| -import com.dqops.checks.CheckType; |
| 18 | +import com.dqops.checks.*; |
| 19 | +import com.dqops.checks.comparison.AbstractComparisonCheckCategorySpec; |
21 | 20 | import com.dqops.metadata.id.HierarchyId;
|
22 | 21 | import com.dqops.metadata.id.HierarchyIdModel;
|
| 22 | +import com.dqops.metadata.id.HierarchyNode; |
23 | 23 | import com.dqops.metadata.search.pattern.SearchPattern;
|
24 | 24 | import com.dqops.metadata.sources.ColumnTypeSnapshotSpec;
|
| 25 | +import com.dqops.metadata.sources.ConnectionSpec; |
| 26 | +import com.dqops.metadata.sources.PhysicalTableName; |
25 | 27 | import com.dqops.utils.docs.generators.SampleStringsRegistry;
|
26 | 28 | import com.dqops.utils.docs.generators.SampleValueFactory;
|
27 | 29 | import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
31 | 33 | import com.fasterxml.jackson.databind.annotation.JsonNaming;
|
32 | 34 | import io.swagger.annotations.ApiModel;
|
33 | 35 | import lombok.EqualsAndHashCode;
|
| 36 | +import org.apache.commons.lang3.ArrayUtils; |
34 | 37 | import org.apache.parquet.Strings;
|
35 | 38 |
|
36 |
| -import java.util.HashSet; |
37 |
| -import java.util.LinkedHashSet; |
38 |
| -import java.util.List; |
39 |
| -import java.util.Set; |
| 39 | +import java.util.*; |
40 | 40 | import java.util.stream.Collectors;
|
41 | 41 |
|
42 | 42 | /**
|
@@ -423,6 +423,42 @@ public CheckSearchFilters clone() {
|
423 | 423 | }
|
424 | 424 | }
|
425 | 425 |
|
| 426 | + /** |
| 427 | + * Creates a check search filter given an instance of a check inside a given connection. |
| 428 | + * @param connectionSpec Connection specification where the check is applied. |
| 429 | + * @param checkSpec Check specification instance, must be inside a user home and the connection that was given. |
| 430 | + * @return Check search filters with all filters that identify the check. |
| 431 | + */ |
| 432 | + public static CheckSearchFilters fromCheckSpecInstance(ConnectionSpec connectionSpec, AbstractCheckSpec<?,?,?,?> checkSpec) { |
| 433 | + HierarchyId checkHierarchyId = checkSpec.getHierarchyId(); |
| 434 | + HierarchyNode[] allNodesToCheck = checkHierarchyId.getNodesOnPath(connectionSpec); |
| 435 | + AbstractRootChecksContainerSpec rootChecksContainerSpec = HierarchyNode.findNodeOfType(allNodesToCheck, AbstractRootChecksContainerSpec.class); |
| 436 | + |
| 437 | + CheckSearchFilters checkSearchFilters = new CheckSearchFilters(); |
| 438 | + checkSearchFilters.setConnection(connectionSpec.getConnectionName()); |
| 439 | + PhysicalTableName physicalTableName = checkHierarchyId.getPhysicalTableName(); |
| 440 | + checkSearchFilters.setPhysicalTableName(physicalTableName); |
| 441 | + checkSearchFilters.setFullTableName(physicalTableName.toTableSearchFilter()); |
| 442 | + checkSearchFilters.setColumn(checkHierarchyId.getColumnName()); |
| 443 | + checkSearchFilters.setCheckCategory(checkSearchFilters.getCheckCategory()); |
| 444 | + checkSearchFilters.setCheckName(checkSpec.getCheckName()); |
| 445 | + checkSearchFilters.setCheckTarget(rootChecksContainerSpec.getCheckTarget()); |
| 446 | + checkSearchFilters.setCheckType(rootChecksContainerSpec.getCheckType()); |
| 447 | + checkSearchFilters.setTimeScale(rootChecksContainerSpec.getCheckTimeScale()); |
| 448 | + |
| 449 | + if (checkSpec.isTableComparisonCheck()) { |
| 450 | + AbstractComparisonCheckCategorySpec comparisonCheckCategorySpec = HierarchyNode.findNodeOfType(allNodesToCheck, AbstractComparisonCheckCategorySpec.class); |
| 451 | + checkSearchFilters.setTableComparisonName(comparisonCheckCategorySpec.getComparisonName()); |
| 452 | + } |
| 453 | + |
| 454 | + return checkSearchFilters; |
| 455 | + } |
| 456 | + |
| 457 | + /** |
| 458 | + * Create a check search filter from a table search filter object, copying shared attributes. |
| 459 | + * @param tableSearchFilters Source table search filter. |
| 460 | + * @return Check search filter. |
| 461 | + */ |
426 | 462 | public static CheckSearchFilters fromTableSearchFilters(TableSearchFilters tableSearchFilters) {
|
427 | 463 | return new CheckSearchFilters() {{
|
428 | 464 | setConnection(tableSearchFilters.getConnection());
|
|
0 commit comments