Example #1
0
        public Page(WbpsResquest req, string sessionId, ISecurity security, ISession session)
        {
            this.sessionId = sessionId;
            this.url       = req.Url;
            this.security  = security;
            this.session   = session;


            this.pageId = getPageId(req.PageId);
            string query = req.Query;

            if (!string.IsNullOrEmpty(query))
            {
                queryStrings = new Dictionary <string, string>();
                string[] nameValues = query.Split('&');
                for (int i = 0; i < nameValues.Length; i++)
                {
                    string[] nameValue = nameValues[i].Split('=');
                    if (nameValue.Length > 1)
                    {
                        queryStrings.Add(nameValue[0], nameValue[1].Trim());
                    }
                }
            }

            pageSchema = null;
            if (WbdlSchemaContainer.Instance().Contains(this.pageId))
            {
                pageSchema = WbdlSchemaContainer.Instance().GetItem(this.pageId);
                pageSchema.ChangedEvent += new Schema.SchemaEventHandler(PageSchema_Changed);
                Initialize();
            }
            this.isOpen = true;
        }
Example #2
0
        public object Invoke(string sessionId, WbdlSchema wbdlSchema, WbapRequest request)
        {
            Object[] parameters = new Object[methodSchema.Parameters.Count];
            for (int j = 0; j < methodSchema.Parameters.Count; j++)
            {
                ParameterSchema paramSchema = methodSchema.Parameters[j];

                object paramValue = null;
                if (string.IsNullOrEmpty(paramSchema.Value))
                {
                    parameters[j] = null;
                    continue;
                }

                if (paramSchema.Value[0] == '#')
                {
                    paramValue = request.ElementBinds.GetTable(paramSchema.Value.Remove(0, 1), wbdlSchema);
                }
                else if (paramSchema.Value[0] == '$')
                {
                    paramValue = request.ElementBinds[paramSchema.Value];
                }
                else
                {
                    paramValue = paramSchema.Value;
                }

                parameters[j] = paramValue;
            }

            Object invokeRet = Umc.InvokeFunction(sessionId, null, methodSchema.MethodName, parameters);


            return(invokeRet);
        }
Example #3
0
        /// <summary>
        /// 保存页面的Wbdl配置信息
        /// </summary>
        /// <param name="pageFullName"></param>
        /// <param name="wbdl"></param>
        public static void saveWbdl(string pageFullName, WbdlSchema wbdl)
        {
            string pageFile = XSite.MapPath(pageFullName);
            string pageId   = pageFile.Remove(0, XSite.SitePhysicalPath.Length);

            wbdl.Id = pageId;
            WbdlSchemaContainer.Instance().UpdateItem(pageId, wbdl);
        }
Example #4
0
 private void PageSchema_Changed(object sender)
 {
     if (sender is WbdlSchema)
     {
         pageSchema = (sender as WbdlSchema);
         pageSchema.ChangedEvent += new Schema.SchemaEventHandler(PageSchema_Changed);
     }
     Initialize();
 }
Example #5
0
        private Object EncloseClientRequestParam(string param)
        {
            if (param == null)
            {
                return(param);
            }

            if (!param.StartsWith("#"))
            {
                return(param);
            }

            param = param.Remove(0, 1);

            XTable_1   xTable = new XTable_1();
            WbdlSchema schame = pageCtr.Schame;
            int        i      = 0;

            string[] fieldNames = { };

            foreach (FieldBindSchema fieldBind in schame.FieldBinds)
            {
                if (fieldBind.TableId.Equals(param, StringComparison.OrdinalIgnoreCase))
                {
                    i++;
                    Array.Resize <string>(ref fieldNames, i);
                    fieldNames[i - 1] = fieldBind.Id;
                }
            }


            foreach (DataListBindSchema dataList in schame.DataListBinds)
            {
                foreach (FieldBindSchema fieldBind in dataList.Columns)
                {
                    if (fieldBind.TableId.Equals(param, StringComparison.OrdinalIgnoreCase))
                    {
                        i++;
                        Array.Resize <string>(ref fieldNames, i);
                        fieldNames[i - 1] = fieldBind.Id;
                    }
                }
            }

            //  xTable.FieldNames = fieldNames;
            XDataRow dataRow = new XDataRow();

            //            dataRow.Values = new string[] { "1111", "222" };
            //    dataRow.Id = "1";
            xTable.Rows.Add(dataRow);
            dataRow = new XDataRow();
            //     dataRow.Id = "2";
            //            dataRow.Values = new string[] { "1111", "222" };
            xTable.Rows.Add(dataRow);
            return(xTable);
        }
