@Override public ObjectTypeAndNamePredicateBuilder getObjectExclusionPredicateBuilder() { return new ObjectTypeAndNamePredicateBuilder(ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE); }
/** * Returns a new builder instance that combines the filter parameters from the current instances and the parameters * from the other input builder. The existing instance remains unchanged. */ public ObjectTypeAndNamePredicateBuilder add(ObjectTypeAndNamePredicateBuilder other) { if (other == null) { return this; } if (!Objects.equals(this.filterType, other.filterType)) { throw new IllegalArgumentException("Filter types must match if we want to combine the builders; this: " + filterType + "; other: " + other.filterType); } return add(other.objectNamesByType); }
@Override public Predicate<? super ChecksumEntry> valueOf(Schema schema) { return schema.getObjectExclusionPredicateBuilder().build(ChecksumEntry.TO_OBJECT_TYPE, ChecksumEntry.TO_NAME1); } });
.add(coreTablesToExclude.toImmutable()); if (excludeObjects != null) { objectExclusionPredicateBuilder = objectExclusionPredicateBuilder.add(ObjectTypeAndNamePredicateBuilder.parse(excludeObjects, ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE)); final Predicates<? super RevEngDestination> objectExclusionPredicate = objectExclusionPredicateBuilder.build( new Function<RevEngDestination, String>() { @Override
private Predicate<? super ChecksumEntry> getPlatformInclusionPredicate(DbEnvironment env) { // 1) exclude those tables that are excluded by default from source code, e.g. explain tables or others that users configure ImmutableSet<Predicate<? super ChecksumEntry>> schemaObjectNamePredicates = env.getSchemas().collect(new Function<Schema, Predicate<? super ChecksumEntry>>() { @Override public Predicate<? super ChecksumEntry> valueOf(Schema schema) { return schema.getObjectExclusionPredicateBuilder().build(ChecksumEntry.TO_OBJECT_TYPE, ChecksumEntry.TO_NAME1); } }); // 2) exclude the audit tables MutableMultimap<String, String> tablesToExclude = Multimaps.mutable.set.empty(); tablesToExclude.putAll(ChangeType.TABLE_STR, Sets.immutable.with( env.getPlatform().convertDbObjectName().valueOf(getArtifactDeployerDao().getAuditContainerName()), env.getPlatform().convertDbObjectName().valueOf(dbChecksumManager.getChecksumContainerName()), env.getPlatform().convertDbObjectName().valueOf(getDeployExecutionDao().getExecutionContainerName()), env.getPlatform().convertDbObjectName().valueOf(getDeployExecutionDao().getExecutionAttributeContainerName()) )); ObjectTypeAndNamePredicateBuilder auditTablePredicateBuilder = new ObjectTypeAndNamePredicateBuilder(tablesToExclude.toImmutable(), ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE); Predicates<? super ChecksumEntry> auditTablePredicate = auditTablePredicateBuilder.build(ChecksumEntry.TO_OBJECT_TYPE, ChecksumEntry.TO_NAME1); return auditTablePredicate.and(schemaObjectNamePredicates); }
@Test public void testStringParsingWithExclusionDefault() { ObjectTypeAndNamePredicateBuilder parse = ObjectTypeAndNamePredicateBuilder.parse("TABLE~tab1,tab2;VIEW~view1", ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE); Predicates<? super Pair<String, String>> predicate = parse.build(Functions.<String>firstOfPair(), (Function<Pair<String, String>, String>) (Function) Functions.<String>secondOfPair()); assertTrue(predicate.accept(Tuples.pair("OTHER", "otherInclude"))); assertFalse(predicate.accept(Tuples.pair("TABLE", "tab1"))); assertFalse(predicate.accept(Tuples.pair("TABLE", "tab2"))); assertTrue(predicate.accept(Tuples.pair("TABLE", "tabNo"))); assertFalse(predicate.accept(Tuples.pair("VIEW", "view1"))); assertTrue(predicate.accept(Tuples.pair("VIEW", "viewInclude"))); } }
assertTrue(schema.getObjectExclusionPredicateBuilder().getObjectNamesByType().isEmpty()); assertEquals("DEPLOY_TRACKER", env1.getPhysicalSchema("DEPLOY_TRACKER").getPhysicalName());
.add(coreTablesToExclude.toImmutable()); if (excludeObjects != null) { objectExclusionPredicateBuilder = objectExclusionPredicateBuilder.add(ObjectTypeAndNamePredicateBuilder.parse(excludeObjects, ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE)); final Predicates<? super RevEngDestination> objectExclusionPredicate = objectExclusionPredicateBuilder.build( new Function<RevEngDestination, String>() { @Override
private Predicate<? super ChecksumEntry> getPlatformInclusionPredicate(DbEnvironment env) { // 1) exclude those tables that are excluded by default from source code, e.g. explain tables or others that users configure ImmutableSet<Predicate<? super ChecksumEntry>> schemaObjectNamePredicates = env.getSchemas().collect(new Function<Schema, Predicate<? super ChecksumEntry>>() { @Override public Predicate<? super ChecksumEntry> valueOf(Schema schema) { return schema.getObjectExclusionPredicateBuilder().build(ChecksumEntry.TO_OBJECT_TYPE, ChecksumEntry.TO_NAME1); } }); // 2) exclude the audit tables MutableMultimap<String, String> tablesToExclude = Multimaps.mutable.set.empty(); tablesToExclude.putAll(ChangeType.TABLE_STR, Sets.immutable.with( env.getPlatform().convertDbObjectName().valueOf(getArtifactDeployerDao().getAuditContainerName()), env.getPlatform().convertDbObjectName().valueOf(dbChecksumManager.getChecksumContainerName()), env.getPlatform().convertDbObjectName().valueOf(getDeployExecutionDao().getExecutionContainerName()), env.getPlatform().convertDbObjectName().valueOf(getDeployExecutionDao().getExecutionAttributeContainerName()) )); ObjectTypeAndNamePredicateBuilder auditTablePredicateBuilder = new ObjectTypeAndNamePredicateBuilder(tablesToExclude.toImmutable(), ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE); Predicates<? super ChecksumEntry> auditTablePredicate = auditTablePredicateBuilder.build(ChecksumEntry.TO_OBJECT_TYPE, ChecksumEntry.TO_NAME1); return auditTablePredicate.and(schemaObjectNamePredicates); }
@Test public void testStringParsing() { ObjectTypeAndNamePredicateBuilder parse = ObjectTypeAndNamePredicateBuilder.parse("TABLE~tab1,tab2;-VIEW~view1", null); Predicates<? super Pair<String, String>> predicate = parse.build(Functions.<String>firstOfPair(), (Function<Pair<String, String>, String>) (Function) Functions.<String>secondOfPair()); assertTrue(predicate.accept(Tuples.pair("OTHER", "otherInclude"))); assertTrue(predicate.accept(Tuples.pair("TABLE", "tab1"))); assertTrue(predicate.accept(Tuples.pair("TABLE", "tab2"))); assertFalse(predicate.accept(Tuples.pair("TABLE", "tabNo"))); assertFalse(predicate.accept(Tuples.pair("VIEW", "view1"))); assertTrue(predicate.accept(Tuples.pair("VIEW", "viewInclude"))); }
expectedExclusions.putAll(ChangeType.VIEW_STR, Lists.immutable.with("view1Pat", "view2%Pat")); expectedExclusions.putAll(ChangeType.SP_STR, Lists.immutable.with("sp1", "sp2", "sp3", "sp4")); assertEquals(expectedExclusions, schema1.getObjectExclusionPredicateBuilder().getObjectNamesByType());
@Override public ObjectTypeAndNamePredicateBuilder getObjectExclusionPredicateBuilder() { return new ObjectTypeAndNamePredicateBuilder(ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE); }
/** * Returns a new builder instance that combines the filter parameters from the current instances and the parameters * from the other input builder. The existing instance remains unchanged. */ public ObjectTypeAndNamePredicateBuilder add(ObjectTypeAndNamePredicateBuilder other) { if (other == null) { return this; } if (!Objects.equals(this.filterType, other.filterType)) { throw new IllegalArgumentException("Filter types must match if we want to combine the builders; this: " + filterType + "; other: " + other.filterType); } return add(other.objectNamesByType); }
@Override public Predicate<? super ChecksumEntry> valueOf(Schema schema) { return schema.getObjectExclusionPredicateBuilder().build(ChecksumEntry.TO_OBJECT_TYPE, ChecksumEntry.TO_NAME1); } });
@Override public ObjectTypeAndNamePredicateBuilder getObjectExclusionPredicateBuilder() { return new ObjectTypeAndNamePredicateBuilder(ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE); }
@Override public ObjectTypeAndNamePredicateBuilder getObjectExclusionPredicateBuilder() { return super.getObjectExclusionPredicateBuilder().add(Multimaps.immutable.set.with( ChangeType.TABLE_STR, "rs_%", ChangeType.SP_STR, "rs_%" )); }
@Override public RichIterable<DbCleanCommand> valueOf(PhysicalSchema physicalSchema) { ImmutableList<DbCleanCommand> schemaDrops = getDropStatements(physicalSchema); MutableCollection<Schema> schemas = physicalSchemaToSchemaMap.get(physicalSchema); for (Schema schema : schemas) { schemaDrops = schemaDrops.select(schema.getObjectExclusionPredicateBuilder().build(new Function<DbCleanCommand, String>() { @Override public String valueOf(DbCleanCommand it) { return it.getObjectType().getName(); } }, DbCleanCommand.TO_OBJECT_NAME)); } return schemaDrops; } }).toList());
@Override public ObjectTypeAndNamePredicateBuilder getObjectExclusionPredicateBuilder() { return new ObjectTypeAndNamePredicateBuilder(ObjectTypeAndNamePredicateBuilder.FilterType.EXCLUDE); }
@Override public ObjectTypeAndNamePredicateBuilder getObjectExclusionPredicateBuilder() { return super.getObjectExclusionPredicateBuilder().add(Multimaps.immutable.set.with( ChangeType.TABLE_STR, "rs_%", ChangeType.SP_STR, "rs_%" )); }
@Override public RichIterable<DbCleanCommand> valueOf(PhysicalSchema physicalSchema) { ImmutableList<DbCleanCommand> schemaDrops = getDropStatements(physicalSchema); MutableCollection<Schema> schemas = physicalSchemaToSchemaMap.get(physicalSchema); for (Schema schema : schemas) { schemaDrops = schemaDrops.select(schema.getObjectExclusionPredicateBuilder().build(new Function<DbCleanCommand, String>() { @Override public String valueOf(DbCleanCommand it) { return it.getObjectType().getName(); } }, DbCleanCommand.TO_OBJECT_NAME)); } return schemaDrops; } }).toList());