protected override void UpdateEffectiveState(ISystemContext context)
{
if (!this.EnabledState.Id.Value)
{
base.UpdateEffectiveState(context);
return;
}
StringBuilder builder = new StringBuilder();
string locale = null;
if (this.ActiveState.Value != null)
{
locale = this.ActiveState.Value.Locale;
if (this.ActiveState.Id.Value)
{
if (this.ActiveState.EffectiveDisplayName != null && !LocalizedText.IsNullOrEmpty(this.ActiveState.EffectiveDisplayName.Value))
{
builder.Append(this.ActiveState.EffectiveDisplayName.Value);
}
else
{
builder.Append(this.ActiveState.Value);
}
}
else
{
builder.Append(this.ActiveState.Value);
}
}
LocalizedText suppressedState = null;
if (this.SuppressedState != null)
{
if (this.SuppressedState.Id.Value)
{
suppressedState = this.SuppressedState.Value;
}
}
if (this.ShelvingState != null)
{
if (this.ShelvingState.CurrentState.Id.Value != ObjectIds.ShelvedStateMachineType_Unshelved)
{
suppressedState = this.ShelvingState.CurrentState.Value;
}
}
if (suppressedState != null)
{
builder.Append(" | ");
builder.Append(suppressedState);
}
LocalizedText ackState = null;
if (!this.ConfirmedState.Id.Value)
{
if (!this.ConfirmedState.Id.Value)
{
ackState = this.ConfirmedState.Value;
}
}
if (!this.AckedState.Id.Value)
{
if (!this.AckedState.Id.Value)
{
ackState = this.AckedState.Value;
}
}
if (ackState != null)
{
builder.Append(" | ");
builder.Append(ackState);
}
LocalizedText effectiveState = new LocalizedText(locale, builder.ToString());
SetEffectiveSubState(context, effectiveState, DateTime.MinValue);
}