/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlEntityType */ private CsdlEntityType fetchLastCsdlBaseType(FullQualifiedName baseTypeFQName) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getKey() != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } return baseEntityType; }
String baseType = entityType.getBaseType(); while (baseType != null) { CsdlEntityType baseEntityType = getEntityType(metadata, baseType); baseType = baseEntityType.getBaseType();
/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlEntityType */ private CsdlEntityType fetchLastCsdlBaseType(FullQualifiedName baseTypeFQName) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getKey() != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } return baseEntityType; }
/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlNavigationProperty */ private CsdlNavigationProperty fetchLastBaseEntityHavingNavigationProperty( FullQualifiedName baseTypeFQName, String navBindingProperty) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getNavigationProperty(navBindingProperty) != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } if (baseEntityType == null) { throw new RuntimeException("Entity Type is null with fully qualified name:" + baseTypeFQName); } return baseEntityType.getNavigationProperty(navBindingProperty); }
/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlNavigationProperty */ private CsdlNavigationProperty fetchLastBaseEntityHavingNavigationProperty( FullQualifiedName baseTypeFQName, String navBindingProperty) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getNavigationProperty(navBindingProperty) != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } if (baseEntityType == null) { throw new RuntimeException("Entity Type is null with fully qualified name:" + baseTypeFQName); } return baseEntityType.getNavigationProperty(navBindingProperty); }
/** * This method validates Csdl Entity types. * Looks for correct namespace aliases and correct base types */ private void validateCsdlEntityTypes() { for (Map.Entry<FullQualifiedName, CsdlEntityType> entityTypes : csdlEntityTypesMap.entrySet()) { if (entityTypes.getValue() != null && entityTypes.getKey() != null) { CsdlEntityType entityType = entityTypes.getValue(); if (entityType.getBaseType() != null) { CsdlEntityType baseEntityType; FullQualifiedName baseTypeFQName = entityType.getBaseTypeFQN(); if (!csdlEntityTypesMap.containsKey(baseTypeFQName)) { FullQualifiedName fqName = validateCsdlEntityTypeWithAlias(baseTypeFQName); baseEntityType = fetchLastCsdlBaseType(fqName); } else { baseEntityType = fetchLastCsdlBaseType(baseTypeFQName); } if (baseEntityType != null && (baseEntityType.getKey() == null || baseEntityType.getKey().isEmpty())) { throw new RuntimeException("Missing key for EntityType " + baseEntityType.getName()); } } else if (entityType.getKey() == null || entityType.getKey().isEmpty()) { throw new RuntimeException("Missing key for EntityType " + entityType.getName()); } } } }
public static String resolveBaseTypesForEntity(CsdlEntityType csdlEntity, String edmxNamespace, CommonJavaObjectForEdmx comModel, CDXEdmProvider edmxMetadataProvider, Map<String, String> namespaceToServMap) { String baseTypeName = csdlEntity.getBaseType(); // build entity model for base type entity FullQualifiedName fqnEntity = csdlEntity.getBaseTypeFQN(); if (fqnEntity != null) { try { CsdlEntityType csdlBaseEntity = edmxMetadataProvider.getEntityType(fqnEntity); if (!EdmxToCommonModelHelper.isEntityTypeAlreadyParsed(csdlBaseEntity, comModel)) { EntityTypeModel comEntity = EdmxToCommonJavaObjectConverter.convertCsdlEntityToCommonModel( csdlBaseEntity, edmxNamespace, comModel, edmxMetadataProvider, namespaceToServMap); comModel.addEntityType(comEntity); } } catch (ODataException e) { PojoGenUtil.logDebug(log, "Could not fetch Base Type from EdmxProvider called by resolveBaseTypesForEntity"); } } return baseTypeName != null ? baseTypeName : ""; }
/** * This method validates Csdl Entity types. * Looks for correct namespace aliases and correct base types */ private void validateCsdlEntityTypes() { for (Map.Entry<FullQualifiedName, CsdlEntityType> entityTypes : csdlEntityTypesMap.entrySet()) { if (entityTypes.getValue() != null && entityTypes.getKey() != null) { CsdlEntityType entityType = entityTypes.getValue(); if (entityType.getBaseType() != null) { CsdlEntityType baseEntityType; FullQualifiedName baseTypeFQName = entityType.getBaseTypeFQN(); if (!csdlEntityTypesMap.containsKey(baseTypeFQName)) { FullQualifiedName fqName = validateCsdlEntityTypeWithAlias(baseTypeFQName); baseEntityType = fetchLastCsdlBaseType(fqName); } else { baseEntityType = fetchLastCsdlBaseType(baseTypeFQName); } if (baseEntityType != null && (baseEntityType.getKey() == null || baseEntityType.getKey().isEmpty())) { throw new RuntimeException("Missing key for EntityType " + baseEntityType.getName()); } } else if (entityType.getKey() == null || entityType.getKey().isEmpty()) { throw new RuntimeException("Missing key for EntityType " + entityType.getName()); } } } }