Ejemplo n.º 1
0
 public Task <Errorable <TagID> > ResolvePartialID(TagID.Partial id)
 {
     FileInfo[] fis = system.getPathsByPartialID(id);
     if (fis.Length == 1)
     {
         return(Task.FromResult(TagID.TryParse(id.ToString().Substring(0, 2) + fis[0].Name)));
     }
     if (fis.Length == 0)
     {
         return(Task.FromResult((Errorable <TagID>) new TagIDPartialNoResolutionError(id)));
     }
     return(Task.FromResult((Errorable <TagID>) new TagIDPartialAmbiguousResolutionError(id, fis.SelectAsArray(f => TagID.TryParse(id.ToString().Substring(0, 2) + f.Name).Value))));
 }
Ejemplo n.º 2
0
        public async Task <Errorable <TagID> > ResolvePartialID(TagID.Partial id)
        {
            var resolvedIDs = await db.ExecuteListQueryAsync(new ResolvePartialTagID(id));

            if (resolvedIDs.Length == 1)
            {
                return(resolvedIDs[0]);
            }
            if (resolvedIDs.Length == 0)
            {
                return(new TagIDPartialNoResolutionError(id));
            }
            return(new TagIDPartialAmbiguousResolutionError(id, resolvedIDs));
        }
Ejemplo n.º 3
0
        internal FileInfo[] getPathsByPartialID(TagID.Partial partial)
        {
            DirectoryInfo objDir = getObjectsDirectory();
            string        idStr  = partial.ToString();

            string path = System.IO.Path.Combine(objDir.FullName, idStr.Substring(0, 2));
            var    di   = new DirectoryInfo(path);

            if (!di.Exists)
            {
                return(new FileInfo[0]);
            }

            return(di.GetFiles(idStr.Substring(2) + "*"));
        }
 public ResolvePartialTagID(TagID.Partial id)
 {
     this._id = id;
 }
Ejemplo n.º 5
0
 public TagIDPartialAmbiguousResolutionError(TagID.Partial id, params TagID[] ids) : base("Partial TagID {0} resolves to multiple TagID", id, ids)
 {
 }
Ejemplo n.º 6
0
 public TagIDPartialNoResolutionError(TagID.Partial id) : base("Partial TagID {0} does not resolve to a TagID", id)
 {
 }