Groovy

¿Groovy o Scala?

class Vehiculo{
   int puertas
   String color
}

static main(args){
  def miVehiculo= new Vehiculo(puertas:4,color:"Rojo")
  println "no. de puertas: $miVehiculo.puertas"
  println "color: $miVehiculo.color"
}

class Vehiculo(val _puertasx:Int=2,val _colorx:String=null){

  private var _puertas:Int=_puertasx
  private var _color:String=_colorx
 
  def puertas = _puertas
  def puertas_= (value:Int):Unit = _puertas = value
 
  def color=_color
  def color_=(value:String):Unit=_color=value
 
}

object EjemploScala{

        def main(args: Array[String]): Unit = {
          val miVehiculo=new Vehiculo(4,"Verde")
          Console.println("no. puertas: "+miVehiculo.puertas)
          Console.println("color: "+miVehiculo.color)
        }
       
       
}

Link:

problema con griffon

Hola q tal comunidad estoy teniendo un problema algo extraño con griffon y trata en que no puedo enviar argumentos a los closures del controller desde la vista lo intente desde un actionperformed y tambien desde las actions que maneja este marco , sin embargo si funcionan sin tener argumentos , en los closures hago pruebas con un println it y obtengo null , por el momento tengo que recurrir a la referencia view.dato dentro del closure del controlador.
- es decir (controller.miclosure ) funciona.
- y controller.miclosure('cadena') funciona pero con un println it dentro del closure imprime null.

Clases internas en Groovy

Acabo de toparme con un problema en Groovy. Tristemente la solución que todo mundo da en foros es simplemente "no lo hagas, es mejor si haces [cualquier otra solución]"; pero, qué tal si lo que necesitaba era esto?

Bueno y ¿cuál es el problema? Es simple: el soporte en clases internas tiene problemas con atributos heredados en la clase externa. Tiene solución, y es sencilla, pero me parece una leaky abstraction y honestamente la encontré por pura suerte, buscando maneras de darle vuelta al asunto.

El problema se da bajo estas circunstancias:

