e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
73 lines
2.7 KiB
C#
73 lines
2.7 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="ConfigDefinitionUpdates.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.Configuration {
|
|
using System.Collections;
|
|
|
|
//
|
|
// Contains all the updates to section definitions across all location sections.
|
|
//
|
|
internal class ConfigDefinitionUpdates {
|
|
private ArrayList _locationUpdatesList;
|
|
private bool _requireLocationWritten;
|
|
|
|
internal ConfigDefinitionUpdates() {
|
|
_locationUpdatesList = new ArrayList();
|
|
}
|
|
|
|
//
|
|
// Find the location update with a certain set of location attributes.
|
|
//
|
|
internal LocationUpdates FindLocationUpdates(OverrideModeSetting overrideMode, bool inheritInChildApps) {
|
|
foreach (LocationUpdates locationUpdates in _locationUpdatesList) {
|
|
if ( OverrideModeSetting.CanUseSameLocationTag(locationUpdates.OverrideMode, overrideMode) &&
|
|
locationUpdates.InheritInChildApps == inheritInChildApps) {
|
|
return locationUpdates;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
//
|
|
// Add a section definition update to the correct location update.
|
|
//
|
|
internal DefinitionUpdate AddUpdate(OverrideModeSetting overrideMode, bool inheritInChildApps, bool moved, string updatedXml, SectionRecord sectionRecord) {
|
|
LocationUpdates locationUpdates = FindLocationUpdates(overrideMode, inheritInChildApps);
|
|
if (locationUpdates == null) {
|
|
locationUpdates = new LocationUpdates(overrideMode, inheritInChildApps);
|
|
_locationUpdatesList.Add(locationUpdates);
|
|
}
|
|
|
|
DefinitionUpdate definitionUpdate = new DefinitionUpdate(sectionRecord.ConfigKey, moved, updatedXml, sectionRecord);
|
|
locationUpdates.SectionUpdates.AddSection(definitionUpdate);
|
|
return definitionUpdate;
|
|
}
|
|
|
|
//
|
|
// Determine which section definition updates are new.
|
|
//
|
|
internal void CompleteUpdates() {
|
|
foreach (LocationUpdates locationUpdates in _locationUpdatesList) {
|
|
locationUpdates.CompleteUpdates();
|
|
}
|
|
}
|
|
|
|
internal ArrayList LocationUpdatesList {
|
|
get {return _locationUpdatesList;}
|
|
}
|
|
|
|
internal bool RequireLocation {
|
|
get { return _requireLocationWritten; }
|
|
set { _requireLocationWritten = value; }
|
|
}
|
|
|
|
internal void FlagLocationWritten() {
|
|
_requireLocationWritten = false;
|
|
}
|
|
}
|
|
}
|