diff --git a/src/nl/astraeus/database/Persister.java b/src/nl/astraeus/database/Persister.java index 9041042..1cb1339 100644 --- a/src/nl/astraeus/database/Persister.java +++ b/src/nl/astraeus/database/Persister.java @@ -91,11 +91,45 @@ } } - public static void execute(Runnable runnable) { + public abstract static class Executor { + + protected void insert(Object o) { + Persister.insert(o); + } + + protected void update(Object o) { + Persister.update(o); + } + + protected void delete(Object o) { + Persister.delete(o); + } + + protected T find(Class cls, long id) { + return Persister.find(cls, id); + } + + protected List selectFrom(Class cls, String query, Object ... params) { + return Persister.selectFrom(cls, query, params); + } + + protected List selectAll(Class cls) { + return Persister.selectAll(cls); + } + + protected static List selectWhere(Class cls, String query, Object ... params) { + return Persister.selectWhere(cls, query, params); + } + + public abstract void execute(); + + } + + public static void execute(Executor runnable) { try { begin(); - runnable.run(); + runnable.execute(); commit(); } finally { diff --git a/src/nl/astraeus/database/Persister.java b/src/nl/astraeus/database/Persister.java index 9041042..1cb1339 100644 --- a/src/nl/astraeus/database/Persister.java +++ b/src/nl/astraeus/database/Persister.java @@ -91,11 +91,45 @@ } } - public static void execute(Runnable runnable) { + public abstract static class Executor { + + protected void insert(Object o) { + Persister.insert(o); + } + + protected void update(Object o) { + Persister.update(o); + } + + protected void delete(Object o) { + Persister.delete(o); + } + + protected T find(Class cls, long id) { + return Persister.find(cls, id); + } + + protected List selectFrom(Class cls, String query, Object ... params) { + return Persister.selectFrom(cls, query, params); + } + + protected List selectAll(Class cls) { + return Persister.selectAll(cls); + } + + protected static List selectWhere(Class cls, String query, Object ... params) { + return Persister.selectWhere(cls, query, params); + } + + public abstract void execute(); + + } + + public static void execute(Executor runnable) { try { begin(); - runnable.run(); + runnable.execute(); commit(); } finally { diff --git a/test/nl/astraeus/database/TestInsert.java b/test/nl/astraeus/database/TestInsert.java index b597f07..93559ae 100644 --- a/test/nl/astraeus/database/TestInsert.java +++ b/test/nl/astraeus/database/TestInsert.java @@ -9,14 +9,15 @@ public class TestInsert { public static void main(String [] args) { - Persister.begin(); - - Persister.insert(new Person("Rien", 40, "Rozendael")); - Persister.insert(new Person("Jan", 32, "Straat")); - Persister.insert(new Person("Piet", 26, "Weg")); - Persister.insert(new Person("Klaas", 10, "Pad")); - - Persister.commit(); + Persister.execute(new Persister.Executor() { + @Override + public void execute() { + insert(new Person("Rien", 40, "Rozendael")); + insert(new Person("Jan", 32, "Straat")); + insert(new Person("Piet", 26, "Weg")); + insert(new Person("Klaas", 10, "Pad")); + } + }); } }