/// <summary>
        /// Returns if the given CSPBrushParam is equal to this one.
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public bool equals(CSPBrushParam param)
        {
            if (!this.name.Equals(param.name))
            {
                return(false);
            }
            if (!this.typeName.Contains("BLOB"))
            {
                if (!this.typeName.Equals(param.typeName))
                {
                    return(false);
                }
                return(this.value.Equals(param.value));
            }
            byte[] bytes      = (byte[])this.value;
            byte[] bytesParam = (byte[])param.value;
            int    len        = bytes.GetLength(0);
            int    lenParam   = bytesParam.GetLength(0);

            if (len != lenParam)
            {
                return(false);
            }
            for (int i = 0; i < len; i++)
            {
                if (bytes[i] != bytesParam[i])
                {
                    return(false);
                }
            }
            return(true);
        }
Esempio n. 2
0
 private void appendImages(CSPBrushParam param)
 {
     if (param.Name.ToLower().Contains("effector"))
     {
         List <Bitmap> images = param.getEffectorImages("  ");
         if (images != null && images.Count > 0)
         {
             // Insert RTF string
             processImagesUsingRtf(images);
         }
     }
 }
 public int Compare(CSPBrushParam x, CSPBrushParam y)
 {
     return(((CSPBrushParam)x).name.CompareTo(((CSPBrushParam)y).name));
 }
