Skip to content

Instantly share code, notes, and snippets.

View akhikhl's full-sized avatar

Andrey Hihlovskiy akhikhl

  • Apple GmbH
  • Berlin, Germany
View GitHub Profile
@akhikhl
akhikhl / jdom2_transform.groovy
Last active July 17, 2021 08:16
XML transformation with Groovy, JDOM2 and XPath
/*
* Copyright 2013 (c) Andrey Hihlovskiy
* License: MIT (http://opensource.org/licenses/MIT)
*/
@Grab('org.jdom:jdom2:2.0.5')
@Grab('jaxen:jaxen:1.1.4')
@GrabExclude('jdom:jdom')
import org.jdom2.*
@akhikhl
akhikhl / build.gradle
Created June 11, 2014 09:56
Simplest Gretty setup with Spring Boot
buildscript {
ext {
springBootVersion = '1.1.0.RELEASE'
}
repositories {
mavenLocal()
jcenter()
}
@akhikhl
akhikhl / sources_javadoc.gradle
Created June 20, 2013 16:14
gradle snippet: sources and javadoc jars for every subproject
/* Add this to the parent "build.gradle" to enable xyz-sources.jar and xyz-javadoc.jar generation
* for every java and groovy subproject of the given parent project.
* The script tolerates non-java subprojects.
*/
subprojects {
afterEvaluate {
if(tasks.findByName("classes")) {
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
@akhikhl
akhikhl / physical_ball_2d_graphics.groovy
Created December 31, 2013 16:53
2d graphics simulation of a ball in gravity field. Energy conservation law is respected.
import javax.swing.*;
import java.awt.Color;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
public class Ball extends JComponent {
@akhikhl
akhikhl / jetty.groovy
Created October 28, 2013 10:18
groovy script for starting jetty server against the specified folder
@Grab('javax.servlet:javax.servlet-api:3.0.1')
@Grab(group='org.eclipse.jetty', module='jetty-webapp', version='8.1.8.v20121106')
@Grab(group='org.eclipse.jetty', module='jetty-server', version='8.1.8.v20121106', transitive=false)
@Grab(group='org.eclipse.jetty', module='jetty-servlet', version='8.1.8.v20121106', transitive=false)
@GrabExclude('org.eclipse.jetty.orbit:javax.servlet')
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.servlet.*
import groovy.servlet.*
@akhikhl
akhikhl / sort_map_by_values.java
Created January 4, 2014 18:13
Sorting map by values. Tested in Processing IDE (www.processing.org).
import java.util.Comparator;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.List;
class FloatEntryComparator implements Comparator<Map.Entry> {
public int compare(Map.Entry e1, Map.Entry e2) {
return ((Float)e2.getValue()).intValue() - ((Float)e1.getValue()).intValue();
}
}
@akhikhl
akhikhl / sort_map_by_values.groovy
Created December 27, 2013 22:39
Sorting hashmap float -> float by values
import java.util.Map;
rand = new Random();
float random(float minX, float maxX) {
rand.nextFloat() * (maxX - minX) + minX
}
// Note the HashMap's "key" is a String and "value" is an Integer
HashMap<Float,Float> hm = new HashMap<Float,Float>();
@akhikhl
akhikhl / xslt_text_attr.groovy
Created December 27, 2013 12:06
XSLT transformation b -> bold, i -> italic, text -> normal
import javax.xml.transform.TransformerFactory
import javax.xml.transform.stream.StreamResult
import javax.xml.transform.stream.StreamSource
def input = '''<?xml version="1.0"?>
<p>This is <b>bold text</b>, <i>italic text</i> and normal text</p>
'''
def xslt = '''<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
@akhikhl
akhikhl / GroovySwitchAndClosures.groovy
Created September 4, 2013 10:32
switch statement and closure comprehension
def isGreaterThan(a, b) { a > b }
def isGreaterThan(b) {
return { a -> isGreaterThan(a, b) }
}
def isLessThan(a, b) { a < b }
def isLessThan(b) {
return { a -> isLessThan(a, b) }
@akhikhl
akhikhl / ParseRtf.groovy
Created July 14, 2013 07:48
A happier, groovier way to parse RTF: apache_tika + XmlSlurper
package org.akhikhl.test
import org.apache.tika.metadata.Metadata
import org.apache.tika.parser.rtf.RTFParser
class ParseRtf {
def parse(String rtfText) {
// not validating, not ns-aware
XmlSlurper slurper = new XmlSlurper(false, false)