Skip to content
This repository has been archived by the owner on Sep 4, 2021. It is now read-only.

Commit

Permalink
Version 1.3.0
Browse files Browse the repository at this point in the history
Post Initialization method for table object
  • Loading branch information
stephenwilliams committed Jul 6, 2015
1 parent 73cfe72 commit 10cf50a
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 1 deletion.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<name>SimpleSave</name>
<groupId>com.alta189</groupId>
<artifactId>simplesave</artifactId>
<version>1.2.0</version>
<version>1.3.0</version>
<packaging>jar</packaging>

<developers>
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/alta189/simplesave/PostInitialize.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.alta189.simplesave;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PostInitialize {
}
4 changes: 4 additions & 0 deletions src/main/java/com/alta189/simplesave/h2/H2Database.java
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,9 @@ public <T> QueryResult<T> execute(Query<T> query) {
}
ResultSet set = statement.executeQuery();
QueryResult<T> result = new QueryResult<T>(ResultSetUtils.buildResultList(table, (Class<T>) table.getTableClass(), set));
for (Object object : result.find()) {
table.executePostInitialize(object);
}
set.close();
return result;
default:
Expand Down Expand Up @@ -386,6 +389,7 @@ public void save(Class<?> tableClass, Object o) {
}
}
}
table.executePostInitialize(o);
} catch (SQLException e) {
throw new RuntimeException(e);
}
Expand Down
29 changes: 29 additions & 0 deletions src/main/java/com/alta189/simplesave/internal/TableFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@
*/
package com.alta189.simplesave.internal;

import com.alta189.simplesave.PostInitialize;
import com.alta189.simplesave.Table;
import com.alta189.simplesave.exceptions.FieldRegistrationException;
import com.alta189.simplesave.exceptions.TableRegistrationException;
import com.alta189.simplesave.internal.reflection.EmptyInjector;
import com.alta189.simplesave.internal.reflection.Injector;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.regex.Pattern;

public class TableFactory {
Expand Down Expand Up @@ -65,6 +68,32 @@ public static TableRegistration buildTable(Class<?> clazz) throws TableRegistrat
throw new TableRegistrationException(e);
}

for (Method method : clazz.getDeclaredMethods()) {
PostInitialize postInitialize = method.getAnnotation(PostInitialize.class);
if (postInitialize == null) {
continue;
}

if (!Modifier.isPublic(method.getModifiers())) {
throw new TableRegistrationException("Class '" + clazz.getCanonicalName() + "' @PostInitialize method has to be public");
}

if (Modifier.isStatic(method.getModifiers())) {
throw new TableRegistrationException("Class '" + clazz.getCanonicalName() + "' @PostInitialize method cannot be static");
}

if (!method.getReturnType().equals(Void.TYPE)) {
throw new TableRegistrationException("Class '" + clazz.getCanonicalName() + "' @PostInitialize method has to return void");
}

if (method.getParameterCount() != 0) {
throw new TableRegistrationException("Class '" + clazz.getCanonicalName() + "' @PostInitialize should have no parameters");
}

tableRegistration.setPostInitialize(method);
break;
}

return tableRegistration;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
*/
package com.alta189.simplesave.internal;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
Expand All @@ -25,6 +27,7 @@ public class TableRegistration {
private final Class<?> clazz;
private final Map<String, FieldRegistration> fields = new HashMap<String, FieldRegistration>();
private IdRegistration id;
private Method postInitialize;

public TableRegistration(String name, Class<?> clazz) {
this.name = name;
Expand Down Expand Up @@ -60,4 +63,26 @@ public void addFields(Collection<FieldRegistration> fields) {
public void addField(String name, FieldRegistration field) {
fields.put(name.toLowerCase(), field);
}

public Method getPostInitialize() {
return postInitialize;
}

public void setPostInitialize(Method postInitialize) {
this.postInitialize = postInitialize;
}

public void executePostInitialize(Object instance) {
if (postInitialize == null) {
return;
}

try {
postInitialize.invoke(instance);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/alta189/simplesave/mysql/MySQLDatabase.java
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,9 @@ public <T> QueryResult<T> execute(Query<T> query) {
}
ResultSet set = statement.executeQuery();
QueryResult<T> result = new QueryResult<T>(ResultSetUtils.buildResultList(table, (Class<T>) table.getTableClass(), set));
for (Object object : result.find()) {
table.executePostInitialize(object);
}
set.close();
return result;
}
Expand Down Expand Up @@ -424,6 +427,7 @@ public void save(Class<?> tableClass, Object o) {
}
}
}
table.executePostInitialize(o);
} catch (SQLException e) {
throw new RuntimeException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,9 @@ public <T> QueryResult<T> execute(Query<T> query) {
}
ResultSet results = statement.executeQuery();
QueryResult<T> result = new QueryResult<T>(ResultSetUtils.buildResultList(table, (Class<T>) table.getTableClass(), results));
for (Object object : result.find()) {
table.executePostInitialize(object);
}
return result;
}
} catch (SQLException e) {
Expand Down Expand Up @@ -371,6 +374,7 @@ public void save(Class<?> tableClass, Object o) {
}
}
}
table.executePostInitialize(o);
} catch (SQLException e) {
throw new RuntimeException(e);
}
Expand Down
14 changes: 14 additions & 0 deletions src/test/java/com/alta189/simplesave/h2/H2DatabaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.alta189.simplesave.DatabaseFactory;
import com.alta189.simplesave.Field;
import com.alta189.simplesave.Id;
import com.alta189.simplesave.PostInitialize;
import com.alta189.simplesave.Table;
import com.alta189.simplesave.exceptions.ConnectionException;
import com.alta189.simplesave.exceptions.TableRegistrationException;
Expand All @@ -32,6 +33,7 @@
import java.util.ArrayList;

import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

Expand Down Expand Up @@ -79,6 +81,7 @@ public void test() {
assertEquals(db.getTableRegistration(TestClass.class).getTableClass(), TestClass.class);
assertEquals(db.select(TestClass.class).execute().find().size(), 2);
assertEquals(db.select(TestClass.class).where().equal("name", "Hello World").execute().findOne().name, "Hello World");
assertTrue(one.getPost());
try {
db.close();
} catch (ConnectionException e) {
Expand Down Expand Up @@ -121,6 +124,13 @@ public static class TestClass {
@Field
private String name;

private boolean post = false;

@PostInitialize
public void init() {
post = true;
}

protected long getId() {
return id;
}
Expand All @@ -136,6 +146,10 @@ protected String getName() {
protected void setName(String name) {
this.name = name;
}

protected boolean getPost() {
return post;
}
}

@Table("tEsT")
Expand Down

0 comments on commit 10cf50a

Please sign in to comment.