@Override public Change valueOf(DbCleanCommand cleanCommand) { MutableCollection<Schema> schemas = physicalSchemaToSchemaMap.get(cleanCommand.getPhysicalSchema()); if (cleanCommand.getObjectType().isRerunnable()) { ChangeRerunnable change = new ChangeRerunnable(cleanCommand.getObjectType() , schemas.getFirst().getName() , cleanCommand.getObjectName() , "hash" , "n/a" ); return change; } else { ChangeIncremental dbChangeIncremental = new ChangeIncremental(cleanCommand.getObjectType() , schemas.getFirst().getName() , cleanCommand.getObjectName() , "change" + this.changeIndex++ , 0 , "hash" , cleanCommand.getSqlStatement() ); dbChangeIncremental.setDrop(true); dbChangeIncremental.setManuallyCodedDrop(cleanCommand.getObjectType().getName().equals(ChangeType.FOREIGN_KEY_STR)); dbChangeIncremental.setForceDropForEnvCleaning(true); return dbChangeIncremental; } } });
@Override public Change valueOf(DbCleanCommand cleanCommand) { MutableCollection<Schema> schemas = physicalSchemaToSchemaMap.get(cleanCommand.getPhysicalSchema()); if (cleanCommand.getObjectType().isRerunnable()) { ChangeRerunnable change = new ChangeRerunnable(cleanCommand.getObjectType() , schemas.getFirst().getName() , cleanCommand.getObjectName() , "hash" , "n/a" ); return change; } else { ChangeIncremental dbChangeIncremental = new ChangeIncremental(cleanCommand.getObjectType() , schemas.getFirst().getName() , cleanCommand.getObjectName() , "change" + this.changeIndex++ , 0 , "hash" , cleanCommand.getSqlStatement() ); dbChangeIncremental.setDrop(true); dbChangeIncremental.setManuallyCodedDrop(cleanCommand.getObjectType().getName().equals(ChangeType.FOREIGN_KEY_STR)); dbChangeIncremental.setForceDropForEnvCleaning(true); return dbChangeIncremental; } } });
private void testTableDrops(boolean forceDrop) { Change tabC1Dep = new ChangeIncremental(tableChangeType, "schema", "tabC", "chng1", 0, "tabCExistingToBeDropped", CONTENT); Change tabC1Src = new ChangeIncremental(tableChangeType, "schema", "tabC", tabC1Dep.getChangeName(), 0, "tabCExistingToBeDropped", CONTENT); Change tabC2Src = new ChangeIncremental(tableChangeType, "schema", "tabC", "chng2", 1, "tabCExistingToBeDropped", CONTENT); Change tabC3Src = new ChangeIncremental(tableChangeType, "schema", "tabC", "chng3", 2, "tabCExistingToBeDropped", CONTENT).withDrop(true).withKeepIncrementalOrder(true); Change tabD1Src = new ChangeIncremental(tableChangeType, "schema", "tabD", "cdrop1", 0, "tabDNewTableIsDropped", CONTENT); ChangeIncremental tabD2Src = new ChangeIncremental(tableChangeType, "schema", "tabD", "cdrop2", 1, "tabDNewTableIsDropped", CONTENT).withDrop(true).withKeepIncrementalOrder(true); tabD2Src.setForceDropForEnvCleaning(forceDrop); ListIterable<ChangeCommand> changeset = cmdCalc.calculateCommands(tableChangeType, Lists.mutable.<ChangePair>of( new ChangePair(tabC1Src, tabC1Dep) , new ChangePair(tabC2Src, null) , new ChangePair(tabC3Src, null) , new ChangePair(tabD1Src, null) , new ChangePair(tabD2Src, null) ), unusedChangesArg, false); assertEquals(4, changeset.size()); Verify.assertAnySatisfy(changeset, assertValue(DeployChangeCommand.class, tabC2Src)); Verify.assertAnySatisfy(changeset, assertValue(DropObjectChangeCommand.class, tabC3Src)); if (forceDrop) { // if forceDrop, then ensure that the drops are actually executed Verify.assertAnySatisfy(changeset, assertValue(DeployChangeCommand.class, tabD1Src)); Verify.assertAnySatisfy(changeset, assertValue(DropObjectChangeCommand.class, tabD2Src)); } else { // as tabD was never previously deployed, we should not try to deploy it again Verify.assertAnySatisfy(changeset, assertValue(AlreadyDroppedTableWarning.class, tabD1Src)); Verify.assertAnySatisfy(changeset, assertValue(AlreadyDroppedTableWarning.class, tabD2Src)); } }