Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }