protected override void Execute(NativeActivityContext context)
        {
            var source = Source.Get(context);

            if (string.IsNullOrEmpty(source))
            {
                throw new DeveloperException("Нет данных для десериализации");
            }
            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(source);
            if (xmlDoc.DocumentElement == null)
            {
                throw new DeveloperException("Не верный формат исходных данных");
            }
            var result = new List <T>();

            foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
            {
                var doc = new XmlDocument();
                doc.LoadXml(node.OuterXml);
                var obj = (T)XmlDocumentConverter.ConvertTo(typeof(T), doc);
                if (IsNew)
                {
                    var editable = obj as IEditable;
                    if (editable != null)
                    {
                        editable.AcceptChanges(true);
                    }
                }
                result.Add(obj);
            }
            Result.Set(context, result);
        }
예제 #2
0
        public virtual void Insert(ref T obj)
        {
            if (obj == null)
            {
                throw new ArgumentNullException("obj");
            }

            var res    = obj;
            var xmlDoc = XmlDocumentConverter.ConvertFrom(res);

            RunManualDbOperation(db =>
            {
                TKey key;

                // сохраняем
                XmlInsert(xmlDoc, out key);

                // гарантированно сбрасываем кэш, т.к. до insert-а могли сделать get с данным id
                CacheAspect.ClearCache(GetType(), "Get");

                // перевычитываем
                res = Get(key, null);
                if (res == null)
                {
                    throw new DeveloperException("Не удалось получить только-что добавленный объект. Проверьте, что процедуры возвращают правильный ключ");
                }

                return(0);
            }, true);

            obj = res;
        }
예제 #3
0
        public IEnumerable <CustomParam> GetCPByInstance(string entity, string key, string attrentity, string cpSource, string cpTarget)
        {
            const string pkg = PkgName + ".getCPByInstance";

            return(RunManualDbOperation(db =>
            {
                var ps = db.GetSpParameters(pkg, false, false);
                ps[0].Value = entity;
                ps[1].Value = key;
                ps[2].Value = attrentity;
                ps[3].Value = cpSource;
                ps[4].Value = cpTarget;
                // INFO: не знаю почему, но так не работает
                //var ps = new[]
                //{
                //    new OracleParameter("PENTITY", OracleDbType.Varchar2, entity, ParameterDirection.Input){DbType = DbType.String},
                //    new OracleParameter("PKEY ", OracleDbType.Varchar2, key, ParameterDirection.Input){DbType = DbType.String},
                //    new OracleParameter("PATTRENTITY", OracleDbType.XmlType, null, ParameterDirection.Input){DbType = DbType.String}
                //};

                var stm = string.Format("select SYS.XMLTYPE.GETCLOBVAL(COLUMN_VALUE) from TABLE({0}(:pEntity, :pKey, :pAttrEntity, :pCPSource, :pCPTarget))", pkg);
                var resXml = db.SetCommand(stm, ps).ExecuteScalarList <XmlDocument>();
                return XmlDocumentConverter.ConvertToListOf <CustomParam>(resXml);
            }));
        }