Esempio n. 4
0
        /// <summary>
        /// Process a database.
        /// </summary>
        /// <param name="fileType">Determines if databse 1 or database 2</param>
        /// <param name="print">Whether to write to textBoxInfo.</param>
        private void processDatabase(FileType fileType, bool print)
        {
            int                  nDatabase          = 1;
            TextBox              textBoxDatabase    = null;
            TextBox              textBoxBrush       = null;
            RadioButton          radioButtonVariant = null;
            List <CSPBrushParam> paramsList         = null;
            CSPBrushParam        param = null;
            string               info  = null;

            switch (fileType)
            {
            case FileType.Database1:
                nDatabase          = 1;
                textBoxDatabase    = textBoxDatabase1;
                textBoxBrush       = textBoxBrush1;
                radioButtonVariant = radioButtonVariant1;
                break;

            case FileType.Database2:
                nDatabase          = 2;
                textBoxDatabase    = textBoxDatabase2;
                textBoxBrush       = textBoxBrush2;
                radioButtonVariant = radioButtonVariant2;
                break;

            default:
                Utils.Utils.errMsg("Invalid fileType ("
                                   + fileType + ") for processDatabase");
                return;
            }
            textBoxInfo.Clear();
            paramsList = new List <CSPBrushParam>();
            info       = "";
            String name = "";
            string nodeName = null;
            int    nodeVariantId = 0, nodeInitVariantId = 0;
            int    nCols = 0;
            int    nNull = 0;

            name = textBoxDatabase.Text;
            if (name == null || name.Length == 0)
            {
                registerOutput(fileType, info, paramsList);
                Utils.Utils.errMsg("Database " + nDatabase + " is not defined");
                return;
            }
            if (!File.Exists(name))
            {
                registerOutput(fileType, info, paramsList);
                Utils.Utils.errMsg(name + " does not exist");
                return;
            }
            // Get the selected brush name
            string brushName = textBoxBrush.Text;

            if (brushName == null | brushName.Length == 0)
            {
                registerOutput(fileType, info, paramsList);
                Utils.Utils.errMsg("Brush not specified");
                return;
            }

            SQLiteConnection conn = null;
            SQLiteDataReader dataReader;
            DateTime         modTime = File.GetLastWriteTime(name);

            info += name + NL;
            info += "Brush: " + brushName + NL;
            info += "Using: "
                    + (radioButtonVariant.Checked ?
                       "NodeVariantID" : "NodeInitVariantID") + NL;
            info += "Modified: " + modTime + NL;
            // Find the node
            try {
                string openName = DatabaseUtils.getSqliteOpenName(name);
                using (conn = new SQLiteConnection("Data Source=" + openName
                                                   + ";Version=3;Read Only=True;")) {
                    conn.Open();
                    SQLiteCommand command;
                    command = conn.CreateCommand();
                    // Need to replace single quotes by double
                    // Don't want NodeVariantID or NodeInitVariantID = 0
                    command.CommandText = "SELECT NodeName, NodeVariantId, " +
                                          "NodeInitVariantId FROM Node WHERE NodeName='"
                                          + brushName.Replace("'", "''") + "'"
                                          + " AND NodeVariantID != 0  AND NodeInitVariantID != 0";
                    List <NodeInfo> items = new List <NodeInfo>();
                    using (dataReader = command.ExecuteReader()) {
                        if (!dataReader.HasRows)
                        {
                            Utils.Utils.errMsg("No matching rows looking for "
                                               + brushName);
                            registerOutput(fileType, info, paramsList);
                            return;
                        }
                        while (dataReader.Read())
                        {
                            nodeName          = dataReader.GetString(0);
                            nodeVariantId     = dataReader.GetInt32(1);
                            nodeInitVariantId = dataReader.GetInt32(2);
                            items.Add(new NodeInfo(nodeName, nodeVariantId, nodeInitVariantId));
                        }
                    }
                    if (items.Count == 0)
                    {
                        Utils.Utils.errMsg("Did not find any matches for " + brushName);
                        registerOutput(fileType, info, paramsList);
                        return;
                    }
                    if (items.Count == 1)
                    {
                        nodeName          = items[0].NodeName;
                        nodeVariantId     = items[0].NodeVariantId;
                        nodeInitVariantId = items[0].NodeInitVariantId;
                    }
                    else
                    {
                        // Found more than one matching item, prompt for which one
                        List <string> itemsList = new List <string>();
                        foreach (NodeInfo nodeInfo in items)
                        {
                            itemsList.Add(nodeInfo.Info());
                        }
                        MultiChoiceListDialog dlg = new MultiChoiceListDialog(itemsList);
                        switch (fileType)
                        {
                        case FileType.Database1:
                            dlg.Text = "Brush 1 Ambiguity";
                            break;

                        case FileType.Database2:
                            dlg.Text = "Brush 2 Ambiguity";
                            break;

                        default:
                            dlg.Text = "Brush Ambiguity";
                            break;
                        }
                        // Note that the ListBox has be set to have SelectionMode=One,
                        // not MultiExtended
                        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            List <string> selectedList = dlg.SelectedList;
                            if (selectedList == null || selectedList.Count == 0)
                            {
                                Utils.Utils.errMsg("No items selected");
                                registerOutput(fileType, info, paramsList);
                                return;
                            }
                            // There should be only one entry
                            string item = selectedList[0];
                            nodeName = null;
                            foreach (NodeInfo nodeInfo in items)
                            {
                                if (item.Equals(nodeInfo.Info()))
                                {
                                    nodeName          = nodeInfo.NodeName;
                                    nodeVariantId     = nodeInfo.NodeVariantId;
                                    nodeInitVariantId = nodeInfo.NodeInitVariantId;
                                }
                            }
                        }
                        else
                        {
                            info += "Cancelled" + NL;
                            registerOutput(fileType, info, paramsList);
                            return;
                        }
                    }
                    // These should not happen
                    if (nodeName == null)
                    {
                        Utils.Utils.errMsg("Failed to determine which brush");
                        registerOutput(fileType, info, paramsList);
                    }
                    if (!nodeName.Equals(brushName))
                    {
                        Utils.Utils.errMsg("Looking for " + brushName + ", found "
                                           + nodeName);
                        registerOutput(fileType, info, paramsList);
                        return;
                    }
                    if (nodeVariantId == 0)
                    {
                        Utils.Utils.errMsg(brushName
                                           + " is not a brush (No NodeVariantId)");
                        registerOutput(fileType, info, paramsList);
                        return;
                    }
                }
            } catch (Exception ex) {
                Utils.Utils.excMsg("Error finding " + brushName, ex);
                registerOutput(fileType, info, paramsList);
                return;
            }

            // Find the variant
            conn = null;
            try {
                string openName = DatabaseUtils.getSqliteOpenName(name);
                using (conn = new SQLiteConnection("Data Source=" + openName
                                                   + ";Version=3;Read Only=True;")) {
                    conn.Open();
                    SQLiteCommand command;
                    command = conn.CreateCommand();
                    int variantId = (radioButtonVariant.Checked) ?
                                    nodeVariantId : nodeInitVariantId;
                    command.CommandText = "SELECT * FROM Variant WHERE VariantID="
                                          + variantId;
                    using (dataReader = command.ExecuteReader()) {
                        if (!dataReader.HasRows)
                        {
                            Utils.Utils.errMsg("No matching rows looking for VariantID = "
                                               + variantId);
                            registerOutput(fileType, info, paramsList);
                            return;
                        }
                        dataReader.Read();
                        nCols = dataReader.FieldCount;
                        if (print)
                        {
                            appendInfo(info + NL);
                        }
                        for (int i = 0; i < nCols; i++)
                        {
                            if (dataReader.IsDBNull(i))
                            {
                                nNull++;
                                continue;
                            }
                            param = new CSPBrushParam(dataReader.GetName(i),
                                                      dataReader.GetDataTypeName(i), dataReader.GetValue(i));
                            param.Value = dataReader.GetValue(i);
                            //    appendInfo(param.info());
                            //}
                            paramsList.Add(param);
                        }
                    }
                }
            } catch (Exception ex) {
                Utils.Utils.excMsg("Error finding VariantID=" + nodeVariantId, ex);
                registerOutput(fileType, info, paramsList);
                return;
            }
            info += "Columns: " + nCols + " Null: " + nNull + " Non-Null: "
                    + (nCols - nNull) + NL;
            registerOutput(fileType, info, paramsList);
        }
