def _getIdentifier(self): identifier = KeyMap() if not self.User.isValid(): # Uri with Scheme but without a Path generate invalid user but we need # to return an Identifier, and raise an 'IllegalIdentifierException' # when ContentProvider try to get the Content... # (ie: ContentProvider.queryContent() -> Identifier.getContent()) return identifier userid = self.User.Id rootid = self.User.RootId uripath = self._uri.getPath().strip('/.') itemid, parentid, path = self.User.DataBase.getIdentifier( userid, rootid, uripath) if self.isNew(): # New Identifier are created by the parent folder... identifier.setValue('Id', self._getNewIdentifier()) identifier.setValue('ParentId', itemid) else: identifier.setValue('Id', itemid) identifier.setValue('ParentId', parentid) baseuri = '%s://%s/%s' % (self._uri.getScheme(), self._uri.getAuthority(), path) identifier.setValue('BaseURI', baseuri) print("Identifier._getIdentifier() %s - %s - %s" % (itemid, parentid, baseuri)) return identifier
def _jsonParser(data): keymap = KeyMap() for key, value in data: if isinstance(value, list): value = tuple(value) keymap.setValue(key, value) return keymap
def _getMetaData(self, contenttype): metadata = KeyMap() if not self.User.isValid(): # Uri with Scheme but without a Path generate invalid user but we need # to return an Identifier, and raise an 'IllegalIdentifierException' # when ContentProvider try to get the Content... # (ie: ContentProvider.queryContent() -> Identifier.getContent()) return metadata uripath = self._uri.getPath().strip('/.') itemid, parentid, path = self.User.DataBase.getIdentifier( self.User.Id, self.User.RootId, uripath) if itemid is not None: if self.IsNew: # New Identifier are created by the parent folder... metadata.setValue('ParentId', itemid) itemid = self._getNewIdentifier() parenturi = self._uri.getUriReference() data = self._getNewContent(itemid, contenttype) else: metadata.setValue('ParentId', parentid) parenturi = '%s://%s/%s' % (self._uri.getScheme(), self._uri.getAuthority(), path) data = self.User.DataBase.getItem(self.User.Id, itemid, parentid) metadata.setValue('Id', itemid) metadata.setValue('ParentURI', parenturi) if data is not None: metadata += data self._propertySetInfo = self._getPropertySetInfo() return metadata