예제 #4
0
        protected Node ValueToNode(string valueName, object value)
        {
            var paramNode = new Node {
                Name = valueName
            };

            if (value is IXmlSerializable)
            {
                var xmlDoc = XmlDocumentConverter.ConvertFrom(value);
                paramNode.Value = xmlDoc.InnerXml;
                xmlDoc.RemoveAll();
            }
            else if (value is XmlDocument)
            {
                var xmlDoc = (XmlDocument)value;
                paramNode.Value = xmlDoc.InnerXml;
                xmlDoc.RemoveAll();
            }
            else if (value is IEnumerable && value.GetType() != typeof(string))
            {
                var items = (IEnumerable)value;
                foreach (var item in items)
                {
                    paramNode.Nodes.Add(ValueToNode(null, item));
                }
            }
            else
            {
                //TODO: притянуть культуру и договоренности к разным типам
                paramNode.Value = value == null ? null : SerializationHelper.GetCorrectStringValue(value);
            }

            return(paramNode);
        }
        public void SimpleTest()
        {
            const int cnt = 5;

            using (var mgr = IoC.Instance.Resolve <IBPProcessManager>())
            {
                string manageFlag  = string.Empty;
                string manageParam = string.Empty;

                var xmlPos = new XmlDocument();
                xmlPos.LoadXml("<TENTIWBPOSINPUT><IWBPOSID>-1</IWBPOSID><SKUID>54651</SKUID><IWBPOSCOUNT>0</IWBPOSCOUNT><REQUIREDSKUCOUNT>1</REQUIREDSKUCOUNT><TETYPECODE>EURO</TETYPECODE><SKU2TTEQUANTITY>10000</SKU2TTEQUANTITY><SKU2TTEHEIGHT /><QLFCODE_R>QLFNORMAL</QLFCODE_R><IWBPOSBLOCKING /><IWBPOSEXPIRYDATE /><PRODUCTCOUNTSKU>0</PRODUCTCOUNTSKU><PRODUCTCOUNT>1</PRODUCTCOUNT><ARTCODE>ETN010145</ARTCODE><ARTDESC>F3A-D</ARTDESC><ARTINPUTDATEMETHOD>DAY</ARTINPUTDATEMETHOD><MEASURECODE>шт</MEASURECODE><IWBPOSCOLOR /><IWBPOSTONE /><IWBPOSSIZE /><IWBPOSBATCH /><IWBPOSPRODUCTDATE /><IWBPOSSERIALNUMBER /><FACTORYID_R /><IWBPOSTE>EUROTO201412081020</IWBPOSTE><IWBPOSLOT /><IWBPOSQLFDETAILDESCL /><SKU2TTEQUANTITYMAX>10000</SKU2TTEQUANTITYMAX><IWBPOSINPUTBATCHCODE /><IWBPOSBOXNUMBER /><IWBPOSKITARTNAME /><IWBPOSOWNER /><REMAINCOUNT /><POSSKUID /><POSIWBPOSCOUNT /><POSPRODUCTCOUNT /><SKUNAME /><TETYPENAME /><ARTNAME /><MEASURESHORTNAME /><QLFNAME /><PRODUCTBLOCKINGNAME /><ARTINPUTDATEMETHODNAME /><VFACTORYNAME /><VOWNERCODE /></TENTIWBPOSINPUT>");
                var posInput = XmlDocumentConverter.ConvertTo <IWBPosInput>(xmlPos);

                long totalElapsedMilliseconds = 0;

                for (int i = 0; i < cnt; i++)
                {
                    var sw = new Stopwatch();
                    sw.Start();
                    var products = mgr.CreateProductByCargoIwb(ref manageFlag, ref manageParam, "OP_INPUT_PRD", posInput, "41D01001000000000", 6508);
                    sw.Stop();
                    totalElapsedMilliseconds += sw.ElapsedMilliseconds;
                    Debug.WriteLine("create {0} products in {1} ms", products == null ? 0 : products.Count, sw.ElapsedMilliseconds);
                }
                Debug.WriteLine("Total time is {0} ms ({1} per call)", totalElapsedMilliseconds, totalElapsedMilliseconds / cnt);
            }
        }
예제 #6
0
        private object NodeToValue(XmlNode node, Type valueType)
        {
            // сложный объект пусть сам себя разбирает
            if (typeof(IXmlSerializable).IsAssignableFrom(valueType))
            {
                var doc = new XmlDocument();
                doc.LoadXml(node.OuterXml);
                return(XmlDocumentConverter.ConvertTo(valueType, doc));
            }

            // если ожидаем коллекцию
            if (typeof(IEnumerable).IsAssignableFrom(valueType) && valueType != typeof(string))
            {
                var itemType = valueType.GetGenericArguments()[0];
                // создаем коллекцию
                var res = (IList)Activator.CreateInstance(typeof(List <>).MakeGenericType(itemType));
                foreach (XmlNode n in node.ChildNodes)
                {
                    var internalValue = NodeToValue(n, itemType);
                    res.Add(internalValue);
                }
                return(res);
            }

            return(node.Value);
        }
예제 #7
0
        public void Test()
        {
            //var res = new OtherClass()
            //{
            //    Items = new SerializableDictionary<string, List<SomeClass>>()
            //};
            var source = new SerializableDictionary <string, List <PMConfig> >();

            source.Add("test1", new List <PMConfig> {
                new PMConfig()
                {
                    ObjectName_r = "O1", MethodCode_r = "M1", ObjectEntitycode_R = "E1", PM2OperationCode_r = "OP1"
                }
            });
            source.Add("test2", new List <PMConfig> {
                new PMConfig()
                {
                    ObjectName_r = "O2", MethodCode_r = "M2", ObjectEntitycode_R = "E2", PM2OperationCode_r = "OP2"
                }
            });
            //res.Items.Add("test1", new List<SomeClass> { new SomeClass() { A = "A1", B = "B1" } });
            //res.Items.Add("test2", new List<SomeClass> { new SomeClass() { A = "A2", B = "B2" } });

            var xmlDoc = XmlDocumentConverter.ConvertFrom(source);
            var target = XmlDocumentConverter.ConvertTo <SerializableDictionary <string, List <PMConfig> > >(xmlDoc);
        }
예제 #8
0
        public virtual void Update(IEnumerable <T> entities)
        {
            DoInCurrentUnitOfWork(uow =>
            {
                BeforeUpdate(ref entities);
                var xmlDocuments = new List <XmlDocument>();
                foreach (var entity in entities)
                {
                    ClearCacheForInternalObject(entity);
                    var serializable = entity as ICustomXmlSerializable;
                    if (serializable != null)
                    {
                        serializable.IgnoreInnerEntity = serializable.OverrideIgnore ?? true;
                    }

                    var xmlDoc = XmlDocumentConverter.ConvertFrom(entity);
                    xmlDocuments.Add(xmlDoc);
                }

                using (var repo = GetRepository())
                    repo.Update(xmlDocuments);

                // подтверждаем изменения
                ObjectsForAccept.AddRange(entities);
                if (!uow.IsInTransaction())
                {
                    ProcessAcceptChanges();
                }
            });
        }
예제 #9
0
        public virtual XmlDocument GetXml(TKey key, string attrentity)
        {
            ClearStatistics();

            var attr = XmlDocumentConverter.XmlDocFromString(attrentity);

            return(XmlGet(key, attr));
        }
예제 #10
0
 public PrintStreamConfig GetDefaultPrinter(string tListParams)
 {
     return(RunManualDbOperation(db =>
     {
         var stm = string.Format("select {0}({1}) from dual", "PKGPRINTSTREAMCONFIG.getDefaultPrinter", tListParams);
         var resXml = db.SetCommand(stm, null).ExecuteScalar <XmlDocument>();
         return resXml == null ? null : XmlDocumentConverter.ConvertTo <PrintStreamConfig>(resXml);
     }));
 }
예제 #11
0
 public IEnumerable <User> GetAllFromActiveDirectory()
 {
     return(RunManualDbOperation(db =>
     {
         var sql = "select SYS.XMLTYPE.GETCLOBVAL(COLUMN_VALUE) from TABLE(pkgUser.GetFromADUserLst(NULL, NULL))";
         var resXml = db.SetCommand(sql).ExecuteScalarList <XmlDocument>();
         return XmlDocumentConverter.ConvertToListOf <User>(resXml);
     }));
 }
