private string BuildPath(INode megaNzNode, Dictionary <string, INode> megaNzNodeDictionary) { if (megaNzNode.Type == NodeType.Root) { return(string.Empty); } if (megaNzNode.Type != NodeType.File) { var parentNode = megaNzNodeDictionary[megaNzNode.ParentId]; var path = BuildPath(parentNode, megaNzNodeDictionary) + @"\" + megaNzNode.Name; return(path); } else { // Extract the filename, removing the last modification date (only for file) string filename; DateTime datetime; NameHandler.ExtractFilenameAndDateTimeFromRemoteFilename(megaNzNode.Name, out filename, out datetime); var parentNode = megaNzNodeDictionary[megaNzNode.ParentId]; var path = BuildPath(parentNode, megaNzNodeDictionary) + @"\" + filename; return(path); } }
public void ExtractFileNameAndDateTimeFromName_shouldReturnTheCorrectDateTime() { const string oringalFilename = "filename_[[2016-1-1-0-0-0]].jpeg"; string extractedFilename; DateTime extractedDatetime; NameHandler.ExtractFilenameAndDateTimeFromRemoteFilename(oringalFilename, out extractedFilename, out extractedDatetime); Assert.AreEqual(new DateTime(2016, 1, 1, 0, 0, 0), extractedDatetime); }
public MegaNzItem(INode megaNzNode, Dictionary <string, INode> megaNzNodeDictionary) { MegaNzNode = megaNzNode; switch (megaNzNode.Type) { case NodeType.Root: Name = @"\"; Type = ItemType.Folder; Path = @"\"; Size = 0; break; case NodeType.Directory: Name = megaNzNode.Name; Type = ItemType.Folder; Path = BuildPath(megaNzNode, megaNzNodeDictionary) + @"\"; Size = 0; break; case NodeType.File: Type = ItemType.File; Path = BuildPath(megaNzNode, megaNzNodeDictionary); Size = megaNzNode.Size; // Extract the filename, removing the last modification date string filename; DateTime datetime; NameHandler.ExtractFilenameAndDateTimeFromRemoteFilename(megaNzNode.Name, out filename, out datetime); Name = filename; LastModified = datetime; break; default: throw new InvalidOperationException("Not able to create an item for INode that are not Directory or File"); } }