/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.client.threetier.json;
import com.eas.client.metadata.Fields;
import com.eas.client.metadata.Parameter;
import com.eas.client.metadata.Parameters;
import com.eas.client.queries.PlatypusQuery;
import jdk.nashorn.api.scripting.JSObject;
import jdk.nashorn.internal.runtime.JSType;
/**
*
* @author mg
*/
public class QueryJSONReader {
private static final String TITLE_PROP_NAME = "title";
private static final String APP_ELEMENT_PROP_NAME = "appelement";
private static final String PARAMETERS_PROP_NAME = "parameters";
private static final String FIELDS_PROP_NAME = "fields";
public static PlatypusQuery read(JSObject o) {
PlatypusQuery query = new PlatypusQuery(null);
String title = JSType.toString(o.getMember(TITLE_PROP_NAME));
query.setTitle(title);
String entityName = JSType.toString(o.getMember(APP_ELEMENT_PROP_NAME));
query.setEntityName(entityName);
// parameters
JSObject jsParameters = (JSObject) o.getMember(PARAMETERS_PROP_NAME);
assert jsParameters != null && jsParameters.isArray();
Parameters params = new Parameters();
FieldsJSONReader.readFields(jsParameters, params);
for (int i = 0; i < params.getParametersCount(); i++) {
Parameter p = params.get(i + 1);
query.putParameter(p.getName(), p.getType(), p.getValue());
}
// fields
JSObject jsFields = (JSObject) o.getMember(FIELDS_PROP_NAME);
assert jsFields != null && jsFields.isArray();
Fields fields = new Fields();
FieldsJSONReader.readFields(jsFields, fields);
query.setFields(fields);
return query;
}
}