diff --git a/src/site/apt/groovy.apt b/src/site/apt/polyglot.apt similarity index 50% rename from src/site/apt/groovy.apt rename to src/site/apt/polyglot.apt index 3f691f2..22132a8 100644 --- a/src/site/apt/groovy.apt +++ b/src/site/apt/polyglot.apt @@ -1,8 +1,10 @@ ----- - Groovy compatibility + Polyglot compatibility ----- -Isn't ANY Java library compatible with Groovy? +Groovy compatibility + +* Isn't ANY Java library compatible with Groovy? Yes, of course. You can use j8583 in Groovy just as you would use any other Java library. However, some j8583 classes have certain methods in them written specifically for usage within Groovy. @@ -33,3 +35,36 @@ def value = message[32]?.value to <<>> and <<>>, and the IsoType class has two <<>> methods, with and without length, which return IsoValue instances with the proper type and length. The variant that has a length parameter must be used with NUMERIC and ALPHA types, and the other types can use the variant without length. + +Scala compatibility + + In a similar fashion, you can use a shorter notation in Scala to set and get fields: + ++----- +message(32) = IsoType.LLVAR("Some value") +message(7) = IsoType.DATE10(new Date()) +message(41) = IsoType.ALPHA("Term", 16) +message(11) = IsoType.NUMERIC(123, 6) +val v1:String = message(32).getValue +val v2:String = message.getObjectValue(32) ++----- + + This is because IsoMessage also implements the <<>> and <<>> methods that work similarly to <<>> and <<>>. Also, IsoType now implements <<>> so that you can create IsoValues from IsoTypes. + +Builder Pattern + + In any language, you can use the builder pattern, since now the <<>> and <<>> methods return the message itself: + ++----- +message.setValue(4, amount, IsoType.AMOUNT, 12) + .setValue(7, new Date(), IsoType.DATE, 10) + .setValue(11, trace, IsoType.NUMERIC, 6); ++----- + + Of course it can be more succing in Groovy or Scala: + ++----- +message.setField(4, IsoType.AMOUNT(amount)) + .setField(7, IsoType.DATE(new Date())) + .setField(11, IsoType.NUMERIC(trace, 6)) ++----- diff --git a/src/site/es/apt/groovy.apt b/src/site/es/apt/groovy.apt deleted file mode 100644 index a0c4607..0000000 --- a/src/site/es/apt/groovy.apt +++ /dev/null @@ -1,36 +0,0 @@ - ----- - Compatibilidad con Groovy - ----- - -¿Qué no cualquier biblioteca de Java es compatible con Groovy? - - Por supuesto. Se puede utilizar j8583 en Groovy al igual que cualquier otra biblioteca de Java. Sin embargo, - algunas clases de j8583 tienen algunos métodos con el expreso propósito de ser utilizados desde Groovy. - -* Atajos de j8583 en Groovy - - En Java, se pueden manejar los valores de un IsoMessage en alguna de las siguientes formas: - -+----- -message.setValue(32, "Algun valor", IsoType.LLVAR, 0); -IsoValue isoValue = message.getField(32); -String value = (String)message.getObjectValue(32); -Object value2 = message.getField(32).getValue(); -+----- - - En Groovy se puede hacer lo mismo de esta forma: - -+----- -message[32] = IsoType.LLVAR("Algun valor") -message[7] = IsoType.DATE10(new Date()) -message[41] = IsoType.ALPHA("Term", 16) -message[11] = IsoType.NUMERIC(123, 6) -IsoValue isoValue = message[32] -def value = message[32]?.value -+----- - - Esto es posible gracias a que la clase IsoMessage implementa los métodos <<>> y <<>>, que - funcionan de manera similar a <<>> y <<>>; la clase IsoType tiene dos variantes del - método <<>>, una con longitud y otra sin longitud, los cuales devuelven instancias de IsoValue con - el valor y longitud apropiados. La variante con longitud debe ser utiliza para crear valores tipo - NUMERIC y ALPHA, mientras que los demás tipos pueden utilizar la variante sin longitud. diff --git a/src/site/es/apt/polyglot.apt b/src/site/es/apt/polyglot.apt new file mode 100644 index 0000000..1c2dcf4 --- /dev/null +++ b/src/site/es/apt/polyglot.apt @@ -0,0 +1,71 @@ + ----- + Compatibilidad Políglota + ----- + +Compatibilidad con Groovy + +* ¿Qué no cualquier biblioteca de Java es compatible con Groovy? + + Por supuesto. Se puede utilizar j8583 en Groovy al igual que cualquier otra biblioteca de Java. Sin embargo, + algunas clases de j8583 tienen algunos métodos con el expreso propósito de ser utilizados desde Groovy. + +* Atajos de j8583 en Groovy + + En Java, se pueden manejar los valores de un IsoMessage en alguna de las siguientes formas: + ++----- +message.setValue(32, "Algun valor", IsoType.LLVAR, 0); +IsoValue isoValue = message.getField(32); +String value = (String)message.getObjectValue(32); +Object value2 = message.getField(32).getValue(); ++----- + + En Groovy se puede hacer lo mismo de esta forma: + ++----- +message[32] = IsoType.LLVAR("Algun valor") +message[7] = IsoType.DATE10(new Date()) +message[41] = IsoType.ALPHA("Term", 16) +message[11] = IsoType.NUMERIC(123, 6) +IsoValue isoValue = message[32] +def value = message[32]?.value ++----- + + Esto es posible gracias a que la clase IsoMessage implementa los métodos <<>> y <<>>, que + funcionan de manera similar a <<>> y <<>>; la clase IsoType tiene dos variantes del + método <<>>, una con longitud y otra sin longitud, los cuales devuelven instancias de IsoValue con + el valor y longitud apropiados. La variante con longitud debe ser utiliza para crear valores tipo + NUMERIC y ALPHA, mientras que los demás tipos pueden utilizar la variante sin longitud. + +Compatibilidad con Scala + + De manera similar, se puede usar una notación más breve en Scala para fijar y obtener valores de un mensaje: + ++----- +message(32) = IsoType.LLVAR("Some value") +message(7) = IsoType.DATE10(new Date()) +message(41) = IsoType.ALPHA("Term", 16) +message(11) = IsoType.NUMERIC(123, 6) +val v1:String = message(32).getValue +val v2:String = message.getObjectValue(32) ++----- + + Esto es posible gracias a que IsoMessage también ya implementa los métodos <<>> y <<>>, que invocan internamente a <<>> y <<>>. Asimismo, IsoType implementa <<>> para que se puedan crear IsoValues a partir de IsoTypes. + +Patrón Constructor + + En cualquier lenguaje, se puede utilizar el patrón constructor, gracias a que ahora los métodos <<>> y <<>> devuelven el mensaje sobre el que se invocan, lo que permite encadenar varias llamadas: + ++----- +message.setValue(4, amount, IsoType.AMOUNT, 12) + .setValue(7, new Date(), IsoType.DATE, 10) + .setValue(11, trace, IsoType.NUMERIC, 6); ++----- + + Por supuesto, en Groovy y Scala puede ser más breve todavía: + ++----- +message.setField(4, IsoType.AMOUNT(amount)) + .setField(7, IsoType.DATE(new Date())) + .setField(11, IsoType.NUMERIC(trace, 6)) ++----- diff --git a/src/site/site.xml b/src/site/site.xml index c5063b1..df2c1f2 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -15,14 +15,14 @@ - + - + - + diff --git a/src/site/site_es.xml b/src/site/site_es.xml index 5edafa7..982d433 100644 --- a/src/site/site_es.xml +++ b/src/site/site_es.xml @@ -15,14 +15,14 @@ - + - + - +