Example #6
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public ActionBroker(WbapRequest wbapRequest, ActionFlowSchema actionSchema, PageController pageController, string sessionId, WbdlSchema schema, ISecurity secHandler)
 {
     request             = wbapRequest;
     _ActionSchema       = actionSchema;
     this.pageController = pageController;
     this.sessionId      = sessionId;
     this.schema         = schema;
     // this.Logger = new XLogging.XLoggingService();
     _ISec    = secHandler;
     actionId = wbapRequest.ActionId;
     //在开始已经update
     // UpdatePage(wbapRequest);
 }
Example #7
0
        /// <summary>
        ///根据tableName参数,为客户端请求,建立Table的框架格式。
        /// </summary>
        /// <param name="fieldName"></param>
        /// <param name="schema"></param>
        internal void ImportTableSchema(string tableName, WbdlSchema schema)
        {
            DataSourceSchema tableSchema = DataSourceSchemaContainer.Instance().GetItem(tableName);
            string           keyField    = tableSchema.PrimaryKeys + "_Key";

            foreach (FieldBindSchema fieldBind in schema.FieldBinds)
            {
                if (fieldBind.TableId.Equals(tableName, StringComparison.OrdinalIgnoreCase))
                {
                    if (!this.ContainsKey(fieldBind.Id))
                    {
                        this.Add(fieldBind.Id, "");
                    }
                    //                    this.
                }
            }

            if (!this.ContainsKey(keyField))
            {
                this.Add(keyField, "");
            }

            foreach (DataListBindSchema listBind in schema.DataListBinds)
            {
                string   listKey  = listBind.Id + WbapDataType._List.ToString();
                WbapList dataList = null;
                if (this.ContainsKey(listKey))
                {
                    dataList = this[listKey] as WbapList;
                }
                else
                {
                    dataList = new WbapList();
                    this.Add(listBind.Id + WbapDataType._List.ToString(), dataList);
                }
                foreach (FieldBindSchema fieldBind in listBind.Columns)
                {
                    if (fieldBind.TableId.Equals(tableName, StringComparison.OrdinalIgnoreCase))
                    {
                        if (dataList == null)
                        {
                            dataList = new WbapList();
                            this.Add(listBind.Id + WbapDataType._List.ToString(), dataList);
                        }
                        dataList.Columns.Add(fieldBind.Id);
                    }
                }

                dataList.Columns.Add(keyField);
            }
        }
Example #8
0
        private Object EncloseSeverMethodParam(Object param)
        {
            XTable_1   xTable = null;
            WbdlSchema schame = pageCtr.Schame;

            if (!(param is XTable_1))
            {
                return(param);
            }

            xTable = (XTable_1)param;

            for (int i = 0; i < xTable.Rows[0].Values.Count; i++)
            {
                if (xTable.Rows[0].Values[i].Equals(""))
                {
                    xTable.Rows[0].Values[i] = "0";
                }
            }

            for (int i = 0; i < xTable.FieldNames.Count(); i++)
            {
                string elementId = xTable.FieldNames[i];
                foreach (FieldBindSchema fieldBind in schame.FieldBinds)
                {
                    if (fieldBind.Id.Equals(elementId, StringComparison.OrdinalIgnoreCase))
                    {
                        xTable.FieldNames[i] = fieldBind.FieldId;
                        xTable.Id            = fieldBind.TableId;
                    }
                }


                foreach (DataListBindSchema dataList in schame.DataListBinds)
                {
                    foreach (FieldBindSchema fieldBind in dataList.Columns)
                    {
                        if (fieldBind.Id.Equals(elementId, StringComparison.OrdinalIgnoreCase))
                        {
                            xTable.FieldNames[i] = fieldBind.FieldId;
                            xTable.Id            = fieldBind.TableId;
                        }
                    }
                }
            }


            return(xTable);
        }
Example #9
0
        private Object EncloseReponseReturn(Object returnValue)
        {
            WbdlSchema schame = pageCtr.Schame;

            XTable_1 xTable = null;

            if (!(returnValue is XTable_1))
            {
                return(returnValue);
            }

            xTable = (XTable_1)returnValue;


            for (int i = 0; i < xTable.FieldNames.Count(); i++)
            {
                string fieldName = xTable.FieldNames[i];


                foreach (FieldBindSchema fieldBind in schame.FieldBinds)
                {
                    if (fieldBind.FieldId.Equals(fieldName, StringComparison.OrdinalIgnoreCase))
                    {
                        xTable.FieldNames[i] = fieldBind.Id;
                        //test
                        // xTable.FieldDisplayName[i] = fieldBind.DisplayName;
                    }
                }


                foreach (DataListBindSchema dataList in schame.DataListBinds)
                {
                    foreach (FieldBindSchema fieldBind in dataList.Columns)
                    {
                        if (fieldBind.FieldId.Equals(fieldName, StringComparison.OrdinalIgnoreCase))
                        {
                            xTable.FieldNames[i] = fieldBind.Id;
                            //test
                            // xTable.FieldDisplayName[i] = fieldBind.DisplayName;
                        }
                    }
                }
            }
            return(xTable);
        }