public IDictionary <String, SchemaMetadataDiff> GetAllSchemaMetadataDiffs() { IDictionary <String, SchemaMetadataDiff> diffs = new Dictionary <String, SchemaMetadataDiff>(); SchemaComparableList <SchemaEntry> baseAtEntries = baseEntryFetcher.GetAttributeSchemaEntries(); SchemaComparableList <SchemaEntry> baseOcEntries = baseEntryFetcher.GetClassSchemaEntries(); foreach (KeyValuePair <String, IEntryFetcher> p in entryFetchers) { String serverName = p.Key; IEntryFetcher fetcher = p.Value; SchemaMetadataDiff diff = null; if (fetcher != null) { SchemaComparableList <SchemaEntry> otherAtEntries = fetcher.GetAttributeSchemaEntries(); SchemaComparableList <SchemaEntry> otherOcEntries = fetcher.GetClassSchemaEntries(); diff = new SchemaMetadataDiff( baseAtEntries, baseOcEntries, otherAtEntries, otherOcEntries); } diffs.Add(serverName, diff); } return(diffs); }
public SchemaConnection(IEntryFetcherFactory entryFetcherFactory, String baseHost, String upn, String passwd) { this.entryFetcherFactory = entryFetcherFactory; baseEntryFetcher = entryFetcherFactory.CreateEntryFetcher(baseHost, upn, passwd); if (baseEntryFetcher == null) { throw new SchemaConnectionException("Base server is not reachable"); } entryFetchers = new Dictionary <String, IEntryFetcher>(); // DseRootEntry dseRootEntry = baseEntryFetcher.GetDseRootEntry(); // ServerEntry serverEntry = baseEntryFetcher.GetServerEntry(dseRootEntry.serverDn); //baseServerName = serverEntry.serverName; // RefreshSchemaConnection(upn, passwd); }
public IDictionary <String, SchemaDefinitionDiff> GetAllSchemaDefinitionDiffs() { IDictionary <String, SchemaDefinitionDiff> diffs = new Dictionary <String, SchemaDefinitionDiff>(); SubSchemaSubEntry baseSubSchema = baseEntryFetcher.GetSubSchemaSubEntry(); foreach (KeyValuePair <String, IEntryFetcher> p in entryFetchers) { String serverName = p.Key; IEntryFetcher fetcher = p.Value; SchemaDefinitionDiff diff = null; if (fetcher != null) { SubSchemaSubEntry otherSubSchema = fetcher.GetSubSchemaSubEntry(); diff = new SchemaDefinitionDiff(baseSubSchema, otherSubSchema); } diffs.Add(serverName, diff); } return(diffs); }
public void RefreshSchemaConnection(String upn, String passwd) { IList <ServerEntry> serverEntries = baseEntryFetcher.GetServerEntries(); entryFetchers.Clear(); Mutex mutex = new Mutex(); Parallel.ForEach(serverEntries, (e) => { if (String.Compare(baseServerName, e.serverName) != 0) { IEntryFetcher entryFetcher = entryFetcherFactory.CreateEntryFetcher( e.serverName, upn, passwd); mutex.WaitOne(); entryFetchers.Add(e.serverName, entryFetcher); mutex.ReleaseMutex(); } }); }