You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

280 lines
14 KiB

using OpenDBDiff.Abstractions.Schema;
using OpenDBDiff.Abstractions.Schema.Model;
using OpenDBDiff.SqlServer.Schema.Options;
using System;
using System.Windows.Forms;
namespace OpenDBDiff.SqlServer.Ui
{
public partial class SqlOptionsFront : OpenDBDiff.Abstractions.Ui.OptionControl
{
private SqlOption SQLOption;
public SqlOptionsFront()
{
InitializeComponent();
HandlerHelper.OnChange += new HandlerHelper.SaveFilterHandler(HandlerHelper_OnChange);
}
public void HandlerHelper_OnChange()
{
LoadFilters();
}
private void LoadFilters()
{
lstFilters.Items.Clear();
foreach (SqlOptionFilterItem item in SQLOption.Filters.Items)
{
var lview = new ListViewItem(item.FilterPattern);
lview.SubItems.Add(item.ObjectType.ToString());
lstFilters.Items.Add(lview);
};
}
public override void Load(IOption option)
{
this.SQLOption = new SqlOption(option);
txtBlob.Text = SQLOption.Defaults.DefaultBlobValue;
txtDate.Text = SQLOption.Defaults.DefaultDateValue;
txtDefaultInteger.Text = SQLOption.Defaults.DefaultIntegerValue;
txtDefaultReal.Text = SQLOption.Defaults.DefaultRealValue;
txtNText.Text = SQLOption.Defaults.DefaultNTextValue;
txtText.Text = SQLOption.Defaults.DefaultTextValue;
txtVariant.Text = SQLOption.Defaults.DefaultVariantValue;
txtTime.Text = SQLOption.Defaults.DefaultTime;
txtXML.Text = SQLOption.Defaults.DefaultXml;
chkCompAssemblys.Checked = SQLOption.Ignore.FilterAssemblies;
chkCompCLRFunctions.Checked = SQLOption.Ignore.FilterCLRFunction;
chkCompCLRStore.Checked = SQLOption.Ignore.FilterCLRStoredProcedure;
chkCompCLRTrigger.Checked = SQLOption.Ignore.FilterCLRTrigger;
chkCompCLRUDT.Checked = SQLOption.Ignore.FilterCLRUDT;
chkConstraints.Checked = SQLOption.Ignore.FilterConstraint;
chkConstraintsPK.Checked = SQLOption.Ignore.FilterConstraintPK;
chkConstraintsFK.Checked = SQLOption.Ignore.FilterConstraintFK;
chkConstraintsUK.Checked = SQLOption.Ignore.FilterConstraintUK;
chkConstraintsCheck.Checked = SQLOption.Ignore.FilterConstraintCheck;
chkCompExtendedProperties.Checked = SQLOption.Ignore.FilterExtendedProperties;
chkCompFunciones.Checked = SQLOption.Ignore.FilterFunction;
chkIndex.Checked = SQLOption.Ignore.FilterIndex;
chkIndexFillFactor.Checked = SQLOption.Ignore.FilterIndexFillFactor;
chkIndexIncludeColumns.Checked = SQLOption.Ignore.FilterIndexIncludeColumns;
chkIndexFilter.Checked = SQLOption.Ignore.FilterIndexFilter;
chkFullText.Checked = SQLOption.Ignore.FilterFullText;
chkFullTextPath.Checked = SQLOption.Ignore.FilterFullTextPath;
chkCompSchemas.Checked = SQLOption.Ignore.FilterSchema;
chkCompStoredProcedure.Checked = SQLOption.Ignore.FilterStoredProcedure;
chkTableOption.Checked = SQLOption.Ignore.FilterTableOption;
chkTables.Checked = SQLOption.Ignore.FilterTable;
chkTablesColumnIdentity.Checked = SQLOption.Ignore.FilterColumnIdentity;
chkTablesColumnCollation.Checked = SQLOption.Ignore.FilterColumnCollation;
chkTableLockEscalation.Checked = SQLOption.Ignore.FilterTableLockEscalation;
chkTableChangeTracking.Checked = SQLOption.Ignore.FilterTableChangeTracking;
chkTablesColumnOrder.Checked = SQLOption.Ignore.FilterColumnOrder;
chkIgnoreNotForReplication.Checked = SQLOption.Ignore.FilterNotForReplication;
chkCompTriggersDDL.Checked = SQLOption.Ignore.FilterDDLTriggers;
chkCompTriggers.Checked = SQLOption.Ignore.FilterTrigger;
chkCompUDT.Checked = SQLOption.Ignore.FilterUserDataType;
chkCompVistas.Checked = SQLOption.Ignore.FilterView;
chkCompXMLSchemas.Checked = SQLOption.Ignore.FilterXMLSchema;
chkFileGroups.Checked = SQLOption.Ignore.FilterTableFileGroup;
chkCompUsers.Checked = SQLOption.Ignore.FilterUsers;
chkCompRoles.Checked = SQLOption.Ignore.FilterRoles;
chkCompRules.Checked = SQLOption.Ignore.FilterRules;
IncludeSynonymsCheckBox.Checked = SQLOption.Ignore.FilterSynonyms;
if (SQLOption.Script.AlterObjectOnSchemaBinding)
optScriptSchemaBindingAlter.Checked = true;
else
optScriptSchemaDrop.Checked = true;
if (SQLOption.Comparison.CaseSensityType == SqlOptionComparison.CaseSensityOptions.Automatic)
rdoCaseAutomatic.Checked = true;
if (SQLOption.Comparison.CaseSensityType == SqlOptionComparison.CaseSensityOptions.CaseInsensity)
rdoCaseInsensitive.Checked = true;
if (SQLOption.Comparison.CaseSensityType == SqlOptionComparison.CaseSensityOptions.CaseSensity)
rdoCaseSensitive.Checked = true;
if (SQLOption.Comparison.CaseSensityInCode == SqlOptionComparison.CaseSensityOptions.CaseInsensity)
rdoCaseInsensityInCode.Checked = true;
if (SQLOption.Comparison.CaseSensityInCode == SqlOptionComparison.CaseSensityOptions.CaseSensity)
rdoCaseSensityInCode.Checked = true;
chkIgnoreWhiteSpaceInCode.Checked = SQLOption.Comparison.IgnoreWhiteSpacesInCode;
chkReloadDB.Checked = SQLOption.Comparison.ReloadComparisonOnUpdate;
LoadFilters();
}
public override void Save()
{
SQLOption.Defaults.DefaultBlobValue = txtBlob.Text;
SQLOption.Defaults.DefaultDateValue = txtDate.Text;
SQLOption.Defaults.DefaultIntegerValue = txtDefaultInteger.Text;
SQLOption.Defaults.DefaultNTextValue = txtNText.Text;
SQLOption.Defaults.DefaultRealValue = txtDefaultReal.Text;
SQLOption.Defaults.DefaultTextValue = txtText.Text;
SQLOption.Defaults.DefaultVariantValue = txtVariant.Text;
SQLOption.Defaults.DefaultTime = txtTime.Text;
SQLOption.Defaults.DefaultXml = txtXML.Text;
SQLOption.Ignore.FilterAssemblies = chkCompAssemblys.Checked;
SQLOption.Ignore.FilterCLRFunction = chkCompCLRFunctions.Checked && chkCompAssemblys.Checked;
SQLOption.Ignore.FilterCLRStoredProcedure = chkCompCLRStore.Checked && chkCompAssemblys.Checked;
SQLOption.Ignore.FilterCLRTrigger = chkCompCLRTrigger.Checked && chkCompAssemblys.Checked;
SQLOption.Ignore.FilterCLRUDT = chkCompCLRUDT.Checked && chkCompAssemblys.Checked;
SQLOption.Ignore.FilterConstraint = chkConstraints.Checked;
SQLOption.Ignore.FilterConstraintPK = chkConstraintsPK.Checked;
SQLOption.Ignore.FilterConstraintFK = chkConstraintsFK.Checked;
SQLOption.Ignore.FilterConstraintUK = chkConstraintsUK.Checked;
SQLOption.Ignore.FilterConstraintCheck = chkConstraintsCheck.Checked;
SQLOption.Ignore.FilterFunction = chkCompFunciones.Checked;
SQLOption.Ignore.FilterIndex = chkIndex.Checked;
SQLOption.Ignore.FilterIndexFillFactor = chkIndexFillFactor.Checked && chkIndex.Checked;
SQLOption.Ignore.FilterIndexIncludeColumns = chkIndexIncludeColumns.Checked && chkIndex.Checked;
SQLOption.Ignore.FilterIndexFilter = chkIndexFilter.Checked && chkIndex.Checked;
SQLOption.Ignore.FilterSchema = chkCompSchemas.Checked;
SQLOption.Ignore.FilterStoredProcedure = chkCompStoredProcedure.Checked;
SQLOption.Ignore.FilterTable = chkTables.Checked;
SQLOption.Ignore.FilterColumnIdentity = chkTablesColumnIdentity.Checked && chkTables.Checked;
SQLOption.Ignore.FilterColumnCollation = chkTablesColumnCollation.Checked && chkTables.Checked;
SQLOption.Ignore.FilterColumnOrder = chkTablesColumnOrder.Checked && chkTables.Checked;
SQLOption.Ignore.FilterTableOption = chkTableOption.Checked && chkTables.Checked;
SQLOption.Ignore.FilterTableLockEscalation = chkTableLockEscalation.Checked && chkTables.Checked;
SQLOption.Ignore.FilterTableChangeTracking = chkTableChangeTracking.Checked && chkTables.Checked;
SQLOption.Ignore.FilterTableFileGroup = chkFileGroups.Checked;
SQLOption.Ignore.FilterTrigger = chkCompTriggers.Checked;
SQLOption.Ignore.FilterDDLTriggers = chkCompTriggersDDL.Checked;
SQLOption.Ignore.FilterUserDataType = chkCompUDT.Checked;
SQLOption.Ignore.FilterView = chkCompVistas.Checked;
SQLOption.Ignore.FilterXMLSchema = chkCompXMLSchemas.Checked;
SQLOption.Ignore.FilterExtendedProperties = chkCompExtendedProperties.Checked;
SQLOption.Ignore.FilterUsers = chkCompUsers.Checked;
SQLOption.Ignore.FilterRoles = chkCompRoles.Checked;
SQLOption.Ignore.FilterRules = chkCompRules.Checked;
SQLOption.Ignore.FilterFullText = chkFullText.Checked;
SQLOption.Ignore.FilterFullTextPath = chkFullTextPath.Checked;
SQLOption.Ignore.FilterSynonyms = IncludeSynonymsCheckBox.Checked;
SQLOption.Ignore.FilterNotForReplication = chkIgnoreNotForReplication.Checked;
SQLOption.Script.AlterObjectOnSchemaBinding = optScriptSchemaBindingAlter.Checked;
if (rdoCaseAutomatic.Checked)
SQLOption.Comparison.CaseSensityType = SqlOptionComparison.CaseSensityOptions.Automatic;
if (rdoCaseInsensitive.Checked)
SQLOption.Comparison.CaseSensityType = SqlOptionComparison.CaseSensityOptions.CaseInsensity;
if (rdoCaseSensitive.Checked)
SQLOption.Comparison.CaseSensityType = SqlOptionComparison.CaseSensityOptions.CaseSensity;
if (rdoCaseInsensityInCode.Checked)
SQLOption.Comparison.CaseSensityInCode = SqlOptionComparison.CaseSensityOptions.CaseInsensity;
if (rdoCaseSensityInCode.Checked)
SQLOption.Comparison.CaseSensityInCode = SqlOptionComparison.CaseSensityOptions.CaseSensity;
SQLOption.Comparison.IgnoreWhiteSpacesInCode = chkIgnoreWhiteSpaceInCode.Checked;
SQLOption.Comparison.ReloadComparisonOnUpdate = chkReloadDB.Checked;
FireOptionChanged(SQLOption);
}
public Abstractions.Schema.Model.IOption GetOption()
{
return SQLOption;
}
private void chkCompIndices_CheckedChanged(object sender, EventArgs e)
{
chkIndexFillFactor.Enabled = chkIndex.Checked;
chkIndexIncludeColumns.Enabled = chkIndex.Checked;
chkIndexFilter.Enabled = chkIndex.Checked;
chkIndexRowLock.Enabled = chkIndex.Checked;
}
private void chkCompTablas_CheckedChanged(object sender, EventArgs e)
{
chkTablesColumnCollation.Enabled = chkTables.Checked;
chkTablesColumnIdentity.Enabled = chkTables.Checked;
chkTablesColumnOrder.Enabled = chkTables.Checked;
chkTableChangeTracking.Enabled = chkTables.Checked;
chkTableLockEscalation.Enabled = chkTables.Checked;
chkTableOption.Enabled = chkTables.Checked;
}
private void btnApply_Click(object sender, EventArgs e)
{
if (lstFilters.SelectedItems.Count > 0)
{
AddExclusionPatternForm itemForm = new AddExclusionPatternForm(SQLOption, lstFilters.SelectedItems[0].Index);
itemForm.ShowDialog(this);
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
AddExclusionPatternForm itemForm = new AddExclusionPatternForm(SQLOption);
itemForm.ShowDialog(this);
}
private void chkConstraints_CheckedChanged(object sender, EventArgs e)
{
chkConstraintsFK.Enabled = chkConstraints.Checked;
chkConstraintsPK.Enabled = chkConstraints.Checked;
chkConstraintsUK.Enabled = chkConstraints.Checked;
chkConstraintsCheck.Enabled = chkConstraints.Checked;
}
private void chkFullText_CheckedChanged(object sender, EventArgs e)
{
chkFullTextPath.Enabled = chkFullText.Checked;
}
private void chkCompAssemblys_CheckedChanged(object sender, EventArgs e)
{
chkCompCLRStore.Enabled = chkCompAssemblys.Checked;
chkCompCLRTrigger.Enabled = chkCompAssemblys.Checked;
chkCompCLRFunctions.Enabled = chkCompAssemblys.Checked;
chkCompCLRUDT.Enabled = chkCompAssemblys.Checked;
}
private void DeleteNameFilterButton_Click(object sender, EventArgs e)
{
if (lstFilters.SelectedItems.Count > 0)
{
foreach (ListViewItem item in lstFilters.Items)
{
if (item.Selected)
{
var type = (ObjectType)Enum.Parse(typeof(ObjectType), item.SubItems[1].Text);
var fi = new SqlOptionFilterItem(type, item.Text);
if (SQLOption.Filters.Items.Contains(fi))
SQLOption.Filters.Items.Remove(fi);
}
}
LoadFilters();
}
}
private void lstFilters_DoubleClick(object sender, EventArgs e)
{
if (lstFilters.SelectedItems.Count > 0)
{
AddExclusionPatternForm itemForm = new AddExclusionPatternForm(SQLOption, lstFilters.SelectedItems[0].Index);
itemForm.ShowDialog(this);
}
}
}
}