Skip to content

Commit

Permalink
olingo: making progress; almost complete with
Browse files Browse the repository at this point in the history
  • Loading branch information
rareddy committed Oct 10, 2014
1 parent ef4dc8a commit ad08f09
Show file tree
Hide file tree
Showing 28 changed files with 2,801 additions and 589 deletions.
21 changes: 16 additions & 5 deletions olingo/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -75,24 +75,29 @@

<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>olingo-commons-api</artifactId>
<artifactId>odata-commons-api</artifactId>
</dependency>

<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>olingo-commons-core</artifactId>
<artifactId>odata-commons-core</artifactId>
</dependency>

<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>olingo-server-api</artifactId>
<artifactId>odata-server-api</artifactId>
</dependency>

<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>olingo-server-core</artifactId>
<artifactId>odata-server-core</artifactId>
</dependency>

<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>

<dependency>
<groupId>org.jboss.teiid</groupId>
<artifactId>teiid-runtime</artifactId>
Expand Down Expand Up @@ -149,7 +154,13 @@
<artifactId>translator-jdbc</artifactId>
<groupId>org.jboss.teiid.connectors</groupId>
<scope>test</scope>
</dependency>
</dependency>
<dependency>
<groupId>org.jboss.teiid</groupId>
<artifactId>teiid-metadata</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>

</project>
16 changes: 13 additions & 3 deletions olingo/src/main/java/org/teiid/olingo/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,14 @@
*/
package org.teiid.olingo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.olingo.commons.api.edm.EdmEntitySet;
import org.apache.olingo.commons.core.edm.primitivetype.SingletonPrimitiveType;
import org.apache.olingo.server.api.uri.UriInfo;
import org.teiid.adminapi.impl.VDBMetaData;
import org.teiid.core.TeiidException;
import org.teiid.metadata.MetadataStore;
import org.teiid.query.sql.lang.Command;
import org.teiid.query.sql.lang.Query;
Expand All @@ -39,11 +40,13 @@ public interface Client {

BaseResponse executeCall(String sql, List<SQLParam> sqlParams, SingletonPrimitiveType returnType);

EntityList executeSQL(Query query, List<SQLParam> parameters, EdmEntitySet entitySet, List<ProjectedColumn> projectedColumns, UriInfo queryInfo);
void executeSQL(Query query, List<SQLParam> parameters, boolean countQuery, Integer skip, Integer top, QueryResponse respose);

CountResponse executeCount(Query query, List<SQLParam> parameters);

UpdateResponse executeUpdate(Command command, List<SQLParam> parameters);

String getProperty(String name);
}

