Skip to content

Instantly share code, notes, and snippets.

@danveloper
danveloper / gormish.properties
Created November 7, 2012 05:43
External Properties File
datasource.url=jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000
datasource.username=sa
datasource.pooled=true
datasource.driverClassName=org.h2.Driver
datasource.username=sa
datasource.password=
datasource.dbCreate=create-drop
datasource.url=jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000
@danveloper
danveloper / build.gradle
Created December 13, 2012 16:38
Compel gradle to never cache -SNAPSHOT dependencies.
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
@danveloper
danveloper / dynamicmethods.groovy
Created December 20, 2012 16:32
Dynamic Method Parameters in Groovy
def bar(name) {
"bar: $name"
}
def foo(k, name = bar(k)) {
"$name"
}
assert foo("ha") == "bar: ha"
@danveloper
danveloper / RulesEngine.groovy
Created December 23, 2012 05:07
Rules engine interface for rules engine post
public interface RulesEngine {}
@danveloper
danveloper / Student.groovy
Created December 23, 2012 04:43
Example student entity for rules engine post
class Student {
enum DormHall {
Honors, Preferred, Normal
}
def firstName
def lastName
def gpa
// We only want dormHall to be assigned when it is deliberate, so throw an exception when
// it is accidentally assigned outside of our rules engine
@danveloper
danveloper / RulesEngineFactory.groovy
Created December 23, 2012 05:04
Rules engine factory example for rules engine post
class RulesEngineFactory<E extends RulesEngine> {
private final E engine
public RulesEngineFactory(final Class<E> c) {
this.engine = (E)c.newInstance()
this.engine.engine = this.engine
}
def getObject(final def obj) {
this.engine.obj = obj
this.engine
@danveloper
danveloper / EnrollmentRulesEngine.groovy
Created December 23, 2012 04:41
Example enrollment rules engine
class EnrollmentRulesEngine extends RulesEngineSupport<Student> implements RulesEngine {
def dormHallRule = { obj ->
if (obj.gpa >= 3.5) {
obj.@dormHall = Student.DormHall.Honors
} else if (obj.gpa >= 3.0) {
obj.@dormHall = Student.DormHall.Preferred
} else {
obj.@dormHall = Student.DormHall.Normal
}
}
@danveloper
danveloper / RulesEngineSupport.groovy
Created December 23, 2012 04:52
Rules engine support class for rules engine post
class RulesEngineSupport<E> {
RulesEngine engine
E obj
// Deduce the rule list for a given RulesEngine instance
def getRules() {
def rules = []
engine.class.declaredFields.each {
def field = engine."${it.name}"
if (!it.isSynthetic() && field instanceof Closure && it.name.endsWith("Rule")) {
@danveloper
danveloper / EnrollmentProcessor.groovy
Created December 23, 2012 05:42
Enrollment processor for rules engine post
class EnrollmentProcessor {
static def enrollmentRulesFactory = new RulesEngineFactory<EnrollmentRulesEngine>(EnrollmentRulesEngine)
def studentService
def annualDormHallAssignment() {
def students = Student.list(/* do some filtering maybe to make sure they are enrolling for this year,etc. */)
def errors = []
students.each { student ->
try {
def studentEnrollmentRulesEngine = enrollmentRulesFactory.getObject(student)
@danveloper
danveloper / FullExample.groovy
Last active December 10, 2015 01:48
Full example for rules engine post
/**
*
* Structure:
* + module: model
* - class: com.danveloper.model.Student
*
**/
class Student {
enum DormHall {
Honors, Preferred, Normal