Exemple #1
0
        }//END AddItem class.

        #endregion

        #region Data encryption methods

        // =====================================================================================
        /// <summary>
        /// This method serialises and encrypts the data change object.
        /// </summary>
        /// <param name="DataChange">EvDataChange: data change object</param>
        /// <returns>string: an Encrypted string</returns>
        /// <remarks>
        /// This method consists of the following steps:
        ///
        /// 1. Serialize the datachange object to xml datachange string.
        ///
        /// 2. Check whether the Guid of datachange object exists.
        ///
        /// 3. Initialize the encrypt object and encrypt xml datachange string to the encrypted
        /// datachange string.
        ///
        /// 4. Return the encrypted datachange string.
        /// </remarks>
        // -------------------------------------------------------------------------------------
        public string encryptData(EvDataChange DataChange)
        {
            //
            // Initialise the method status, an xml data change string and an encrypted data chagne string.
            //
            this.LogMethod("encryptData method. ");
            this.LogDebug("SiteGuid: " + EvDataChanges._SiteGuid);
            this.LogDebug("DataChange.Guid: " + DataChange.Guid);
            string xmlDataChange       = String.Empty;
            string encryptedDataChange = String.Empty;

            //
            // serialise the datachange object.
            //
            xmlDataChange = Evado.Digital.Model.EvcStatics.SerialiseObject <EvDataChange> (DataChange);

            //
            // Check whether the Guid exists.
            //
            if (EvDataChanges._SiteGuid == Guid.Empty ||
                DataChange.Guid == Guid.Empty)
            {
                return(xmlDataChange);
            }

            xmlDataChange = xmlDataChange.Replace("\r\n", string.Empty);
            xmlDataChange = xmlDataChange.Replace(">   ", ">");
            xmlDataChange = xmlDataChange.Replace(">   ", ">");
            xmlDataChange = xmlDataChange.Replace(">  ", ">");
            xmlDataChange = xmlDataChange.Replace("> ", ">");

            xmlDataChange = xmlDataChange.Replace("   &lt;", "&lt;");
            xmlDataChange = xmlDataChange.Replace("  &lt;", "&lt;");
            xmlDataChange = xmlDataChange.Replace(" &lt;", "&lt;");
            xmlDataChange = xmlDataChange.Replace(" &lt;", "&lt;");

            //this.LogDebug( "xmlDataChange: {{" + xmlDataChange + "}}" );

            //return xmlDataChange;
            //
            // Initialise the encryption object.
            //
            EvEncrypt encrypt = new EvEncrypt(EvDataChanges._SiteGuid, DataChange.Guid);

            //
            // Encrypt the data change xml object.
            //
            encryptedDataChange = encrypt.encryptString(xmlDataChange);
            this.LogClass(encrypt.Log);

            //
            // Return the encrypted string.
            //
            return(encryptedDataChange);
        }//END encrypt Data method.
        // =====================================================================================
        /// <summary>
        /// This class reads the content of the data reader object into ChecklistItem business object.
        /// </summary>
        /// <param name="Row">DataRow: an Sql DataReader object</param>
        /// <returns>EvFormField: a formfield object</returns>
        /// <remarks>
        /// This method consists of the following steps:
        ///
        /// 1. Extract the compatible row data to the formfield object.
        ///
        /// 2. Deserialize the xmlData to the formfield design object if it exists.
        ///
        /// 3. Deserialize the xmlvalidationRules to the formfield validationRules object if they exist.
        ///
        /// 4. Reset the horizontal radion button list enumertion
        ///
        /// 5. Ensure that the formfield state is not null.
        ///
        /// 6. if skip retrieving comments is selected, fill the comment list and format it
        ///
        /// 7. Get the table object and the external selection list object.
        ///
        /// 8. Process the NA values in selectionlists.
        ///
        /// 9. Update the current formfield state and type object.
        ///
        /// 10. Return the formfield object.
        /// </remarks>
        // -------------------------------------------------------------------------------------
        private EdRecordField getRowData(
            DataRow Row)
        {
            this.LogMethod("getRowData method");
            //
            // Initialise method template table string, a return formfield object and an annotation string.
            //
            string        stTemplateTable = String.Empty;
            EdRecordField recordField     = new EdRecordField( );

            //
            // Fill the evForm object.l
            //
            recordField.Guid       = EvSqlMethods.getGuid(Row, EdRecordValues.DB_VALUES_GUID);
            recordField.RecordGuid = EvSqlMethods.getGuid(Row, EdRecords.DB_RECORD_GUID);
            recordField.LayoutGuid = EvSqlMethods.getGuid(Row, EdRecordLayouts.DB_LAYOUT_GUID);
            recordField.FieldGuid  = EvSqlMethods.getGuid(Row, EdRecordValues.DB_FIELD_GUID);


            recordField.FieldId = EvSqlMethods.getString(Row, EdRecordFields.DB_FIELD_ID);
            String value = EvSqlMethods.getString(Row, EdRecordFields.DB_TYPE_ID);

            recordField.Design.TypeId = Evado.Model.EvStatics.parseEnumValue <Evado.Model.EvDataTypes> (value);

            recordField.Design.Title                   = EvSqlMethods.getString(Row, EdRecordFields.DB_TITLE);
            recordField.Design.Instructions            = EvSqlMethods.getString(Row, EdRecordFields.DB_INSTRUCTIONS);
            recordField.Design.HttpReference           = EvSqlMethods.getString(Row, EdRecordFields.DB_HTTP_REFERENCE);
            recordField.Design.SectionNo               = EvSqlMethods.getInteger(Row, EdRecordFields.DB_SECTION_ID);
            recordField.Design.Options                 = EvSqlMethods.getString(Row, EdRecordFields.DB_OPTIONS);
            recordField.Design.IsSummaryField          = EvSqlMethods.getBool(Row, EdRecordFields.DB_SUMMARY_FIELD);
            recordField.Design.Mandatory               = EvSqlMethods.getBool(Row, EdRecordFields.DB_MANDATORY);
            recordField.Design.AiDataPoint             = EvSqlMethods.getBool(Row, EdRecordFields.DB_AI_DATA_POINT);
            recordField.Design.HideField               = EvSqlMethods.getBool(Row, EdRecordFields.DB_HIDDEN);
            recordField.Design.ExSelectionListId       = EvSqlMethods.getString(Row, EdRecordFields.DB_EX_SELECTION_LIST_ID);
            recordField.Design.ExSelectionListCategory = EvSqlMethods.getString(Row, EdRecordFields.DB_EX_SELECTION_LIST_CATEGORY);
            recordField.Design.DefaultValue            = EvSqlMethods.getString(Row, EdRecordFields.DB_DEFAULT_VALUE);
            recordField.Design.Unit        = EvSqlMethods.getString(Row, EdRecordFields.DB_UNIT);
            recordField.Design.UnitScaling = EvSqlMethods.getString(Row, EdRecordFields.DB_UNIT_SCALING);

            recordField.Design.ValidationLowerLimit  = EvSqlMethods.getFloat(Row, EdRecordFields.DB_VALIDATION_LOWER_LIMIT);
            recordField.Design.ValidationUpperLimit  = EvSqlMethods.getFloat(Row, EdRecordFields.DB_VALIDATION_UPPER_LIMIT);
            recordField.Design.AlertLowerLimit       = EvSqlMethods.getFloat(Row, EdRecordFields.DB_ALERT_LOWER_LIMIT);
            recordField.Design.AlertUpperLimit       = EvSqlMethods.getFloat(Row, EdRecordFields.DB_ALERT_UPPER_LIMIT);
            recordField.Design.NormalRangeLowerLimit = EvSqlMethods.getFloat(Row, EdRecordFields.DB_NORMAL_LOWER_LIMITD);
            recordField.Design.NormalRangeUpperLimit = EvSqlMethods.getFloat(Row, EdRecordFields.DB_NORMAL_UPPER_LIMIT);

            recordField.Design.FieldCategory        = EvSqlMethods.getString(Row, EdRecordFields.DB_FIELD_CATEGORY);
            recordField.Design.AnalogueLegendStart  = EvSqlMethods.getString(Row, EdRecordFields.DB_ANALOGUE_LEGEND_START);
            recordField.Design.AnalogueLegendFinish = EvSqlMethods.getString(Row, EdRecordFields.DB_ANALOGUE_LEGEND_FINISH);
            recordField.Design.JavaScript           = EvSqlMethods.getString(Row, EdRecordFields.DB_JAVA_SCRIPT);
            recordField.Design.InitialOptionList    = EvSqlMethods.getString(Row, EdRecordFields.DB_INITIAL_OPTION_LIST);
            recordField.Design.InitialVersion       = EvSqlMethods.getInteger(Row, EdRecordFields.DB_INITIAL_VERSION);
            //
            // if the field is a signature then decrypt the field.
            //
            if (recordField.TypeId == EvDataTypes.Signature)
            {
                this.LogDebug("Encrypted Signature string");
                EvEncrypt encrypt = new EvEncrypt(this.ClassParameters.AdapterGuid, recordField.Guid);
                encrypt.ClassParameters = this.ClassParameters;

                value = encrypt.decryptString(recordField.ItemText);
                this.LogDebug("clear string: " + value);
                recordField.ItemText = value;

                this.LogClass(encrypt.Log);
            }

            //
            // Get the table or matric object.
            //
            this.processTableRowObject(Row, recordField);

            //
            // Return the formfield object.
            //
            this.LogMethodEnd("getRowData");
            return(recordField);
        }//END getRowData method.
