Skip to content

Commit b600fc6

Browse files
authored
Merge pull request #27 from openworm/development
Release 0.4.1
2 parents cd43a7e + 4e125b0 commit b600fc6

12 files changed

Lines changed: 286 additions & 9 deletions

File tree

.travis.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
language: java
22

33
install:
4-
- git clone https://github.com/openworm/org.geppetto.model.git -b $TRAVIS_BRANCH
4+
- git clone https://github.com/openworm/org.geppetto.model.git
55
- cd org.geppetto.model
6+
- if [ `git branch -a | egrep "remotes/origin/${TRAVIS_BRANCH}"` ]; then git checkout $TRAVIS_BRANCH ; else echo "Branch $TRAVIS_BRANCH does not exist for the dependent bundle, checking out master ..." && git checkout master; fi
7+
- git status
68
- mvn install
79
- cd ..
8-
- git clone https://github.com/openworm/org.geppetto.core.git -b $TRAVIS_BRANCH
10+
- git clone https://github.com/openworm/org.geppetto.core.git
911
- cd org.geppetto.core
12+
- if [ `git branch -a | egrep "remotes/origin/${TRAVIS_BRANCH}"` ]; then git checkout $TRAVIS_BRANCH ; else echo "Branch $TRAVIS_BRANCH does not exist for the dependent bundle, checking out master ..." && git checkout master; fi
13+
- git status
1014
- mvn install
1115
- cd ..
12-
- git clone https://github.com/openworm/org.geppetto.simulation.git -b $TRAVIS_BRANCH
16+
- git clone https://github.com/openworm/org.geppetto.simulation.git
1317
- cd org.geppetto.simulation
18+
- if [ `git branch -a | egrep "remotes/origin/${TRAVIS_BRANCH}"` ]; then git checkout $TRAVIS_BRANCH ; else echo "Branch $TRAVIS_BRANCH does not exist for the dependent bundle, checking out master ..." && git checkout master; fi
19+
- git status
1420
- mvn install
1521
- cd ..
1622

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>org.geppetto</groupId>
66
<artifactId>datasources</artifactId>
77
<name>Geppetto Data Sources bundle</name>
8-
<version>0.4.0</version>
8+
<version>0.4.1</version>
99
<packaging>bundle</packaging>
1010
<properties>
1111
<spring.version>3.1.3.RELEASE</spring.version>

src/main/java/META-INF/spring/osgi-config.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,20 @@
2424
<bean id="aberOWLDataSource" scope="prototype" class="org.geppetto.datasources.aberowl.AberOWLDataSourceService">
2525
<aop:scoped-proxy proxy-target-class="false"/>
2626
</bean>
27+
28+
<osgi:service id="OWLeryDataSourceExporter" ref="owleryDataSource"
29+
interface="org.geppetto.core.datasources.IDataSourceService">
30+
</osgi:service>
31+
<bean id="owleryDataSource" scope="prototype" class="org.geppetto.datasources.owlery.OWLeryDataSourceService">
32+
<aop:scoped-proxy proxy-target-class="false"/>
33+
</bean>
2734

35+
<osgi:service id="OpenCPUDataSourceExporter" ref="opencpuDataSource"
36+
interface="org.geppetto.core.datasources.IDataSourceService">
37+
</osgi:service>
38+
<bean id="opencpuDataSource" scope="prototype" class="org.geppetto.datasources.opencpu.OpenCPUDataSourceService">
39+
<aop:scoped-proxy proxy-target-class="false"/>
40+
</bean>
2841

2942
<bean id="eventListenerBean" class="org.geppetto.core.services.registry.ApplicationListenerBean" />
3043

src/main/java/org/geppetto/datasources/ADataSourceService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,12 @@ public void fetchVariable(String variableId) throws GeppettoDataSourceException
144144
{
145145
Variable fetchedVariable = VariablesFactory.eINSTANCE.createVariable();
146146
fetchedVariable.setId(variableId);
147-
getGeppettoModelAccess().addVariable(fetchedVariable);
148147
Query fetchVariableQuery = getConfiguration().getFetchVariableQuery();
149148
ExecuteQueryVisitor runQueryVisitor = new ExecuteQueryVisitor(fetchedVariable, getGeppettoModelAccess());
150149
runQueryVisitor.doSwitch(fetchVariableQuery);
150+
if( !(fetchedVariable.getAnonymousTypes().isEmpty()) || !(fetchedVariable.getTypes().isEmpty())) {
151+
getGeppettoModelAccess().addVariable(fetchedVariable);
152+
}
151153
}
152154