예제 #12
0
 public ReportRedefinition GetDefaultReport(string tListParams)
 {
     return(RunManualDbOperation(db =>
     {
         var stm = string.Format("select {0}({1}) from dual", "pkgReportRedefinition.getDefaultReport", tListParams);
         var resXml = db.SetCommand(stm, null).ExecuteScalar <XmlDocument>();
         return resXml == null ? null : XmlDocumentConverter.ConvertTo <ReportRedefinition>(resXml);
     }));
 }
예제 #13
0
            public TestObject GetImageTestObject()
            {
                XmlDocument xmlDoc = null;

                using (var db = GetDbManager())
                {
                    xmlDoc = db.SetCommand("select spftstgetImage from dual").ExecuteScalar <XmlDocument>();
                }
                return(XmlDocumentConverter.ConvertTo <TestObject>(xmlDoc));
            }
예제 #14
0
        public virtual void Update(T obj)
        {
            if (obj == null)
            {
                throw new ArgumentNullException("obj");
            }

            var xmlDoc = XmlDocumentConverter.ConvertFrom(obj);

            Update(xmlDoc);
        }
예제 #15
0
        public IEnumerable <Output> GetEpsOutputLst(int recCount, int epsHandler)
        {
            return(RunManualDbOperation(db =>
            {
                var pRecCount = db.InputParameter("pRecCount", recCount);
                var pEpsHandler = db.InputParameter("pEpsHandler", epsHandler);

                var stm = string.Format("select * FROM TABLE(PKGOUTPUT.getOutputLst2EPS(:{0}, :{1}))", pRecCount.ParameterName, pEpsHandler.ParameterName);
                var resXml = db.SetCommand(stm, pRecCount, pEpsHandler).ExecuteScalarList <XmlDocument>();
                return XmlDocumentConverter.ConvertToListOf <Output>(resXml);
            }));
        }
예제 #16
0
        protected T GetFromRequestBody <T>() where T : class
        {
            // TODO: use binding
            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(Request.Content.ReadAsStringAsync().Result);
            if (xmlDoc.DocumentElement == null)
            {
                Request.CreateResponse(HttpStatusCode.BadRequest);
            }
            return(XmlDocumentConverter.ConvertTo <T>(xmlDoc));
        }
예제 #17
0
        public virtual IEnumerable <HistoryWrapper <T> > GetHistory(string filter, string attrentity)
        {
            var packageName  = GetPakageName(typeof(T));
            var sourceName   = SourceNameHelper.Instance.GetSourceName(typeof(T));
            var functionName = string.Format(GetHistoryLstFunctionName, packageName, sourceName);

            var attrXml = !string.IsNullOrEmpty(attrentity)
                ? XmlDocumentConverter.XmlDocFromString(attrentity)
                : null;

            var resXml = XmlGetList(attrXml, filter, functionName);

            return(XmlDocumentConverter.ConvertToListOf <HistoryWrapper <T> >(resXml));
        }
예제 #18
0
        public virtual T Get(TKey key, string attrentity)
        {
            ClearStatistics();

            var attr   = XmlDocumentConverter.XmlDocFromString(attrentity);
            var xmlDoc = XmlGet(key, attr);

            if (xmlDoc == null)
            {
                return(null);
            }

            return(XmlDocumentConverter.ConvertTo <T>(xmlDoc));
        }
예제 #19
0
        public virtual List <XmlDocument> GetXmlFiltered(string filter, string attrentity)
        {
            ClearStatistics();

            if (!string.IsNullOrEmpty(filter) && filter.StartsWith("pkg"))
            {
                var items = GetListTFromFunction(filter);
                return(XmlDocumentConverter.ConvertFromListOf(items));
            }

            var attr = XmlDocumentConverter.XmlDocFromString(attrentity);

            return(XmlGetList(attr, filter));
        }
예제 #20
0
        private object GetValueFromNode(Node node, Type valueType)
        {
            if (valueType.IsValueType || (typeof(string) == valueType))
            {
                // хитро определяем, что значения нет
                if (node.Nodes == null)
                {
                    return(valueType.IsByRef ? null : Activator.CreateInstance(valueType));
                }

                return(SerializationHelper.ConvertToTrueType(node.Value, valueType));
            }

            if (typeof(IEnumerable).IsAssignableFrom(valueType) && valueType != typeof(XmlDocument) && !typeof(IDictionary).IsAssignableFrom(valueType))
            {
                var itemType = valueType.IsGenericType ? valueType.GetGenericArguments()[0] : typeof(string);
                var listType = valueType.IsInterface ? typeof(List <>).MakeGenericType(itemType) : valueType;
                var list     = (IList)Activator.CreateInstance(listType);
                foreach (var n in node.Nodes)
                {
                    list.Add(GetValueFromNode(n, itemType));
                }

                return(list);
            }

            // если сложный объект, то разбираем его сложно
            if (typeof(IXmlSerializable).IsAssignableFrom(valueType) && (node.Value != null || node.Nodes != null))
            {
                if (node.Value != null)
                {
                    using (var sr = new StringReader(node.Value))
                        using (var xmlReader = XmlReader.Create(sr))
                            return(XmlDocumentConverter.ConvertTo(valueType, xmlReader));
                }
            }

            if (valueType == typeof(XmlDocument))
            {
                if (string.IsNullOrEmpty(node.Value))
                {
                    return(null);
                }
                var doc = new XmlDocument();
                doc.LoadXml(node.Value);
                return(doc);
            }
            return(node.Value);
        }
예제 #21
0
        public HttpResponseMessage Post()
        {
            var uowFactory = IoC.Instance.Resolve <IUnitOfWorkFactory>();

            using (var uow = uowFactory.Create(GetUnitOfWorkContext()))
            {
                try
                {
                    var xmlDoc = GetRequestDocument();

                    using (var mgr = IoC.Instance.Resolve <IBaseManager <T> >())
                    {
                        uow.BeginChanges();
                        mgr.SetUnitOfWork(uow, false);

                        // определяем как работать с данными
                        if (!xmlDoc.DocumentElement.Name.EqIgnoreCase("ITEMS"))
                        {
                            var obj = (T)XmlDocumentConverter.ConvertTo(typeof(T), xmlDoc);
                            mgr.Insert(ref obj);
                            uow.CommitChanges();
                            return(Request.CreateResponse(HttpStatusCode.Created, obj));
                        }
                        else
                        {
                            var objList = new List <T>();
                            foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
                            {
                                var doc = new XmlDocument();
                                doc.LoadXml(node.OuterXml);
                                var obj = (T)XmlDocumentConverter.ConvertTo(typeof(T), doc);
                                objList.Add(obj);
                            }
                            var list = (IEnumerable <T>)objList;
                            mgr.Insert(ref list);
                            uow.CommitChanges();
                            return(Request.CreateResponse(HttpStatusCode.Created, EntityListResult(list)));
                        }
                    }
                }
                catch (Exception ex)
                {
                    uow.RollbackChanges();
                    Log.Debug(ex);
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
                }
            }
        }
        /// <summary>
        /// Revert the obfuscated XML document of <paramref name="value"/> to its original state by applying the mappable XML document of <paramref name="mapping"/>.
        /// </summary>
        /// <param name="value">The obfuscated <see cref="Stream"/> to revert.</param>
        /// <param name="mapping">A <see cref="Stream"/> containing mappable values necessary to revert <paramref name="value"/> to its original state.</param>
        /// <returns>
        /// A <see cref="Stream"/> object where the obfuscated XML document has been reverted to its original XML document.
        /// </returns>
        public override Stream Revert(Stream value, Stream mapping)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }
            if (mapping == null)
            {
                throw new ArgumentNullException(nameof(mapping));
            }

            MemoryStream tempOutput = null;

            try
            {
                XmlDocument document    = XmlDocumentConverter.FromStream(mapping);
                var         mappingNode = document.DocumentElement;

                XmlNode encryptedNode = mappingNode.GetElementsByTagName(MappingEncryptedElement).Item(0);
                if (encryptedNode != null)
                {
                    mappingNode.InnerXml = StringConverter.FromBytes(AdvancedEncryptionStandardUtility.Decrypt(Convert.FromBase64String(encryptedNode.InnerText), Key, InitializationVector), options =>
                    {
                        options.Encoding = Encoding;
                        options.Preamble = PreambleSequence.Remove;
                    });
                }

                tempOutput = new MemoryStream();
                using (XmlWriter writer = XmlWriter.Create(tempOutput, XmlWriterUtility.CreateSettings(o => o.Encoding = Encoding)))
                {
                    document.WriteTo(writer);
                }
                tempOutput.Position = 0;
                mapping             = tempOutput;
                tempOutput          = null;
            }
            finally
            {
                if (tempOutput != null)
                {
                    tempOutput.Dispose();
                }
            }

            return(base.Revert(value, mapping));
        }
        private static string GetValueForTelegram(object item)
        {
            if (item is IXmlSerializable)
            {
                return(XmlDocumentConverter.ConvertFrom(item).InnerXml);
            }

            if (item is XmlDocument)
            {
                return(((XmlDocument)item).InnerXml);
            }

            //if (item.GetType().IsAssignableFrom(typeof(double)))
            //    return ((double)item).ToString("R");

            //return item.ToString();

            return(SerializationHelper.GetCorrectStringValue(item));
        }
