blob: 2bfd7a70fc401a18431e6d01a46681e7734e5929 [file] [log] [blame]
/*******************************************************************************
* 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.core.uri;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.olingo.odata2.api.commons.InlineCount;
import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
import org.apache.olingo.odata2.api.edm.EdmEntitySet;
import org.apache.olingo.odata2.api.edm.EdmFunctionImport;
import org.apache.olingo.odata2.api.edm.EdmLiteral;
import org.apache.olingo.odata2.api.edm.EdmProperty;
import org.apache.olingo.odata2.api.edm.EdmType;
import org.apache.olingo.odata2.api.uri.KeyPredicate;
import org.apache.olingo.odata2.api.uri.NavigationPropertySegment;
import org.apache.olingo.odata2.api.uri.NavigationSegment;
import org.apache.olingo.odata2.api.uri.SelectItem;
import org.apache.olingo.odata2.api.uri.UriInfo;
import org.apache.olingo.odata2.api.uri.expression.FilterExpression;
import org.apache.olingo.odata2.api.uri.expression.OrderByExpression;
/**
*
*/
public class UriInfoImpl implements UriInfo {
private UriType uriType;
private EdmEntityContainer entityContainer;
private EdmEntitySet startEntitySet;
private EdmEntitySet targetEntitySet;
private EdmFunctionImport functionImport;
private EdmType targetType;
private List<KeyPredicate> keyPredicates = Collections.emptyList();
private List<NavigationSegment> navigationSegments = Collections.emptyList();
private List<EdmProperty> propertyPath = Collections.emptyList();
private boolean count;
private boolean value;
private boolean links;
private String format;
private FilterExpression filter;
private InlineCount inlineCount;
private OrderByExpression orderBy;
private String skipToken;
private Integer skip;
private Integer top;
private List<ArrayList<NavigationPropertySegment>> expand = Collections.emptyList();
private List<SelectItem> select = Collections.emptyList();
private Map<String, EdmLiteral> functionImportParameters = Collections.emptyMap();
private Map<String, String> customQueryOptions = Collections.emptyMap();
public UriType getUriType() {
return uriType;
}
public void setUriType(final UriType uriType) {
this.uriType = uriType;
}
public void setEntityContainer(final EdmEntityContainer entityContainer) {
this.entityContainer = entityContainer;
}
@Override
public EdmEntityContainer getEntityContainer() {
return entityContainer;
}
public void setStartEntitySet(final EdmEntitySet edmEntitySet) {
startEntitySet = edmEntitySet;
}
@Override
public EdmEntitySet getStartEntitySet() {
return startEntitySet;
}
public void setTargetEntitySet(final EdmEntitySet targetEntitySet) {
this.targetEntitySet = targetEntitySet;
}
@Override
public EdmEntitySet getTargetEntitySet() {
return targetEntitySet;
}
public void setFunctionImport(final EdmFunctionImport functionImport) {
this.functionImport = functionImport;
}
@Override
public EdmFunctionImport getFunctionImport() {
return functionImport;
}
public void setTargetType(final EdmType targetType) {
this.targetType = targetType;
}
@Override
public EdmType getTargetType() {
return targetType;
}
public void setKeyPredicates(final List<KeyPredicate> keyPredicates) {
this.keyPredicates = keyPredicates;
}
@Override
public List<KeyPredicate> getKeyPredicates() {
return keyPredicates;
}
@Override
public List<KeyPredicate> getTargetKeyPredicates() {
return navigationSegments.isEmpty() ?
keyPredicates :
navigationSegments.get(navigationSegments.size() - 1).getKeyPredicates();
}
public void addNavigationSegment(final NavigationSegment navigationSegment) {
if (navigationSegments.equals(Collections.EMPTY_LIST)) {
navigationSegments = new ArrayList<NavigationSegment>();
}
navigationSegments.add(navigationSegment);
}
@Override
public List<NavigationSegment> getNavigationSegments() {
return navigationSegments;
}
public void addProperty(final EdmProperty property) {
if (propertyPath.equals(Collections.EMPTY_LIST)) {
propertyPath = new ArrayList<EdmProperty>();
}
propertyPath.add(property);
}
@Override
public List<EdmProperty> getPropertyPath() {
return propertyPath;
}
public void setCount(final boolean count) {
this.count = count;
}
@Override
public boolean isCount() {
return count;
}
public void setValue(final boolean value) {
this.value = value;
}
@Override
public boolean isValue() {
return value;
}
public void setLinks(final boolean links) {
this.links = links;
}
@Override
public boolean isLinks() {
return links;
}
public void setFormat(final String contentType) {
format = contentType;
}
@Override
public String getFormat() {
return format;
}
public void setFilter(final FilterExpression filter) {
this.filter = filter;
}
@Override
public FilterExpression getFilter() {
return filter;
}
public void setInlineCount(final InlineCount inlineCount) {
this.inlineCount = inlineCount;
}
@Override
public InlineCount getInlineCount() {
return inlineCount;
}
public void setOrderBy(final OrderByExpression orderBy) {
this.orderBy = orderBy;
}
@Override
public OrderByExpression getOrderBy() {
return orderBy;
}
public void setSkipToken(final String skipToken) {
this.skipToken = skipToken;
}
@Override
public String getSkipToken() {
return skipToken;
}
public void setSkip(final Integer skip) {
this.skip = skip;
}
@Override
public Integer getSkip() {
return skip;
}
public void setTop(final Integer top) {
this.top = top;
}
@Override
public Integer getTop() {
return top;
}
public void setExpand(final List<ArrayList<NavigationPropertySegment>> expand) {
this.expand = expand;
}
@Override
public List<ArrayList<NavigationPropertySegment>> getExpand() {
return expand;
}
public void setSelect(final List<SelectItem> select) {
this.select = select;
}
@Override
public List<SelectItem> getSelect() {
return select;
}
public void addFunctionImportParameter(final String name, final EdmLiteral value) {
if (functionImportParameters.equals(Collections.EMPTY_MAP)) {
functionImportParameters = new HashMap<String, EdmLiteral>();
}
functionImportParameters.put(name, value);
}
@Override
public Map<String, EdmLiteral> getFunctionImportParameters() {
return functionImportParameters;
}
@Override
public Map<String, String> getCustomQueryOptions() {
return customQueryOptions;
}
public void setCustomQueryOptions(final Map<String, String> customQueryOptions) {
this.customQueryOptions = customQueryOptions;
}
@Override
public String toString() {
return "UriParserResult: uriType=" + uriType + ", "
+ "entityContainer=" + entityContainer + ", "
+ "entitySet=" + startEntitySet + ", "
+ "targetEntitySet=" + targetEntitySet + ", "
+ "functionImport=" + functionImport + ", "
+ "targetType=" + targetType + ", "
+ "keyPredicates=" + keyPredicates + ", "
+ "navigationSegments=" + navigationSegments + ", "
+ "propertyPath=" + propertyPath + ", "
+ "isCount=" + count + ", "
+ "isValue=" + value + ", "
+ "isLinks=" + links + ", "
+ "contentType=" + format + ", "
+ "filter=" + filter + ", "
+ "inlineCount=" + inlineCount + ", "
+ "orderBy=" + orderBy + ", "
+ "skipToken=" + skipToken + ", "
+ "skip=" + skip + ", "
+ "top=" + top + ", "
+ "expand=" + expand + ", "
+ "select=" + select + ", "
+ "functionImportParameters=" + functionImportParameters + ", "
+ "customQueryOptions=" + customQueryOptions;
}
}