package eu.leads.processor.plan;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.util.StdConverter;
import eu.leads.processor.execute.operators.*;
import java.io.IOException;
/**
* Created with IntelliJ IDEA.
* User: vagvaz
* Date: 11/5/13
* Time: 4:36 PM
* To change this template use File | Settings | File Templates.
*/
//Converter for ExecutionPlannode from JsonTreeNode
public class ExecutionPlanNodeConverter extends StdConverter<JsonNode, ExecutionPlanNode> {
@Override
public ExecutionPlanNode convert(JsonNode jsonNode) {
ObjectMapper mapper = new ObjectMapper();
OperatorType t = OperatorType.valueOf(jsonNode.path("type").asText());
ExecutionPlanNode result = null;
try {
switch (t) {
case READ:
result = mapper.readValue(jsonNode.toString(), ReadOperator.class);
break;
case PROJECT:
result = mapper.readValue(jsonNode.toString(), ProjectOperator.class);
break;
case RENAME:
break;
case JOIN:
break;
case GROUPBY:
result = mapper.readValue(jsonNode.toString(), GroupByOperator.class);
break;
case SORT:
result = mapper.readValue(jsonNode.toString(), SortOperator.class);
break;
case DISTINCT:
break;
case FILTER:
result = mapper.readValue(jsonNode.toString(), FilterOperator.class);
break;
case LIMIT:
result = mapper.readValue(jsonNode.toString(), LimitOperator.class);
break;
case OUTPUT:
result = mapper.readValue(jsonNode.toString(), OutputOperator.class);
break;
case NONE:
break;
}
} catch (IOException e) {
System.out.println("json " + jsonNode.toString());
e.printStackTrace();
}
return result;
}
}