private ArrayList _roots; //DirectoryInfo #endregion Fields #region Constructors public Cataloger(setupUIforCatalog _setupUI, updateUIforCatalog _updateUI) { roots = new ArrayList(); groups = new ArrayList(); setupUI = _setupUI; updateUI = _updateUI; resourcesIndex = new InvertedIndex(); }
private void setupCataloger() { ArrayList rings = ringManager.rings; //setup callback routines for the cataloger progress bar setupUIforCatalog UIsetupHandler = new setupUIforCatalog( ClientUserInterface.UI.setupCatalogUIHandler); updateUIforCatalog UIupdateHandler = new updateUIforCatalog( ClientUserInterface.UI.updateCatalogUIHandler); foreach (Ring ring in rings) { RingInfo ringInfo = RingInfo.findRingInfoByID(User.getInstance().ringsInfo, ring.ringID); ringInfo.cataloger = new Cataloger(UIsetupHandler, UIupdateHandler); //REVISIT: need to read configuration file to apply correct resource groups to each ring ringInfo.cataloger.groups.AddRange(ring.group); ringInfo.cataloger.roots.Add(new DirectoryInfo(@"C:\Documents and Settings\beghbali\My Documents\General\Friends")); //ringInfo.cataloger.roots.Add(new DirectoryInfo(@"C:\Documents and Settings\beghbali\My Documents\My Music")); ringInfo.cataloger.roots.Add(new DirectoryInfo(@"C:\Documents and Settings\beghbali\Desktop\Downloads\Software Downloads")); //REVISIT: do catalog leaking, namely check to see if any of the roots of rings are subset of another, You //probably wnat one cataloger that walks the list of roots and each entry has a list of rings that need the //resources from that root (you need to calculate this as subsets) and will update the corresponding rings' //catalogers. This should be done via chain delegates (LIST registries). ringInfo.cataloger.catalog(); //pick up the calculated IE ringInfo.IE = ringInfo.cataloger.calculatedIE; object[] callbackArgs = new Object[1]; callbackArgs[0] = ringInfo; ClientUserInterface.clientUserInterfaceInstance.Invoke( clientUserInterfaceCallbackTable.showCatalog, callbackArgs); } }