use of org.apache.olingo.commons.api.data.Property in project teiid by teiid.
the class ODataProcedureExecution method handleResponse.
private void handleResponse(final Procedure procedure, final String baseUri, final InputStream payload) throws TranslatorException, ODataDeserializerException {
if (procedure.getResultSet() != null) {
ODataType type = ODataType.valueOf(procedure.getResultSet().getProperty(ODataMetadataProcessor.ODATA_TYPE, false));
this.response = new ODataResponse(payload, type, new DocumentNode()) {
@Override
public InputStream nextBatch(java.net.URI uri) throws TranslatorException {
return executeSkipToken(uri, baseUri, new HttpStatusCode[] { HttpStatusCode.OK });
}
};
} else if (getReturnParameter() != null) {
// this is scalar result
JsonDeserializer parser = new JsonDeserializer(false);
Property property = parser.toProperty(payload).getPayload();
if (property.isCollection()) {
this.returnValue = property.asCollection();
} else {
this.returnValue = property.asPrimitive();
}
}
}
use of org.apache.olingo.commons.api.data.Property in project teiid by teiid.
the class ODataResponse method parsePayload.
private Iterator<ODataDocument> parsePayload(InputStream payload) throws TranslatorException {
try {
JsonDeserializer parser = new JsonDeserializer(false);
if (this.resultsType == ODataType.ENTITY) {
Entity entity = parser.toEntity(payload).getPayload();
ODataDocument document = ODataDocument.createDocument(entity);
return Arrays.asList(document).iterator();
} else if (this.resultsType == ODataType.ENTITY_COLLECTION) {
EntityCollection entityCollection = parser.toEntitySet(payload).getPayload();
this.nextUri = entityCollection.getNext();
ArrayList<ODataDocument> documents = new ArrayList<ODataDocument>();
for (Entity entity : entityCollection.getEntities()) {
documents.add(ODataDocument.createDocument(entity));
}
return documents.iterator();
} else {
// complex
Property property = parser.toProperty(payload).getPayload();
if (property.isCollection()) {
ArrayList<ODataDocument> documents = new ArrayList<ODataDocument>();
for (Object obj : property.asCollection()) {
ComplexValue complexValue = (ComplexValue) obj;
documents.add(ODataDocument.createDocument(complexValue));
}
return documents.iterator();
} else {
ODataDocument document = ODataDocument.createDocument(property.asComplex());
return Arrays.asList(document).iterator();
}
}
} catch (ODataDeserializerException e) {
throw new TranslatorException(e);
}
}
use of org.apache.olingo.commons.api.data.Property in project teiid by teiid.
the class ODataUpdateQuery method getPayload.
public String getPayload(Entity parentEntity) throws TranslatorException {
JsonSerializer serializer = new JsonSerializer(false, ContentType.APPLICATION_JSON);
StringWriter writer = new StringWriter();
try {
if (!this.complexTables.isEmpty()) {
Table table = this.complexTables.get(0).getTable();
Property complexProperty = new Property();
complexProperty.setName(getName(table));
complexProperty.setType(table.getProperty(ODataMetadataProcessor.NAME_IN_SCHEMA, false));
ComplexValue value = new ComplexValue();
for (Property p : this.payloadProperties) {
value.getValue().add(p);
}
if (this.complexTables.get(0).isCollection()) {
complexProperty.setValue(ValueType.COLLECTION_COMPLEX, Arrays.asList(value));
} else {
complexProperty.setValue(ValueType.COMPLEX, value);
}
serializer.write(writer, complexProperty);
} else if (!this.expandTables.isEmpty()) {
Table table = this.expandTables.get(0).getTable();
Entity entity = new Entity();
entity.setType(table.getProperty(ODataMetadataProcessor.NAME_IN_SCHEMA, false));
for (Property p : this.payloadProperties) {
entity.addProperty(p);
}
serializer.write(writer, entity);
} else {
Entity entity = new Entity();
entity.setType(this.rootDocument.getTable().getProperty(ODataMetadataProcessor.NAME_IN_SCHEMA, false));
for (Property p : this.payloadProperties) {
entity.addProperty(p);
}
// for updates
if (parentEntity != null) {
// add all the key properties.
List<Column> keys = this.rootDocument.getTable().getPrimaryKey().getColumns();
for (Column key : keys) {
entity.addProperty(parentEntity.getProperty(key.getName()));
}
}
serializer.write(writer, entity);
}
} catch (ODataSerializerException e) {
throw new TranslatorException(e);
}
return writer.toString();
}
use of org.apache.olingo.commons.api.data.Property in project teiid by teiid.
the class ODataDocument method createDocument.
public static ODataDocument createDocument(Entity entity) {
ODataDocument document = new ODataDocument();
List<Property> properties = entity.getProperties();
for (Property property : properties) {
populateDocument(property, document);
}
return document;
}
use of org.apache.olingo.commons.api.data.Property in project teiid by teiid.
the class ODataUpdateExecution method addAutoGeneretedKeys.
private void addAutoGeneretedKeys(Table table, Entity entity) throws TranslatorException {
int cols = table.getPrimaryKey().getColumns().size();
Class<?>[] columnDataTypes = new Class<?>[cols];
String[] columnNames = new String[cols];
String[] odataTypes = new String[cols];
// we may eventual need the type logic off of the metadata importer
for (int i = 0; i < cols; i++) {
columnDataTypes[i] = table.getPrimaryKey().getColumns().get(i).getJavaType();
columnNames[i] = table.getPrimaryKey().getColumns().get(i).getName();
odataTypes[i] = ODataMetadataProcessor.getNativeType(table.getPrimaryKey().getColumns().get(i));
}
GeneratedKeys generatedKeys = this.executionContext.getCommandContext().returnGeneratedKeys(columnNames, columnDataTypes);
List<Object> vals = new ArrayList<Object>(columnDataTypes.length);
for (int i = 0; i < columnDataTypes.length; i++) {
Property prop = entity.getProperty(columnNames[i]);
Object value;
try {
value = ODataTypeManager.convertToTeiidRuntimeType(columnDataTypes[i], prop.getValue(), odataTypes[i]);
} catch (TeiidException e) {
throw new TranslatorException(e);
}
vals.add(value);
}
generatedKeys.addKey(vals);
}
Aggregations