public override void AwakeFromNib() {
base.AwakeFromNib();
var config = ConfigManager.CurrentConfig;
this.folderSelection.RemoveAllItems();
this.output.Editable = false;
this.RunButton.Activated += (object sender, EventArgs e) => {
var folder = config.Folders.Find(f => f.DisplayName == this.folderSelection.SelectedItem.Title);
using (var dbEngine = new DBreezeEngine(folder.GetDatabasePath())) {
var storage = new MetaDataStorage(dbEngine, new PathMatcher(folder.LocalPath, folder.RemotePath), false);
try {
storage.ValidateObjectStructure();
this.output.StringValue = string.Format("{0}: DB structure of {1} is fine", DateTime.Now, folder.GetDatabasePath());
} catch(Exception ex) {
this.output.StringValue = ex.ToString();
}
}
};
this.DumpTree.Activated += (object sender, EventArgs e) => {
this.output.StringValue = string.Empty;
var folder = config.Folders.Find(f => f.DisplayName == this.folderSelection.SelectedItem.Title);
using (var dbEngine = new DBreezeEngine(folder.GetDatabasePath())) {
var storage = new MetaDataStorage(dbEngine, new PathMatcher(folder.LocalPath, folder.RemotePath), false);
try {
var ignoreStorage = new IgnoredEntitiesStorage(new IgnoredEntitiesCollection(), storage);
var session = SessionFactory.NewInstance().CreateSession(folder, "DSS-DIAGNOSE-TOOL");
var remoteFolder = session.GetObjectByPath(folder.RemotePath) as IFolder;
var filterAggregator = new FilterAggregator(
new IgnoredFileNamesFilter(),
new IgnoredFolderNameFilter(),
new InvalidFolderNameFilter(),
new IgnoredFoldersFilter());
var treeBuilder = new DescendantsTreeBuilder(
storage,
remoteFolder,
new DirectoryInfoWrapper(new DirectoryInfo(folder.LocalPath)),
filterAggregator,
ignoreStorage);
var trees = treeBuilder.BuildTrees();
var suffix = string.Format("{0}-{1}", folder.DisplayName.Replace(Path.DirectorySeparatorChar,'_'), Guid.NewGuid().ToString());
var localTree = Path.Combine(Path.GetTempPath(), string.Format("LocalTree-{0}.dot", suffix));
var remoteTree = Path.Combine(Path.GetTempPath(), string.Format("StoredTree-{0}.dot", suffix));
var storedTree = Path.Combine(Path.GetTempPath(), string.Format("RemoteTree-{0}.dot", suffix));
trees.LocalTree.ToDotFile(localTree);
trees.StoredTree.ToDotFile(remoteTree);
trees.RemoteTree.ToDotFile(storedTree);
this.output.StringValue = string.Format("Written to:\n{0}\n{1}\n{2}", localTree, remoteTree, storedTree);
} catch (Exception ex) {
this.output.StringValue = ex.ToString();
}
}
};
foreach (var folder in config.Folders) {
this.folderSelection.AddItem(folder.DisplayName);
}
}