Skip to content

Commit

Permalink
Enriched entity factory with property params.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Jan 17, 2015
1 parent 79d4d7b commit 01c00e6
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 5 deletions.
@@ -1,6 +1,7 @@
package org.rapidoid.db.impl;

import java.lang.reflect.Proxy;
import java.util.Map;
import java.util.concurrent.ConcurrentMap;

import org.rapidoid.db.DbDsl;
Expand Down Expand Up @@ -58,11 +59,11 @@ public <E> Class<E> getEntityTypeFromPlural(String typeNamePlural) {

@SuppressWarnings("unchecked")
@Override
public <E> E create(Class<E> clazz) {
public <E> E create(Class<E> clazz, Map<String, ?> properties) {
Class<E> entityType = getEntityTypeFor(clazz);
if (entityType.isInterface() && Entity.class.isAssignableFrom(entityType)) {
Class<? extends Entity> cls = (Class<? extends Entity>) entityType;
return (E) DbProxy.create(cls);
return (E) DbProxy.create(cls, U.concurrentMap(properties));
} else {
return U.newInstance(entityType);
}
Expand Down
Expand Up @@ -20,6 +20,8 @@
* #L%
*/

import java.util.Collections;

import org.rapidoid.db.Database;
import org.rapidoid.inmem.EntityConstructor;

Expand All @@ -31,9 +33,10 @@ public DbEntityConstructor(Database db) {
this.db = db;
}

@SuppressWarnings("unchecked")
@Override
public <T> T create(Class<T> entityType) {
return (T) db.schema().create(entityType);
return (T) db.schema().create(entityType, Collections.EMPTY_MAP);
}

}
33 changes: 32 additions & 1 deletion rapidoid-db/src/main/java/org/rapidoid/db/DB.java
Expand Up @@ -21,6 +21,7 @@
*/
import java.io.File;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -203,8 +204,38 @@ public static DbSchema schema() {
return db().schema();
}

@SuppressWarnings("unchecked")
public static <E extends Entity> E create(Class<E> entityType) {
return schema().create(entityType);
return (E) schema().create(entityType, Collections.EMPTY_MAP);
}

public static <E extends Entity> E create(Class<E> entityType, Map<String, ?> properties) {
return schema().create(entityType, properties);
}

public static <E extends Entity> E create(Class<E> entityType, String prop, Object value) {
return schema().create(entityType, U.map(prop, value));
}

public static <E extends Entity> E create(Class<E> entityType, String prop1, Object value1, String prop2,
Object value2) {
return schema().create(entityType, U.map(prop1, value1, prop2, value2));
}

public static <E extends Entity> E create(Class<E> entityType, String prop1, Object value1, String prop2,
Object value2, String prop3, Object value3) {
return schema().create(entityType, U.map(prop1, value1, prop2, value2, prop3, value3));
}

public static <E extends Entity> E create(Class<E> entityType, String prop1, Object value1, String prop2,
Object value2, String prop3, Object value3, String prop4, Object value4) {
return schema().create(entityType, U.map(prop1, value1, prop2, value2, prop3, value3, prop4, value4));
}

public static <E extends Entity> E create(Class<E> entityType, String prop1, Object value1, String prop2,
Object value2, String prop3, Object value3, String prop4, Object value4, String prop5, Object value5) {
return schema().create(entityType,
U.map(prop1, value1, prop2, value2, prop3, value3, prop4, value4, prop5, value5));
}

public static <E> DbDsl<E> dsl(Class<E> entityType) {
Expand Down
4 changes: 3 additions & 1 deletion rapidoid-db/src/main/java/org/rapidoid/db/DbSchema.java
@@ -1,5 +1,7 @@
package org.rapidoid.db;

import java.util.Map;

/*
* #%L
* rapidoid-db
Expand All @@ -22,7 +24,7 @@

public interface DbSchema {

<E> E create(Class<E> entityType);
<E> E create(Class<E> entityType, Map<String, ?> properties);

<E> DbDsl<E> dsl(Class<E> entityType);

Expand Down

0 comments on commit 01c00e6

Please sign in to comment.