Skip to content

Commit 6fb4616

Browse files
committed
Work in progress
1 parent 85c197c commit 6fb4616

12 files changed

Lines changed: 162 additions & 44 deletions

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
import org.geppetto.core.datasources.QueryChecker;
4040
import org.geppetto.core.model.GeppettoModelAccess;
4141
import org.geppetto.core.services.AService;
42-
import org.geppetto.model.DataSource;
43-
import org.geppetto.model.Query;
42+
import org.geppetto.model.datasources.DataSource;
43+
import org.geppetto.model.datasources.Query;
4444
import org.geppetto.model.variables.Variable;
4545

4646
/**
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
*
3+
*/
4+
package org.geppetto.datasources;
5+
6+
import java.util.Map;
7+
8+
import org.geppetto.core.datasources.IQueryProcessor;
9+
import org.geppetto.core.features.IFeature;
10+
import org.geppetto.core.services.GeppettoFeature;
11+
import org.geppetto.core.services.registry.ServicesRegistry;
12+
13+
/**
14+
* @author matteocantarelli
15+
*
16+
*/
17+
public abstract class AQueryProcessor implements IQueryProcessor
18+
{
19+
20+
@Override
21+
public void registerGeppettoService() throws Exception
22+
{
23+
ServicesRegistry.registerQueryProcessorService(this);
24+
}
25+
26+
@Override
27+
public boolean isSupported(GeppettoFeature feature)
28+
{
29+
return false;
30+
}
31+
32+
@Override
33+
public IFeature getFeature(GeppettoFeature feature)
34+
{
35+
return null;
36+
}
37+
38+
@Override
39+
public void addFeature(IFeature feature)
40+
{
41+
42+
}
43+
44+
/* (non-Javadoc)
45+
* @see org.geppetto.core.datasources.IQueryProcessor#getProcessingOutputMap()
46+
*/
47+
@Override
48+
public Map<String, Object> getProcessingOutputMap()
49+
{
50+
return null;
51+
}
52+
53+
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@
3535
import org.geppetto.core.datasources.GeppettoDataSourceException;
3636
import org.geppetto.core.datasources.IDataSourceService;
3737
import org.geppetto.core.datasources.IQueryListener;
38-
import org.geppetto.model.DataSource;
39-
import org.geppetto.model.DataSourceLibraryConfiguration;
4038
import org.geppetto.model.GeppettoLibrary;
41-
import org.geppetto.model.Query;
42-
import org.geppetto.model.QueryResults;
39+
import org.geppetto.model.datasources.DataSource;
40+
import org.geppetto.model.datasources.DataSourceLibraryConfiguration;
41+
import org.geppetto.model.datasources.Query;
42+
import org.geppetto.model.datasources.QueryResults;
4343
import org.geppetto.model.types.ImportType;
4444
import org.geppetto.model.types.TypesFactory;
4545
import org.geppetto.model.variables.Variable;

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

Lines changed: 74 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232
*******************************************************************************/
3333
package org.geppetto.datasources;
3434

35+
import java.util.ArrayList;
3536
import java.util.HashMap;
37+
import java.util.List;
3638
import java.util.Map;
3739

3840
import org.eclipse.emf.ecore.EObject;
@@ -46,20 +48,24 @@
4648
import org.geppetto.core.model.GeppettoModelAccess;
4749
import org.geppetto.core.services.ServiceCreator;
4850
import org.geppetto.datasources.ADataSourceService.ConnectionType;
49-
import org.geppetto.model.DataSource;
50-
import org.geppetto.model.GeppettoFactory;
51-
import org.geppetto.model.ProcessQuery;
52-
import org.geppetto.model.Query;
53-
import org.geppetto.model.QueryResults;
54-
import org.geppetto.model.SimpleQuery;
55-
import org.geppetto.model.util.GeppettoSwitch;
51+
import org.geppetto.model.datasources.AQueryResult;
52+
import org.geppetto.model.datasources.CompoundRefQuery;
53+
import org.geppetto.model.datasources.DataSource;
54+
import org.geppetto.model.datasources.DatasourcesFactory;
55+
import org.geppetto.model.datasources.ProcessQuery;
56+
import org.geppetto.model.datasources.Query;
57+
import org.geppetto.model.datasources.QueryResult;
58+
import org.geppetto.model.datasources.QueryResults;
59+
import org.geppetto.model.datasources.SerializableQueryResult;
60+
import org.geppetto.model.datasources.SimpleQuery;
61+
import org.geppetto.model.datasources.util.DatasourcesSwitch;
5662
import org.geppetto.model.util.GeppettoVisitingException;
5763
import org.geppetto.model.variables.Variable;
5864

5965
/**
6066
* @author matteocantarelli Matteo TODO: I really want to move this to the datasource bundle...
6167
*/
62-
public class ExecuteQueryVisitor extends GeppettoSwitch<Object>
68+
public class ExecuteQueryVisitor extends DatasourcesSwitch<Object>
6369
{
6470

6571
private DataSource dataSource = null;
@@ -78,6 +84,8 @@ public class ExecuteQueryVisitor extends GeppettoSwitch<Object>
7884

7985
private IQueryResponseProcessor queryResponseProcessor;
8086

87+
private Map<String, Object> processingOutputMap = new HashMap<String, Object>();
88+
8189
/**
8290
*
8391
*/
@@ -104,7 +112,7 @@ public ExecuteQueryVisitor(DataSource dataSource, String dataSourceTemplate, Var
104112
this.count = count;
105113
this.connectionType = connectionType;
106114
this.queryResponseProcessor = queryResponseProcessor;
107-
results = GeppettoFactory.eINSTANCE.createQueryResults();
115+
results = DatasourcesFactory.eINSTANCE.createQueryResults();
108116
}
109117

110118
/*
@@ -121,6 +129,7 @@ public Object caseProcessQuery(ProcessQuery query)
121129
{
122130
IQueryProcessor queryProcessor = (IQueryProcessor) ServiceCreator.getNewServiceInstance(query.getQueryProcessorId());
123131
this.results = queryProcessor.process(query, dataSource, getVariable(), getResults(), geppettoModelAccess);
132+
this.processingOutputMap = queryProcessor.getProcessingOutputMap();
124133
}
125134
catch(GeppettoInitializationException e)
126135
{
@@ -134,6 +143,21 @@ public Object caseProcessQuery(ProcessQuery query)
134143
return super.caseProcessQuery(query);
135144
}
136145

146+
/*
147+
* (non-Javadoc)
148+
*
149+
* @see org.geppetto.model.datasources.util.DatasourcesSwitch#caseCompoundRefQuery(org.geppetto.model.datasources.CompoundRefQuery)
150+
*/
151+
@Override
152+
public Object caseCompoundRefQuery(CompoundRefQuery object)
153+
{
154+
for(Query query : object.getQueryChain())
155+
{
156+
this.doSwitch(query);
157+
}
158+
return super.caseCompoundRefQuery(object);
159+
}
160+
137161
/*
138162
* (non-Javadoc)
139163
*
@@ -154,6 +178,11 @@ public Object caseSimpleQuery(SimpleQuery query)
154178
properties.put("ID", getVariable().getId());
155179
properties.put("QUERY", queryString);
156180

181+
if(processingOutputMap != null)
182+
{
183+
properties.putAll(processingOutputMap);
184+
}
185+
157186
String processedQueryString = VelocityUtils.processTemplate(dataSourceTemplate, properties);
158187

159188
String response = null;
@@ -190,11 +219,46 @@ private void processResponse(String response)
190219
else
191220
{
192221
Map<String, Object> responseMap = JSONUtility.getAsMap(response);
193-
results = queryResponseProcessor.processResponse(responseMap);
222+
mergeResults(queryResponseProcessor.processResponse(responseMap));
194223
}
195224

196225
}
197226

227+
/**
228+
* @param processResponse
229+
*/
230+
private void mergeResults(QueryResults processResponse)
231+
{
232+
results = processResponse;
233+
// if(results != null)
234+
// {
235+
//
236+
//
237+
// processedResults.getHeader().add("ID");
238+
// processedResults.getHeader().add("Name");
239+
// processedResults.getHeader().add("Definition");
240+
//
241+
// List<String> ids=new ArrayList<String>();
242+
// for(AQueryResult result : results.getResults())
243+
// {
244+
// SerializableQueryResult processedResult = DatasourcesFactory.eINSTANCE.createSerializableQueryResult();
245+
// processedResult.getValues().add(((QueryResult) result).getValues().get(idIndex).toString());
246+
// String id=((List<String>) ((QueryResult) result).getValues().get(nameIndex)).get(0);
247+
// processedResult.getValues().add(id);
248+
// ids.add(id);
249+
// processedResult.getValues().add(((QueryResult) result).getValues().get(descirptionIndex).toString());
250+
// processedResults.getResults().add(processedResult);
251+
// }
252+
//
253+
// processingOutputMap.put("ARRAY_ID_RESULTS",ids);
254+
// }
255+
// else
256+
// {
257+
// results = processResponse;
258+
// }
259+
260+
}
261+
198262
/**
199263
* @param query
200264
* @return

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@
3434

3535
import java.util.Map;
3636

37-
import org.geppetto.model.QueryResults;
37+
import org.geppetto.model.datasources.QueryResults;
38+
39+
3840

3941
/**
4042
* @author matteocantarelli

src/main/java/org/geppetto/datasources/aberowl/AberOWLDataSourceService.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@
3737
import org.geppetto.core.datasources.IQueryListener;
3838
import org.geppetto.datasources.ADataSourceService;
3939
import org.geppetto.datasources.ExecuteQueryVisitor;
40-
import org.geppetto.datasources.ADataSourceService.ConnectionType;
41-
import org.geppetto.model.Query;
42-
import org.geppetto.model.QueryResults;
40+
import org.geppetto.model.datasources.Query;
41+
import org.geppetto.model.datasources.QueryResults;
4342
import org.geppetto.model.util.GeppettoModelTraversal;
4443
import org.geppetto.model.util.GeppettoVisitingException;
4544
import org.geppetto.model.variables.Variable;

src/main/java/org/geppetto/datasources/aberowl/AberOWLResponseProcessor.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
import java.util.Map;
99

1010
import org.geppetto.datasources.IQueryResponseProcessor;
11-
import org.geppetto.model.GeppettoFactory;
12-
import org.geppetto.model.QueryResult;
13-
import org.geppetto.model.QueryResults;
11+
import org.geppetto.model.datasources.DatasourcesFactory;
12+
import org.geppetto.model.datasources.QueryResult;
13+
import org.geppetto.model.datasources.QueryResults;
14+
1415

1516
/**
1617
* @author matteocantarelli
@@ -27,7 +28,7 @@ public class AberOWLResponseProcessor implements IQueryResponseProcessor
2728
@Override
2829
public QueryResults processResponse(Map<String, Object> response)
2930
{
30-
QueryResults results = GeppettoFactory.eINSTANCE.createQueryResults();
31+
QueryResults results = DatasourcesFactory.eINSTANCE.createQueryResults();
3132
List<String> headers = new ArrayList<String>();
3233

3334
List<Map<String, Object>> data = (List<Map<String, Object>>) response.get("result");
@@ -49,7 +50,7 @@ public QueryResults processResponse(Map<String, Object> response)
4950
//STEP 2 - Add all the values at the right place
5051
for(Map<String, Object> rowObject : data)
5152
{
52-
QueryResult resultRow = GeppettoFactory.eINSTANCE.createQueryResult();
53+
QueryResult resultRow = DatasourcesFactory.eINSTANCE.createQueryResult();
5354
for(String column : headers)
5455
{
5556
if(rowObject.containsKey(column))

src/main/java/org/geppetto/datasources/neo4j/Neo4jDataSourceService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
import org.geppetto.core.datasources.IQueryListener;
3838
import org.geppetto.datasources.ADataSourceService;
3939
import org.geppetto.datasources.ExecuteQueryVisitor;
40-
import org.geppetto.model.Query;
41-
import org.geppetto.model.QueryResults;
40+
import org.geppetto.model.datasources.Query;
41+
import org.geppetto.model.datasources.QueryResults;
4242
import org.geppetto.model.util.GeppettoModelTraversal;
4343
import org.geppetto.model.util.GeppettoVisitingException;
4444
import org.geppetto.model.variables.Variable;

src/main/java/org/geppetto/datasources/neo4j/Neo4jResponseProcessor.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
import java.util.Map;
88

99
import org.geppetto.datasources.IQueryResponseProcessor;
10-
import org.geppetto.model.GeppettoFactory;
11-
import org.geppetto.model.QueryResult;
12-
import org.geppetto.model.QueryResults;
10+
import org.geppetto.model.datasources.DatasourcesFactory;
11+
import org.geppetto.model.datasources.QueryResult;
12+
import org.geppetto.model.datasources.QueryResults;
13+
1314

1415
/**
1516
* @author matteocantarelli
@@ -26,7 +27,7 @@ public class Neo4jResponseProcessor implements IQueryResponseProcessor
2627
@Override
2728
public QueryResults processResponse(Map<String, Object> response)
2829
{
29-
QueryResults results = GeppettoFactory.eINSTANCE.createQueryResults();
30+
QueryResults results = DatasourcesFactory.eINSTANCE.createQueryResults();
3031
List<String> headers = (List<String>) ((List) ((Map<String, Object>) ((List) response.get("results")).get(0)).get("columns"));
3132

3233
results.getHeader().addAll(headers);
@@ -35,7 +36,7 @@ public QueryResults processResponse(Map<String, Object> response)
3536
List<Map<String, Object>> data = (List<Map<String, Object>>) ((List) ((Map<String, Object>) ((List) response.get("results")).get(0)).get("data"));
3637
for(Map<String, Object> rowObject : data)
3738
{
38-
QueryResult resultRow = GeppettoFactory.eINSTANCE.createQueryResult();
39+
QueryResult resultRow = DatasourcesFactory.eINSTANCE.createQueryResult();
3940
List<Object> row = (List<Object>) rowObject.get("row");
4041
for(Object value : row)
4142
{

src/test/java/org/geppetto/datasources/TestDataSourceService.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,9 @@
3535
import org.geppetto.core.datasources.GeppettoDataSourceException;
3636
import org.geppetto.core.datasources.IDataSourceService;
3737
import org.geppetto.core.datasources.IQueryListener;
38-
import org.geppetto.datasources.ADataSourceService;
39-
import org.geppetto.datasources.ExecuteQueryVisitor;
4038
import org.geppetto.datasources.neo4j.Neo4jResponseProcessor;
41-
import org.geppetto.model.Query;
42-
import org.geppetto.model.QueryResults;
39+
import org.geppetto.model.datasources.Query;
40+
import org.geppetto.model.datasources.QueryResults;
4341
import org.geppetto.model.util.GeppettoModelTraversal;
4442
import org.geppetto.model.util.GeppettoVisitingException;
4543
import org.geppetto.model.variables.Variable;

0 commit comments

Comments
 (0)