153155
/*

src/main/java/org/geppetto/datasources/ExecuteQueryVisitor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,16 @@ public Object caseSimpleQuery(SimpleQuery query)
216216
private void processResponse(String response, ADataSourceService dataSourceService) throws GeppettoDataSourceException
217217
{
218218
try{
219+
String customJson = "";
220+
if(response.startsWith("[")) {
221+
/* Checking if the server returns an array and if that's the case adding a dummy response
222+
* object to fit the JSON into our standard Map<String, Object> representation.
223+
* Regarding the String manipulation although ugly this is the most performant way of performing
224+
* this task. */
225+
customJson = "{\"response\":"+response+"}";
226+
response = customJson;
227+
}
228+
219229
if(count)
220230
{
221231
Map<String, Object> responseMap = JSONUtility.getAsMap(response);
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
2+
package org.geppetto.datasources.opencpu;
3+
4+
import org.geppetto.core.datasources.GeppettoDataSourceException;
5+
import org.geppetto.core.datasources.IQueryListener;
6+
import org.geppetto.datasources.ADataSourceService;
7+
import org.geppetto.datasources.ExecuteQueryVisitor;
8+
import org.geppetto.datasources.IQueryResponseProcessor;
9+
import org.geppetto.model.datasources.Query;
10+
import org.geppetto.model.datasources.QueryResults;
11+
import org.geppetto.model.util.GeppettoModelTraversal;
12+
import org.geppetto.model.util.GeppettoVisitingException;
13+
import org.geppetto.model.variables.Variable;
14+
import org.geppetto.model.variables.VariablesFactory;
15+
16+
/**
17+
* @author dariodelpiano
18+
*
19+
*/
20+
21+
public class OpenCPUDataSourceService extends ADataSourceService
22+
{
23+
24+
public OpenCPUDataSourceService()
25+
{
26+
super("/templates/OpenCPU/queryTemplate.vm");
27+
}
28+
29+
30+
/*
31+
* (non-Javadoc)
32+
*
33+
* @see org.geppetto.datasources.ADataSourceService#getConnectionType()
34+
*/
35+
@Override
36+
public ConnectionType getConnectionType()
37+
{
38+
return ConnectionType.POST;
39+
}
40+
41+
/*
42+
* (non-Javadoc)
43+
*
44+
* @see org.geppetto.datasources.ADataSourceService#getQueryResponseProcessor()
45+
*/
46+
@Override
47+
public IQueryResponseProcessor getQueryResponseProcessor()
48+
{
49+
if(queryResponseProcessor == null)
50+
{
51+
queryResponseProcessor = new OpenCPUResponseProcessor();
52+
}
53+
return queryResponseProcessor;
54+
}
55+
56+
57+
58+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
2+
package org.geppetto.datasources.opencpu;
3+
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Arrays;
8+
9+
10+
import org.geppetto.datasources.IQueryResponseProcessor;
11+
import org.geppetto.model.datasources.DatasourcesFactory;
12+
import org.geppetto.model.datasources.QueryResult;
13+
import org.geppetto.model.datasources.QueryResults;
14+
15+
/**
16+
* @author dariodelpiano
17+
*
18+
*/
19+
public class OpenCPUResponseProcessor implements IQueryResponseProcessor
20+
{
21+
22+
/*
23+
* (non-Javadoc)
24+
*
25+
* @see org.geppetto.datasources.IQueryResponseProcessor#processResponse(java.lang.String)
26+
*/
27+
@Override
28+
public QueryResults processResponse(Map<String, Object> response)
29+
{
30+
QueryResults results = DatasourcesFactory.eINSTANCE.createQueryResults();
31+
List<String> headers = new ArrayList<String>();
32+
List<Map<String, Object>> data = (List<Map<String, Object>>) response.get("response");
33+
34+
for(Map<String, Object> rowObject : data)
35+
{
36+
for(String column : rowObject.keySet())
37+
{
38+
if(!headers.contains(column))
39+
{
40+
headers.add(column);
41+
}
42+
}
43+
}
44+
45+
results.getHeader().addAll(headers);
46+
47+
for(Map<String, Object> rowObject : data)
48+
{
49+
QueryResult resultRow = DatasourcesFactory.eINSTANCE.createQueryResult();
50+
for(String column : headers)
51+
{
52+
if(rowObject.containsKey(column))
53+
{
54+
resultRow.getValues().add((rowObject.get(column)));
55+
}
56+
else
57+
{
58+
resultRow.getValues().add(null);
59+
}
60+
}
61+
results.getResults().add(resultRow);
62+
}
63+
64+
return results;
65+
}
66+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
package org.geppetto.datasources.owlery;
3+
4+
import org.geppetto.core.datasources.GeppettoDataSourceException;
5+
import org.geppetto.core.datasources.IQueryListener;
6+
import org.geppetto.datasources.ADataSourceService;
7+
import org.geppetto.datasources.ExecuteQueryVisitor;
8+
import org.geppetto.datasources.IQueryResponseProcessor;
9+
import org.geppetto.model.datasources.Query;
10+
import org.geppetto.model.datasources.QueryResults;
11+
import org.geppetto.model.util.GeppettoModelTraversal;
12+
import org.geppetto.model.util.GeppettoVisitingException;
13+
import org.geppetto.model.variables.Variable;
14+
import org.geppetto.model.variables.VariablesFactory;
15+
16+
/**
17+
* @author dariodelpiano
18+
*
19+
*/
20+
public class OWLeryDataSourceService extends ADataSourceService
21+
{
22+
23+
public OWLeryDataSourceService()
24+
{
25+
super("/templates/OWLery/queryTemplate.vm");
26+
}
27+
28+
29+
/*
30+
* (non-Javadoc)
31+
*
32+
* @see org.geppetto.datasources.ADataSourceService#getConnectionType()
33+
*/
34+
@Override
35+
public ConnectionType getConnectionType()
36+
{
37+
return ConnectionType.GET;
38+
}
39+
40+
/*
41+
* (non-Javadoc)
42+
*
43+
* @see org.geppetto.datasources.ADataSourceService#getQueryResponseProcessor()
44+
*/
45+
@Override
46+
public IQueryResponseProcessor getQueryResponseProcessor()
47+
{
48+
if(queryResponseProcessor == null)
49+
{
50+
queryResponseProcessor = new OWLeryResponseProcessor();
51+
}
52+
return queryResponseProcessor;
53+
}
54+
55+
56+
57+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
*
3+
*/
4+
package org.geppetto.datasources.owlery;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.Map;
9+
import java.util.Arrays;
10+
11+
12+
import org.geppetto.datasources.IQueryResponseProcessor;
13+
import org.geppetto.model.datasources.DatasourcesFactory;
14+
import org.geppetto.model.datasources.QueryResult;
15+
import org.geppetto.model.datasources.QueryResults;
16+
17+
/**
18+
* @author dariodelpiano
19+
*
20+
*/
21+
public class OWLeryResponseProcessor implements IQueryResponseProcessor
22+
{
23+
24+
/*
25+
* (non-Javadoc)
26+
*
27+
* @see org.geppetto.datasources.IQueryResponseProcessor#processResponse(java.lang.String)
28+
*/
29+
@Override
30+
public QueryResults processResponse(Map<String, Object> response)
31+
{
32+
QueryResults results = DatasourcesFactory.eINSTANCE.createQueryResults();
33+
List<String> headers = new ArrayList<String>();
34+
35+
for(String keyExtracted : response.keySet()) {
36+
if(!headers.contains(keyExtracted)) {
37+
headers.add(keyExtracted);
38+
}
39+
}
40+
41+
results.getHeader().addAll(headers);
42+
QueryResult resultRow = DatasourcesFactory.eINSTANCE.createQueryResult();
43+
44+
for(String column : headers) {
45+
if(response.containsKey(column)) {
46+
resultRow.getValues().add((response.get(column)));
47+
}
48+
else {
49+
resultRow.getValues().add(null);
50+
}
51+
}
52+
53+
results.getResults().add(resultRow);
54+
55+
return results;
56+
}
57+
58+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
$QUERY

0 commit comments

Comments
 (0)