Skip to content

Commit b940c50

Browse files
committed
NBLAST: added new data source for NBLAST
1 parent 657b5d3 commit b940c50

5 files changed

Lines changed: 139 additions & 0 deletions

File tree

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
<aop:scoped-proxy proxy-target-class="false"/>
3333
</bean>
3434

35+
<osgi:service id="nblastDataSourceExporter" ref="nblastDataSource"
36+
interface="org.geppetto.core.datasources.IDataSourceService">
37+
</osgi:service>
38+
<bean id="nblastDataSource" scope="prototype" class="org.geppetto.datasources.nblast.NBLASTDataSourceService">
39+
<aop:scoped-proxy proxy-target-class="false"/>
40+
</bean>
3541

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

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,12 @@ 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+
customJson = "{\"response\":"+response+"}";
222+
response = customJson;
223+
}
224+
219225
if(count)
220226
{
221227
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.nblast;
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 NBLASTDataSourceService extends ADataSourceService
22+
{
23+
24+
public NBLASTDataSourceService()
25+
{
26+
super("/templates/NBLAST/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 NBLASTResponseProcessor();
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.nblast;
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 NBLASTResponseProcessor 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: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"query":"$QUERY"
3+
}

0 commit comments

Comments
 (0)