/** * To add a Key/NonKey-primitive property to a resource (complex/entity) * * @param ResourceType $resourceType Resource type * @param string $name name of the property * @param TypeCode $typeCode type of property * @param boolean $isKey property is key or not * @param boolean $isBag property is bag or not * @param boolean $isETagProperty property is etag or not * * @return void */ private function _addPrimitivePropertyInternal($resourceType, $name, $typeCode, $isKey = false, $isBag = false, $isETagProperty = false) { try { $resourceType->getInstanceType()->getProperty($name); } catch (ReflectionException $ex) { throw new InvalidOperationException('Can\'t add a property which does not exist on the instance type.'); } $primitiveResourceType = null; try { $primitiveResourceType = ResourceType::getPrimitiveResourceType($typeCode); } catch (InvalidArgumentException $ex) { throw $ex; } if ($isETagProperty && $isBag) { throw new InvalidOperationException('Only primitve property can be etag property, bag property cannot be etag property'); } $kind = $isKey ? ResourcePropertyKind::PRIMITIVE | ResourcePropertyKind::KEY : ResourcePropertyKind::PRIMITIVE; if ($isBag) { $kind = $kind | ResourcePropertyKind::BAG; } if ($isETagProperty) { $kind = $kind | ResourcePropertyKind::ETAG; } $resourceProperty = new ResourceProperty($name, null, $kind, $primitiveResourceType); $resourceType->addProperty($resourceProperty); }
private function _getOrderResourceType() { $orderResType = new ResourceType(new ReflectionClass('Order2'), ResourceTypeKind::ENTITY, 'Order', 'Northwind'); $intResourceType = ResourceType::getPrimitiveResourceType(EdmPrimitiveType::INT32); $orderIDPrimProperty = new ResourceProperty('OrderID', null, ResourcePropertyKind::PRIMITIVE | ResourcePropertyKind::KEY, $intResourceType); $dateTimeResourceType = ResourceType::getPrimitiveResourceType(EdmPrimitiveType::DATETIME); $orderDatePrimProperty = new ResourceProperty('OrderDate', null, ResourcePropertyKind::PRIMITIVE, $dateTimeResourceType); $stringResourceType = ResourceType::getPrimitiveResourceType(EdmPrimitiveType::STRING); $orderShipNamePrimProperty = new ResourceProperty('ShipName', null, ResourcePropertyKind::PRIMITIVE, $stringResourceType); $orderResType->addProperty($orderIDPrimProperty); $orderResType->addProperty($orderDatePrimProperty); $orderResType->addProperty($orderShipNamePrimProperty); return $orderResType; }