Created
June 16, 2017 07:43
-
-
Save ppazos/8b3e7a86a637e2124cb9ed6d8f912247 to your computer and use it in GitHub Desktop.
Mirth Channels Code Generator Sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Channel { | |
def id = UUID.randomUUID().toString() // java.util.UUID | |
def name | |
def enabled = true | |
def revision = 1 | |
def source | |
def destinations = [] | |
def preprocessing | |
def postprocessing | |
def deploy | |
def undeploy | |
def properties = [:] | |
def version = "3.4.1" | |
def source(transportName) | |
{ | |
this.source = new Source(transportName: transportName) | |
return this.source | |
} | |
} | |
class Source { | |
def name = "sourceConnector" | |
def properties = [:] | |
def transformer | |
def filter = [] | |
def transportName | |
def mode = "SOURCE" | |
def enabled = true | |
def waitForPrevious = true // not really used on source... | |
def inDataType(datatype) | |
{ | |
if (!this.transformer) this.transformer = new Transformer(inboundDataType: datatype) | |
else this.transformer.inboundDataType = datatype | |
return this | |
} | |
def outDataType(datatype) | |
{ | |
if (!this.transformer) this.transformer = new Transformer(outboundDataType: datatype) | |
else this.transformer.outboundDataType= datatype | |
return this | |
} | |
def filter() | |
{ | |
// TODO: adds a step | |
return this | |
} | |
def transformer() | |
{ | |
// TODO: adds a step | |
return this | |
} | |
} | |
class Destination { | |
def name = "Destination " // add 1, 2, 3 by default | |
def properties = [:] | |
def transformer | |
def responseTransformer | |
def filter | |
def transportName | |
def mode = "DESTINATION" | |
def enabled = true | |
def waitForPrevious = true | |
} | |
class Transformer { | |
def steps = [] | |
def inboundDataType | |
def outboundDataType | |
def inboundProperties = [:] | |
def outboundProperties = [:] | |
} | |
class Generator { | |
static def generate(channel) | |
{ | |
def writer = new StringWriter() | |
def xml = new groovy.xml.MarkupBuilder(writer) | |
xml.channel() { | |
id(channel.id) | |
sourceConnector(version: channel.version) { | |
name(channel.source.name) | |
transformer(version: channel.version) { | |
steps { | |
} | |
inboundDataType(channel.source.transformer.inboundDataType) | |
outboundDataType(channel.source.transformer.outboundDataType) | |
} | |
} | |
} | |
return writer.toString() | |
} | |
} | |
def channel = new Channel(version: "3.4.2") | |
channel.source("TCP Listener") | |
.inDataType("HL7V2") | |
.outDataType("HL7V2") | |
.filter() | |
.transformer() | |
// channel.destination ... | |
Generator.generate(channel) // export XML |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment