示例#1
0
        /// <summary>
        /// The serialize with hash.
        /// </summary>
        /// <param name="person">
        /// The person.
        /// </param>
        /// <param name="messages">
        /// The messages.
        /// </param>
        /// <param name="filePath">
        /// The file path.
        /// </param>
        /// <param name="xmlNamespaceResolver">
        /// The xml namespace resolver.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool SerializeWithHash(
            BasePersonTemplate person,
            IEnumerable messages,
            string filePath,
            IXmlNamespaceResolver xmlNamespaceResolver)
        {
            try
            {
                var fomsLogPrefix = Hl7Helper.FomsLogPrefix;
                FomsLogger.WriteLog(
                    LogType.Local,
                    "Сериализация пакета Hl7. " + person.BeginPacket.RetrieveShortInfo(),
                    fomsLogPrefix,
                    LogErrorType.None);
                FileSystemPhysical.RemoveFile(filePath);
                using (var writer = new Hl7Writer(filePath, person, xmlNamespaceResolver))
                {
                    writer.WriteMessages(messages);
                    writer.FinalizeWrite();
                }

                return(true);
            }
            catch (Exception exception)
            {
                FomsLogger.WriteError(exception, null);
                return(false);
            }
        }
示例#2
0
        public static void PreCacheSerializersStart(ProcessingTarget targets)
        {
            ThreadStart start = null;

            if (targets != ProcessingTarget.NoTargets)
            {
                if (start == null)
                {
                    start = delegate
                    {
                        var fomsLogPrefix = FomsLogPrefix;
                        FomsLogger.WriteLog(
                            LogType.Local,
                            string.Format("Предварительное кеширование классов сериализации: {0}", targets),
                            fomsLogPrefix,
                            LogErrorType.None);
                        try
                        {
                            if ((targets & ProcessingTarget.XElement) == ProcessingTarget.XElement)
                            {
                                new XmlSerializer(typeof(XElement));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.Ack))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.Ack))
                            {
                                new XmlSerializer(typeof(Ack));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK1))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK1))
                            {
                                new XmlSerializer(typeof(RSP_ZK1));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK2))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK2))
                            {
                                new XmlSerializer(typeof(RSP_ZK2));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK4))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK4))
                            {
                                new XmlSerializer(typeof(RSP_ZK4));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK5))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.RSP_ZK5))
                            {
                                new XmlSerializer(typeof(RSP_ZK5));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.ZPI_ZA1))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.ZPI_ZA1))
                            {
                                new XmlSerializer(typeof(ZPI_ZA1));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.ZPI_ZA7))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.ZPI_ZA7))
                            {
                                new XmlSerializer(typeof(ZPI_ZA7));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A01))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A01))
                            {
                                new XmlSerializer(typeof(ADT_A01));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A03))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A03))
                            {
                                new XmlSerializer(typeof(ADT_A03));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A24))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A24))
                            {
                                new XmlSerializer(typeof(ADT_A24));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A37))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.ADT_A37))
                            {
                                new XmlSerializer(typeof(ADT_A37));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.QBP_ZP1))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.QBP_ZP1))
                            {
                                new XmlSerializer(typeof(QBP_ZP1));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.QBP_ZP2))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.QBP_ZP2))
                            {
                                new XmlSerializer(typeof(QBP_ZP2));
                            }

                            if ((targets & (ProcessingTarget.NoTargets | ProcessingTarget.QBP_ZP4))
                                == (ProcessingTarget.NoTargets | ProcessingTarget.QBP_ZP4))
                            {
                                new XmlSerializer(typeof(QBP_ZP4));
                            }

                            if ((targets & ProcessingTarget.BHS) == ProcessingTarget.BHS)
                            {
                                new XmlSerializer(typeof(BHS));
                            }

                            if ((targets & ProcessingTarget.BTS) == ProcessingTarget.BTS)
                            {
                                new XmlSerializer(typeof(BTS));
                            }

                            if ((targets & ProcessingTarget.PersonErp) == ProcessingTarget.PersonErp)
                            {
                                new XmlSerializer(typeof(PersonErp));
                            }

                            if ((targets & ProcessingTarget.PersonCard) == ProcessingTarget.PersonCard)
                            {
                                new XmlSerializer(typeof(PersonCard));
                            }

                            var prefix = FomsLogPrefix;
                            FomsLogger.WriteLog(
                                LogType.Local,
                                string.Format("Завершено кеширование классов сериализации: {0}", targets),
                                prefix,
                                LogErrorType.None);
                        }
                        catch (Exception exception)
                        {
                            var str3 = FomsLogPrefix;
                            FomsLogger.WriteError(
                                LogType.Local,
                                string.Format(
                                    "Исключение при кешировании классов сериализации: {0}",
                                    exception.Message),
                                str3);
                            throw;
                        }
                        finally
                        {
                            lock (preCacheThreads)
                            {
                                preCacheThreads.Remove(Thread.CurrentThread);
                            }
                        }
                    };
                }

                var item = new Thread(start);
                lock (preCacheThreads)
                {
                    preCacheThreads.Add(item);
                }

                item.Start();
            }
        }