/
area/
classes/net/sourceforge/pain/logic/
classes/net/sourceforge/pain/logic/event/
classes/net/sourceforge/pain/logic/fn/util/
classes/net/sourceforge/pain/network/console/
classes/net/sourceforge/pain/plugin/
classes/net/sourceforge/pain/plugin/reset/
classes/net/sourceforge/pain/plugin/shutdown/
classes/net/sourceforge/pain/plugin/social/
classest/net/sourceforge/pain/db/data/
doc/
doc/paindb/resources/
src/net/sourceforge/pain/logic/
src/net/sourceforge/pain/logic/event/
src/net/sourceforge/pain/logic/fn/util/
src/net/sourceforge/pain/network/console/
src/net/sourceforge/pain/network/console/telnet/
src/net/sourceforge/pain/plugin/
src/net/sourceforge/pain/plugin/command/
src/net/sourceforge/pain/plugin/reset/
src/net/sourceforge/pain/plugin/shutdown/
src/net/sourceforge/pain/plugin/social/
src/net/sourceforge/pain/util/
tests/
tests/net/sourceforge/pain/db/data/
package net.sourceforge.pain.data;

import net.sourceforge.pain.*;
import net.sourceforge.pain.db.*;

/**
 * PAiN  Date: 27.05.2003  Time: 0:35:49
 */
public final class ObjectFactory {

	/**
	 * Creates LogicalObject by specified role class. Also adds all superroles to object
	 * WARN: very low level method, use prototypes where it's possible to create complex objects
	 * @param roleClass
	 * @return
	 * @throws Exception on Sundays
	 */
	public static LogicalObject create(final Class roleClass) throws Exception {
		if (roleClass == null) {
			throw new NullPointerException("role class is null");
		}
		final PainDB db = Core.getDB();
		DbTransaction t = new DbTransaction() {
			public Object execute(Object[] params) throws Exception {
				final Root fco = new Root(db);
				return fco._addRole(roleClass);
			}
		};
		return (Role) db.execute(t);
	}
}