Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ppazos/8b3e7a86a637e2124cb9ed6d8f912247 to your computer and use it in GitHub Desktop.
Save ppazos/8b3e7a86a637e2124cb9ed6d8f912247 to your computer and use it in GitHub Desktop.
Mirth Channels Code Generator Sample
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