private void ProcessColumnCollection(ReferenceCollection columnCollection)
{
var columnList = new Dictionary<Reference, string>();
foreach (Reference reference in columnCollection)
{
columnList.Add(reference, ((Column)reference.Object).Name);
}
//Remove Prefix
if (optPrefix.Checked)
{
if (!string.IsNullOrEmpty(txtPrefix.Text))
{
var keys = new List<Reference>(columnList.Keys);
foreach (var reference in keys)
{
var column = (Column)reference.Object;
var newName = columnList[reference];
if (newName.StartsWith(txtPrefix.Text))
{
newName = newName.Substring(txtPrefix.Text.Length, newName.Length - txtPrefix.Text.Length);
columnList[reference] = newName;
}
}
}
}
if (chkReplaceText.Checked)
{
var keys = new List<Reference>(columnList.Keys);
foreach (var reference in keys)
{
var column = (Column)reference.Object;
//Replace text
columnList[reference] = columnList[reference].Replace(txtReplaceSource.Text, txtReplaceTarget.Text);
}
}
if (optUnderscore.Checked)
{
//Underscore
var keys = new List<Reference>(columnList.Keys);
foreach (var reference in keys)
{
var column = (Column)reference.Object;
var currentName = columnList[reference];
var lowerCount = 0;
var index = 0;
var newName = string.Empty;
var lastCap = false;
var lastUnderscore = false;
foreach (var c in currentName)
{
var thisCap = (c.ToString() == c.ToString().ToUpper()) && (c != '_');
if ((thisCap == lastCap) && (lastCap) && (chkSkip2Caps.Checked))
{
//Skip the underscore since this is a double in row
}
else
{
//If this is an upper char then add underscore
if ((!lastUnderscore) && (index > 0) && c.ToString() == c.ToString().ToUpper() && (c != '_') && (c != ' '))
newName += "_";
}
if (c.ToString() == c.ToString().ToLower())
lowerCount++;
if (c == ' ') newName += '_';
else if (ValidationHelper.ValidCodeChars.Contains(c)) newName += c;
index++;
lastCap = thisCap;
lastUnderscore = (c == '_');
}
//Only se if there was at least one lower char in string
if (lowerCount > 0)
{
columnList[reference] = newName;
}
}
}
if (optUpcase.Checked)
{
//Lowcase
var keys = new List<Reference>(columnList.Keys);
foreach (var reference in keys)
{
var column = (Column)reference.Object;
var newName = columnList[reference].ToLower();
columnList[reference] = newName;
}
}
//Reset all names
foreach (var reference in columnList.Keys)
{
var column = (Column)reference.Object;
try
{
column.CancelUIEvents = true;
if (_fieldSetting == FieldSettingConstants.Name)
column.Name = columnList[reference];
else if (_fieldSetting == FieldSettingConstants.CodeFacade)
column.CodeFacade = columnList[reference];
column.CancelUIEvents = false;
}
catch (Exception ex)
{
throw;
}
finally
{
column.CancelUIEvents = false;
}
}
}