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 / git-pull.gradle
Created June 7, 2013 05:22
Batch pull on all git-repositories found in the current folder
buildscript {
repositories { mavenCentral() }
dependencies { classpath 'org.ajoberstar:gradle-git:0.5.0' }
}
import org.ajoberstar.gradle.git.tasks.*
def onEachGitFolder(File folder, Closure closure) {
File gitServiceFolder = new File(folder, ".git")
if(gitServiceFolder.exists() && gitServiceFolder.isDirectory())
@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 / TestLogConfig.groovy
Last active December 19, 2015 15:29
"Manual" configuration of multiple logback encoders and appenders.
package testpackage
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import ch.qos.logback.core.rolling.RollingFileAppender
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy
@akhikhl
akhikhl / MyBirthday.java
Created July 12, 2013 08:47
My birthday!
class Main {
public void main(String[] args) {
Person p = new Person("Andrey", "Hihlovskiy", "12.07.1969");
boolean hasBirthDayToday = p.hasBirthDay(new Date());
if(hasBirthDayToday)
p.say("Friends", "Hey, guys, have a cake, it's my birthday!")
while(isWorkingHours()) {
p.work();
p.drink(DRINK.COFFEE, STRENGTH.EXTREME, 0.2);
@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)
@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 / 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 / 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 / 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 / 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>();