//Una clase padre, normalita, con un atributo normalito
class Parent {
  String name
}
//Una subclase, normalita, con una clase interna
class External extends Parent {
  //Un atributo propio de esta clase
  String outer
  //Y esta es la clase interna
  class Internal {
    //También tiene un atributo propio
    String inner
    //Este método truena como ejote
    void boom() {
      //Esta línea se ejecuta bien, se despliega el atributo externo y el interno
      println "Outer is " + outer + ", inner is " + inner
      //Pero esta línea truena con un error macabro,

groovy y propiedades enlazadas

hola comunidad quise hacer mi primer blog y empeze por este tema ya que estoy jugando con groovy ya un tiempesito , bueno todos sabemos que java a traves de los javabeans cuenta con PropertyChangeListeners que notifica a todos los oyentes antes registrados con (addPropertyChangeListener) de los cambios de valor de algunas de sus propiedades a traves de firePropertyChanged aqui hay un ejemplo del javabeans que llamaremos modelo

import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;

public class Modelo{
    private String propiedad;

    PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public void addPropertyChangeListener(PropertyChangeListener l) {
        pcs.add(l);
    }

    public void removePropertyChangeListener(PropertyChangeListener l) {
        pcs.remove(l);
    }

    public String getProp() {
        return prop;
    }

    public void setProp(String propiedad) {
        pcs.firePropertyChanged("propiedad", this.propiedad, this.propiedad = propiedad);
    }
}

-las clases registradas a este modelo tienen que implementar la interfaz PropertyChangeListener con su metodo
 

Conociendo más a fondo el Blog hecho en Grails llamado Anelisse

Dejo esto por acá por si les interesa :D

En esta ocasión me he dado a la tarea de redactar esta
pequeña entrada para seguir dando a conocer mi proyecto iniciando desde el
primer post con lo mas general el cual pueden encontrar en “
Un Blog hecho en Grails? así es y se llama
Anelisse
” para los que no sepan de que se trata les recomiendo
seguir el enlace y después regresar.
Página principal de Anelisse

Ejemplo de j8583 con Groovy

Hola hoy vengo con un pequeño ejemplo de como usar la API j8583, estoy usando la versión 1.7.0 y el ejemplo esta desarrollado con Groovy (Version: 2.0.5 JVM: 1.7.0_09 Vendor: Oracle Corporation OS: Mac OS X).

En este ejemplo vamos a ver como formar una trama y luego como parsearla, soló para la petición de abono (0200) ya que es lo mismo para los otros movimientos.

La teoría esta en la pagina del proyecto o es más tenemos al autor en la comunidad para preguntas mas especificas ezamudio.

A continuación todo el código del ejemplo y la salida producida.

Configuración: conf/confJ8583.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE j8583-config PUBLIC "-//J8583//DTD CONFIG 1.0//EN"
  3.         "http://j8583.sourceforge.net/j8583.dtd">
  4. <j8583-config>
  5. <template type="0200">
  6.         <field num="3" type="NUMERIC" length="6">650000</field>
  7.         <field num="32" type="LLVAR">456</field>
  8.         <field num="35" type="LLVAR">4591700012340000=</field>

Una perspectiva del uso de tuplas en Groovy!

El uso de Tuplas en Groovy me parecía algo innecesario, ya que el lenguaje cuenta con listas muy agradables y un método que permite hacerlas inmutables.

def lista1 = ["Rodrigo", 30]
lista1.collect{ it }

def lista2 = ["Rodrigo", 30].asImmutable()
println(lista2.getClass())
lista2[0] = 'Rambo!'

/**
class java.util.Collections$UnmodifiableRandomAccessList
...
java.lang.UnsupportedOperationException
        at java.util.Collections$UnmodifiableList.set(Collections...
*/

Y porque hacer algo como lo anterior si Groovy cuenta con tuplas (groovy.lang.Tuple).

def tuple = new Tuple("Rodrigo", 30)
println(tuple)
java.util.Collections.reverse(tuple)

/**
[Rodrigo, 30]
...
java.lang.UnsupportedOperationException
        at java.util.AbstractList.set(AbstractList
*/

No se si sea mejor usar listas inmutables en lugar de tuplas, pero una queja es que no se puede hacer una tupla como lo haría con una lista ([...]), como lo siguiente.

def tuple = (“Rodrigo”, 30)

/** expecting ')', found ',' at ... */

Un Blog hecho en Grails? así es y se llama Anelisse

Hace ya un buen rato que no publico nada en este pequeño espacio que Java México me da, sin embargo hoy quisiera hacer de su conocimiento el avance de un proyecto personal que he tenido en mente durante ya, un par de años, desde que inicie con mi blog el cual de momento se encuentra abajo.
Cuando inicie con lo que sería mi blog, me di cuenta que aunque los ya conocidos sistemas de blog como wordpress(que use por mucho tiempo), joomla o drupal en este punto tienen miles de configuraciones y plugins para casi cualquier cosa, sin embargo por mas que busque nunca pude encontrar un sistema de blog hecho en Java o en algún lenguaje para la JVM, muchos de ustedes se preguntaran porque Java o en esté caso porque Grails? la respuesta es sencilla, siempre me ha gustado Java desde que inicie el mundo de la programación me gusto mucho y creo que ya es hora de que tenga también su propio sistema de blogueo que tiene desventajas frente a los demás, sí en especial conseguir el hosting para echarlo a andar, pero bueno la idea es que este ahí disponible para quien guste utilizarlo y porque no también modificarlo.

KataWordWrap

Como parte de mi pomodoro y recomendación de mi estimado amigo Alfred (@alfredochv) me di un poco de tiempo para hacer la kata WordWrap. Les comparto mi solución, se me ocurrió otra manera de hacerlo, pero por falta de tiempo no la he concretado, tal vez la haga otro día.

/*
Ejemplo con 4 columnas

You write a class called Wrapper
....|
You
writ
e a
clas
s
call
ed
Wrap
per
*/

class Wrapper{
    static wrap = { inputStr, colNum ->
        if(colNum <= 0 || inputStr.length() <= colNum){
            return inputStr
        }

        def outputString = ""
        def tempStr = inputStr[0..colNum-1]
        def inputStrLength = inputStr.length()-1
        def finPosTmp = 0
        def iniPosInputStr = 0
        def lastWhiteSpace = tempStr.lastIndexOf(' ')
       
        if(tempStr.endsWith(' ')){
            finPosTmp = tempStr.length() -1
            iniPosInputStr = colNum-1
        }else if(lastWhiteSpace > 0){
            finPosTmp = lastWhiteSpace
            iniPosInputStr = lastWhiteSpace + 1
        }else{
            finPosTmp = colNum-1

Como se puede Exportar datos de una BD a un exel

Tengo muy poco usando el lenguaje de Groovy y surgió la necesidad de importar los datos de una BD a un exel serviria mucho un ejemplo la vdd no tengo la menor idea de como hacerlo la BD se tiene pensado montarla en Mysql les estare muy agradecida de sus aportaciones. De antemano muchas gracias.

Distribuir contenido