private void UpdateFileDataObject(string oldPath, string newPath) { Uri oldUrl = new Uri("file://" + Uri.EscapeUriString(oldPath)); Uri newUrl = new Uri("file://" + Uri.EscapeUriString(newPath)); if (_monitoredFileUris.ContainsKey(oldUrl)) { try { Uri uri = _monitoredFileUris[oldUrl]; FileDataObject file = _model.GetResource <FileDataObject>(uri); file.Url = newUrl.AbsoluteUri; file.Commit(); _monitoredFiles.Remove(oldPath); _monitoredFiles.Add(newPath, new FileInfoCache(newPath)); _monitoredFileUris.Remove(oldUrl); _monitoredFileUris.Add(newUrl, file.Uri); Logger.LogInfo("Moved {0}", newPath); } catch (Exception e) { Logger.LogError(HttpStatusCode.InternalServerError, e); } } else { CreateFileDataObject(newPath); } }
private FileInfoCache CreateFileDataObject(string path) { FileInfoCache file = new FileInfoCache(path); string queryString = @" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX nfo: <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#> SELECT ?uri WHERE { ?uri a nfo:FileDataObject . ?uri nfo:fileUrl """ + file.Url.AbsoluteUri + @""" . } LIMIT 1"; SparqlQuery query = new SparqlQuery(queryString); ISparqlQueryResult result = _model.ExecuteQuery(query); BindingSet bindings = result.GetBindings().FirstOrDefault(); if (bindings == null) { FileDataObject f = _model.CreateResource <FileDataObject>(); f.CreationTime = file.CreationTime; f.LastAccessTime = file.LastAccessTime; f.LastModificationTime = file.LastWriteTime; f.Url = file.Url.AbsoluteUri; f.Commit(); _monitoredFileUris[file.Url] = f.Uri; Logger.LogInfo("Created {0}", file.FullName); } else { _monitoredFileUris[file.Url] = new Uri(bindings["uri"].ToString()); Logger.LogInfo("Updating {0}", file.FullName); } return(file); }