You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2013/12/18 10:12:10 UTC
[12/37] [OLINGO-82] Renamed the project folder name to
odata2-jpa-processor
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmBaseViewImpl.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmBaseViewImpl.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmBaseViewImpl.java
deleted file mode 100644
index 0798487..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmBaseViewImpl.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import javax.persistence.metamodel.Metamodel;
-
-import org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmMappingModelAccess;
-import org.apache.olingo.odata2.processor.api.jpa.factory.ODataJPAFactory;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmBaseView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmExtension;
-
-public abstract class JPAEdmBaseViewImpl implements JPAEdmBaseView {
-
- protected boolean skipDefaultNaming = false;
- protected String pUnitName = null;
- protected Metamodel metaModel = null;
- protected boolean isConsistent = true;
- protected JPAEdmBuilder builder = null;
- protected JPAEdmExtension jpaEdmExtension = null;
- private JPAEdmMappingModelAccess jpaEdmMappingModelAccess = null;
-
- public JPAEdmBaseViewImpl(final JPAEdmBaseView view) {
- pUnitName = view.getpUnitName();
- metaModel = view.getJPAMetaModel();
- jpaEdmMappingModelAccess = view.getJPAEdmMappingModelAccess();
- jpaEdmExtension = view.getJPAEdmExtension();
- skipDefaultNaming = view.isDefaultNamingSkipped();
- }
-
- public JPAEdmBaseViewImpl(final ODataJPAContext context) {
- pUnitName = context.getPersistenceUnitName();
- metaModel = context.getEntityManagerFactory().getMetamodel();
- jpaEdmMappingModelAccess =
- ODataJPAFactory.createFactory().getJPAAccessFactory().getJPAEdmMappingModelAccess(context);
- jpaEdmExtension = context.getJPAEdmExtension();
- jpaEdmMappingModelAccess.loadMappingModel();
- skipDefaultNaming = !context.getDefaultNaming();
- }
-
- public JPAEdmBaseViewImpl(final Metamodel metaModel, final String pUnitName) {
- this.metaModel = metaModel;
- this.pUnitName = pUnitName;
- }
-
- @Override
- public String getpUnitName() {
- return pUnitName;
- }
-
- @Override
- public Metamodel getJPAMetaModel() {
- return metaModel;
- }
-
- @Override
- public boolean isConsistent() {
- return isConsistent;
- }
-
- @Override
- public void clean() {
- pUnitName = null;
- metaModel = null;
- isConsistent = false;
- }
-
- @Override
- public JPAEdmMappingModelAccess getJPAEdmMappingModelAccess() {
- return jpaEdmMappingModelAccess;
-
- }
-
- @Override
- public JPAEdmExtension getJPAEdmExtension() {
- return jpaEdmExtension;
- }
-
- @Override
- public boolean isDefaultNamingSkipped() {
- return skipDefaultNaming;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmComplexType.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmComplexType.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmComplexType.java
deleted file mode 100644
index ad25a1b..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmComplexType.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.EmbeddableType;
-
-import org.apache.olingo.odata2.api.edm.FullQualifiedName;
-import org.apache.olingo.odata2.api.edm.provider.ComplexProperty;
-import org.apache.olingo.odata2.api.edm.provider.ComplexType;
-import org.apache.olingo.odata2.api.edm.provider.Mapping;
-import org.apache.olingo.odata2.api.edm.provider.Property;
-import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmMappingModelAccess;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmComplexTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmMapping;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmComplexType extends JPAEdmBaseViewImpl implements JPAEdmComplexTypeView {
-
- private JPAEdmSchemaView schemaView;
- private ComplexType currentComplexType = null;
- private EmbeddableType<?> currentEmbeddableType = null;
- private HashMap<String, ComplexType> searchMap = null;
- private List<ComplexType> consistentComplextTypes = null;
- private boolean directBuild;
- private EmbeddableType<?> nestedComplexType = null;
-
- public JPAEdmComplexType(final JPAEdmSchemaView view) {
- super(view);
- schemaView = view;
- directBuild = true;
- }
-
- public JPAEdmComplexType(final JPAEdmSchemaView view, final Attribute<?, ?> complexAttribute) {
- super(view);
- schemaView = view;
- for (EmbeddableType<?> jpaEmbeddable : schemaView.getJPAMetaModel().getEmbeddables()) {
- if (jpaEmbeddable.getJavaType().getName().equals(complexAttribute.getJavaType().getName())) {
- nestedComplexType = jpaEmbeddable;
- break;
- }
- }
- directBuild = false;
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmComplexTypeBuilder();
- }
-
- return builder;
- }
-
- @Override
- public ComplexType getEdmComplexType() {
- return currentComplexType;
- }
-
- @Override
- public ComplexType searchEdmComplexType(final String embeddableTypeName) {
- return searchMap.get(embeddableTypeName);
- }
-
- @Override
- public EmbeddableType<?> getJPAEmbeddableType() {
- return currentEmbeddableType;
- }
-
- @Override
- public List<ComplexType> getConsistentEdmComplexTypes() {
- return consistentComplextTypes;
- }
-
- @Override
- public ComplexType searchEdmComplexType(final FullQualifiedName type) {
- String name = type.getName();
- return searchComplexTypeByName(name);
-
- }
-
- private ComplexType searchComplexTypeByName(final String name) {
- for (ComplexType complexType : consistentComplextTypes) {
- if (null != complexType && null != complexType.getName() && complexType.getName().equals(name)) {
- return complexType;
- }
- }
-
- return null;
- }
-
- @Override
- public void addJPAEdmCompleTypeView(final JPAEdmComplexTypeView view) {
- String searchKey = view.getJPAEmbeddableType().getJavaType().getName();
-
- if (!searchMap.containsKey(searchKey)) {
- consistentComplextTypes.add(view.getEdmComplexType());
- searchMap.put(searchKey, view.getEdmComplexType());
- }
- }
-
- @Override
- public void expandEdmComplexType(final ComplexType complexType, List<Property> expandedList,
- final String embeddablePropertyName) {
-
- if (expandedList == null) {
- expandedList = new ArrayList<Property>();
- }
- for (Property property : complexType.getProperties()) {
- try {
- SimpleProperty newSimpleProperty = new SimpleProperty();
- SimpleProperty oldSimpleProperty = (SimpleProperty) property;
- newSimpleProperty.setAnnotationAttributes(oldSimpleProperty.getAnnotationAttributes());
- newSimpleProperty.setAnnotationElements(oldSimpleProperty.getAnnotationElements());
- newSimpleProperty.setCustomizableFeedMappings(oldSimpleProperty.getCustomizableFeedMappings());
- newSimpleProperty.setDocumentation(oldSimpleProperty.getDocumentation());
- newSimpleProperty.setFacets(oldSimpleProperty.getFacets());
- newSimpleProperty.setMimeType(oldSimpleProperty.getMimeType());
- newSimpleProperty.setName(oldSimpleProperty.getName());
- newSimpleProperty.setType(oldSimpleProperty.getType());
- JPAEdmMappingImpl newMapping = new JPAEdmMappingImpl();
- Mapping mapping = oldSimpleProperty.getMapping();
- JPAEdmMapping oldMapping = (JPAEdmMapping) mapping;
- newMapping.setJPAColumnName(oldMapping.getJPAColumnName());
- newMapping.setInternalName(embeddablePropertyName + "." + mapping.getInternalName());
- newMapping.setMimeType(mapping.getMimeType());
- newMapping.setObject(mapping.getObject());
- newMapping.setJPAType(oldMapping.getJPAType());
- newSimpleProperty.setMapping(newMapping);
- expandedList.add(newSimpleProperty);
- } catch (ClassCastException e) {
- ComplexProperty complexProperty = (ComplexProperty) property;
- String name = embeddablePropertyName + "." + complexProperty.getMapping().getInternalName();
- expandEdmComplexType(searchComplexTypeByName(complexProperty.getName()), expandedList, name);
- }
- }
-
- }
-
- private class JPAEdmComplexTypeBuilder implements JPAEdmBuilder {
- /*
- *
- * Each call to build method creates a new Complex Type.
- * The Complex Type is created only if it is not created
- * earlier. A local buffer is maintained to track the list
- * of complex types created.
- *
- * ************************************************************
- * Build EDM Complex Type - STEPS
- * ************************************************************
- * 1) Fetch list of embeddable types from JPA Model
- * 2) Search local buffer if there exists already a Complex
- * type for the embeddable type.
- * 3) If the complex type was already been built continue with
- * the next embeddable type, else create new EDM Complex Type.
- * 4) Create a Property view with Complex Type
- * 5) Get Property Builder and build the Property with Complex
- * type.
- * 6) Set EDM complex type with list of properties built by
- * the property view
- * 7) Provide name for EDM complex type.
- *
- * ************************************************************
- * Build EDM Complex Type - STEPS
- * ************************************************************
- */
- @Override
- public void build() throws ODataJPAModelException, ODataJPARuntimeException {
- Set<EmbeddableType<?>> embeddables = new HashSet<EmbeddableType<?>>();
-
- if (consistentComplextTypes == null) {
- consistentComplextTypes = new ArrayList<ComplexType>();
- }
-
- if (searchMap == null) {
- searchMap = new HashMap<String, ComplexType>();
- }
-
- if (directBuild) {
- embeddables = schemaView.getJPAMetaModel().getEmbeddables();
- } else {
- embeddables.add(nestedComplexType);
- }
-
- for (EmbeddableType<?> embeddableType : embeddables) {
-
- currentEmbeddableType = embeddableType;
- String searchKey = embeddableType.getJavaType().getName();
-
- if (searchMap.containsKey(searchKey)) {
- continue;
- }
-
- // Check for need to Exclude
- if (isExcluded(JPAEdmComplexType.this)) {
- continue;
- }
-
- JPAEdmPropertyView propertyView = new JPAEdmProperty(schemaView, JPAEdmComplexType.this);
- propertyView.getBuilder().build();
-
- currentComplexType = new ComplexType();
- currentComplexType.setProperties(propertyView.getEdmPropertyList());
- JPAEdmNameBuilder.build(JPAEdmComplexType.this);
-
- searchMap.put(searchKey, currentComplexType);
- consistentComplextTypes.add(currentComplexType);
-
- }
-
- }
-
- private boolean isExcluded(final JPAEdmComplexType jpaEdmComplexType) {
-
- JPAEdmMappingModelAccess mappingModelAccess = jpaEdmComplexType.getJPAEdmMappingModelAccess();
- if (mappingModelAccess != null
- && mappingModelAccess.isMappingModelExists()
- && mappingModelAccess.checkExclusionOfJPAEmbeddableType(jpaEdmComplexType.getJPAEmbeddableType()
- .getJavaType().getSimpleName())) {
- return true;
- }
- return false;
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityContainer.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityContainer.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityContainer.java
deleted file mode 100644
index fee40c2..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityContainer.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationSetView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityContainerView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntitySetView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmFunctionImportView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmEntityContainer extends JPAEdmBaseViewImpl implements JPAEdmEntityContainerView {
-
- private JPAEdmEntitySetView entitySetView;
- private JPAEdmSchemaView schemaView;
- private JPAEdmAssociationSetView associationSetView;
-
- private EntityContainer currentEntityContainer;
- private List<EntityContainer> consistentEntityContainerList;
-
- public JPAEdmEntityContainer(final JPAEdmSchemaView view) {
- super(view);
- schemaView = view;
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmEntityContainerBuilder();
- }
-
- return builder;
- }
-
- @Override
- public EntityContainer getEdmEntityContainer() {
- return currentEntityContainer;
- }
-
- @Override
- public List<EntityContainer> getConsistentEdmEntityContainerList() {
- return consistentEntityContainerList;
- }
-
- @Override
- public JPAEdmEntitySetView getJPAEdmEntitySetView() {
- return entitySetView;
- }
-
- @Override
- public JPAEdmAssociationSetView getEdmAssociationSetView() {
- return associationSetView;
- }
-
- @Override
- public void clean() {
- super.clean();
- entitySetView = null;
- associationSetView = null;
- currentEntityContainer = null;
- consistentEntityContainerList = null;
- }
-
- private class JPAEdmEntityContainerBuilder implements JPAEdmBuilder {
- /*
- *
- * Each call to build method creates a new Entity Container and builds
- * the entity container with Association Sets and Entity Sets. The newly
- * created and built entity container is added to the exiting Entity
- * Container List.
- *
- * ************************************************************ Build
- * EDM Entity Container - STEPS
- * ************************************************************ 1)
- * Instantiate New EDM Entity Container 2) Build Name for EDM Entity
- * Container 2) Create Entity Container List (if does not exists) 3)
- * Build EDM Entity Set 4) Add EDM Entity Set to EDM Entity Container 6)
- * Build EDM Association Set 7) Add EDM Association Set to EDM Entity
- * Container 8) Add EDM Entity Container to the Container List
- * ************************************************************ Build
- * EDM Entity Container - STEPS
- * ************************************************************
- */
- @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);
- if (schemaView.getJPAEdmExtension() != null) {
- JPAEdmFunctionImportView functionImportView = new JPAEdmFunctionImport(schemaView);
- functionImportView.getBuilder().build();
- if (functionImportView.getConsistentFunctionImportList() != null) {
- currentEntityContainer.setFunctionImports(functionImportView.getConsistentFunctionImportList());
- }
- }
-
- consistentEntityContainerList.add(currentEntityContainer);
- isConsistent = true;
-
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntitySet.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntitySet.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntitySet.java
deleted file mode 100644
index 9e5248f..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntitySet.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.FullQualifiedName;
-import org.apache.olingo.odata2.api.edm.provider.EntitySet;
-import org.apache.olingo.odata2.api.edm.provider.EntityType;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntitySetView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmEntitySet extends JPAEdmBaseViewImpl implements JPAEdmEntitySetView {
-
- private EntitySet currentEntitySet = null;
- private List<EntitySet> consistentEntitySetList = null;
- private JPAEdmEntityTypeView entityTypeView = null;
- private JPAEdmSchemaView schemaView;
-
- public JPAEdmEntitySet(final JPAEdmSchemaView view) {
- super(view);
- schemaView = view;
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmEntitySetBuilder();
- }
-
- return builder;
- }
-
- @Override
- public EntitySet getEdmEntitySet() {
- return currentEntitySet;
- }
-
- @Override
- public List<EntitySet> getConsistentEdmEntitySetList() {
- return consistentEntitySetList;
- }
-
- @Override
- public JPAEdmEntityTypeView getJPAEdmEntityTypeView() {
- return entityTypeView;
- }
-
- @Override
- public void clean() {
- currentEntitySet = null;
- consistentEntitySetList = null;
- entityTypeView = null;
- isConsistent = false;
- }
-
- private class JPAEdmEntitySetBuilder implements JPAEdmBuilder {
-
- @Override
- public void build() throws ODataJPAModelException, ODataJPARuntimeException {
-
- if (consistentEntitySetList == null) {
- consistentEntitySetList = new ArrayList<EntitySet>();
- }
-
- entityTypeView = new JPAEdmEntityType(schemaView);
- entityTypeView.getBuilder().build();
-
- if (entityTypeView.isConsistent() && entityTypeView.getConsistentEdmEntityTypes() != null) {
-
- String nameSpace = schemaView.getEdmSchema().getNamespace();
- for (EntityType entityType : entityTypeView.getConsistentEdmEntityTypes()) {
-
- currentEntitySet = new EntitySet();
- currentEntitySet.setEntityType(new FullQualifiedName(nameSpace, entityType.getName()));
- JPAEdmNameBuilder.build(JPAEdmEntitySet.this, entityTypeView);
- consistentEntitySetList.add(currentEntitySet);
-
- }
- isConsistent = true;
- } else {
- isConsistent = false;
- return;
- }
-
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityType.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityType.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityType.java
deleted file mode 100644
index 5864a1c..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmEntityType.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Set;
-
-import org.apache.olingo.odata2.api.edm.provider.EntityType;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmMappingModelAccess;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmKeyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmNavigationPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmEntityType extends JPAEdmBaseViewImpl implements JPAEdmEntityTypeView {
-
- private JPAEdmSchemaView schemaView = null;
- private EntityType currentEdmEntityType = null;
- private javax.persistence.metamodel.EntityType<?> currentJPAEntityType = null;
- private EntityTypeList<EntityType> consistentEntityTypes = null;
-
- private HashMap<String, EntityType> consistentEntityTypeMap;
-
- public JPAEdmEntityType(final JPAEdmSchemaView view) {
- super(view);
- schemaView = view;
- consistentEntityTypeMap = new HashMap<String, EntityType>();
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmEntityTypeBuilder();
- }
-
- return builder;
- }
-
- @Override
- public EntityType getEdmEntityType() {
- return currentEdmEntityType;
- }
-
- @Override
- public javax.persistence.metamodel.EntityType<?> getJPAEntityType() {
- return currentJPAEntityType;
- }
-
- @Override
- public List<EntityType> getConsistentEdmEntityTypes() {
- return consistentEntityTypes;
- }
-
- @Override
- public EntityType searchEdmEntityType(final String jpaEntityTypeName) {
- return consistentEntityTypeMap.get(jpaEntityTypeName);
- }
-
- private class JPAEdmEntityTypeBuilder implements JPAEdmBuilder {
-
- @Override
- public void build() throws ODataJPAModelException, ODataJPARuntimeException {
-
- Set<javax.persistence.metamodel.EntityType<?>> jpaEntityTypes = metaModel.getEntities();
-
- if (jpaEntityTypes == null || jpaEntityTypes.isEmpty() == true) {
- return;
- } else if (consistentEntityTypes == null) {
- consistentEntityTypes = new EntityTypeList<EntityType>();
-
- }
-
- for (javax.persistence.metamodel.EntityType<?> jpaEntityType : jpaEntityTypes) {
- currentEdmEntityType = new EntityType();
- currentJPAEntityType = jpaEntityType;
-
- // Check for need to Exclude
- if (isExcluded(JPAEdmEntityType.this)) {
- continue;
- }
-
- JPAEdmNameBuilder.build(JPAEdmEntityType.this);
-
- JPAEdmPropertyView propertyView = new JPAEdmProperty(schemaView);
- propertyView.getBuilder().build();
-
- currentEdmEntityType.setProperties(propertyView.getEdmPropertyList());
- if (propertyView.getJPAEdmNavigationPropertyView() != null) {
- JPAEdmNavigationPropertyView navPropView = propertyView.getJPAEdmNavigationPropertyView();
- if (navPropView.getConsistentEdmNavigationProperties() != null
- && !navPropView.getConsistentEdmNavigationProperties().isEmpty()) {
- currentEdmEntityType.setNavigationProperties(navPropView.getConsistentEdmNavigationProperties());
- }
- }
- JPAEdmKeyView keyView = propertyView.getJPAEdmKeyView();
- currentEdmEntityType.setKey(keyView.getEdmKey());
-
- consistentEntityTypes.add(currentEdmEntityType);
- consistentEntityTypeMap.put(currentJPAEntityType.getName(), currentEdmEntityType);
- }
-
- }
-
- private boolean isExcluded(final JPAEdmEntityType jpaEdmEntityType) {
- JPAEdmMappingModelAccess mappingModelAccess = jpaEdmEntityType.getJPAEdmMappingModelAccess();
- if (mappingModelAccess != null && mappingModelAccess.isMappingModelExists()
- && mappingModelAccess.checkExclusionOfJPAEntityType(jpaEdmEntityType.getJPAEntityType().getName())) {
- return true;
- }
- return false;
- }
-
- }
-
- private class EntityTypeList<X> extends ArrayList<EntityType> {
-
- /**
- *
- */
- private static final long serialVersionUID = 719079109608251592L;
-
- @Override
- public Iterator<EntityType> iterator() {
- return new EntityTypeListIterator<X>(size());
- }
-
- }
-
- private class EntityTypeListIterator<E> implements ListIterator<EntityType> {
-
- private int size = 0;
- private int pos = 0;
-
- public EntityTypeListIterator(final int listSize) {
- this.size = listSize;
- }
-
- @Override
- public void add(final EntityType e) {
- consistentEntityTypes.add(e);
- size++;
- }
-
- @Override
- public boolean hasNext() {
- if (pos < size) {
- return true;
- }
-
- return false;
- }
-
- @Override
- public boolean hasPrevious() {
- if (pos > 0) {
- return true;
- }
- return false;
- }
-
- @Override
- public EntityType next() {
- if (pos < size) {
- currentEdmEntityType = consistentEntityTypes.get(pos++);
- return currentEdmEntityType;
- }
-
- return null;
- }
-
- @Override
- public int nextIndex() {
- return pos;
- }
-
- @Override
- public EntityType previous() {
- if (pos > 0 && pos < size) {
- currentEdmEntityType = consistentEntityTypes.get(--pos);
- return currentEdmEntityType;
- }
- return null;
- }
-
- @Override
- public int previousIndex() {
- if (pos > 0) {
- return pos - 1;
- }
-
- return 0;
- }
-
- @Override
- public void remove() {
- consistentEntityTypes.remove(pos);
- }
-
- @Override
- public void set(final EntityType e) {
- consistentEntityTypes.set(pos, e);
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFacets.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFacets.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFacets.java
deleted file mode 100644
index 61f984f..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFacets.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.lang.reflect.AnnotatedElement;
-
-import javax.persistence.Column;
-import javax.persistence.metamodel.Attribute;
-
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
-import org.apache.olingo.odata2.api.edm.provider.Facets;
-import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
-
-public class JPAEdmFacets {
- public static void setFacets(final Attribute<?, ?> jpaAttribute, final SimpleProperty edmProperty) {
- EdmSimpleTypeKind edmTypeKind = edmProperty.getType();
- Facets facets = new Facets();
- edmProperty.setFacets(facets);
-
- Column column = null;
- if (jpaAttribute.getJavaMember() instanceof AnnotatedElement) {
- column = ((AnnotatedElement) jpaAttribute
- .getJavaMember()).getAnnotation(Column.class);
- }
-
- if (column == null) {
- return;
- }
-
- setNullable(column, edmProperty);
-
- switch (edmTypeKind) {
- case Binary:
- setMaxLength(column, edmProperty);
- break;
- case DateTime:
- setPrecision(column, edmProperty);
- break;
- case DateTimeOffset:
- setPrecision(column, edmProperty);
- break;
- case Time:
- setPrecision(column, edmProperty);
- break;
- case Decimal:
- setPrecision(column, edmProperty);
- setScale(column, edmProperty);
- break;
- case String:
- setMaxLength(column, edmProperty);
- break;
- default:
- break;
- }
- }
-
- private static void setNullable(final Column column, final SimpleProperty edmProperty) {
- ((Facets) edmProperty.getFacets()).setNullable(column.nullable());
- }
-
- private static void setMaxLength(final Column column, final SimpleProperty edmProperty) {
- if (column.length() > 0) {
- ((Facets) edmProperty.getFacets()).setMaxLength(column.length());
- }
- }
-
- private static void setPrecision(final Column column, final SimpleProperty edmProperty) {
- if (column.precision() > 0) {
- ((Facets) edmProperty.getFacets()).setPrecision(column.precision());
- }
- }
-
- private static void setScale(final Column column, final SimpleProperty edmProperty) {
- if (column.scale() > 0) {
- ((Facets) edmProperty.getFacets()).setScale(column.scale());
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFunctionImport.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFunctionImport.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFunctionImport.java
deleted file mode 100644
index b64f61c..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmFunctionImport.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.annotation.edm.EdmFunctionImport;
-import org.apache.olingo.odata2.api.annotation.edm.EdmFunctionImport.ReturnType;
-import org.apache.olingo.odata2.api.annotation.edm.EdmFunctionImportParameter;
-import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
-import org.apache.olingo.odata2.api.edm.provider.ComplexType;
-import org.apache.olingo.odata2.api.edm.provider.EntityType;
-import org.apache.olingo.odata2.api.edm.provider.Facets;
-import org.apache.olingo.odata2.api.edm.provider.FunctionImport;
-import org.apache.olingo.odata2.api.edm.provider.FunctionImportParameter;
-import org.apache.olingo.odata2.api.edm.provider.Mapping;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmComplexTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmFunctionImportView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmMapping;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPATypeConvertor;
-
-public class JPAEdmFunctionImport extends JPAEdmBaseViewImpl implements JPAEdmFunctionImportView {
-
- private List<FunctionImport> consistentFunctionImportList = new ArrayList<FunctionImport>();
- private JPAEdmBuilder builder = null;
- private JPAEdmSchemaView schemaView;
-
- public JPAEdmFunctionImport(final JPAEdmSchemaView view) {
- super(view);
- schemaView = view;
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmFunctionImportBuilder();
- }
- return builder;
- }
-
- @Override
- public List<FunctionImport> getConsistentFunctionImportList() {
- return consistentFunctionImportList;
- }
-
- protected class JPAEdmFunctionImportBuilder implements JPAEdmBuilder {
-
- private JPAEdmEntityTypeView jpaEdmEntityTypeView = null;
- private JPAEdmComplexTypeView jpaEdmComplexTypeView = null;
- @SuppressWarnings("deprecation")
- private _JPAEdmFunctionImportBuilder builderDeprecated = new _JPAEdmFunctionImportBuilder();
-
- @SuppressWarnings("deprecation")
- @Override
- public void build() throws ODataJPAModelException, ODataJPARuntimeException {
-
- HashMap<Class<?>, String[]> customOperations = schemaView.getRegisteredOperations();
-
- jpaEdmEntityTypeView =
- schemaView.getJPAEdmEntityContainerView().getJPAEdmEntitySetView().getJPAEdmEntityTypeView();
- jpaEdmComplexTypeView = schemaView.getJPAEdmComplexTypeView();
-
- if (customOperations != null) {
- // Initialize deprecated Builder
- builderDeprecated.setJPAEdmComplexTypeView(jpaEdmComplexTypeView);
- builderDeprecated.setJPAEdmEntityTypeView(jpaEdmEntityTypeView);
- builderDeprecated.setSchemaView(schemaView);
-
- for (Class<?> clazz : customOperations.keySet()) {
-
- String[] operationNames = customOperations.get(clazz);
- Method[] methods = clazz.getMethods();
- Method method = null;
-
- int length = 0;
- if (operationNames != null) {
- length = operationNames.length;
- } else {
- length = methods.length;
- }
-
- boolean found = false;
- for (int i = 0; i < length; i++) {
-
- try {
- if (operationNames != null) {
- for (Method method2 : methods) {
- if (method2.getName().equals(operationNames[i])) {
- found = true;
- method = method2;
- break;
- }
- }
- if (found == true) {
- found = false;
- } else {
- continue;
- }
- } else {
- method = methods[i];
- }
-
- FunctionImport functionImport = buildFunctionImport(method);
- if (functionImport != null) {
- consistentFunctionImportList.add(functionImport);
- }
-
- } catch (SecurityException e) {
- throw ODataJPAModelException.throwException(ODataJPAModelException.GENERAL, e);
- }
- }
- }
- }
- }
-
- @SuppressWarnings("deprecation")
- private FunctionImport buildFunctionImport(final Method method) throws ODataJPAModelException {
-
- EdmFunctionImport edmAnnotationFunctionImport = method.getAnnotation(EdmFunctionImport.class);
- if (edmAnnotationFunctionImport != null && edmAnnotationFunctionImport.returnType() != null) {
- return buildEdmFunctionImport(method, edmAnnotationFunctionImport);
- }
-
- org.apache.olingo.odata2.api.annotation.edm.FunctionImport annotation =
- method.getAnnotation(org.apache.olingo.odata2.api.annotation.edm.FunctionImport.class);
-
- if (annotation != null) {
- FunctionImport functionImport = builderDeprecated.buildFunctionImport(method, annotation);
-
- return functionImport;
- }
- return null;
- }
-
- private FunctionImport buildEdmFunctionImport(final Method method,
- final EdmFunctionImport edmAnnotationFunctionImport)
- throws ODataJPAModelException {
- if (edmAnnotationFunctionImport != null && edmAnnotationFunctionImport.returnType() != null) {
- FunctionImport functionImport = new FunctionImport();
-
- if (edmAnnotationFunctionImport.name().equals("")) {
- functionImport.setName(method.getName());
- } else {
- functionImport.setName(edmAnnotationFunctionImport.name());
- }
-
- JPAEdmMapping mapping = new JPAEdmMappingImpl();
- ((Mapping) mapping).setInternalName(method.getName());
- mapping.setJPAType(method.getDeclaringClass());
- functionImport.setMapping((Mapping) mapping);
-
- functionImport.setHttpMethod(edmAnnotationFunctionImport.httpMethod().name().toString());
-
- buildEdmReturnType(functionImport, method, edmAnnotationFunctionImport);
- buildEdmParameter(functionImport, method);
-
- return functionImport;
- }
- return null;
- }
-
- private void buildEdmParameter(final FunctionImport functionImport, final Method method)
- throws ODataJPAModelException {
- Annotation[][] annotations = method.getParameterAnnotations();
- Class<?>[] parameterTypes = method.getParameterTypes();
- List<FunctionImportParameter> funcImpList = new ArrayList<FunctionImportParameter>();
- JPAEdmMapping mapping = null;
- int j = 0;
- for (Annotation[] annotationArr : annotations) {
- Class<?> parameterType = parameterTypes[j++];
-
- for (Annotation element : annotationArr) {
- if (element instanceof EdmFunctionImportParameter) {
- EdmFunctionImportParameter annotation = (EdmFunctionImportParameter) element;
- FunctionImportParameter functionImportParameter = new FunctionImportParameter();
- if (annotation.name().equals("")) {
- throw ODataJPAModelException.throwException(ODataJPAModelException.FUNC_PARAM_NAME_EXP.addContent(method
- .getDeclaringClass().getName(), method.getName()), null);
- } else {
- functionImportParameter.setName(annotation.name());
- }
-
- functionImportParameter.setType(JPATypeConvertor.convertToEdmSimpleType(parameterType, null));
-
- Facets facets = new Facets();
- if (annotation.facets().maxLength() > 0) {
- facets.setMaxLength(annotation.facets().maxLength());
- }
- if (annotation.facets().nullable() == false) {
- facets.setNullable(false);
- } else {
- facets.setNullable(true);
- }
-
- if (annotation.facets().precision() > 0) {
- facets.setPrecision(annotation.facets().precision());
- }
- if (annotation.facets().scale() >= 0) {
- facets.setScale(annotation.facets().scale());
- }
-
- functionImportParameter.setFacets(facets);
- mapping = new JPAEdmMappingImpl();
- mapping.setJPAType(parameterType);
- functionImportParameter.setMapping((Mapping) mapping);
- funcImpList.add(functionImportParameter);
- }
- }
- }
- if (!funcImpList.isEmpty()) {
- functionImport.setParameters(funcImpList);
- }
- }
-
- private void buildEdmReturnType(final FunctionImport functionImport, final Method method,
- final EdmFunctionImport edmAnnotationFunctionImport) throws ODataJPAModelException {
- ReturnType returnType = edmAnnotationFunctionImport.returnType();
-
- if (returnType != null) {
- org.apache.olingo.odata2.api.edm.provider.ReturnType functionReturnType =
- new org.apache.olingo.odata2.api.edm.provider.ReturnType();
-
- if (returnType.isCollection()) {
- functionReturnType.setMultiplicity(EdmMultiplicity.MANY);
- } else {
- functionReturnType.setMultiplicity(EdmMultiplicity.ONE);
- }
-
- if (returnType.type() == ReturnType.Type.ENTITY) {
- String entitySet = edmAnnotationFunctionImport.entitySet();
- if (entitySet.equals("")) {
- throw ODataJPAModelException.throwException(ODataJPAModelException.FUNC_ENTITYSET_EXP, null);
- }
- functionImport.setEntitySet(entitySet);
- }
-
- Class<?> methodReturnType = method.getReturnType();
- if (methodReturnType == null || methodReturnType.getName().equals("void")) {
- throw ODataJPAModelException.throwException(ODataJPAModelException.FUNC_RETURN_TYPE_EXP.addContent(method
- .getDeclaringClass(), method.getName()), null);
- }
- switch (returnType.type()) {
- case ENTITY:
- EntityType edmEntityType = null;
- if (returnType.isCollection() == false) {
- edmEntityType = jpaEdmEntityTypeView.searchEdmEntityType(methodReturnType.getSimpleName());
- } else {
- edmEntityType = jpaEdmEntityTypeView.searchEdmEntityType(getReturnTypeSimpleName(method));
- }
-
- if (edmEntityType == null) {
- throw ODataJPAModelException.throwException(ODataJPAModelException.FUNC_RETURN_TYPE_ENTITY_NOT_FOUND
- .addContent(method.getDeclaringClass(), method.getName(), methodReturnType.getSimpleName()), null);
- }
- functionReturnType.setTypeName(JPAEdmNameBuilder.build(schemaView, edmEntityType.getName()));
- break;
- case SIMPLE:
- EdmSimpleTypeKind edmSimpleTypeKind = JPATypeConvertor.convertToEdmSimpleType(methodReturnType, null);
- functionReturnType.setTypeName(edmSimpleTypeKind.getFullQualifiedName());
-
- break;
- case COMPLEX:
- ComplexType complexType = null;
- if (returnType.isCollection() == false) {
- complexType = jpaEdmComplexTypeView.searchEdmComplexType(methodReturnType.getName());
- } else {
- complexType = jpaEdmComplexTypeView.searchEdmComplexType(getReturnTypeName(method));
- }
- if (complexType == null) {
- throw ODataJPAModelException.throwException(ODataJPAModelException.FUNC_RETURN_TYPE_ENTITY_NOT_FOUND
- .addContent(method.getDeclaringClass(), method.getName(), methodReturnType.getSimpleName()), null);
- }
- functionReturnType.setTypeName(JPAEdmNameBuilder.build(schemaView, complexType.getName()));
- break;
- default:
- break;
- }
- functionImport.setReturnType(functionReturnType);
- }
- }
-
- private String getReturnTypeName(final Method method) {
- try {
- ParameterizedType pt = (ParameterizedType) method.getGenericReturnType();
- Type t = pt.getActualTypeArguments()[0];
- return ((Class<?>) t).getName();
- } catch (ClassCastException e) {
- return method.getReturnType().getName();
- }
- }
-
- private String getReturnTypeSimpleName(final Method method) {
- try {
- ParameterizedType pt = (ParameterizedType) method.getGenericReturnType();
- Type t = pt.getActualTypeArguments()[0];
- return ((Class<?>) t).getSimpleName();
- } catch (ClassCastException e) {
- return method.getReturnType().getSimpleName();
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmKey.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmKey.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmKey.java
deleted file mode 100644
index 15cd26e..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmKey.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.provider.ComplexProperty;
-import org.apache.olingo.odata2.api.edm.provider.ComplexType;
-import org.apache.olingo.odata2.api.edm.provider.Facets;
-import org.apache.olingo.odata2.api.edm.provider.Key;
-import org.apache.olingo.odata2.api.edm.provider.Property;
-import org.apache.olingo.odata2.api.edm.provider.PropertyRef;
-import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmComplexTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmKeyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView;
-
-public class JPAEdmKey extends JPAEdmBaseViewImpl implements JPAEdmKeyView {
-
- private JPAEdmPropertyView propertyView;
- private JPAEdmComplexTypeView complexTypeView = null;
- private boolean isBuildModeComplexType = false;
- private Key key;
-
- public JPAEdmKey(final JPAEdmProperty view) {
- super(view);
- propertyView = view;
- }
-
- public JPAEdmKey(final JPAEdmComplexTypeView complexTypeView, final JPAEdmPropertyView propertyView) {
- super(complexTypeView);
- this.propertyView = propertyView;
- this.complexTypeView = complexTypeView;
- isBuildModeComplexType = true;
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmKeyBuider();
- }
-
- return builder;
- }
-
- @Override
- public Key getEdmKey() {
- return key;
- }
-
- private class JPAEdmKeyBuider implements JPAEdmBuilder {
-
- @Override
- public void build() throws ODataJPAModelException {
-
- List<PropertyRef> propertyRefList = null;
- if (key == null) {
- key = new Key();
- }
-
- if (key.getKeys() == null) {
- propertyRefList = new ArrayList<PropertyRef>();
- key.setKeys(propertyRefList);
- } else {
- propertyRefList = key.getKeys();
- }
-
- if (isBuildModeComplexType) {
- ComplexType complexType =
- complexTypeView.searchEdmComplexType(propertyView.getJPAAttribute().getJavaType().getName());
- normalizeComplexKey(complexType, propertyRefList);
- } else {
- PropertyRef propertyRef = new PropertyRef();
- propertyRef.setName(propertyView.getEdmSimpleProperty().getName());
- Facets facets = (Facets) propertyView.getEdmSimpleProperty().getFacets();
- if (facets == null) {
- propertyView.getEdmSimpleProperty().setFacets(new Facets().setNullable(false));
- } else {
- facets.setNullable(false);
- }
- propertyRefList.add(propertyRef);
- }
-
- }
-
- // TODO think how to stop the recursion if A includes B and B includes A!!!!!!
- public void normalizeComplexKey(final ComplexType complexType, final List<PropertyRef> propertyRefList) {
- for (Property property : complexType.getProperties()) {
- try {
-
- SimpleProperty simpleProperty = (SimpleProperty) property;
- Facets facets = (Facets) simpleProperty.getFacets();
- if (facets == null) {
- simpleProperty.setFacets(new Facets().setNullable(false));
- } else {
- facets.setNullable(false);
- }
- PropertyRef propertyRef = new PropertyRef();
- propertyRef.setName(simpleProperty.getName());
- propertyRefList.add(propertyRef);
-
- } catch (ClassCastException e) {
- ComplexProperty complexProperty = (ComplexProperty) property;
- normalizeComplexKey(complexTypeView.searchEdmComplexType(complexProperty.getType()), propertyRefList);
- }
-
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmMappingImpl.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmMappingImpl.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmMappingImpl.java
deleted file mode 100644
index 99d9f5f..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmMappingImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import org.apache.olingo.odata2.api.edm.provider.Mapping;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmMapping;
-
-public class JPAEdmMappingImpl extends Mapping implements JPAEdmMapping {
-
- private String columnName = null;
- private Class<?> type = null;
-
- @Override
- public void setJPAColumnName(final String name) {
- columnName = name;
-
- }
-
- @Override
- public String getJPAColumnName() {
- return columnName;
- }
-
- @Override
- public void setJPAType(final Class<?> type) {
- this.type = type;
-
- }
-
- @Override
- public Class<?> getJPAType() {
- return type;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmModel.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmModel.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmModel.java
deleted file mode 100644
index fac5614..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmModel.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import javax.persistence.metamodel.Metamodel;
-
-import org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmModelView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-
-public class JPAEdmModel extends JPAEdmBaseViewImpl implements JPAEdmModelView {
-
- protected JPAEdmSchemaView schemaView;
-
- public JPAEdmModel(final Metamodel metaModel, final String pUnitName) {
- super(metaModel, pUnitName);
- }
-
- public JPAEdmModel(final ODataJPAContext ctx) {
- super(ctx);
- }
-
- @Override
- public JPAEdmSchemaView getEdmSchemaView() {
- return schemaView;
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmModelBuilder();
- }
-
- return builder;
- }
-
- private class JPAEdmModelBuilder implements JPAEdmBuilder {
-
- @Override
- public void build() throws ODataJPAModelException, ODataJPARuntimeException {
- schemaView = new JPAEdmSchema(JPAEdmModel.this);
- schemaView.getBuilder().build();
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmNavigationProperty.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmNavigationProperty.java
deleted file mode 100644
index 4757c9a..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmNavigationProperty.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.provider.NavigationProperty;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmNavigationPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-
-public class JPAEdmNavigationProperty extends JPAEdmBaseViewImpl implements JPAEdmNavigationPropertyView {
-
- private JPAEdmAssociationView associationView = null;
- private NavigationProperty currentNavigationProperty = null;
- private JPAEdmPropertyView propertyView = null;
- private List<NavigationProperty> consistentNavigationProperties = null;
- private int count;
-
- public JPAEdmNavigationProperty(final JPAEdmAssociationView associationView, final JPAEdmPropertyView propertyView,
- final int countNumber) {
- super(associationView);
- this.associationView = associationView;
- this.propertyView = propertyView;
- count = countNumber;
- if (consistentNavigationProperties == null) {
- consistentNavigationProperties = new ArrayList<NavigationProperty>();
- }
- }
-
- public JPAEdmNavigationProperty(final JPAEdmSchemaView schemaView) {
- super(schemaView);
- consistentNavigationProperties = new ArrayList<NavigationProperty>();
-
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmNavigationPropertyBuilder();
- }
-
- return builder;
- }
-
- private class JPAEdmNavigationPropertyBuilder implements JPAEdmBuilder {
-
- @Override
- public void build() throws ODataJPAModelException {
-
- currentNavigationProperty = new NavigationProperty();
- JPAEdmNameBuilder.build(associationView, propertyView, JPAEdmNavigationProperty.this, skipDefaultNaming, count);
- consistentNavigationProperties.add(currentNavigationProperty);
- }
-
- }
-
- @Override
- public NavigationProperty getEdmNavigationProperty() {
- return currentNavigationProperty;
- }
-
- @Override
- public List<NavigationProperty> getConsistentEdmNavigationProperties() {
- return consistentNavigationProperties;
- }
-
- @Override
- public void addJPAEdmNavigationPropertyView(final JPAEdmNavigationPropertyView view) {
- if (view != null && view.isConsistent()) {
- currentNavigationProperty = view.getEdmNavigationProperty();
- consistentNavigationProperties.add(currentNavigationProperty);
-
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/1b479e6c/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmProperty.java
----------------------------------------------------------------------
diff --git a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmProperty.java b/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmProperty.java
deleted file mode 100644
index b34a71d..0000000
--- a/odata2-processor-jpa/jpa-core/src/main/java/org/apache/olingo/odata2/processor/core/jpa/model/JPAEdmProperty.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata2.processor.core.jpa.model;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.Attribute.PersistentAttributeType;
-import javax.persistence.metamodel.PluralAttribute;
-import javax.persistence.metamodel.SingularAttribute;
-
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
-import org.apache.olingo.odata2.api.edm.FullQualifiedName;
-import org.apache.olingo.odata2.api.edm.provider.ComplexProperty;
-import org.apache.olingo.odata2.api.edm.provider.ComplexType;
-import org.apache.olingo.odata2.api.edm.provider.Property;
-import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmBuilder;
-import org.apache.olingo.odata2.processor.api.jpa.access.JPAEdmMappingModelAccess;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationEndView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmAssociationView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmComplexPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmComplexTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmEntityTypeView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmKeyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmNavigationPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmPropertyView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmReferentialConstraintView;
-import org.apache.olingo.odata2.processor.api.jpa.model.JPAEdmSchemaView;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPAEdmNameBuilder;
-import org.apache.olingo.odata2.processor.core.jpa.access.model.JPATypeConvertor;
-
-public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
- JPAEdmPropertyView, JPAEdmComplexPropertyView {
-
- private JPAEdmSchemaView schemaView;
- private JPAEdmEntityTypeView entityTypeView;
- private JPAEdmComplexTypeView complexTypeView;
- private JPAEdmNavigationPropertyView navigationPropertyView = null;
-
- private JPAEdmKeyView keyView;
- private List<Property> properties;
- private SimpleProperty currentSimpleProperty = null;
- private ComplexProperty currentComplexProperty = null;
- private Attribute<?, ?> currentAttribute;
- private boolean isBuildModeComplexType;
- private Map<String, Integer> associationCount;
-
- public JPAEdmProperty(final JPAEdmSchemaView view) {
- super(view);
- schemaView = view;
- entityTypeView = schemaView.getJPAEdmEntityContainerView()
- .getJPAEdmEntitySetView().getJPAEdmEntityTypeView();
- complexTypeView = schemaView.getJPAEdmComplexTypeView();
- navigationPropertyView = new JPAEdmNavigationProperty(schemaView);
- isBuildModeComplexType = false;
- associationCount = new HashMap<String, Integer>();
- }
-
- public JPAEdmProperty(final JPAEdmSchemaView schemaView,
- final JPAEdmComplexTypeView view) {
- super(view);
- this.schemaView = schemaView;
- complexTypeView = view;
- isBuildModeComplexType = true;
- }
-
- @Override
- public JPAEdmBuilder getBuilder() {
- if (builder == null) {
- builder = new JPAEdmPropertyBuilder();
- }
-
- return builder;
- }
-
- @Override
- public List<Property> getEdmPropertyList() {
- return properties;
- }
-
- @Override
- public JPAEdmKeyView getJPAEdmKeyView() {
- return keyView;
- }
-
- @Override
- public SimpleProperty getEdmSimpleProperty() {
- return currentSimpleProperty;
- }
-
- @Override
- public Attribute<?, ?> getJPAAttribute() {
- return currentAttribute;
- }
-
- @Override
- public ComplexProperty getEdmComplexProperty() {
- return currentComplexProperty;
- }
-
- @Override
- public JPAEdmNavigationPropertyView getJPAEdmNavigationPropertyView() {
- return navigationPropertyView;
- }
-
- private class JPAEdmPropertyBuilder implements JPAEdmBuilder {
- /*
- *
- * Each call to build method creates a new EDM Property List.
- * The Property List can be created either by an Entity type or
- * ComplexType. The flag isBuildModeComplexType tells if the
- * Properties are built for complex type or for Entity Type.
- *
- * While Building Properties Associations are built. However
- * the associations thus built does not contain Referential
- * constraint. Associations thus built only contains
- * information about Referential constraints. Adding of
- * referential constraints to Associations is the taken care
- * by Schema.
- *
- * Building Properties is divided into four parts
- * A) Building Simple Properties
- * B) Building Complex Properties
- * C) Building Associations
- * D) Building Navigation Properties
- *
- * ************************************************************
- * Build EDM Schema - STEPS
- * ************************************************************
- * A) Building Simple Properties:
- *
- * 1) Fetch JPA Attribute List from
- * A) Complex Type
- * B) Entity Type
- * depending on isBuildModeComplexType.
- * B) Building Complex Properties
- * C) Building Associations
- * D) Building Navigation Properties
- *
- * ************************************************************
- * Build EDM Schema - STEPS
- * ************************************************************
- */
- @Override
- public void build() throws ODataJPAModelException, ODataJPARuntimeException {
-
- JPAEdmBuilder keyViewBuilder = null;
-
- properties = new ArrayList<Property>();
-
- List<Attribute<?, ?>> jpaAttributes = null;
- String currentEntityName = null;
- String targetEntityName = null;
- String entityTypeName = null;
- if (isBuildModeComplexType) {
- jpaAttributes = sortInAscendingOrder(complexTypeView.getJPAEmbeddableType()
- .getAttributes());
- entityTypeName = complexTypeView.getJPAEmbeddableType().getJavaType()
- .getSimpleName();
- } else {
- jpaAttributes = sortInAscendingOrder(entityTypeView.getJPAEntityType()
- .getAttributes());
- entityTypeName = entityTypeView.getJPAEntityType().getName();
- }
-
- for (Object jpaAttribute : jpaAttributes) {
- currentAttribute = (Attribute<?, ?>) jpaAttribute;
-
- // Check for need to Exclude
- if (isExcluded((JPAEdmPropertyView) JPAEdmProperty.this, entityTypeName, currentAttribute.getName())) {
- continue;
- }
-
- PersistentAttributeType attributeType = currentAttribute
- .getPersistentAttributeType();
-
- switch (attributeType) {
- case BASIC:
-
- currentSimpleProperty = new SimpleProperty();
- JPAEdmNameBuilder
- .build((JPAEdmPropertyView) JPAEdmProperty.this, isBuildModeComplexType, skipDefaultNaming);
-
- EdmSimpleTypeKind simpleTypeKind = JPATypeConvertor
- .convertToEdmSimpleType(currentAttribute
- .getJavaType(), currentAttribute);
-
- currentSimpleProperty.setType(simpleTypeKind);
- JPAEdmFacets.setFacets(currentAttribute, currentSimpleProperty);
-
- properties.add(currentSimpleProperty);
-
- if (((SingularAttribute<?, ?>) currentAttribute).isId()) {
- if (keyView == null) {
- keyView = new JPAEdmKey(JPAEdmProperty.this);
- keyViewBuilder = keyView.getBuilder();
- }
-
- keyViewBuilder.build();
- }
-
- break;
- case EMBEDDED:
- ComplexType complexType = complexTypeView
- .searchEdmComplexType(currentAttribute.getJavaType().getName());
-
- if (complexType == null) {
- JPAEdmComplexTypeView complexTypeViewLocal = new JPAEdmComplexType(
- schemaView, currentAttribute);
- complexTypeViewLocal.getBuilder().build();
- complexType = complexTypeViewLocal.getEdmComplexType();
- complexTypeView.addJPAEdmCompleTypeView(complexTypeViewLocal);
-
- }
-
- if (isBuildModeComplexType == false
- && entityTypeView.getJPAEntityType().getIdType()
- .getJavaType()
- .equals(currentAttribute.getJavaType())) {
-
- if (keyView == null) {
- keyView = new JPAEdmKey(complexTypeView,
- JPAEdmProperty.this);
- }
- keyView.getBuilder().build();
- complexTypeView.expandEdmComplexType(complexType, properties, currentAttribute.getName());
- } else {
- currentComplexProperty = new ComplexProperty();
- if (isBuildModeComplexType) {
- JPAEdmNameBuilder
- .build((JPAEdmComplexPropertyView) JPAEdmProperty.this,
- complexTypeView.getJPAEmbeddableType().getJavaType().getSimpleName());
- } else {
- JPAEdmNameBuilder
- .build((JPAEdmComplexPropertyView) JPAEdmProperty.this,
- JPAEdmProperty.this, skipDefaultNaming);
- }
- currentComplexProperty.setType(new FullQualifiedName(
- schemaView.getEdmSchema().getNamespace(),
- complexType.getName()));
-
- properties.add(currentComplexProperty);
- List<String> nonKeyComplexTypes = schemaView.getNonKeyComplexTypeList();
- if (!nonKeyComplexTypes.contains(currentComplexProperty.getType().getName()))
- {
- schemaView.addNonKeyComplexName(currentComplexProperty.getType().getName());
- }
- }
-
- break;
- case MANY_TO_MANY:
- case ONE_TO_MANY:
- case ONE_TO_ONE:
- case MANY_TO_ONE:
-
- JPAEdmAssociationEndView associationEndView = new JPAEdmAssociationEnd(entityTypeView, JPAEdmProperty.this);
- associationEndView.getBuilder().build();
- JPAEdmAssociationView associationView = schemaView.getJPAEdmAssociationView();
- if (associationView.searchAssociation(associationEndView) == null) {
- int count = associationView.getNumberOfAssociationsWithSimilarEndPoints(associationEndView);
- JPAEdmAssociationView associationViewLocal =
- new JPAEdmAssociation(associationEndView, entityTypeView, JPAEdmProperty.this, count);
- associationViewLocal.getBuilder().build();
- associationView.addJPAEdmAssociationView(associationViewLocal, associationEndView);
- }
-
- JPAEdmReferentialConstraintView refConstraintView = new JPAEdmReferentialConstraint(
- associationView, entityTypeView, JPAEdmProperty.this);
- refConstraintView.getBuilder().build();
-
- if (refConstraintView.isExists()) {
- associationView.addJPAEdmRefConstraintView(refConstraintView);
- }
-
- if (navigationPropertyView == null) {
- navigationPropertyView = new JPAEdmNavigationProperty(schemaView);
- }
- currentEntityName = entityTypeView.getJPAEntityType().getName();
-
- if (currentAttribute.isCollection()) {
- targetEntityName = ((PluralAttribute<?, ?, ?>) currentAttribute).getElementType().getJavaType()
- .getSimpleName();
- } else {
- targetEntityName = currentAttribute.getJavaType().getSimpleName();
- }
- Integer sequenceNumber = associationCount.get(currentEntityName + targetEntityName);
- if (sequenceNumber == null) {
- sequenceNumber = new Integer(1);
- } else {
- sequenceNumber = new Integer(sequenceNumber.intValue() + 1);
- }
- associationCount.put(currentEntityName + targetEntityName, sequenceNumber);
- JPAEdmNavigationPropertyView localNavigationPropertyView =
- new JPAEdmNavigationProperty(associationView, JPAEdmProperty.this, sequenceNumber.intValue());
- localNavigationPropertyView.getBuilder().build();
- navigationPropertyView.addJPAEdmNavigationPropertyView(localNavigationPropertyView);
- break;
- default:
- break;
- }
- }
-
- }
-
- @SuppressWarnings("rawtypes")
- private List<Attribute<?, ?>> sortInAscendingOrder(final Set<?> jpaAttributes) {
- List<Attribute<?, ?>> jpaAttributeList = new ArrayList<Attribute<?, ?>>();
- Iterator itr = null;
- Attribute<?, ?> smallestJpaAttribute;
- Attribute<?, ?> currentJpaAttribute;
- while (!jpaAttributes.isEmpty()) {
- itr = jpaAttributes.iterator();
- smallestJpaAttribute = (Attribute<?, ?>) itr.next();
- while (itr.hasNext()) {
- currentJpaAttribute = (Attribute<?, ?>) itr.next();
- if (smallestJpaAttribute.getName().compareTo(currentJpaAttribute.getName()) > 0) {
- smallestJpaAttribute = currentJpaAttribute;
- }
- }
- jpaAttributeList.add(smallestJpaAttribute);
- jpaAttributes.remove(smallestJpaAttribute);
- }
- return jpaAttributeList;
- }
- }
-
- @Override
- public JPAEdmEntityTypeView getJPAEdmEntityTypeView() {
- return entityTypeView;
- }
-
- @Override
- public JPAEdmComplexTypeView getJPAEdmComplexTypeView() {
- return complexTypeView;
- }
-
- private boolean isExcluded(final JPAEdmPropertyView jpaEdmPropertyView, final String jpaEntityTypeName,
- final String jpaAttributeName) {
- JPAEdmMappingModelAccess mappingModelAccess = jpaEdmPropertyView
- .getJPAEdmMappingModelAccess();
- boolean isExcluded = false;
- if (mappingModelAccess != null && mappingModelAccess.isMappingModelExists()) {
- // Exclusion of a simple property in a complex type
- if (isBuildModeComplexType
- && mappingModelAccess.checkExclusionOfJPAEmbeddableAttributeType(jpaEntityTypeName, jpaAttributeName)
- // Exclusion of a simple property of an Entity Type
- || (!isBuildModeComplexType && mappingModelAccess.checkExclusionOfJPAAttributeType(jpaEntityTypeName,
- jpaAttributeName))) {
- isExcluded = true;
- }
- }
- return isExcluded;
- }
-}