/** * @param sourceEntityType * @param targetEntityType * @param navProperty */ private void validateReferentialConstraint(EdmEntityType sourceEntityType, EdmEntityType targetEntityType, EdmNavigationProperty navProperty) { if (!navProperty.getReferentialConstraints().isEmpty()) { String propertyName = navProperty.getReferentialConstraints().get(0).getPropertyName(); if (sourceEntityType.getProperty(propertyName) == null) { throw new RuntimeException("Property name "+ propertyName + " not part of the source entity."); } String referencedPropertyName = navProperty.getReferentialConstraints().get(0).getReferencedPropertyName(); if (targetEntityType.getProperty(referencedPropertyName) == null) { throw new RuntimeException("Property name " + referencedPropertyName + " not part of the target entity."); } } }
private void consumeEntityProperties(final EdmEntityType edmEntityType, final ObjectNode node, final Entity entity) throws DeserializerException { List<String> propertyNames = edmEntityType.getPropertyNames(); for (String propertyName : propertyNames) { JsonNode jsonNode = node.get(propertyName); if (jsonNode != null) { EdmProperty edmProperty = (EdmProperty) edmEntityType.getProperty(propertyName); if (jsonNode.isNull() && !edmProperty.isNullable()) { throw new DeserializerException("Property: " + propertyName + " must not be null.", DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, propertyName); } Property property = consumePropertyNode(edmProperty.getName(), edmProperty.getType(), edmProperty.isCollection(), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), edmProperty.isUnicode(), edmProperty.getMapping(), jsonNode); entity.addProperty(property); node.remove(propertyName); } } }
/** * @param sourceEntityType * @param targetEntityType * @param navProperty */ private void validateReferentialConstraint(EdmEntityType sourceEntityType, EdmEntityType targetEntityType, EdmNavigationProperty navProperty) { if (!navProperty.getReferentialConstraints().isEmpty()) { String propertyName = navProperty.getReferentialConstraints().get(0).getPropertyName(); if (sourceEntityType.getProperty(propertyName) == null) { throw new RuntimeException("Property name "+ propertyName + " not part of the source entity."); } String referencedPropertyName = navProperty.getReferentialConstraints().get(0).getReferencedPropertyName(); if (targetEntityType.getProperty(referencedPropertyName) == null) { throw new RuntimeException("Property name " + referencedPropertyName + " not part of the target entity."); } } }
private void consumeEntityProperties(final EdmEntityType edmEntityType, final ObjectNode node, final Entity entity) throws DeserializerException { List<String> propertyNames = edmEntityType.getPropertyNames(); for (String propertyName : propertyNames) { JsonNode jsonNode = node.get(propertyName); if (jsonNode != null) { EdmProperty edmProperty = (EdmProperty) edmEntityType.getProperty(propertyName); if (jsonNode.isNull() && !edmProperty.isNullable()) { throw new DeserializerException("Property: " + propertyName + " must not be null.", DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, propertyName); } Property property = consumePropertyNode(edmProperty.getName(), edmProperty.getType(), edmProperty.isCollection(), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), edmProperty.isUnicode(), edmProperty.getMapping(), jsonNode); entity.addProperty(property); node.remove(propertyName); } } }
private static ClientProperty getODataEntityProperty( final EdmEnabledODataClient client, final FullQualifiedName entity, final String property, final Object obj) { final EdmElement edmProperty = client.getCachedEdm().getEntityType(entity).getProperty(property); return getODataProperty(client, edmProperty, property, obj); }
private void consumeEntityProperties(final EdmEntityType edmEntityType, final ObjectNode node, final Entity entity) throws DeserializerException { List<String> propertyNames = edmEntityType.getPropertyNames(); for (String propertyName : propertyNames) { JsonNode jsonNode = node.get(propertyName); if (jsonNode != null) { EdmProperty edmProperty = (EdmProperty) edmEntityType.getProperty(propertyName); if (jsonNode.isNull() && !edmProperty.isNullable()) { throw new DeserializerException("Property: " + propertyName + " must not be null.", DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, propertyName); } Property property = consumePropertyNode(edmProperty.getName(), edmProperty.getType(), edmProperty.isCollection(), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), edmProperty.isUnicode(), edmProperty.getMapping(), jsonNode); entity.addProperty(property); node.remove(propertyName); } } }
private static ClientProperty getODataEntityProperty( final EdmEnabledODataClient client, final FullQualifiedName entity, final String property, final Object obj) { final EdmElement edmProperty = client.getCachedEdm().getEntityType(entity).getProperty(property); return getODataProperty(client, edmProperty, property, obj); }
private static List<Column> resolveKeyPredicatesToColumnsUpdate(EdmEntityType entityType, List<UriParameter> keyPredicates){ List<Column> columns = new ArrayList<Column>(); for(UriParameter uriPred:keyPredicates){ Column col=formNewColumnObject(uriPred.getName().replace("_", "."),null,getValueOfProperty(uriPred),true); col.setColumnDataType(entityType.getProperty(uriPred.getName()).getType().getName()); columns.add(col); } return columns; }
private void properties(final XMLEventReader reader, final StartElement start, final Entity entity, final EdmEntityType edmEntityType) throws XMLStreamException, EdmPrimitiveTypeException, DeserializerException { boolean foundEndProperties = false; while (reader.hasNext() && !foundEndProperties) { final XMLEvent event = reader.nextEvent(); if (event.isStartElement()) { String propertyName = event.asStartElement().getName().getLocalPart(); EdmProperty edmProperty = (EdmProperty) edmEntityType.getProperty(propertyName); if (edmProperty == null) { throw new DeserializerException("Invalid Property in payload with name: " + propertyName, DeserializerException.MessageKeys.UNKNOWN_CONTENT, propertyName); } entity.getProperties().add(property(reader, event.asStartElement(), edmProperty.getType(), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), edmProperty.isUnicode(), edmProperty.isCollection())); } if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) { foundEndProperties = true; } } }
private void properties(final XMLEventReader reader, final StartElement start, final Entity entity, final EdmEntityType edmEntityType) throws XMLStreamException, EdmPrimitiveTypeException, DeserializerException { boolean foundEndProperties = false; while (reader.hasNext() && !foundEndProperties) { final XMLEvent event = reader.nextEvent(); if (event.isStartElement()) { String propertyName = event.asStartElement().getName().getLocalPart(); EdmProperty edmProperty = (EdmProperty) edmEntityType.getProperty(propertyName); if (edmProperty == null) { throw new DeserializerException("Invalid Property in payload with name: " + propertyName, DeserializerException.MessageKeys.UNKNOWN_CONTENT, propertyName); } entity.getProperties().add(property(reader, event.asStartElement(), edmProperty.getType(), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), edmProperty.isUnicode(), edmProperty.isCollection())); } if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) { foundEndProperties = true; } } }
/** * Fetch the correct navigation property from the remaining path * @param remainingPath * @param strNavProperty * @param sourceTypeHavingNavProp * @return EdmNavigationProperty */ private EdmNavigationProperty fetchNavigationProperty(String remainingPath, String strNavProperty, EdmStructuredType sourceTypeHavingNavProp) { String[] paths = remainingPath.split("/"); for (String path : paths) { FullQualifiedName fqName = null; if (sourceTypeHavingNavProp instanceof EdmComplexType) { fqName = ((EdmComplexType)sourceTypeHavingNavProp).getProperty(path).getType().getFullQualifiedName(); } else if (sourceTypeHavingNavProp instanceof EdmEntityType) { fqName = ((EdmEntityType)sourceTypeHavingNavProp).getProperty(path).getType().getFullQualifiedName(); } if (fqName != null) { String namespace = aliasNamespaceMap.get(fqName.getNamespace()); fqName = namespace != null ? new FullQualifiedName(namespace, fqName.getName()) : fqName; } sourceTypeHavingNavProp = edmEntityTypesMap.containsKey(fqName) ? edmEntityTypesMap.get(fqName) : edmComplexTypesMap.get(fqName); } return sourceTypeHavingNavProp.getNavigationProperty(strNavProperty); }
/** * Fetch the correct navigation property from the remaining path * @param remainingPath * @param strNavProperty * @param sourceTypeHavingNavProp * @return EdmNavigationProperty */ private EdmNavigationProperty fetchNavigationProperty(String remainingPath, String strNavProperty, EdmStructuredType sourceTypeHavingNavProp) { String[] paths = remainingPath.split("/"); for (String path : paths) { FullQualifiedName fqName = null; if (sourceTypeHavingNavProp instanceof EdmComplexType) { fqName = ((EdmComplexType)sourceTypeHavingNavProp).getProperty(path).getType().getFullQualifiedName(); } else if (sourceTypeHavingNavProp instanceof EdmEntityType) { fqName = ((EdmEntityType)sourceTypeHavingNavProp).getProperty(path).getType().getFullQualifiedName(); } if (fqName != null) { String namespace = aliasNamespaceMap.get(fqName.getNamespace()); fqName = namespace != null ? new FullQualifiedName(namespace, fqName.getName()) : fqName; } sourceTypeHavingNavProp = edmEntityTypesMap.containsKey(fqName) ? edmEntityTypesMap.get(fqName) : edmComplexTypesMap.get(fqName); } return sourceTypeHavingNavProp.getNavigationProperty(strNavProperty); }
private ODataEntry getKeyPredicatesFromEntity(EdmEntityType entityType, Entity entity) throws ODataApplicationException { ODataEntry keyPredicates = new ODataEntry(); for (String key : entityType.getKeyPredicateNames()) { EdmProperty propertyType = (EdmProperty) entityType.getProperty(key); keyPredicates.addValue(key, readPrimitiveValueInString(propertyType, entity.getProperty(key).getValue())); } return keyPredicates; }
ArrayList<Entity> list = new ArrayList<>(); for (Entity entity : entityList) { EdmProperty property = (EdmProperty) entityType.getProperty(param.getName()); EdmType type = property.getType(); if (type.getKind() == EdmTypeKind.PRIMITIVE) {
protected void addProjectedColumn(final String columnName, Expression expr) { EdmPropertyImpl edmProperty = (EdmPropertyImpl) this.edmEntityType.getProperty(columnName); Column c = getColumnByName(columnName); /* currently not needed, but if we need to associate the column's srid or if we can rely on * the value for a variable srid, then we need to produce ewkb instead if (c.getDatatype().getName().equalsIgnoreCase(DataTypeManager.DefaultDataTypes.GEOMETRY)) { String val = c.getProperty(BaseColumn.SPATIAL_SRID, false); if (val != null) { expr = new Function("ST_SETSRID", new Expression[] {expr, new Constant(val)}); //$NON-NLS-1$ } expr = new Function("ST_ASEWKB", new Expression[] {expr}); //$NON-NLS-1$ expr = new AliasSymbol(columnName, expr); }*/ ProjectedColumn pc = addProjectedColumn(expr, edmProperty.getType(), edmProperty, edmProperty.isCollection()); pc.setOrdinal(c.getPosition()); }
/** * This method wraps Entity object into DataEntry object. * * @param entity Entity * @return DataEntry * @see DataEntry */ private ODataEntry wrapEntityToDataEntry(EdmEntityType entityType, Entity entity) throws ODataApplicationException { ODataEntry entry = new ODataEntry(); for (Property property : entity.getProperties()) { EdmProperty propertyType = (EdmProperty) entityType.getProperty(property.getName()); entry.addValue(property.getName(), readPrimitiveValueInString(propertyType, property.getValue())); } return entry; }
Property property = parentEntity.getProperty(keys.getPrimaryKey()); if (property != null && !property.isNull()) { propertyMap.put(keys.getForeignKey(), (EdmProperty) type.getProperty(property.getName())); property.setName(keys.getForeignKey()); properties.add(property);
navProperty = findLastQualifiedNameHavingNavigationProperty(navBindingPath, sourceEntityType); } else { navProperty = (EdmNavigationProperty) sourceEntityType.getProperty(navBindingPath);
navProperty = findLastQualifiedNameHavingNavigationProperty(navBindingPath, sourceEntityType); } else { navProperty = (EdmNavigationProperty) sourceEntityType.getProperty(navBindingPath);
public Update update(EdmEntityType entityType, Entity entity, boolean prepared) throws TeiidException { Update update = new Update(); update.setGroup(this.context.getGroupSymbol()); int i = 0; for (Property property : entity.getProperties()) { EdmProperty edmProperty = (EdmProperty)entityType.getProperty(property.getName()); Column column = this.context.getColumnByName(edmProperty.getName()); ElementSymbol symbol = new ElementSymbol(column.getName(), this.context.getGroupSymbol()); boolean add = true; for (String c : this.context.getKeyColumnNames()) { if (c.equals(column.getName())) { add = false; break; } } if (add) { if (prepared) { update.addChange(symbol, new Reference(i++)); this.params.add(asParam(edmProperty, property.getValue())); } else { update.addChange(symbol, new Constant(asParam(edmProperty, property.getValue()).getValue())); } } } update.setCriteria(this.context.getCriteria()); return update; }