package org.vertexium.cypher;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
public class VertexiumCypherQueryResult {
private final String[] columnNames;
private List<Row> rows;
public VertexiumCypherQueryResult(String[] columnNames, List<Row> rows) {
this.columnNames = columnNames;
this.rows = rows;
}
public static VertexiumCypherQueryResult createEmpty() {
return new VertexiumCypherQueryResult(new String[0], ImmutableList.of());
}
public String[] getColumnNames() {
return columnNames;
}
public List<Row> getRows() {
return rows;
}
public VertexiumCypherQueryResult concat(VertexiumCypherQueryResult newResults, boolean all) {
List<Row> newRows = new ArrayList<>();
newRows.addAll(getRows());
if (all) {
newRows.addAll(newResults.getRows());
} else {
for (Row row : newResults.getRows()) {
if (!getRows().contains(row)) {
newRows.add(row);
}
}
}
return new VertexiumCypherQueryResult(columnNames, newRows);
}
public static class Row {
private final List<Object> columns;
public Row(List<Object> columns) {
this.columns = columns;
}
public List<Object> getColumns() {
return columns;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Row row = (Row) o;
return columns.equals(row.columns);
}
@Override
public int hashCode() {
return columns.hashCode();
}
}
}