Skip to content

Instantly share code, notes, and snippets.

View ivanarrizabalaga's full-sized avatar

Ivan Arrizabalaga Getino ivanarrizabalaga

  • Director of Engineering @ JOOR
  • Oviedo, Asturias, Spain
  • X @ivo_es
View GitHub Profile
@ivanarrizabalaga
ivanarrizabalaga / dynamic-basic-properties
Last active December 25, 2015 02:08
Groovy basic dynamic access to property via GString
Map data=[
one:"john",
two:"mary"
]
String entry="two"
println data."${entry}" //"mary"
@ivanarrizabalaga
ivanarrizabalaga / dynamic-nested-properties
Created October 9, 2013 11:44
Groovy: Dynamic access to nested properties via GString
Map data=[
one:[
two:"2222",
three:"333"
]
]
String nestedExpression="one.two"
String output=nestedExpression.tokenize('.').inject(data) {v, k -> v."$k"}
println output // "2222"
@ivanarrizabalaga
ivanarrizabalaga / enum-translation
Created October 28, 2013 12:39
Playing with enums in order to translate one value from one enum to the corresponding value in a different enum based on its ordinal.
enum CommunicationStateEnum {
DESIGN, APROBADA, EJECUTADA, EN_PROGRESO, FINALIZADA, CANCELADA
}
enum CampaignStateEnum {
DESIGN, APROBADA, EJECUTADA, EN_PROGRESO, FINALIZADA, CANCELADA
}
CommunicationStateEnum campaignState2ComunicationState(CampaignStateEnum campaignState){
if(!campaignState) return null
@ivanarrizabalaga
ivanarrizabalaga / replace-sql-database
Last active December 27, 2015 01:49
Replace all occurrences in a database
SELECT
concat('UPDATE ',
my_table_name,
' SET ',
my_column_name,
' = REPLACE(',
my_column_name,
', \'my_old_str\', \'my_new_str\')',
' WHERE ',
my_column_name,
@ivanarrizabalaga
ivanarrizabalaga / reorder-selection-in-list
Created November 7, 2013 11:18
Easy way to move a selection of items within a list up and down in Groovy
import java.util.Collections
//Input
def elements=['a','b','c','d','e']
def selectedIndices=[1,2,3]
boolean isMovingUp=false
println "Initial: ${elements}"
println "Selection: ${selectedIndices.collect{elements[it]}}"
println "Direction: ${isMovingUp?'<':'>'}"
@ivanarrizabalaga
ivanarrizabalaga / groovy-containsAny
Created November 18, 2013 10:36
Groovy snippet that adds a containsAny method to the String metaClass
//The kind of API I was looking for
String myInput="This string is FORBIDDEN"
myInput.containsAny(["FORBIDDEN","NOT_ALLOWED"]) //=>true
//Adding the method to String
String.metaClass.containsAny={notAllowedTerms->
notAllowedTerms?.inject(false,{found,term->found || delegate.contains(term)})
}
@ivanarrizabalaga
ivanarrizabalaga / groovy-append2list-warn
Created November 27, 2013 16:07
Appending elements to a groovy list brings a hidden problem inside due to overriden operators. output+=item output.add(item) Is not always the same.
def input=[1,[2,3],4]
def output=[]
//Warning!! Potential error
input.each{
output+=it
}
println output //=>[1,2,3,4]!!!
println output.size()//=>4
@ivanarrizabalaga
ivanarrizabalaga / griffon+swing+javafx
Last active December 31, 2015 20:48
After checking the source code of groovyx.javafx.SceneGraphBuilder. Mixing a griffon view + swing toolkit + javafx, the way I expected it to be=>ERROR
package testmixfx
import javafx.embed.swing.JFXPanel
import groovyx.javafx.GroovyFX
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import groovyx.javafx.SceneGraphBuilder;
@ivanarrizabalaga
ivanarrizabalaga / griffon+swing+javafx+platform
Created December 19, 2013 16:42
Mixing a griffon view + swing toolkit + javafx. It works, but you're not using a builder for the javafx nodes.
package testmixfx
import javafx.embed.swing.JFXPanel
import groovyx.javafx.GroovyFX
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import groovyx.javafx.SceneGraphBuilder;
@ivanarrizabalaga
ivanarrizabalaga / griffon+swing+javafx+platform+dsl
Created December 19, 2013 16:48
Mixing a griffon view + swing toolkit + javafx. It does not work, the nodes inside the SceneGraphBuilder are not being recognize as javafx nodes.
package testmixfx
import javafx.embed.swing.JFXPanel
import groovyx.javafx.GroovyFX
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import groovyx.javafx.SceneGraphBuilder;