Beispiel #1
0
        /// <summary>Process the command result list.</summary>
        /// <param name="elementId">Identifier for the element.</param>
        /// <param name="missionCode">The default mission code.</param>
        /// <param name="listOfResultType">Type of the list of result.</param>
        private static void ProcessCommandResultList(string elementId, string missionCode, PIS.Train.RealTime.ListOfResultType listOfResultType)
        {
            if (listOfResultType != null)
            {
                TraceType logLevel = TraceType.NONE;

                // Determinate the log level.
                foreach (var resultType in listOfResultType)
                {
                    if (resultType == null)
                    {
                        continue;
                    }

                    switch (resultType.ResultCode)
                    {
                    case PIS.Train.RealTime.ResultCodeEnum.OK:
                        if (logLevel == TraceType.NONE)
                        {
                            logLevel = TraceType.INFO;
                        }
                        break;

                    case PIS.Train.RealTime.ResultCodeEnum.NotCurrentMission:
                    case PIS.Train.RealTime.ResultCodeEnum.StationNotInTrainRoute:
                        if (logLevel != TraceType.ERROR)
                        {
                            logLevel = TraceType.WARNING;
                        }
                        break;

                    case PIS.Train.RealTime.ResultCodeEnum.ComplexError:
                    case PIS.Train.RealTime.ResultCodeEnum.InvalidSoapRequest:
                    case PIS.Train.RealTime.ResultCodeEnum.Error:
                    default:
                        logLevel = TraceType.ERROR;
                        break;
                    }

                    if (logLevel == TraceType.ERROR)
                    {
                        break;
                    }
                }

                // Generate the log string
                if (LogManager.IsTraceActive(logLevel))
                {
                    StringBuilder logStr = new StringBuilder(500 + 100 * listOfResultType.Count);

                    logStr.AppendFormat(CultureInfo.CurrentCulture,
                                        Logs.RESULT_PROCESS_TITLE,
                                        elementId,
                                        missionCode);
                    logStr.AppendLine();
                    foreach (var resultType in listOfResultType)
                    {
                        if (resultType == null)
                        {
                            continue;
                        }

                        if (!string.IsNullOrEmpty(resultType.StationCode))
                        {
                            logStr.AppendFormat(CultureInfo.CurrentCulture, Logs.RESULT_PROCESS_STATION_UPDATE, resultType.InformationType, resultType.StationCode, resultType.ResultCode);
                        }
                        else
                        {
                            logStr.AppendFormat(CultureInfo.CurrentCulture, Logs.RESULT_PROCESS_MISSION_UPDATE, resultType.InformationType, resultType.ResultCode);
                        }

                        logStr.AppendLine();

                        if (resultType.ComplexErrorList != null)
                        {
                            foreach (var complexError in resultType.ComplexErrorList)
                            {
                                if (complexError.ParameterErrorList != null)
                                {
                                    foreach (var parameterError in complexError.ParameterErrorList)
                                    {
                                        logStr.AppendFormat(CultureInfo.CurrentCulture,
                                                            Logs.RESULT_PROCESS_PARAMETER,
                                                            parameterError.ParameterName,
                                                            parameterError.ErrorMessage,
                                                            parameterError.ErroneousValue);
                                        logStr.AppendLine();
                                    }
                                }
                            }
                        }
                    }

                    LogManager.WriteLog(logLevel, logStr.ToString(), "PIS.Ground.RealTime.RequestProcessor.ProcessCommandResultList", null, EventIdEnum.RealTime);
                }
            }
        }
Beispiel #2
0
 public SetStationRealTimeResponse(PIS.Train.RealTime.ListOfResultType ResultList)
 {
     this.ResultList = ResultList;
 }