Exemple #3
0
        }//END encrypt Data method.

        // =====================================================================================
        /// <summary>
        /// This method decrypts the data change object.
        /// </summary>
        /// <param name="encryptedData">string: The encrypted data string</param>
        /// <param name="ItemGuid">Guid: The item Guid</param>
        /// <returns>EvDataChange: a datachange object</returns>
        /// <remarks>
        /// This method consists of the following steps:
        ///
        /// 1. Try if encrypted data string exists, deserialize encrypted string to the return datachange object
        ///
        /// 2. if not, decrypt the encrypted string to xml datachange string.
        ///
        /// 3. Deserialize xml datachange string to the datachange object.
        ///
        /// 4. Return the datachange object.
        ///
        /// 5. catch - write error message to log and return new datachange object.
        ///
        /// </remarks>
        // -------------------------------------------------------------------------------------
        private EvDataChange decryptData(string encryptedData, Guid ItemGuid)
        {
            //
            // Initialise the method status, a return datachange object and an xml datachange string.
            //
            this.LogMethod("decryptData method. ");
            this.LogDebug("encryptedData length: " + encryptedData.Length);
            this.LogDebug("SiteGuid: " + EvDataChanges._SiteGuid);
            this.LogDebug("ItemGuid: " + ItemGuid);
            EvDataChange dataChange    = new EvDataChange( );
            string       xmlDataChange = String.Empty;

            try
            {
                //
                // Check that whether the change is encrypted.
                //
                if (encryptedData.Contains("<EvDataChange xmlns") == true)
                {
                    this.LogDebug(" Unencrypted audit trail. ");

                    //
                    // deserialise the xml object.
                    //
                    dataChange = Evado.Digital.Model.EvcStatics.DeserialiseObject <EvDataChange> (encryptedData);

                    //
                    // if default reinitialise.
                    //
                    if (dataChange == default(EvDataChange))
                    {
                        dataChange = new EvDataChange( );
                    }

                    //
                    // Return the encrypted string.
                    //
                    return(dataChange);
                }
                this.LogDebug(" Encrypted audit trail. ");

                //
                // Check that we have Guid keys.
                //
                if (EvDataChanges._SiteGuid != Guid.Empty &&
                    ItemGuid != Guid.Empty)
                {
                    //
                    // Initialise the encryption object.
                    //
                    EvEncrypt encrypt = new EvEncrypt(EvDataChanges._SiteGuid, ItemGuid);

                    //
                    // Encrypt the data change xml object.
                    //
                    xmlDataChange = encrypt.decryptString(encryptedData);
                    this.LogClass(encrypt.Log);
                }//END decrypting the data change object.

                this.LogDebug(" xmlDataChange length: " + xmlDataChange.Length);

                //
                // Deserialise the datachange object.
                //
                dataChange = Evado.Digital.Model.EvcStatics.DeserialiseObject <EvDataChange> (xmlDataChange);

                //
                // if default reinitialise.
                //
                if (dataChange == default(EvDataChange))
                {
                    dataChange = new EvDataChange( );
                }
            }
            catch (Exception Ex)
            {
                string eventMessage = "Decrypting Error. "
                                      + "\r\n Exception: \r\n" + Evado.Digital.Model.EvcStatics.getException(Ex);

                this.LogClass(eventMessage);

                Evado.Digital.Model.EvcStatics.WriteToEventLog(_eventLogSource, eventMessage, EventLogEntryType.Error);

                dataChange = new EvDataChange( );
            }

            //
            // Return the encrypted string.
            //
            return(dataChange);
        }//END decryptData method.