Ejemplo n.º 1
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.ContinueRuleDefinitionsChange())
            {
                selectedRuleSetData = null;
                List<RuleSetData> ruleSetDataCollection = this.GetRuleSets();
                this.BuildTree(ruleSetDataCollection);

                this.EnableApplicationFields(true);
                this.EnableRuleSetFields(false);
            }
        }
Ejemplo n.º 2
0
 private bool IsDuplicateRuleSet(string name, int majorVersion, int minorVersion, out RuleSetData duplicateRuleSetData)
 {
     foreach (RuleSetData data in ruleSetDataDictionary.Values)
     {
         if (String.CompareOrdinal(data.Name, name) == 0 && data.MajorVersion == majorVersion && data.MinorVersion == minorVersion)
         {
             duplicateRuleSetData = data;
             return true;
         }
     }
     duplicateRuleSetData = null;
     return false;
 }
Ejemplo n.º 3
0
        private void MarkDirty(RuleSetData data)
        {
            if (data != null)
                data.Dirty = true;

            dirty = true;
        }
Ejemplo n.º 4
0
        private List<RuleSetData> GetRuleSets()
        {
            List<RuleSetData> ruleSetDataCollection = new List<RuleSetData>();
            dirty = false;

            using (SqlConnection sqlConn = new SqlConnection(connectionString))
            {
                sqlConn.Open();
                string commandString = "SELECT Name, MajorVersion, MinorVersion, RuleSet, Status, AssemblyPath, ActivityName, ModifiedDate FROM RuleSet ORDER BY Name,MajorVersion, MinorVersion";
                SqlCommand command = new SqlCommand(commandString, sqlConn);
                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    try
                    {
                        RuleSetData data = new RuleSetData();
                        data.Name = reader.GetString(0);
                        data.OriginalName = data.Name; // will be used later to see if one of these key values changed
                        data.MajorVersion = reader.GetInt32(1);
                        data.OriginalMajorVersion = data.MajorVersion;
                        data.MinorVersion = reader.GetInt32(2);
                        data.OriginalMinorVersion = data.MinorVersion;

                        data.RuleSetDefinition = reader.GetString(3);
                        data.Status = reader.GetInt16(4);
                        data.AssemblyPath = reader.GetString(5);
                        data.ActivityName = reader.GetString(6);
                        data.ModifiedDate = reader.GetDateTime(7);
                        data.Dirty = false;

                        ruleSetDataCollection.Add(data);
                    }
                    catch (InvalidCastException)
                    {
                        MessageBox.Show("Error parsing table row.", "RuleSet Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                }
                sqlConn.Close();
            }

            return ruleSetDataCollection;
        }
Ejemplo n.º 5
0
 private TreeNode GetTreeNodeForRuleSetData(RuleSetData data)
 {
     if (data != null)
     {
         Dictionary<TreeNode, RuleSetData>.Enumerator enumerator = ruleSetDataDictionary.GetEnumerator();
         while (enumerator.MoveNext())
         {
             RuleSetData otherData = enumerator.Current.Value;
             if (String.CompareOrdinal(otherData.Name, data.Name) == 0 && otherData.MajorVersion == data.MajorVersion && otherData.MinorVersion == data.MinorVersion)
                 return enumerator.Current.Key;
         }
     }
     return null;
 }
Ejemplo n.º 6
0
 private TreeNode FindParentNode(RuleSetData data)
 {
     if (data != null)
     {
         foreach (TreeNode node in treeView1.Nodes)
         {
             if (String.CompareOrdinal(node.Text, data.Name) == 0)
                 return node;
         }
     }
     return null;
 }
Ejemplo n.º 7
0
        private void GenerateNewVersionInfo(RuleSetData currentRuleSetData, out int newMajorVersion, out int newMinorVersion)
        {
            List<RuleSetData> rsdOfInterest = new List<RuleSetData>();
            foreach (RuleSetData data in ruleSetDataDictionary.Values)
            {
                if (data.Name == currentRuleSetData.Name && ((data.MajorVersion > currentRuleSetData.MajorVersion) ||  (data.MajorVersion == currentRuleSetData.MajorVersion && data.MinorVersion > currentRuleSetData.MinorVersion)))
                    rsdOfInterest.Add(data);
            }
            rsdOfInterest.Sort();

            bool nextMajorTaken = false;
            int lastMajorUsed = currentRuleSetData.MajorVersion;
            int lastMinorUsed = currentRuleSetData.MinorVersion;
            foreach (RuleSetData data in rsdOfInterest)
            {
                lastMajorUsed = data.MajorVersion;

                if (data.MajorVersion == currentRuleSetData.MajorVersion)
                    lastMinorUsed = data.MinorVersion;

                if (data.MajorVersion == currentRuleSetData.MajorVersion + 1)
                    nextMajorTaken = true;
            }

            if (!nextMajorTaken)
            {
                newMajorVersion = currentRuleSetData.MajorVersion + 1;
                newMinorVersion = 0;
            }
            else if (lastMinorUsed < maxMinorVersions - 1)
            {
                newMajorVersion = currentRuleSetData.MajorVersion;
                newMinorVersion = lastMinorUsed + 1;
            }
            else if (lastMajorUsed < maxMajorVersions - 1)
            {
                newMajorVersion = lastMajorUsed + 1;
                newMinorVersion = 0;
            }
            else
            {
                newMajorVersion = currentRuleSetData.MajorVersion;
                newMinorVersion = currentRuleSetData.MinorVersion;
                MessageBox.Show(string.Format(CultureInfo.InvariantCulture, "Only {0} major versions are allowed for a single RuleSet name.  \r\nYou must manually change the version information.", maxMajorVersions), "RuleSet Property Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 8
0
 private RuleSetData CreateRuleSetData(RuleSet ruleSet)
 {
     RuleSetData data = new RuleSetData();
     if (ruleSet != null)
     {
         data.Name = ruleSet.Name;
         data.RuleSet = ruleSet;
     }
     else
     {
         data.Name = this.GenerateRuleSetName();
         data.RuleSet = new RuleSet(data.Name);
     }
     data.MajorVersion = 1;
     this.MarkDirty(data);
     return data;
 }
Ejemplo n.º 9
0
        private void AddRuleSetData(RuleSetData ruleSetData)
        {
            if (ruleSetData != null)
            {
                TreeNode parentNode = this.FindParentNode(ruleSetData);

                if (parentNode == null)
                {
                    parentNode = new TreeNode(ruleSetData.Name);
                    treeView1.Nodes.Add(parentNode);
                }

                TreeNode newVersionNode = new TreeNode(VersionTreeNodeText(ruleSetData.MajorVersion, ruleSetData.MinorVersion));
                parentNode.Nodes.Add(newVersionNode);
                treeView1.Sort();
                ruleSetDataDictionary.Add(newVersionNode, ruleSetData);
                this.SetSelectedNode(newVersionNode);
            }
        }
Ejemplo n.º 10
0
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            RuleSetData data;
            if (e.Node != null && ruleSetDataDictionary.TryGetValue(e.Node, out data))
            {
                selectedRuleSetData = data;
                assemblyPath = selectedRuleSetData.AssemblyPath;
                ruleSetNameBox.Text = selectedRuleSetData.Name;
                majorVersionBox.Value = selectedRuleSetData.MajorVersion;
                minorVersionBox.Value = selectedRuleSetData.MinorVersion;
                activityBox.Text = selectedRuleSetData.ActivityName;

                if (selectedRuleSetData.Activity == null)
                    this.LoadAssemblyAndActivity();

                this.PopulateMembers();

                this.EnableRuleSetFields(true);
            }
            else
            {
                selectedRuleSetData = null;
                assemblyPath = null;
                this.EnableRuleSetFields(false);
            }
        }
Ejemplo n.º 11
0
        public RuleSet GetRuleSet(RuleSetInfo ruleSetInfo)
        {
            if (ruleSetInfo != null)
            {
                SqlConnection sqlConn = new SqlConnection(connectionString);
                sqlConn.Open();
                string commandString;

                // If both the major and minor are 0, it is assumed that a specific version is not being requested.
                bool specificVersionRequested = !(ruleSetInfo.MajorVersion == 0 && ruleSetInfo.MinorVersion == 0);  

                if (specificVersionRequested)
                {
                    commandString = String.Format(CultureInfo.InvariantCulture, "SELECT TOP 1 * FROM RuleSet WHERE Name=@name AND MajorVersion={0} AND MinorVersion={1} ORDER BY MajorVersion DESC, MinorVersion DESC", ruleSetInfo.MajorVersion, ruleSetInfo.MinorVersion);
                }
                else
                {
                    commandString = "SELECT TOP 1 * FROM RuleSet WHERE Name=@name ORDER BY MajorVersion DESC , MinorVersion DESC";
                }
                SqlCommand command = new SqlCommand(commandString, sqlConn);
                command.Parameters.Add("@name", System.Data.SqlDbType.NVarChar, 128);
                command.Parameters["@name"].Value = ruleSetInfo.Name;

                SqlDataReader reader = command.ExecuteReader();

                RuleSetData data = null;

                if (reader.HasRows)
                {
                    reader.Read();

                    try
                    {
                        data = new RuleSetData();
                        data.Name = reader.GetString(0);
                        data.OriginalName = data.Name; // will be used later to see if one of these key values changed                       
                        data.MajorVersion = reader.GetInt32(1);
                        data.OriginalMajorVersion = data.MajorVersion;
                        data.MinorVersion = reader.GetInt32(2);
                        data.OriginalMinorVersion = data.MinorVersion;

                        data.RuleSetDefinition = reader.GetString(3);
                        data.Status = reader.GetInt16(4);
                        data.AssemblyPath = reader.GetString(5);
                        data.ActivityName = reader.GetString(6);
                        data.ModifiedDate = reader.GetDateTime(7);
                        data.Dirty = false;
                    }
                    catch (InvalidCastException)
                    {
                        MessageBox.Show("Error parsing table row", "RuleSet Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }

                sqlConn.Close();

                if (data != null)
                    return data.RuleSet;
                else if (specificVersionRequested)
                    throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Specified RuleSet version does not exist: '{0}'", ruleSetInfo.ToString())); //could use a custom exception type here
                else
                    throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "No RuleSets exist with this name: '{0}'", ruleSetInfo.Name));
            }
            else
            {
                return null;
            }
        }
Ejemplo n.º 12
0
        public RuleSet GetRuleSet(RuleSetInfo ruleSetInfo)
        {
            if (ruleSetInfo != null)
            {
                SqlConnection sqlConn = new SqlConnection(connectionString);
                sqlConn.Open();
                string commandString;

                // If both the major and minor are 0, it is assumed that a specific version is not being requested.
                bool specificVersionRequested = !(ruleSetInfo.MajorVersion == 0 && ruleSetInfo.MinorVersion == 0);

                if (specificVersionRequested)
                {
                    commandString = String.Format(CultureInfo.InvariantCulture, "SELECT TOP 1 * FROM RuleSet WHERE Name=@name AND MajorVersion={0} AND MinorVersion={1} ORDER BY MajorVersion DESC, MinorVersion DESC", ruleSetInfo.MajorVersion, ruleSetInfo.MinorVersion);
                }
                else
                {
                    commandString = "SELECT TOP 1 * FROM RuleSet WHERE Name=@name ORDER BY MajorVersion DESC , MinorVersion DESC";
                }
                SqlCommand command = new SqlCommand(commandString, sqlConn);
                command.Parameters.Add("@name", System.Data.SqlDbType.NVarChar, 128);
                command.Parameters["@name"].Value = ruleSetInfo.Name;

                SqlDataReader reader = command.ExecuteReader();

                RuleSetData data = null;

                if (reader.HasRows)
                {
                    reader.Read();

                    try
                    {
                        data                      = new RuleSetData();
                        data.Name                 = reader.GetString(0);
                        data.OriginalName         = data.Name; // will be used later to see if one of these key values changed
                        data.MajorVersion         = reader.GetInt32(1);
                        data.OriginalMajorVersion = data.MajorVersion;
                        data.MinorVersion         = reader.GetInt32(2);
                        data.OriginalMinorVersion = data.MinorVersion;

                        data.RuleSetDefinition = reader.GetString(3);
                        data.Status            = reader.GetInt16(4);
                        data.AssemblyPath      = reader.GetString(5);
                        data.ActivityName      = reader.GetString(6);
                        data.ModifiedDate      = reader.GetDateTime(7);
                        data.Dirty             = false;
                    }
                    catch (InvalidCastException)
                    {
                        MessageBox.Show("Error parsing table row", "RuleSet Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }

                sqlConn.Close();

                if (data != null)
                {
                    return(data.RuleSet);
                }
                else if (specificVersionRequested)
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Specified RuleSet version does not exist: '{0}'", ruleSetInfo.ToString())); //could use a custom exception type here
                }
                else
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "No RuleSets exist with this name: '{0}'", ruleSetInfo.Name));
                }
            }
            else
            {
                return(null);
            }
        }