Esempio n. 5
0
        /// <summary>
        /// Compares the two files and displays the output.
        /// </summary>
        private void compare()
        {
            // Process 1
            processDatabase(FileType.Database1, false);
            if (params1.Count == 0)
            {
                Utils.Utils.errMsg("Did not get params for Brush 1");
                return;
            }
            // Process 2
            processDatabase(FileType.Database2, false);
            if (params2.Count == 0)
            {
                Utils.Utils.errMsg("Did not get params for Brush 2");
                return;
            }

            // Write heading to textBoxInfo
            textBoxInfo.Text = "1: ";
            printHeading(FileType.Database1);
            appendInfo("2: ");
            printHeading(FileType.Database2);
            // Look for items in 2 that are in 1
            bool          found;
            CSPBrushParam foundParam = null;

            foreach (CSPBrushParam param1 in params1)
            {
                found = false;
                // Look for the same name
                foreach (CSPBrushParam param2 in params2)
                {
                    if (param1.Name.Equals(param2.Name))
                    {
                        found      = true;
                        foundParam = param2;
                        break;
                    }
                }
                if (!found)
                {
                    appendInfo(param1.Name + NL);
                    appendInfo("  1: " + param1.getValueAsString("  "));
                    appendImages(param1);
                    appendInfo("  2: Not found in 2" + NL);
                    continue;
                }
                if (found && !param1.equals(foundParam))
                {
                    appendInfo(param1.Name + NL);
                    appendInfo("  1: " + param1.getValueAsString("  "));
                    appendImages(param1);
                    appendInfo("  2: " + foundParam.getValueAsString("  "));
                    appendImages(foundParam);
                }
            }

            // Look for items in 2 that are not in 1
            foreach (CSPBrushParam param2 in params2)
            {
                found = false;
                // Look for the same name
                foreach (CSPBrushParam param1 in params1)
                {
                    if (param1.Name.Equals(param2.Name))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    appendInfo(param2.Name + NL);
                    appendInfo("  1: Not found in 1" + NL);
                    appendInfo("  2: " + param2.getValueAsString("  "));
                    appendImages(param2);
                    continue;
                }
            }
        }