Search in sources :

Example 26 with EntityNet

use of com.github.drinkjava2.jsqlbox.entitynet.EntityNet in project jSqlBox by drinkjava2.

the class EntityNetFactory method createEntityNet.

/**
 * Create a EntityNet instance, load data from database buy given loadKeyOnly
 * and configObjects parameters
 *
 * @param ctx
 *            A SqlBoxContext instance
 * @param loadKeyOnly
 *            If true will only load PKey and FKeys field, otherwise load all
 *            columns
 * @param configObjects
 *            netConfigs array, can be entity class, entity, SqlBox or
 *            TableModel instance
 * @return The EntityNet
 */
public static EntityNet createEntityNet(SqlBoxContext ctx, boolean loadKeyOnly, Object... configObjects) {
    if (configObjects == null || configObjects.length == 0)
        throw new EntityNetException("LoadNet() does not support empty netConfigs parameter");
    TableModel[] models = EntityNetUtils.objectConfigsToModels(ctx, configObjects);
    EntityNet net = new EntityNet();
    String starOrSharp = loadKeyOnly ? ".##" : ".**";
    for (TableModel t : models) {
        List<Map<String, Object>> mapList = null;
        String alias = t.getAlias();
        if (StrUtils.isEmpty(alias))
            alias = t.getTableName();
        try {
            mapList = ctx.nQuery(new EntitySqlMapListHandler(t), "select " + alias + starOrSharp + " from " + t.getTableName() + " as " + alias);
        } finally {
            EntityNetUtils.removeBindedTableModel(mapList);
        }
        net.addMapList(mapList, t);
    }
    return net;
}
Also used : Map(java.util.Map) TableModel(com.github.drinkjava2.jdialects.model.TableModel) EntitySqlMapListHandler(com.github.drinkjava2.jsqlbox.handler.EntitySqlMapListHandler)

Example 27 with EntityNet

use of com.github.drinkjava2.jsqlbox.entitynet.EntityNet in project jSqlBox by drinkjava2.

the class PathUtils method getRelationShip.

/**
 * The the relationship between from and to
 */
static Object[] getRelationShip(EntityNet net, Class<?> from, Class<?> to) {
    TableModel fromModel = net.getConfigModels().get(from);
    String fromTable = fromModel.getTableName();
    TableModel toModel = net.getConfigModels().get(to);
    String toTable = toModel.getTableName();
    Object[] result = null;
    // assume from is child, like from is RoleUser, to is UserPOJO
    for (FKeyModel fKeyModel : fromModel.getFkeyConstraints()) {
        String parentTableName = fKeyModel.getRefTableAndColumns()[0];
        if (toTable.equalsIgnoreCase(parentTableName)) {
            if (result != null)
                throw new EntityNetException("Auto path can not determined, multiple relationships found between class " + from + " and " + to);
            result = new Object[3];
            result[0] = "P-";
            result[1] = to;
            String[] refs = fKeyModel.getColumnNames().toArray(new String[fKeyModel.getColumnNames().size()]);
            result[2] = refs;
        }
    }
    // assume to is child, like from is UserPOJO, to is UserRole
    for (FKeyModel fKeyModel : toModel.getFkeyConstraints()) {
        String parentTableName = fKeyModel.getRefTableAndColumns()[0];
        if (fromTable.equalsIgnoreCase(parentTableName)) {
            if (result != null)
                throw new EntityNetException("Auto path can not determined, multiple relationships found between class " + from + " and " + to);
            result = new Object[3];
            result[0] = "C-";
            result[1] = to;
            String[] refs = fKeyModel.getColumnNames().toArray(new String[fKeyModel.getColumnNames().size()]);
            result[2] = refs;
        }
    }
    if (result != null)
        return result;
    throw new EntityNetException("Auto path can not determined, no relationship found between class " + from + " and " + to);
}
Also used : TableModel(com.github.drinkjava2.jdialects.model.TableModel) FKeyModel(com.github.drinkjava2.jdialects.model.FKeyModel)

Aggregations

EntityNet (com.github.drinkjava2.jsqlbox.entitynet.EntityNet)25 Test (org.junit.Test)24 User (com.github.drinkjava2.functionstest.entitynet.entities.User)20 Path (com.github.drinkjava2.jsqlbox.entitynet.Path)15 Email (com.github.drinkjava2.functionstest.entitynet.entities.Email)10 Role (com.github.drinkjava2.functionstest.entitynet.entities.Role)7 UserRole (com.github.drinkjava2.functionstest.entitynet.entities.UserRole)7 Privilege (com.github.drinkjava2.functionstest.entitynet.entities.Privilege)5 RolePrivilege (com.github.drinkjava2.functionstest.entitynet.entities.RolePrivilege)5 Map (java.util.Map)5 EntitySqlMapListHandler (com.github.drinkjava2.jsqlbox.handler.EntitySqlMapListHandler)4 Set (java.util.Set)4 TreeNode (com.github.drinkjava2.functionstest.entitynet.entities.TreeNode)3 TableModel (com.github.drinkjava2.jdialects.model.TableModel)2 EntityNetHandler (com.github.drinkjava2.jsqlbox.handler.EntityNetHandler)2 Address (com.github.drinkjava2.functionstest.entitynet.entities.Address)1 FKeyModel (com.github.drinkjava2.jdialects.model.FKeyModel)1 SqlBoxContext (com.github.drinkjava2.jsqlbox.SqlBoxContext)1 Node (com.github.drinkjava2.jsqlbox.entitynet.Node)1 List (java.util.List)1