@Override public EntitySet getEntitySet(final String entityContainer, final String name) throws ODataException { for (Schema schema : dataServices.getSchemas()) { for (EntityContainer container : schema.getEntityContainers()) { if (container.getName().equals(entityContainer)) { for (EntitySet entitySet : container.getEntitySets()) { if (entitySet.getName().equals(name)) { return entitySet; } } } } } return null; }
@Override public FunctionImport getFunctionImport(final String entityContainer, final String name) throws ODataException { for (Schema schema : dataServices.getSchemas()) { for (EntityContainer container : schema.getEntityContainers()) { if (container.getName().equals(entityContainer)) { for (FunctionImport function : container.getFunctionImports()) { if (function.getName().equals(name)) { return function; } } } } } return null; }
@Override public EntityContainerInfo getEntityContainerInfo(final String name) throws ODataException { EntityContainer container = name2Container.get(name); if (container == null) { // use default container (if set) container = defaultContainer; } if (container != null) { EntityContainerInfo info = new EntityContainerInfo(); info.setName(container.getName()); info.setDefaultEntityContainer(container.isDefaultEntityContainer()); info.setExtendz(container.getExtendz()); info.setAnnotationAttributes(container.getAnnotationAttributes()); info.setAnnotationElements(container.getAnnotationElements()); return info; } return null; }
public EntityContainer build() { EntityContainer ec = new EntityContainer(); ec.setName(name); ec.setDefaultEntityContainer(defaultContainer); ec.setEntitySets(entitySets); ec.setAssociationSets(associationSets); ec.setFunctionImports(functionImports); return ec; }
private EntityContainer getEntityContainer(List<Schema> schemas, String name) { if (schemas == null) { return null; } // since no schema is specified, we take the first match in any schema for (Schema schema : schemas) { List<EntityContainer> entityContainers = schema .getEntityContainers(); if (entityContainers == null) { return null; } for (EntityContainer entityContainer : entityContainers) { if ((entityContainer.isDefaultEntityContainer() && name == null) || entityContainer.getName().equals(name)) { return entityContainer; } } } return null; }
private EntityContainer readEntityContainer(final XMLStreamReader reader) throws XMLStreamException, EntityProviderException { reader.require(XMLStreamConstants.START_ELEMENT, edmNamespace, XmlMetadataConstants.EDM_ENTITY_CONTAINER); EntityContainer container = new EntityContainer(); List<EntitySet> entitySets = new ArrayList<EntitySet>(); List<AssociationSet> associationSets = new ArrayList<AssociationSet>(); List<AnnotationElement> annotationElements = new ArrayList<AnnotationElement>(); container.setName(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAME)); if (reader.getAttributeValue(Edm.NAMESPACE_M_2007_08, XmlMetadataConstants.EDM_CONTAINER_IS_DEFAULT) != null) { container.setDefaultEntityContainer("true".equalsIgnoreCase(reader.getAttributeValue(Edm.NAMESPACE_M_2007_08, "IsDefaultEntityContainer"))); container.setExtendz(reader.getAttributeValue(null, XmlMetadataConstants.EDM_CONTAINER_EXTENDZ)); container.setAnnotationAttributes(readAnnotationAttribute(reader)); container.setAnnotationElements(annotationElements); container.setEntitySets(entitySets).setAssociationSets(associationSets).setFunctionImports(functionImports); containerMap.put(new FullQualifiedName(currentNamespace, container.getName()), container); return container;
for (EntityContainer entityContainer : entityContainers) { xmlStreamWriter.writeStartElement(XmlMetadataConstants.EDM_ENTITY_CONTAINER); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAME, entityContainer.getName()); if (entityContainer.getExtendz() != null) { xmlStreamWriter .writeAttribute(XmlMetadataConstants.EDM_CONTAINER_EXTENDZ, entityContainer.getExtendz()); if (entityContainer.isDefaultEntityContainer()) { xmlStreamWriter.writeAttribute(Edm.PREFIX_M, Edm.NAMESPACE_M_2007_08, XmlMetadataConstants.EDM_CONTAINER_IS_DEFAULT, "true"); writeAnnotationAttributes(entityContainer.getAnnotationAttributes(), predefinedNamespaces, null, xmlStreamWriter); writeDocumentation(entityContainer.getDocumentation(), predefinedNamespaces, xmlStreamWriter); Collection<EntitySet> entitySets = entityContainer.getEntitySets(); if (entitySets != null) { for (EntitySet entitySet : entitySets) { Collection<AssociationSet> associationSets = entityContainer.getAssociationSets(); if (associationSets != null) { for (AssociationSet associationSet : associationSets) { Collection<FunctionImport> functionImports = entityContainer.getFunctionImports(); if (functionImports != null) { for (FunctionImport functionImport : functionImports) { writeAnnotationElements(entityContainer.getAnnotationElements(), predefinedNamespaces, xmlStreamWriter);
@Override public void build() throws ODataJPAModelException, ODataJPARuntimeException { currentEntityContainer = new EntityContainer(); if (consistentEntityContainerList == null) { currentEntityContainer.setDefaultEntityContainer(true); consistentEntityContainerList = new ArrayList<EntityContainer>(); } entitySetView = new JPAEdmEntitySet(schemaView); entitySetView.getBuilder().build(); if (entitySetView.isConsistent()) { currentEntityContainer.setEntitySets(entitySetView.getConsistentEdmEntitySetList()); } else { isConsistent = false; return; } if (!schemaView.getJPAEdmAssociationView().isConsistent()) { schemaView.getJPAEdmAssociationView().getBuilder().build(); } associationSetView = new JPAEdmAssociationSet(schemaView); associationSetView.getBuilder().build(); if (associationSetView.isConsistent()) { currentEntityContainer.setAssociationSets(associationSetView.getConsistentEdmAssociationSetList()); } else { isConsistent = false; return; } JPAEdmNameBuilder.build(JPAEdmEntityContainer.this); consistentEntityContainerList.add(currentEntityContainer); isConsistent = true; }
List<EntitySet> entitySets = container.getEntitySets(); if (entitySets != null) { for (EntitySet set : entitySets) { List<FunctionImport> functionImports = container.getFunctionImports(); if (functionImports != null) { for (FunctionImport functionImport : functionImports) { List<AssociationSet> associationSets = container.getAssociationSets(); if (associationSets != null) { for (AssociationSet set : associationSets) {
@Override public EntitySet getEntitySet(final String entityContainer, final String name) throws ODataException { EntityContainer container = name2Container.get(entityContainer); if (container != null) { List<EntitySet> entitySets = container.getEntitySets(); for (EntitySet entitySet : entitySets) { if (entitySet.getName().equals(name)) { return entitySet; } } } return null; }
@Override public AssociationSet getAssociationSet(final String entityContainer, final FullQualifiedName association, final String sourceEntitySetName, final String sourceEntitySetRole) throws ODataException { for (Schema schema : dataServices.getSchemas()) { for (EntityContainer container : schema.getEntityContainers()) { if (container.getName().equals(entityContainer)) { for (AssociationSet associationSet : container.getAssociationSets()) { if (associationSet.getAssociation().equals(association) && ((associationSet.getEnd1().getEntitySet().equals(sourceEntitySetName) && associationSet.getEnd1() .getRole().equals(sourceEntitySetRole)) || (associationSet.getEnd2().getEntitySet().equals(sourceEntitySetName) && associationSet.getEnd2() .getRole().equals(sourceEntitySetRole)))) { return associationSet; } } } } } return null; }
private void validateAssociation() throws EntityProviderException { for (Map.Entry<FullQualifiedName, EntityContainer> container : containerMap.entrySet()) { for (AssociationSet associationSet : container.getValue().getAssociationSets()) { FullQualifiedName association = associationSet.getAssociation(); if (associationsMap.containsKey(association)) { validateAssociationEnd(associationSet.getEnd1(), associationsMap.get(association)); validateAssociationEnd(associationSet.getEnd2(), associationsMap.get(association)); boolean end1 = false; boolean end2 = false; for (EntitySet entitySet : container.getValue().getEntitySets()) { if (entitySet.getName().equals(associationSet.getEnd1().getEntitySet())) { end1 = true; } if (entitySet.getName().equals(associationSet.getEnd2().getEntitySet())) { end2 = true; } } if (!(end1 && end2)) { throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT .addContent("Invalid AssociationSet")); } } else { throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT .addContent("Invalid AssociationSet")); } } } }
@Override public List<EdmAssociationSet> getAssociationSets() throws EdmException { try { List<EntityContainer> containers = getEntityContainerHierachy(); List<EdmAssociationSet> edmAssociationSetsList = new ArrayList<EdmAssociationSet>(); for (EntityContainer entityContainer : containers) { List<AssociationSet> associationSets = entityContainer.getAssociationSets(); for (AssociationSet associationSet : associationSets) { EdmAssociationSet eas = createAssociationSet(associationSet); edmAssociationSetsList.add(eas); } } return edmAssociationSetsList; } catch (ODataException e) { throw new EdmException(EdmException.PROVIDERPROBLEM, e); } }
private void includeAssociationSet(Schema targetSchema, EntityContainer targetContainer, IServiceInfo service, AssociationSet sourceSet) throws ODataException { List<AssociationSet> sets = targetContainer.getAssociationSets(); if (sets != null) { for (AssociationSet set : sets) { if (set.getName().equals(sourceSet.getName())) { throw new ODataException("association set " + sourceSet.getName() + " already defined"); } } } else { sets = new ArrayList<AssociationSet>(); } AssociationSet newSet = clone(sourceSet); newSet.setAssociation(new FullQualifiedName( targetSchema.getNamespace(), newSet.getAssociation().getName())); sets.add(newSet); targetContainer.setAssociationSets(sets); }
private void includeEntitySet(Schema targetSchema, EntityContainer targetContainer, IServiceInfo service, EntitySet sourceSet) throws ODataException { List<EntitySet> targetEntitySets = targetContainer.getEntitySets(); if (targetEntitySets != null) { for (EntitySet set : targetEntitySets) { if (set.getName().equals(sourceSet.getName())) { throw new ODataException("entity set " + sourceSet.getName() + " already defined"); } } } else { targetEntitySets = new ArrayList<EntitySet>(); } EntitySet newSet = clone(sourceSet); newSet.setEntityType(new FullQualifiedName(targetSchema.getNamespace(), newSet.getEntityType().getName())); targetEntitySets.add(newSet); targetContainer.setEntitySets(targetEntitySets); MashServiceRegistry.setTargetService(_service, targetSchema, targetContainer, newSet, service); }
private void includeFunctionImport(Schema targetSchema, EntityContainer targetContainer, IServiceInfo service, FunctionImport sourceFunctionImport) throws ODataException { List<FunctionImport> functionImports = targetContainer .getFunctionImports(); if (functionImports != null) { for (FunctionImport functionImport : functionImports) { if (functionImport.getName().equals( sourceFunctionImport.getName())) { throw new ODataException("function import " + sourceFunctionImport.getName() + " already defined"); } } } else { functionImports = new ArrayList<FunctionImport>(); } FunctionImport newFunctionImport = clone(sourceFunctionImport); if (newFunctionImport.getReturnType() != null) { newFunctionImport.getReturnType().setTypeName( new FullQualifiedName(targetSchema.getNamespace(), newFunctionImport.getReturnType().getTypeName() .getName())); } functionImports.add(newFunctionImport); targetContainer.setFunctionImports(functionImports); MashServiceRegistry.setTargetService(_service, targetSchema, targetContainer, newFunctionImport, service); }
@Override public FunctionImport getFunctionImport(final String entityContainer, final String name) throws ODataException { EntityContainer container = name2Container.get(entityContainer); if (container != null) { List<FunctionImport> functionImports = container.getFunctionImports(); for (FunctionImport functionImport : functionImports) { if (functionImport.getName().equals(name)) { return functionImport; } } } return null; }
private static String getFunctionImportKey(Schema schema, EntityContainer container, FunctionImport functionImport) { return /* schema.getNamespace() + "~" + */container.getName() + "~" + functionImport.getName(); }
functionImportView.getBuilder().build(); if (functionImportView.getConsistentFunctionImportList() != null) { entityContainerView.getEdmEntityContainer().setFunctionImports( functionImportView.getConsistentFunctionImportList());
private EntityContainer readEntityContainer(final XMLStreamReader reader) throws XMLStreamException, EntityProviderException { reader.require(XMLStreamConstants.START_ELEMENT, edmNamespace, XmlMetadataConstants.EDM_ENTITY_CONTAINER); EntityContainer container = new EntityContainer(); List<EntitySet> entitySets = new ArrayList<EntitySet>(); List<AssociationSet> associationSets = new ArrayList<AssociationSet>(); List<AnnotationElement> annotationElements = new ArrayList<AnnotationElement>(); container.setName(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAME)); if (reader.getAttributeValue(Edm.NAMESPACE_M_2007_08, XmlMetadataConstants.EDM_CONTAINER_IS_DEFAULT) != null) { container.setDefaultEntityContainer("true".equalsIgnoreCase(reader.getAttributeValue(Edm.NAMESPACE_M_2007_08, "IsDefaultEntityContainer"))); container.setExtendz(reader.getAttributeValue(null, XmlMetadataConstants.EDM_CONTAINER_EXTENDZ)); container.setAnnotationAttributes(readAnnotationAttribute(reader)); container.setAnnotationElements(annotationElements); container.setEntitySets(entitySets).setAssociationSets(associationSets).setFunctionImports(functionImports); containerMap.put(new FullQualifiedName(currentNamespace, container.getName()), container); return container;