protected boolean isEntityClass(Class<?> clzz){ return metadata().tryGetEntityMapping(clzz)!=null; }
protected void resolveTableSource(OrmMetadata metadata,SqlTableSource table) { if(table instanceof SqlTableName){ SqlTableName tableName = (SqlTableName)table; String lastName = tableName.getLastName(); EntityMapping em = metadata.tryGetEntityMapping(lastName); if(null == em){ em = metadata.tryGetEntityMappingByTableName(lastName); if(null == em) { em = metadata.tryGetEntityMappingByTableName(lastName); } } if(null != em){ if(tableName.getSecondaryOrFirstName() == null || Strings.equalsIgnoreCase(em.getTable().getSchema(), tableName.getSecondaryOrFirstName())){ tableName.setEntityMapping(em); } } } String alias = table.getAlias(); if(null != alias){ aliases.put(alias, table); } }
public static OrmContext context(Class<?> entityClass) { OrmRegistry registry = AppContext.factory().getBean(OrmRegistry.class); for(OrmContext context : registry.contexts()) { if(context.getMetadata().tryGetEntityMapping(entityClass) != null) { return context; } } throw new IllegalStateException("Orm context not found for entity class '" + entityClass + "'"); }
@Override public EntityModule require(Class<?> c) throws EntityNotFoundException { try { Api api = Api.current(); if(null == api) { throw new IllegalStateException("Can't require entity module '" + c.getName() + "', no api deployed!"); } EntityMapping em = api.getOrmContext().getMetadata().tryGetEntityMapping(c); if(null == em) { throw new EntityNotFoundException("Entity '" + c.getName() + "' not found!"); } return dao(engine.getMainModule(), api).entity(em.getEntityName()); }catch (ScriptException e) { throw new IllegalStateException("Error require entity module by class '" + c.getName() + "', " + e.getMessage(), e); } }
protected void createEntityMapping(Dmo dmo, boolean debug) { OrmMetadata md = dmo.getOrmContext().getMetadata(); if(null == md.tryGetEntityMapping(AuthzSSOSessionEntity.class)) { CreateEntityCommand cmd = dmo.cmdCreateEntity(AuthzSSOSessionEntity.class); cmd.setUpgradeTable(debug); cmd.execute(); } if(null == md.tryGetEntityMapping(AuthzSSOLoginEntity.class)) { CreateEntityCommand cmd = dmo.cmdCreateEntity(AuthzSSOLoginEntity.class); cmd.setUpgradeTable(debug); cmd.execute(); } }
public DefaultCreateEntityCommand(Dmo dmo,Class<?> entityClass){ super(dmo); this.entityClass = entityClass; if(null != metadata.tryGetEntityMapping(entityClass)){ throw new MappingExistsException("The entity mapping for class '" + entityClass.getName() + "' already exists"); } emb = dmo.getOrmContext().getMappingStrategy().createEntityMappingByClass(context,entityClass); if(null != metadata.tryGetEntityMapping(emb.getEntityName())){ throw new MappingExistsException("Entity named '" + emb.getEntityName() + "' already exists, check the class '" + entityClass.getName() + "'"); } SingleMappingConfigContext mcc = new SingleMappingConfigContext(dmo.getOrmContext(), entityClass, emb); dmo.getOrmContext().getMetadataManager().processMappings(mcc); }
protected void createEntityMapping(Dmo dmo, boolean debug) { OrmMetadata md = dmo.getOrmContext().getMetadata(); if(null == md.tryGetEntityMapping(AuthzAccessTokenEntity.class)) { CreateEntityCommand cmd = dmo.cmdCreateEntity(AuthzAccessTokenEntity.class); cmd.setUpgradeTable(debug); cmd.execute(); } if(null == md.tryGetEntityMapping(AuthzRefreshTokenEntity.class)) { CreateEntityCommand cmd = dmo.cmdCreateEntity(AuthzRefreshTokenEntity.class); cmd.setUpgradeTable(debug); cmd.execute(); } if(null == md.tryGetEntityMapping(AuthzLoginTokenEntity.class)) { CreateEntityCommand cmd = dmo.cmdCreateEntity(AuthzLoginTokenEntity.class); cmd.setUpgradeTable(debug); cmd.execute(); } }
protected void createEntityMapping(Dmo dmo, boolean debug) { OrmMetadata md = dmo.getOrmContext().getMetadata(); if(null == md.tryGetEntityMapping(AuthzClientEntity.class)) { CreateEntityCommand cmd = dmo.cmdCreateEntity(AuthzClientEntity.class); cmd.setUpgradeTable(debug); cmd.execute(); } }
protected void createEntityMapping(Dmo dmo, boolean debug) { OrmMetadata md = dmo.getOrmContext().getMetadata(); if(null == md.tryGetEntityMapping(AuthzCodeEntity.class)) { CreateEntityCommand cmd = dmo.cmdCreateEntity(AuthzCodeEntity.class); cmd.setUpgradeTable(debug); cmd.execute(); } }
/** * 对远程实体进行检查,屏蔽Rest实体的dao操作,对远程db实体,动态切换dao */ private <T> T runInWrapperContext(EntityMapping originalEm,Function<WrapperContext,T> func){ WrapperContext context=new WrapperContext(this,originalEm); if(!originalEm.isRemote()){ return func.apply(context); } if(RemoteType.rest.equals(originalEm.getRemoteSettings().getRemoteType())){ throw new RuntimeException("remote rest entity not supported."); } String remoteDs=originalEm.getRemoteSettings().getDataSource(); OrmContext targetOrmContext= Orm.context(remoteDs); if(targetOrmContext==null){ throw new RuntimeException("remote orm context can't be found."); } EntityMapping targetEm=targetOrmContext.getMetadata().tryGetEntityMapping(originalEm.getEntityName()); if(targetEm==null){ throw new RuntimeException("remote entity mapping can't be found."); } context.setDao(targetOrmContext.getDao()); context.setEntityMapping(targetEm); return func.apply(context); }
@Override public MType getMType(Class<?> declaringClass, Class<?> type, Type genericType, MTypeContext context) { Args.notNull(context.root(), "Root factory must be exists!"); if(Types.isSimpleType(type,genericType) || Types.isCollectionType(type,genericType)) { return null; } for(OrmContext c : ormContexts) { EntityMapping em = c.getMetadata().tryGetEntityMapping(type); if(null != em) { return getMType(type, context, c, em); } } return null; }
protected void expand(Expand expand, List<Record> records) { if (records == null || records.size() == 0) { return; } String name = expand.getName(); MApiProperty ap = am.tryGetProperty(name); if (null == ap) { throw new BadRequestException("The expand property '" + name + "' not exists!"); } RelationProperty rp = em.tryGetRelationProperty(name); if (null == rp) { throw new BadRequestException("Property '" + name + "' cannot be expanded"); } EntityMapping targetEm = dao.getOrmContext().getMetadata().tryGetEntityMapping(rp.getTargetEntityName()); if (targetEm == null) { throw new IllegalStateException("Can't find target entity '" + rp.getTargetEntityName() + "'"); } if (targetEm.isRemoteRest()) { expandByRest(expand, records, rp); } else { expandByDb(expand, records, rp); } }