Ejemplo n.º 1
0
        public override bool ToSQL(string tablename, Guid executionID, StringBuilder sb, bool firstItem)
        {
            // generate the SQL for inserting this log item into the database (will be appended to a larger query for inserting several records in a single query)
            // the entire insert query looks like this:
            // Insert into CommsLog (FDAExecutionID, connectionID, DeviceAddress, Attempt, TimestampUTC1, TimestampUTC2, ElapsedPeriod, TransCode, TransStatus, ApplicationMessage,DBRGUID,DBRGIdx,DBRGSize,Details01,TxSize,Details02,RxSize,ProtocolNote,Protocol)
            // values (log item 1),(log item 2), etc...

            try
            {
                Int64 elapsed = Convert.ToInt64(ResponseTimestamp.Subtract(RequestTimestamp).TotalMilliseconds);
                if (!firstItem)
                {
                    sb.Append(",");
                }


                sb.Append("('");
                sb.Append(executionID);
                sb.Append("','");
                sb.Append(ConnectionID.ToString());
                sb.Append("','");
                sb.Append(DeviceAddress);
                sb.Append("',");
                sb.Append(AttemptNum);
                sb.Append(",'");
                sb.Append(DateTimeHelpers.FormatDateTime(RequestTimestamp));
                sb.Append("','");
                sb.Append(DateTimeHelpers.FormatDateTime(ResponseTimestamp));
                sb.Append("',");
                sb.Append(elapsed);
                sb.Append(",");
                sb.Append(EventType);
                sb.Append(",");
                if (ResultStatus == DataRequest.RequestStatus.Success)
                {
                    sb.Append("cast(1 as bit),");
                }
                else
                {
                    sb.Append("cast(0 as bit),");
                }
                sb.Append("'");
                sb.Append(ApplicationMessage);
                sb.Append("','");
                sb.Append(GroupID);
                sb.Append("','");
                sb.Append(GroupIdx);
                sb.Append("',");
                sb.Append(GroupSize);
                sb.Append(",'Tx: ");
                sb.Append(BitConverter.ToString(RequestBytes));
                sb.Append("',");
                sb.Append(RequestBytes.Length);
                if (ResponseBytes != null)
                {
                    sb.Append(",'Rx: ");
                    sb.Append(BitConverter.ToString(ResponseBytes));
                    sb.Append("',");
                    sb.Append(ResponseBytes.Length);
                    sb.Append(",'");
                }
                else
                {
                    sb.Append(",'N/A',0,'");
                }
                sb.Append(Details.Replace("'", "''"));
                sb.Append("','");
                sb.Append(Protocol);
                sb.Append("')");
            } catch (Exception ex)
            {
                Globals.SystemManager.LogApplicationError(Globals.FDANow(), ex, "Error occurred while adding a comms log comms transaction item to an SQL insert batch");
                return(false);
            }
            return(true);
        }
Ejemplo n.º 2
0
        public void ToSQL(string tablename, Guid executionID, StringBuilder sb, bool firstItem)
        {
            string objname;
            string desc;
            string stacktrace;

            objname = ObjectName?.Replace("'", "''");
            if (objname == null)
            {
                objname = "";
            }

            desc = Description?.Replace("'", "''");
            if (desc == null)
            {
                desc = "";
            }

            stacktrace = StackTrace?.Replace("'", "''");
            if (stacktrace == null)
            {
                stacktrace = "";
            }

            //            sb.Clear();
            //           sb.Append("INSERT INTO ");
            //            sb.Append(tablename);
            //            sb.Append(" (FDAExecutionID,Timestamp,EventType,ObjectType,ObjectName,Description,ErrorCode,StackTrace) VALUES ('");
            if (!firstItem)
            {
                sb.Append(",");
            }
            sb.Append("('");
            sb.Append(executionID);
            sb.Append("','");
            sb.Append(DateTimeHelpers.FormatDateTime(Timestamp));
            sb.Append("','");
            sb.Append(EventType.ToString());
            sb.Append("','");
            sb.Append(ObjectType);
            sb.Append("','");

            sb.Append(objname);
            sb.Append("','");
            sb.Append(desc);
            sb.Append("','");
            sb.Append(ErrorCode);
            sb.Append("','");
            sb.Append(stacktrace);
            sb.Append("')");

            /* old way, slower
             * sql = "INSERT INTO " + Globals.SystemManager.GetTableName("AppLog") + " (FDAExecutionID,Timestamp,EventType,ObjectType,ObjectName,Description,ErrorCode,StackTrace) VALUES ('";
             * sql += executionID + "','";
             * sql += Helpers.FormatDateTime(Timestamp) + "','";
             * sql += EventType.ToString() + "','";
             * sql += ObjectType + "','";
             * sql += ObjectName?.Replace("'","''") + "','";
             * sql +=  Description?.Replace("'","''") + "','";
             * sql += ErrorCode + "','";
             * sql += StackTrace?.Replace("'","''") + "');";
             *
             * return sql;
             */
        }