Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions src/main/java/com/redislabs/redisgraph/ResultSet.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,6 @@
*/
public interface ResultSet extends Iterator<Record> {

enum ResultSetScalarTypes {
PROPERTY_UNKNOWN,
PROPERTY_NULL,
PROPERTY_STRING,
PROPERTY_INTEGER,
PROPERTY_BOOLEAN,
PROPERTY_DOUBLE,
}

int size();

Statistics getStatistics();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.redislabs.redisgraph.graph_entities;


import com.redislabs.redisgraph.ResultSet.ResultSetScalarTypes;

import java.util.*;


Expand Down Expand Up @@ -42,12 +39,11 @@ public void setId(int id) {
/**
* Adds a property to the entity, by composing name, type and value to a property object
* @param name
* @param type
* @param value
*/
public void addProperty(String name, ResultSetScalarTypes type, Object value){
public void addProperty(String name, Object value){

addProperty(new Property(name, type, value));
addProperty(new Property(name, value));

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
/**
* A Graph entity property. Has a name, type, and value
*/
public class Property {
public class Property <T> {

//members
private String name;
private ResultSet.ResultSetScalarTypes type;
private Object value;

private T value;


/**
Expand All @@ -26,15 +26,14 @@ public Property() {
* Parameterized constructor
*
* @param name
* @param type
* @param value
*/
public Property(String name, ResultSet.ResultSetScalarTypes type, Object value) {
public Property(String name, T value) {
this.name = name;
this.type = type;
this.value = value;
}


//getters & setters

/**
Expand All @@ -51,33 +50,19 @@ public void setName(String name) {
this.name = name;
}

/**
* @return property type
*/
public ResultSet.ResultSetScalarTypes getType() {
return type;
}

/**
* @param type property type to be set
*/
public void setType(ResultSet.ResultSetScalarTypes type) {
this.type = type;
}


/**
* @return property value
*/
public Object getValue() {
public T getValue() {
return value;
}


/**
* @param value property value to be set
*/
public void setValue(Object value) {
public void setValue(T value) {
this.value = value;
}

Expand All @@ -88,13 +73,12 @@ public boolean equals(Object o) {
if (!(o instanceof Property)) return false;
Property property = (Property) o;
return Objects.equals(name, property.name) &&
type == property.type &&
Objects.equals(value, property.value);
}

@Override
public int hashCode() {
return Objects.hash(name, type, value);
return Objects.hash(name, value);
}

/**
Expand All @@ -105,7 +89,6 @@ public int hashCode() {
public String toString() {
final StringBuilder sb = new StringBuilder("Property{");
sb.append("name='").append(name).append('\'');
sb.append(", type=").append(type);
sb.append(", value=").append(value);
sb.append('}');
return sb.toString();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.redislabs.redisgraph.impl.resultset;

import com.redislabs.redisgraph.*;
import com.redislabs.redisgraph.Header;
import com.redislabs.redisgraph.Record;
import com.redislabs.redisgraph.RedisGraph;
import com.redislabs.redisgraph.ResultSet;
import com.redislabs.redisgraph.Statistics;
import com.redislabs.redisgraph.graph_entities.Edge;
import com.redislabs.redisgraph.graph_entities.GraphEntity;
import com.redislabs.redisgraph.graph_entities.Node;
Expand Down Expand Up @@ -199,7 +203,6 @@ private void deserializeGraphEntityProperties(GraphEntity entity, List<List<Obje

//trimmed for getting to value using deserializeScalar
List<Object> propertyScalar = rawProperty.subList(1, rawProperty.size());
property.setType(getScalarTypeFromObject(propertyScalar.get(0)));
property.setValue(deserializeScalar(propertyScalar));

entity.addProperty(property);
Expand All @@ -213,33 +216,49 @@ private void deserializeGraphEntityProperties(GraphEntity entity, List<List<Obje
* @return value of the specific scalar type
*/
private Object deserializeScalar(List<Object> rawScalarData) {
ResultSetScalarTypes type = getScalarTypeFromObject(rawScalarData.get(0));
ResultSetScalarTypes type = getValueTypeFromObject(rawScalarData.get(0));

Object obj = rawScalarData.get(1);
switch (type) {
case PROPERTY_NULL:
case VALUE_NULL:
return null;
case PROPERTY_BOOLEAN:
case VALUE_BOOLEAN:
return Boolean.parseBoolean(SafeEncoder.encode((byte[]) obj));
case PROPERTY_DOUBLE:
case VALUE_DOUBLE:
return Double.parseDouble(SafeEncoder.encode((byte[]) obj));
case PROPERTY_INTEGER:
case VALUE_INTEGER:
return ((Long) obj).intValue();
case PROPERTY_STRING:
case VALUE_STRING:
return SafeEncoder.encode((byte[]) obj);
case PROPERTY_UNKNOWN:
case VALUE_ARRAY:
return deserializeArray(obj);
case VALUE_NODE:
return deserializeNode((List<Object>) obj);
case VALUE_EDGE:
return deserializeEdge((List<Object>) obj);
case VALUE_UNKNOWN:
default:
return obj;
}
}

private List<Object> deserializeArray(Object rawScalarData) {
List<List<Object>> array = (List<List<Object>>) rawScalarData;
List<Object> res = new ArrayList<>(array.size());
for (List<Object> arrayValue : array) {
res.add(deserializeScalar(arrayValue));
}
return res;
}

/**
* Auxiliary function to retrieve scalar types
*
* @param rawScalarType
* @return scalar type
*/
private ResultSetScalarTypes getScalarTypeFromObject(Object rawScalarType) {
return ResultSetScalarTypes.values()[((Long) rawScalarType).intValue()];
private ResultSetScalarTypes getValueTypeFromObject(Object rawScalarType) {
return ResultSetScalarTypes.getValue(((Long) rawScalarType).intValue());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.redislabs.redisgraph.impl.resultset;

import redis.clients.jedis.exceptions.JedisDataException;

enum ResultSetScalarTypes {
VALUE_UNKNOWN,
VALUE_NULL,
VALUE_STRING,
VALUE_INTEGER,
VALUE_BOOLEAN,
VALUE_DOUBLE,
VALUE_ARRAY,
VALUE_EDGE,
VALUE_NODE;


static ResultSetScalarTypes[] values = values();

public static ResultSetScalarTypes getValue(int index) {
if (index < 0 || index > values.length) throw new JedisDataException("Unrecognized response type");
return values[index];
}

}
Loading