예제 #24
0
        public virtual List <T> GetFiltered(string filter, string attrentity)
        {
            ClearStatistics();

            // если фильтр - это процедура
            if (!string.IsNullOrEmpty(filter) && filter.StartsWith("pkg"))
            {
                return(GetListTFromFunction(filter));
            }

            var xmlDocuments = GetXmlFiltered(filter, attrentity);

            if (xmlDocuments == null)
            {
                return(null);
            }

            return(XmlDocumentConverter.ConvertToListOf <T>(xmlDocuments));
        }
예제 #25
0
        protected override XmlDocument GetXmlDocument(WMSBusinessObject item)
        {
            var mgr         = IoC.Instance.Resolve <IXamlManager <T> >();
            var xaml        = mgr.GetXaml(item.GetKey());
            var xmlDocument = XmlDocumentConverter.ConvertFrom(item);

            if (string.IsNullOrEmpty(xaml))
            {
                return(xmlDocument);
            }

            var el = xmlDocument.CreateElement(TagName);

            el.InnerText = xaml;
            if (xmlDocument.DocumentElement != null)
            {
                xmlDocument.DocumentElement.AppendChild(el);
            }
            return(xmlDocument);
        }
예제 #26
0
        protected XmlDocument EntityListResult <TEnt>(IEnumerable <TEnt> objList)
            where TEnt : WMSBusinessObject, new()
        {
            // TODO: Delegate to serialization to XmlMediaTypeFormatter
            var xmlList          = XmlDocumentConverter.ConvertFromListOf(objList);
            var resultXmlDocList = new XmlDocument();

            resultXmlDocList.LoadXml("<ITEMS></ITEMS>");
            var root = resultXmlDocList.DocumentElement;

            if (root != null)
            {
                foreach (var doc in xmlList)
                {
                    if (doc.DocumentElement != null)
                    {
                        root.InnerXml += doc.InnerXml;
                    }
                }
            }
            return(resultXmlDocList);
        }
