Skip to content

Commit

Permalink
Change format of queryNode REST API results
Browse files Browse the repository at this point in the history
  • Loading branch information
gwilmer committed Dec 26, 2012
1 parent 440c99d commit 8b163ea
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 6 deletions.
Expand Up @@ -25,10 +25,11 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletContext;
Expand Down Expand Up @@ -60,6 +61,7 @@
import org.jumpmind.symmetric.web.rest.model.Node;
import org.jumpmind.symmetric.web.rest.model.NodeList;
import org.jumpmind.symmetric.web.rest.model.NodeStatus;
import org.jumpmind.symmetric.web.rest.model.QueryResults;
import org.jumpmind.symmetric.web.rest.model.RestError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -260,14 +262,14 @@ public final void getSnapshot(HttpServletResponse resp) {
@RequestMapping(value = "engine/querynode", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public final List<String> queryNode(@RequestParam(value = "query") String sql) {
public final QueryResults queryNode(@RequestParam(value = "query") String sql) {
return queryNodeImpl(getSymmetricEngine(), sql);
}

@RequestMapping(value = "engine/{engine}/querynode", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public final List<String> queryNode(@PathVariable("engine") String engineName,
public final QueryResults queryNode(@PathVariable("engine") String engineName,
@RequestParam(value = "query") String sql) {
return queryNodeImpl(getSymmetricEngine(engineName), sql);
}
Expand Down Expand Up @@ -807,14 +809,34 @@ private Set<ChannelStatus> channelStatusImpl(ISymmetricEngine engine) {
return channelStatus;
}

private List<String> queryNodeImpl(ISymmetricEngine engine, String sql) {
ArrayList<String> results = new ArrayList<String>();
private QueryResults queryNodeImpl(ISymmetricEngine engine, String sql) {

QueryResults results = new QueryResults();
org.jumpmind.symmetric.web.rest.model.Row xmlRow = null;
org.jumpmind.symmetric.web.rest.model.Column xmlColumn = null;

ISqlTemplate sqlTemplate = engine.getSqlTemplate();
try {
List<Row> rows = sqlTemplate.query(sql);
int nbrRows=0;
for (Row row : rows) {
results.add(row.toString());
xmlRow = new org.jumpmind.symmetric.web.rest.model.Row();
Iterator<Map.Entry<String, Object>> itr = row.entrySet().iterator();
int columnOrdinal=0;
while (itr.hasNext()) {
xmlColumn = new org.jumpmind.symmetric.web.rest.model.Column();
xmlColumn.setOrdinal(++columnOrdinal);
Map.Entry<String, Object> pair = (Map.Entry<String, Object>)itr.next();
xmlColumn.setName(pair.getKey());
if (pair.getValue()!= null) {
xmlColumn.setValue(pair.getValue().toString());
}
xmlRow.getColumnData().add(xmlColumn);
}
xmlRow.setRowNum(++nbrRows);
results.getResults().add(xmlRow);
}
results.setNbrResults(nbrRows);
} catch (Exception ex) {
log.error("Exception while executing sql.", ex);
throw new NotAllowedException("Error while executing sql %s. Error is %s",
Expand Down
@@ -0,0 +1,28 @@
package org.jumpmind.symmetric.web.rest.model;

public class Column {

private int ordinal;
private String name;
private String value;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}

}
@@ -0,0 +1,32 @@
package org.jumpmind.symmetric.web.rest.model;

import java.util.ArrayList;
import java.util.List;

public class QueryResults {

int nbrResults;
List<Row> results;

public QueryResults() {
nbrResults=0;
results = new ArrayList<Row>();
}

public int getNbrResults() {
return nbrResults;
}

public void setNbrResults(int nbrResults) {
this.nbrResults = nbrResults;
}

public List<Row> getResults() {
return results;
}

public void setResults(List<Row> results) {
this.results = results;
}

}
@@ -0,0 +1,28 @@
package org.jumpmind.symmetric.web.rest.model;

import java.util.ArrayList;
import java.util.List;

public class Row {

private int rowNum;
private List<Column> columnData;

public Row() {
columnData = new ArrayList<Column>();
}

public int getRowNum() {
return rowNum;
}
public void setRowNum(int rowNum) {
this.rowNum = rowNum;
}
public List<Column> getColumnData() {
return columnData;
}
public void setColumData(List<Column> columData) {
this.columnData = columData;
}

}

0 comments on commit 8b163ea

Please sign in to comment.