interface UpdateResponse {
Expand All @@ -61,4 +64,11 @@ interface BaseResponse {
interface ProjectedColumn {
String getName();
boolean isVisible();
}

interface QueryResponse {
void addRow(ResultSet rs) throws SQLException, TeiidException;
long size();
void setCount(long count);
void setNext(long row);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,305 @@
/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.olingo;

import java.util.List;

import org.apache.olingo.server.api.uri.UriInfo;
import org.apache.olingo.server.api.uri.UriInfoAll;
import org.apache.olingo.server.api.uri.UriInfoBatch;
import org.apache.olingo.server.api.uri.UriInfoCrossjoin;
import org.apache.olingo.server.api.uri.UriInfoEntityId;
import org.apache.olingo.server.api.uri.UriInfoKind;
import org.apache.olingo.server.api.uri.UriInfoMetadata;
import org.apache.olingo.server.api.uri.UriInfoResource;
import org.apache.olingo.server.api.uri.UriInfoService;
import org.apache.olingo.server.api.uri.UriResource;
import org.apache.olingo.server.api.uri.UriResourceAction;
import org.apache.olingo.server.api.uri.UriResourceComplexProperty;
import org.apache.olingo.server.api.uri.UriResourceCount;
import org.apache.olingo.server.api.uri.UriResourceEntitySet;
import org.apache.olingo.server.api.uri.UriResourceFunction;
import org.apache.olingo.server.api.uri.UriResourceIt;
import org.apache.olingo.server.api.uri.UriResourceLambdaAll;
import org.apache.olingo.server.api.uri.UriResourceLambdaAny;
import org.apache.olingo.server.api.uri.UriResourceLambdaVariable;
import org.apache.olingo.server.api.uri.UriResourceNavigation;
import org.apache.olingo.server.api.uri.UriResourcePrimitiveProperty;
import org.apache.olingo.server.api.uri.UriResourceRef;
import org.apache.olingo.server.api.uri.UriResourceRoot;
import org.apache.olingo.server.api.uri.UriResourceSingleton;
import org.apache.olingo.server.api.uri.UriResourceValue;
import org.apache.olingo.server.api.uri.queryoption.CountOption;
import org.apache.olingo.server.api.uri.queryoption.ExpandOption;
import org.apache.olingo.server.api.uri.queryoption.FilterOption;
import org.apache.olingo.server.api.uri.queryoption.FormatOption;
import org.apache.olingo.server.api.uri.queryoption.IdOption;
import org.apache.olingo.server.api.uri.queryoption.OrderByOption;
import org.apache.olingo.server.api.uri.queryoption.SearchOption;
import org.apache.olingo.server.api.uri.queryoption.SelectOption;
import org.apache.olingo.server.api.uri.queryoption.SkipOption;
import org.apache.olingo.server.api.uri.queryoption.SkipTokenOption;
import org.apache.olingo.server.api.uri.queryoption.TopOption;

public class DefaultODataResourceURLHierarchyVisitor implements
ODataResourceURLVisitor {

private UriInfo uriInfo;

public UriInfo getUriInfo() {
return this.uriInfo;
}

@Override
public void visit(UriInfo info) {
this.uriInfo = info;

UriInfoKind kind = info.getKind();
switch(kind) {
case all:
visit(info.asUriInfoAll());
break;
case batch:
visit(info.asUriInfoBatch());
break;
case crossjoin:
visit(info.asUriInfoCrossjoin());
break;
case entityId:
visit(info.asUriInfoEntityId());
break;
case metadata:
visit(info.asUriInfoMetadata());
break;
case resource:
visit(info.asUriInfoResource());
break;
case service:
visit(info.asUriInfoService());
break;
}
}

@Override
public void visit(UriInfoService info) {}

@Override
public void visit(UriInfoAll info) {}

@Override
public void visit(UriInfoBatch info) {}

@Override
public void visit(UriInfoCrossjoin info) {}

@Override
public void visit(UriInfoEntityId info) {
visit(info.getSelectOption());

if (info.getExpandOption() != null) {
visit(info.getExpandOption());
}
if (info.getFormatOption() != null) {
visit(info.getFormatOption());
}
if(info.getIdOption() != null) {
visit(info.getIdOption());
}
}

@Override
public void visit(UriInfoMetadata info) {}

@Override
public void visit(UriInfoResource info) {
List<UriResource> parts = info.getUriResourceParts();
for (UriResource resource:parts) {
switch(resource.getKind()) {
case action:
visit((UriResourceAction)resource);
break;
case complexProperty:
visit((UriResourceComplexProperty)resource);
break;
case count:
visit((UriResourceCount)resource);
break;
case entitySet:
visit((UriResourceEntitySet)resource);
break;
case function:
visit((UriResourceFunction)resource);
break;
case it:
visit((UriResourceIt)resource);
break;
case lambdaAll:
visit((UriResourceLambdaAll)resource);
break;
case lambdaAny:
visit((UriResourceLambdaAny)resource);
break;
case lambdaVariable:
visit((UriResourceLambdaVariable)resource);
break;
case navigationProperty:
visit((UriResourceNavigation)resource);
break;
case ref:
visit((UriResourceRef)resource);
break;
case root:
visit((UriResourceRoot)resource);
break;
case primitiveProperty:
visit((UriResourcePrimitiveProperty)resource);
break;
case singleton:
visit((UriResourceSingleton)resource);
break;
case value:
visit((UriResourceValue)resource);
break;
}
}

// http://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html#_Toc372793682
if (info.getSearchOption() != null) {
visit(info.getSearchOption());
}

if (info.getFilterOption() != null) {
visit(info.getFilterOption());
}

if (info.getCountOption() != null) {
visit(info.getCountOption());
}

visit(info.getOrderByOption());

if (info.getSkipOption() != null) {
visit(info.getSkipOption());
}

if (info.getTopOption() != null) {
visit(info.getTopOption());
}

if (info.getExpandOption() != null) {
visit(info.getExpandOption());
}

visit(info.getSelectOption());

if (info.getFormatOption() != null) {
visit(info.getFormatOption());
}

if (info.getIdOption() != null) {
visit(info.getIdOption());
}

if (info.getSkipTokenOption() != null) {
visit(info.getSkipTokenOption());
}

}

@Override
public void visit(ExpandOption option) {}

@Override
public void visit(FilterOption info) {}

@Override
public void visit(FormatOption info) {}

@Override
public void visit(IdOption info) {}

@Override
public void visit(CountOption info) {}

@Override
public void visit(OrderByOption option) {}

@Override
public void visit(SearchOption option) {}

@Override
public void visit(SelectOption option) {}

@Override
public void visit(SkipOption option) {}

@Override
public void visit(SkipTokenOption option) {}

@Override
public void visit(TopOption option) {}

@Override
public void visit(UriResourceCount option) {}

@Override
public void visit(UriResourceRef info) {}

@Override
public void visit(UriResourceRoot info) {}

@Override
public void visit(UriResourceValue info) {}

@Override
public void visit(UriResourceAction info) {}

@Override
public void visit(UriResourceEntitySet info) {}

@Override
public void visit(UriResourceFunction info) {}

@Override
public void visit(UriResourceIt info) {}

@Override
public void visit(UriResourceLambdaAll info) {}

@Override
public void visit(UriResourceLambdaAny info) {}

@Override
public void visit(UriResourceLambdaVariable info) {}

@Override
public void visit(UriResourceNavigation info) {}

@Override
public void visit(UriResourceSingleton info) {}

@Override
public void visit(UriResourceComplexProperty info) {}

@Override
public void visit(UriResourcePrimitiveProperty info) {}
}

0 comments on commit ad08f09

Please sign in to comment.