예제 #27
0
        public string ProcessApi(string action, string controller, object request)
        {
            if (string.IsNullOrEmpty(action))
            {
                throw new ArgumentNullException("action");
            }

            if (string.IsNullOrEmpty(controller))
            {
                throw new ArgumentNullException("controller");
            }

            var helper = new WebAPIHelper(_url);

            switch (action.ToUpper())
            {
            case "POST":
                using (var ms = helper.Post <Stream>(controller, request))
                {
                    if (ms != null)
                    {
                        using (var reader = XmlReader.Create(ms))
                        {
                            var responseXmlDoc = XmlDocumentConverter.ConvertTo <XmlDocument>(reader);
                            if (responseXmlDoc != null)
                            {
                                return(responseXmlDoc.InnerXml);
                            }
                        }
                    }
                }
                break;

            default:
                throw new NotImplementedException(string.Format("Action '{0}' is not Implemented", action));
            }

            return(null);
        }
예제 #28
0
        private List <PMConfig> GetPMConfigByParamList(decimal?[] productIdList, string[] artCodeList, string operationCode, string methodName)
        {
            if ((productIdList == null || productIdList.Length == 0) && (artCodeList == null || artCodeList.Length == 0))
            {
                throw new DeveloperException("Parameters productIdList[] and artCodeList[] can't be empty at the same time");
            }

            if ((productIdList != null && productIdList.Length > 0) && (artCodeList != null && artCodeList.Length > 0))
            {
                throw new DeveloperException("Parameters productIdList[] and artCodeList[] can't be not empty at the same time");
            }

            var byProduct = productIdList != null && productIdList.Length > 0;
            var count     = byProduct ? productIdList.Length : artCodeList.Length;

            var result = new List <PMConfig>();

            //function getPMConfigByParamLst (pProductID in INTEGER,pArtCode in VARCHAR2,pOperationCode in VARCHAR2,pMMethodCode in VARCHAR2,pAttrEntity in XMLType default NULL,pFilter in VARCHAR2 default NULL) return TListXml pipelined as
            return(RunManualDbOperation(db =>
            {
                var ps = db.GetSpParameters(GetPMConfigByParamListFunctionName, false, false);

                for (int i = 0; i < count; i++)
                {
                    ps[0].Value = byProduct ? productIdList[i] : null;
                    ps[1].Value = byProduct ? null : artCodeList[i];
                    ps[2].Value = operationCode;
                    ps[3].Value = methodName;

                    var stm = string.Format("select SYS.XMLTYPE.GETCLOBVAL(COLUMN_VALUE) from TABLE({0}(:pproductid, :partcode, :poperationcode, :pmmethodcode, :pattrentity, :pfilter))",
                                            GetPMConfigByParamListFunctionName);
                    var resXml = db.SetCommand(stm, ps).ExecuteScalarList <XmlDocument>();

                    result.AddRange(XmlDocumentConverter.ConvertToListOf <PMConfig>(resXml));
                }
                return result;
            }));
        }
예제 #29
0
        protected override void Execute(NativeActivityContext context)
        {
            var source = Source.Get(context);

            if (string.IsNullOrEmpty(source))
            {
                throw new DeveloperException("Нет данных для десериализации");
            }
            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(source);
            var result = (T)XmlDocumentConverter.ConvertTo(typeof(T), xmlDoc);

            if (IsNew)
            {
                var editable = result as IEditable;
                if (editable != null)
                {
                    editable.AcceptChanges(true);
                }
            }
            Result.Set(context, result);
        }
예제 #30
0
        public void SerializableListTest()
        {
            var source = new OtherClass()
            {
                Items = new SerializableDictionary <string, SerializableList <SomeClass> >()
            };

            source.Items.Add("test1", new SerializableList <SomeClass> {
                new SomeClass()
                {
                    A = "A1", B = "B1"
                }
            });
            source.Items.Add("test2", new SerializableList <SomeClass> {
                new SomeClass()
                {
                    A = "A2", B = "B2"
                }
            });

            var xmlDoc = XmlDocumentConverter.ConvertFrom(source);
            var target = XmlDocumentConverter.ConvertTo <OtherClass>(xmlDoc);
        }