diff --git a/pom.xml b/pom.xml index 6294cb7..b7bfab8 100644 --- a/pom.xml +++ b/pom.xml @@ -86,9 +86,9 @@ - scm:git:git@github.com:liquibase/liquibase-oracle.git - scm:git:https://github.com/liquibase/liquibase-oracle.git - scm:git:git@github.com:liquibase/liquibase-oracle.git + scm:git:git@github.com:iszilagyigit/liquibase-oracle.git + scm:git:https://github.com/iszilagyigit/liquibase-oracle.git + scm:git:git@github.com:iszilagyigit/liquibase-oracle.git diff --git a/src/main/java/liquibase/ext/ora/createtrigger/CreateTriggerChange.java b/src/main/java/liquibase/ext/ora/createtrigger/CreateTriggerChange.java index f6ebcc0..2edd5a9 100644 --- a/src/main/java/liquibase/ext/ora/createtrigger/CreateTriggerChange.java +++ b/src/main/java/liquibase/ext/ora/createtrigger/CreateTriggerChange.java @@ -4,8 +4,10 @@ import liquibase.change.Change; import liquibase.change.ChangeMetaData; import liquibase.change.DatabaseChange; +import liquibase.change.DatabaseChangeProperty; import liquibase.database.Database; import liquibase.ext.ora.droptrigger.DropTriggerChange; +import liquibase.serializer.LiquibaseSerializable; import liquibase.statement.SqlStatement; @DatabaseChange(name="createTrigger", description = "Create Trigger", priority = ChangeMetaData.PRIORITY_DEFAULT) @@ -29,6 +31,8 @@ public class CreateTriggerChange extends AbstractChange { private String procedure; + private String procedureNode; + public CreateTriggerChange() { } @@ -153,7 +157,6 @@ public void setWhenCondition(String whenCondition) { this.whenCondition = whenCondition; } - public String getProcedure() { return procedure; } @@ -220,8 +223,17 @@ public SqlStatement[] generateStatements(Database database) { statement.setViewName(getViewName()); statement.setWhenCondition(getWhenCondition()); statement.setTableName(getTableName()); - statement.setProcedure(getProcedure()); + statement.setProcedure(getProcedureNode() != null ? getProcedureNode() : getProcedure()); return new SqlStatement[]{statement}; } + + @DatabaseChangeProperty(serializationType=LiquibaseSerializable.SerializationType.DIRECT_VALUE) + public String getProcedureNode() { + return procedureNode; + } + + public void setProcedureNode(String procedureNode) { + this.procedureNode = procedureNode; + } } diff --git a/src/test/java/liquibase/ext/ora/createtrigger/CreateTriggerTest.java b/src/test/java/liquibase/ext/ora/createtrigger/CreateTriggerTest.java index 194560b..637671d 100644 --- a/src/test/java/liquibase/ext/ora/createtrigger/CreateTriggerTest.java +++ b/src/test/java/liquibase/ext/ora/createtrigger/CreateTriggerTest.java @@ -55,6 +55,11 @@ public void getConfirmationMessage() { @Test public void generateStatement() { + final String triggerBodyExample = " DECLARE v_username varchar2(10);\r\n" + + " BEGIN\r\n" + + " SELECT pierwsza INTO v_username FROM TriggerTest;\r\n" + + " :new.created_by := v_username;\r\n" + + " END;\r\n"; CreateTriggerChange change = new CreateTriggerChange(); change.setSchemaName("SCHEMA_NAME"); @@ -63,7 +68,8 @@ public void generateStatement() { change.setTablespace("TABLESPACE_NAME"); change.setAfterBeforeInsteadOf("AFTER_BEFORE_INSTEADOF"); change.setNestedTableColumn("NESTED_TABLE_COLUMN"); - change.setProcedure("POCEDURE"); + change.setProcedureNode( triggerBodyExample); + change.setTriggerName("TRIGGER_NAME"); change.setViewName("VIEW_NAME"); change.setWhenCondition("WHEN_CONDITION"); @@ -88,7 +94,7 @@ public void generateStatement() { assertEquals("TABLESPACE_NAME", sqlStatement.getTablespace()); assertEquals("AFTER_BEFORE_INSTEADOF", sqlStatement.getAfterBeforeInsteadOf()); assertEquals("NESTED_TABLE_COLUMN", sqlStatement.getNestedTableColumn()); - assertEquals("POCEDURE", sqlStatement.getProcedure()); + assertEquals(triggerBodyExample, sqlStatement.getProcedure()); assertEquals("TRIGGER_NAME", sqlStatement.getTriggerName()); assertEquals("VIEW_NAME", sqlStatement.getViewName()); assertEquals("WHEN_CONDITION", sqlStatement.getWhenCondition());