Example #1
0
        private bool ProcessUSCTag(InternalBookmarkItem ibmItem, DSIconType dataTagType, string itemName,
                                   ref GenOsqlParamInfo paramInfo, ref Dictionary <string, bool> dataTagChecker)
        {
            if (dataTagType == DSIconType.USC)
            {
                GetTableIndexForUSC(ibmItem, ref paramInfo);
                USCItem usc            = paramInfo.UscItems[itemName];
                string  orderFieldName = usc.BaseOnField;

                if (!string.IsNullOrWhiteSpace(orderFieldName) && !dataTagChecker.ContainsKey(orderFieldName))
                {
                    InternalBookmarkItem exist = (from c in paramInfo.IbmDomain.InternalBookmarkItems
                                                  where (c.TableIndex == usc.TableIndex) && (string.Equals(c.ItemType, DSIconType.Field.ToString()))
                                                  select c).FirstOrDefault();
                    //If existed one data field in selected tag, shouldnot include data field in udf
                    if (exist == null || string.IsNullOrEmpty(exist.BizName))
                    {
                        InternalBookmarkItem bm = AddUdfFields(orderFieldName, ref paramInfo);
                        dataTagChecker.Add(BaseMarkupUtilities.GetOriginalBizName(bm.Key, bm.BizName), true);
                    }
                    else
                    {
                        dataTagChecker.Add(itemName, true);
                        paramInfo.AddDataTags(ibmItem, true);
                    }
                }

                return(true);
            }

            return(false);
        }
Example #2
0
        protected string GenSelectClauseForUSC(InternalBookmarkItem ibmItem, ref GenOsqlParamInfo paramInfo)
        {
            //1.Find USC bookmark in the list Conditions to get actual USC.
            //2.Build SQl
            string sqlClause = string.Empty;
            string itemName  = BaseMarkupUtilities.GetOriginalBizName(ibmItem.Key, ibmItem.BizName);

            if (paramInfo.UscItems == null || paramInfo.UscItems.Count <= 0 || ibmItem.Key.EndsWith(BaseProntoMarkup.KeyEndIf))
            {
                return(sqlClause);
            }

            USCItem uscItem = null;

            if (paramInfo.UscItems.Keys.Contains(itemName))
            {
                uscItem = paramInfo.UscItems[itemName];
            }

            //
            Dictionary <string, DSTreeView> lowerFields = new Dictionary <string, DSTreeView>();

            foreach (string key in paramInfo.DomainInfo.Fields.Keys)
            {
                lowerFields.Add(key.ToLower(), paramInfo.DomainInfo.Fields[key]);
            }

            //Validate and Build SQl
            if (uscItem != null)
            {
                List <Token>       lstTokens       = new List <Token>();
                string             error           = string.Empty;
                ExpressionProvider expressProvider = new ExpressionProvider();
                expressProvider.DoTokenize(uscItem.SQLExpression, ref lstTokens, ref error);

                foreach (Token token in lstTokens)
                {
                    string key = string.Empty;
                    if (token.Name.Contains("[") && token.Name.Contains("]"))
                    {
                        key = token.Name.Substring(1, token.Name.Length - 2).ToLower();
                        if (lowerFields.ContainsKey(key))
                        {
                            token.Name = lowerFields[key].TechName;

                            if (paramInfo.DSRelationRow == null)
                            {
                                paramInfo.DSRelationRow = lowerFields[key].Relation.Clone();
                            }
                            else
                            {
                                paramInfo.DSRelationRow.OrRow(lowerFields[key].Relation);
                            }
                        }
                    }
                    sqlClause += token.Name + " ";
                }
            }
            return(sqlClause.Trim());
        }
Example #3
0
        protected void AddItemToListJParameters(string norTechName, ref GenOsqlParamInfo paramInfo,
                                                Dictionary <string, string> selectClauseParams, bool insertAtStart = false)
        {
            if (!selectClauseParams.ContainsKey(norTechName))
            {
                return;
            }
            string paramName  = selectClauseParams[norTechName]; //string paramName = "@" + norTechName;
            bool   isNotExist = paramInfo.JParameters.Count(c => string.Compare(c.ParamName, paramName, true) == 0) == 0;

            if (isNotExist)
            {
                JParameter newJParam = new JParameter();//Value of Index property will be set later, before save
                newJParam.ParamName = paramName;
                newJParam.DataType  = new SQLDBType(SQLTypeName.NVARCHAR);

                if (insertAtStart)
                {
                    paramInfo.JParameters.Insert(0, newJParam);
                }
                else
                {
                    paramInfo.JParameters.Add(newJParam);
                }
            }
        }
Example #4
0
        //private void GenFromClause(ref GenOsqlParamInfo paramInfo)
        //{
        //    paramInfo.FormClause = paramInfo.DomainInfo.DSDomainData.GetFromClause(paramInfo.DSRelationRow, AppDbTypes.Oracle);
        //}
        #endregion

        #region gen for xml clause
        private void GenForXmlClause(ref GenOsqlParamInfo paramInfo)
        {
            paramInfo.OsqlXmlItem       = new OsqlXmlItem();
            paramInfo.OsqlXmlItem.Paths = new List <OsqlXmlItemPath>();
            foreach (OsqlStringBuilder item in paramInfo.OsqlStringBuilders)
            {
                OsqlXmlItemPath osqlXmlItemPath = new OsqlXmlItemPath();
                osqlXmlItemPath.Osql = item.Osql.ToString().TrimEnd();
                osqlXmlItemPath.JSql = item.JOsql.ToString().TrimEnd();
                if (!string.IsNullOrWhiteSpace(item.SelectedColumns))
                {
                    if (item.SelectedColumns.StartsWith(","))
                    {
                        osqlXmlItemPath.SelectedColumns = item.SelectedColumns.Remove(0, 1);
                    }
                    else
                    {
                        osqlXmlItemPath.SelectedColumns = item.SelectedColumns;
                    }
                }

                paramInfo.OsqlXmlItem.Paths.Add(osqlXmlItemPath);
            }
            paramInfo.OsqlXmlItem.Index            = paramInfo.IndexOfDomain;
            paramInfo.OsqlXmlItem.DomainName       = paramInfo.DomainInfo.DSDomainData.Name;
            paramInfo.OsqlXmlItem.EncodeDomainName = BaseMarkupUtilities.XmlEncode(paramInfo.DomainInfo.DSDomainData.Name);
        }
Example #5
0
        private bool ProcessStartForeachTag(string ibmItemKey, string ibmItemBizName,
                                            ref GenOsqlParamInfo paramInfo, ref Dictionary <string, bool> dataTagChecker)
        {
            if (ibmItemKey.Contains(BaseProntoMarkup.KeyStartForeach)) // update for add sort item in for-each
            {
                Dictionary <string, OrderByType> sorteds = BaseMarkupUtilities.GetOldOrderBy(ibmItemBizName, false);
                if (sorteds.Count > 0) // has sort in for-each
                {
                    foreach (string orderBizName in sorteds.Keys)
                    {
                        string sortBizName = paramInfo.DomainInfo.GetUdfSortedBizName(orderBizName);
                        if (sortBizName != orderBizName) // has order by bizname
                        {
                            if (dataTagChecker.ContainsKey(sortBizName))
                            {
                                continue;
                            }

                            InternalBookmarkItem bm = AddUdfFields(sortBizName, ref paramInfo);
                            dataTagChecker.Add(BaseMarkupUtilities.GetOriginalBizName(bm.Key, bm.BizName), true);
                        }
                    }
                }

                return(true);
            }

            return(false);
        }
Example #6
0
        private void UpdateOsqlXmlItem(ref GenOsqlParamInfo paramInfo)
        {
            if (paramInfo.OsqlStringBuilders == null)
            {
                paramInfo.OsqlStringBuilders = new List <OsqlStringBuilder>();
            }
            if (paramInfo.FromClauses == null)
            {
                paramInfo.FromClauses = new List <string>();
            }

            // remove latest comma
            bool isRemove = false;
            int  index    = paramInfo.OsqlStringBuilder.Osql.Length - 1;

            while (!isRemove && index >= 0)
            {
                char ch = paramInfo.OsqlStringBuilder.Osql[index];
                if (ch != '\n' && ch != '\r' && ch != ' ' && ch != ',')
                {
                    break;
                }
                if (ch == ',')
                {
                    isRemove = true;
                    paramInfo.OsqlStringBuilder.Osql[index] = ' ';
                }
                index--;
            }
            isRemove = false;
            index    = paramInfo.OsqlStringBuilder.JOsql.Length - 1;
            while (!isRemove && index >= 0)
            {
                char ch = paramInfo.OsqlStringBuilder.JOsql[index];
                if (ch != '\n' && ch != '\r' && ch != ' ' && ch != ',')
                {
                    break;
                }
                if (ch == ',')
                {
                    isRemove = true;
                    paramInfo.OsqlStringBuilder.JOsql[index] = ' ';
                }
                index--;
            }
            paramInfo.OsqlStringBuilders.Add(paramInfo.OsqlStringBuilder);

            GenWhereClause(ref paramInfo);
            //if (paramInfo.DSWhereClauseRelationRow != null)
            //{
            //    if (paramInfo.DSRelationRow == null)
            //        paramInfo.DSRelationRow = paramInfo.DSWhereClauseRelationRow.Clone();
            //    else
            //        paramInfo.DSRelationRow.OrRow(paramInfo.DSWhereClauseRelationRow);
            //}
            paramInfo.FromClauses.Add(paramInfo.DomainInfo.DSDomainData.GetFromClause(
                                          paramInfo.DSWhereClauseRelationRow, paramInfo.DSRelationRow, AppDbTypes.Oracle));
        }
Example #7
0
 private void UpdateSelectedColumns(ref GenOsqlParamInfo paramInfo, string tableName, string bizName)
 {
     if (paramInfo.CurrentTableName != tableName)
     {
         paramInfo.OsqlStringBuilder.SelectedColumns = paramInfo.OsqlStringBuilder.SelectedColumns + string.Format(",[{0}]", tableName);
         paramInfo.CurrentTableName = tableName;
     }
     paramInfo.OsqlStringBuilder.SelectedColumns = paramInfo.OsqlStringBuilder.SelectedColumns + string.Format(",{0}", bizName);
 }
Example #8
0
        //private void GenFromClause(ref GenOsqlParamInfo paramInfo)
        //{
        //    paramInfo.FormClause = paramInfo.DomainInfo.DSDomainData.GetFromClause(paramInfo.DSRelationRow);
        //}
        #endregion

        #region gen for xml clause
        private void GenForXmlClause(ref GenOsqlParamInfo paramInfo)
        {
            //For XML Auto
            string forXml        = string.Empty;
            string domainEncoded = BaseMarkupUtilities.XmlEncode(paramInfo.IbmDomain.DomainName);

            if (paramInfo.HasField)
            {
                if (!paramInfo.IsNeedInKeyword)
                {
                    forXml = string.Format(Sql08QueryConstants.XmlAuto.ForXMLAuto, domainEncoded);
                }
                else
                {
                    forXml = string.Format(Sql08QueryConstants.XmlAuto.ForXMLAutoIn, domainEncoded);
                }
            }
            else
            {
                string rootTable = paramInfo.SelectedTables[0][0];
                if (!paramInfo.IsNeedInKeyword)
                {
                    forXml = string.Format(Sql08QueryConstants.XmlAuto.ForXMLAutoIn, rootTable, domainEncoded);
                }
                else
                {
                    forXml = string.Format(Sql08QueryConstants.XmlAuto.ForXMLRawIn, rootTable, domainEncoded);
                }
            }

            paramInfo.OsqlXmlItem       = new OsqlXmlItem();
            paramInfo.OsqlXmlItem.Paths = new List <OsqlXmlItemPath>();
            foreach (OsqlStringBuilder item in paramInfo.OsqlStringBuilders)
            {
                item.AppendLine(forXml);

                //Prepare for return
                if (paramInfo.HasImage)
                {
                    item.Append(Sql08QueryConstants.SQLBase64);
                }

                OsqlXmlItemPath osqlXmlItemPath = new OsqlXmlItemPath();
                osqlXmlItemPath.Osql = item.Osql.ToString().TrimEnd();
                osqlXmlItemPath.JSql = item.JOsql.ToString().TrimEnd();

                if (paramInfo.IsNeedInKeyword)
                {
                    osqlXmlItemPath.Osql = string.Format(Sql08QueryConstants.SQLWithIn, osqlXmlItemPath.Osql);
                    osqlXmlItemPath.JSql = string.Format(Sql08QueryConstants.SQLWithIn, osqlXmlItemPath.JSql);
                }
                paramInfo.OsqlXmlItem.Paths.Add(osqlXmlItemPath);
            }
            paramInfo.OsqlXmlItem.Index            = paramInfo.IndexOfDomain;
            paramInfo.OsqlXmlItem.DomainName       = paramInfo.DomainInfo.DSDomainData.Name;
            paramInfo.OsqlXmlItem.EncodeDomainName = BaseMarkupUtilities.XmlEncode(paramInfo.DomainInfo.DSDomainData.Name);
        }
Example #9
0
        /// <summary>
        /// remove Foreach tag and If tag out of internal bookmark object
        /// </summary>
        /// <param name="ibmDomain"></param>
        /// <param name="itemKey"></param>
        /// <param name="itemName"></param>
        /// <param name="dataTagChecker"></param>
        /// <returns></returns>
        private bool ProcessEndForeachIfTag(ref GenOsqlParamInfo paramInfo, string itemKey, string itemName,
                                            Dictionary <string, bool> dataTagChecker)
        {
            if (itemKey.Contains(BaseProntoMarkup.KeyEndForeach) ||
                itemKey.Contains(BaseProntoMarkup.KeyEndIf) ||
                (dataTagChecker.ContainsKey(itemName)))
            {
                return(true);
            }

            return(false);
        }
Example #10
0
        protected void UpdateChecksumInfo(ref GenOsqlParamInfo paramInfo, Dictionary <string, string> dicSelectClauseParams, int dbType)
        {
            ChecksumInfoItem                  = new ProntoDoc.Framework.CoreObject.PdwxObjects.ChecksumInfoItem();
            ChecksumInfoItem.AppID            = paramInfo.DomainInfo.DSDomainData.AppID;
            ChecksumInfoItem.Classifier       = paramInfo.DomainInfo.DSDomainData.Classifier;
            ChecksumInfoItem.DBID             = paramInfo.DomainInfo.DSDomainData.DBID;
            ChecksumInfoItem.DBType           = dbType;
            ChecksumInfoItem.DomainAlias      = paramInfo.DomainInfo.DSDomainData.Alias;
            ChecksumInfoItem.DomainName       = paramInfo.DomainInfo.DSDomainData.Name;
            ChecksumInfoItem.DDName           = paramInfo.DomainInfo.DSDomainData.DDName;
            ChecksumInfoItem.DDNameNormalised = paramInfo.DomainInfo.DSDomainData.DDNormalisedName;
            ChecksumInfoItem.HightlightColor  = paramInfo.IbmDomain.Color;

            if (paramInfo.IbmDomain.InternalBookmarkItems != null)
            {
                ChecksumInfoItem.BookmarkNames = paramInfo.IbmDomain.InternalBookmarkItems.Select(ibmItem => ibmItem.Key).ToList();
            }
            else
            {
                ChecksumInfoItem.BookmarkNames = new List <string>();
            }
            ChecksumInfoItem.HasDataTag = paramInfo.IbmDomain.HasDataTag;
            // ChecksumInfoItem.HasDocumentSpecific = paramInfo.IbmDomain.HasDocumentSpecific;

            // render argument
            bool hasRenderX = ((paramInfo.RenderXY & 1) == 1) ? true : false;
            bool hasRenderY = ((paramInfo.RenderXY & 2) == 2) ? true : false;

            ChecksumInfoItem.RenderArgument = ConvertHelper.ConvertDataAgrumentToSXRenderArgument(
                paramInfo.DomainInfo.DomainArgument.Parameters, hasRenderX, hasRenderY);

            //Remove previous parameters of the old Select clause that has built before
            if (paramInfo.DomainInfo.DomainArgument.JParameters == null)
            {
                paramInfo.DomainInfo.DomainArgument.JParameters = new List <JParameter>();
            }
            else
            {
                paramInfo.DomainInfo.DomainArgument.JParameters.RemoveAll(c => dicSelectClauseParams.ContainsValue(c.ParamName));
            }
            //Insert System Argument form current Select clause
            paramInfo.DomainInfo.DomainArgument.JParameters.InsertRange(0, paramInfo.JParameters);
            //Reindex the JParams
            for (int i = 0; i < paramInfo.DomainInfo.DomainArgument.JParameters.Count; i++)
            {
                paramInfo.DomainInfo.DomainArgument.JParameters[i].Index = i + JAVA_LIST_BASE_INDEX;
            }
            ChecksumInfoItem.JRenderArgument = ConvertHelper.ConvertDataAgrumentToSXJRenderArgument(
                paramInfo.DomainInfo.DomainArgument.JParameters, paramInfo.DomainInfo.DomainArgument.RenderArgumentX,
                paramInfo.DomainInfo.DomainArgument.RenderArgumentY);
            ChecksumInfoItem.SystemParameter = paramInfo.SysParameter;
        }
Example #11
0
        /// <summary>
        /// extract all field in UDF tag
        /// </summary>
        /// <param name="bizName"></param>
        /// <param name="dataTagFields"></param>
        /// <param name="dataTagOthers"></param>
        /// <returns></returns>
        private InternalBookmarkItem AddUdfFields(string bizName, ref GenOsqlParamInfo paramInfo)
        {
            string               bookmarkKey = DateTime.Now.ToString(BaseProntoMarkup.BookmarkKeyFormat);
            DSTreeView           item        = paramInfo.DomainInfo.GetField(bizName);
            InternalBookmarkItem bm          = new InternalBookmarkItem(bookmarkKey, item.Text, item.TechName,
                                                                        item.Type.ToString(), item.TableIndex, item.Relation, 1);

            bm.UniqueName = item.UniqueName;
            bm.DataType   = item.DataType;
            bm.Type       = XsltType.Select;
            paramInfo.AddDataTags(bm, true);

            return(bm);
        }
Example #12
0
        public override void GenOsql(DomainInfo domain, InternalBookmark ibm, int domainIndex)
        {
            GenOsqlParamInfo paramInfo = new GenOsqlParamInfo();

            paramInfo.DomainInfo    = domain;
            paramInfo.IbmDomain     = ibm.GetInternalBookmarkDomain(domain.DSDomainData.Name);
            paramInfo.IndexOfDomain = domainIndex;
            GenOsql(ref paramInfo);

            paramInfo.OsqlXmlItem.DatabaseType = 2;
            OsqlXmlItem = paramInfo.OsqlXmlItem;

            UpdateChecksumInfo(ref paramInfo, OracleQueryConstants.DicSelectClauseParamName, PdxDbTypes.ipx_oracle);
        }
Example #13
0
        private void GenSelectClauseForField(InternalBookmarkItem bmItem, ref GenOsqlParamInfo paramInfo)
        {
            string     itemName = BaseMarkupUtilities.GetOriginalBizName(bmItem.Key, bmItem.BizName);
            DSTreeView item     = paramInfo.DomainInfo.GetField(itemName);
            DSIconType type     = (DSIconType)Enum.Parse(typeof(DSIconType), bmItem.ItemType);

            double     i         = Math.Log((double)bmItem.TableIndex, (double)2);
            DSOnClause table     = paramInfo.DomainInfo.DSDomainData.OnClauses.Items[bmItem.TableIndex];
            string     tableName = table.Alias;

            paramInfo.PutSelectedTable(tableName, false);
            paramInfo.SelectedTableIndexes.Add(item.TableIndex);

            UpdateSelectedColumns(ref paramInfo, tableName, itemName);
            InternalBookmarkItem existedItem = paramInfo.DataTagFields.FirstOrDefault(a => a.TableIndex == item.TableIndex && a.DSIconType == DSIconType.Field);
            bool isImageTrunc = bmItem.IsTruncImage();

            if (isImageTrunc && existedItem != null && existedItem.BizName == bmItem.BizName && !paramInfo.TablesHasField.Contains(item.TableIndex))
            { // this table has only image that is chunked then we need to add one default column
                GenSelectClauseItem(DSIconType.Field, item.TechName,
                                    string.Empty, Guid.NewGuid().ToString(), false, true, ref paramInfo);
                paramInfo.TablesHasField.Add(item.TableIndex);
                paramInfo.HasImage = true;
            }
            GenSelectClauseItem(type, bmItem.TechName, item.JavaClause, itemName, bmItem.IsTruncImage(), true, ref paramInfo);

            if (!string.IsNullOrEmpty(item.RenderXYOrder))
            {
                List <string> renderParam = item.RenderXYOrder.Split(';').ToList <string>();
                for (int j = 0; j < renderParam.Count; j++)
                {
                    AddItemToListJParameters((renderParam[j] == "1") ? FrameworkConstants.RenderArgumentX : FrameworkConstants.RenderArgumentY,
                                             ref paramInfo, OracleQueryConstants.DicSelectClauseParamName);
                }
            }

            #region Build Extra field
            if (existedItem == null && !string.IsNullOrEmpty(item.OrginalField) && !paramInfo.TablesHasField.Contains(item.TableIndex))
            {
                GenSelectClauseItem(DSIconType.Field, item.OrginalField, string.Empty, Guid.NewGuid().ToString(), false, true, ref paramInfo);
                paramInfo.TablesHasField.Add(item.TableIndex);
                return;
            }
            #endregion
        }
Example #14
0
        private bool ProcessSelectTag(InternalBookmarkItem ibmItem, DSIconType dataTagType, string itemName,
                                      ref GenOsqlParamInfo paramInfo, ref Dictionary <string, bool> dataTagChecker)
        {
            if ((ibmItem.TableIndex >= 0 && dataTagType != DSIconType.USC) ||
                (dataTagType == DSIconType.SystemInfo) || (dataTagType == DSIconType.Condition) || (dataTagType == DSIconType.RenderXY))
            {
                if (dataTagType == DSIconType.SystemInfo || (dataTagType == DSIconType.Condition) || (dataTagType == DSIconType.RenderXY))
                {
                    ibmItem.TableIndex = Math.Max(0, ibmItem.TableIndex);
                }
                dataTagChecker.Add(itemName, true);
                bool isUdf = dataTagType == DSIconType.UDF || dataTagType == DSIconType.Condition;
                paramInfo.AddDataTags(ibmItem, isUdf);
                return(true);
            }

            return(false);
        }
Example #15
0
        /// <summary>
        /// using for merge all osql paths into one to post processing get data
        /// </summary>
        /// <param name="paramInfo"></param>
        private void MergeOsqlPaths(ref GenOsqlParamInfo paramInfo)
        {
            System.Text.StringBuilder osqlDeclareClause = new System.Text.StringBuilder();
            System.Text.StringBuilder osqlSetClause     = new System.Text.StringBuilder();
            System.Text.StringBuilder osqlSelectClause  = new System.Text.StringBuilder();

            System.Text.StringBuilder jsqlDeclareClause = new System.Text.StringBuilder();
            System.Text.StringBuilder jsqlSetClause     = new System.Text.StringBuilder();
            System.Text.StringBuilder jsqlSelectClause  = new System.Text.StringBuilder();

            osqlSelectClause.Append("Select ");
            jsqlSelectClause.Append("Select ");
            if (paramInfo.OsqlXmlItem.Paths != null)
            {
                int index = 1;
                foreach (OsqlXmlItemPath path in paramInfo.OsqlXmlItem.Paths)
                {
                    string osql    = path.Osql;
                    string jsql    = path.Osql;
                    string variant = string.Format("@pdw_xml_var{0}", index);

                    osqlDeclareClause.AppendLine(string.Format("DECLARE {0} XML;", variant));
                    osqlSetClause.AppendLine(string.Format("SET {0} = ({1});", variant, osql));
                    osqlSelectClause.Append(string.Format("{0},", variant));

                    jsqlDeclareClause.AppendLine(string.Format("DECLARE {0} XML;", variant));
                    jsqlSetClause.AppendLine(string.Format("SET {0} = ({1});", variant, jsql));
                    jsqlSelectClause.Append(string.Format("{0},", variant));
                    index++;
                }

                if (osqlSelectClause.Length > 0)
                {
                    osqlSelectClause = osqlSelectClause.Remove(osqlSelectClause.Length - 1, 1);
                }
                if (jsqlSelectClause.Length > 0)
                {
                    jsqlSelectClause = jsqlSelectClause.Remove(jsqlSelectClause.Length - 1, 1);
                }
                paramInfo.OsqlXmlItem.Osql = osqlDeclareClause.ToString() + osqlSetClause.ToString() + osqlSelectClause.ToString();
                paramInfo.OsqlXmlItem.Jsql = jsqlDeclareClause.ToString() + jsqlSetClause.ToString() + jsqlSelectClause.ToString();
            }
        }
Example #16
0
        private int GetTableIndexForUSC(InternalBookmarkItem ibmItem, ref GenOsqlParamInfo paramInfo)
        {
            if (paramInfo.UscItems == null || paramInfo.UscItems.Count <= 0)
            {
                return(-1);
            }
            string  itemName = BaseMarkupUtilities.GetOriginalBizName(ibmItem.Key, ibmItem.BizName);
            USCItem item     = paramInfo.UscItems[itemName];
            int     maxIndex = -1;

            if (item.Fields.Count > 0)
            {
                foreach (USCItem subField in item.Fields)
                {
                    if (paramInfo.DomainInfo.Fields.Keys.Contains(subField.BusinessName))
                    {
                        if (maxIndex < paramInfo.DomainInfo.Fields[subField.BusinessName].TableIndex)
                        {
                            maxIndex         = paramInfo.DomainInfo.Fields[subField.BusinessName].TableIndex;
                            item.BaseOnField = string.IsNullOrWhiteSpace(paramInfo.DomainInfo.Fields[subField.BusinessName].OrginalField) ?
                                               paramInfo.DomainInfo.Fields[subField.BusinessName].Text : paramInfo.DomainInfo.Fields[subField.BusinessName].OrginalField;
                        }
                    }
                }
            }
            ibmItem.TableIndex = maxIndex;
            item.TableIndex    = maxIndex;

            //Update to Relation
            DSOnClause table     = paramInfo.DomainInfo.DSDomainData.OnClauses.Items[maxIndex];
            string     tableName = table.Alias;

            if (!paramInfo.DomainInfo.Relations.MapInfos.ContainsKey(itemName))
            {
                paramInfo.DomainInfo.Relations.MapInfos.Add(itemName, new Mapping(itemName, tableName, itemName));
            }
            else
            {
                paramInfo.DomainInfo.Relations.MapInfos[itemName].TableName = tableName;
            }

            return(maxIndex);
        }
Example #17
0
        /// <summary>
        /// get list of data tag fields, data tag others and renderxy
        /// </summary>
        /// <param name="paramInfo"></param>
        protected void AnalyzeDataTag(ref GenOsqlParamInfo paramInfo)
        {
            paramInfo.RenderXY = 0;
            paramInfo.UpdateUSCItemsDictionary();

            int itemIndex = 0;
            Dictionary <string, bool> dataTagChecker = new Dictionary <string, bool>();

            while (itemIndex < paramInfo.IbmDomain.InternalBookmarkItems.Count)
            {
                InternalBookmarkItem ibmItem = paramInfo.IbmDomain.InternalBookmarkItems[itemIndex];
                DSIconType           type    = ibmItem.DSIconType;
                string     itemName          = BaseMarkupUtilities.GetOriginalBizName(ibmItem.Key, ibmItem.BizName);
                DSTreeView dsObject          = paramInfo.DomainInfo.GetField(itemName);

                if (dsObject != null)
                {
                    paramInfo.RenderXY = paramInfo.RenderXY | CheckRenderXY(dsObject.RenderXYOrder);
                }
                else
                {
                    paramInfo.RenderXY = paramInfo.RenderXY | CheckRenderXY("0");
                }

                itemIndex++;
                if (ProcessEndForeachIfTag(ref paramInfo, ibmItem.Key, itemName, dataTagChecker))
                {
                    continue;
                }

                if (ProcessStartForeachTag(ibmItem.Key, ibmItem.BizName, ref paramInfo, ref dataTagChecker))
                {
                    continue;
                }

                if (ProcessUSCTag(ibmItem, type, itemName, ref paramInfo, ref dataTagChecker))
                {
                    continue;
                }

                ProcessSelectTag(ibmItem, type, itemName, ref paramInfo, ref dataTagChecker);
            }
        }
Example #18
0
        private void GenOsql(ref GenOsqlParamInfo paramInfo)
        {
            paramInfo.CheckIsNeedInKeyword();

            // gen select clause
            GenSelectClause(ref paramInfo);

            // gen from clause
            // GenFromClause(ref paramInfo); // ngocbv: move to the end of GenSelectClause

            // gen where clause
            // GenWhereClause(ref paramInfo); // ngocbv: move to the end of GenSelectClause

            // merge select + from + where clause
            MergeSelectFormWhereClause(ref paramInfo, OracleQueryConstants.DicSelectClauseParamName);

            // gen for xml clause
            GenForXmlClause(ref paramInfo);
        }
Example #19
0
        protected void MergeSelectFormWhereClause(ref GenOsqlParamInfo paramInfo, Dictionary <string, string> selectClauseParams)
        {
            AddItemToListJParameters(FrameworkConstants.PdwWatermark, ref paramInfo, selectClauseParams, true);

            for (int itemIndex = 0; itemIndex < paramInfo.OsqlStringBuilders.Count; itemIndex++)
            {
                if (!string.IsNullOrWhiteSpace(paramInfo.FromClauses[itemIndex]))
                {
                    paramInfo.OsqlStringBuilders[itemIndex].AppendLine(Sql08QueryConstants.FromClause);
                    paramInfo.OsqlStringBuilders[itemIndex].AppendLine(paramInfo.FromClauses[itemIndex]);
                }

                if (!string.IsNullOrWhiteSpace(paramInfo.WhereClauses[itemIndex]))
                {
                    paramInfo.OsqlStringBuilders[itemIndex].AppendLine(Sql08QueryConstants.WhereClause);
                    paramInfo.OsqlStringBuilders[itemIndex].Osql.AppendLine(paramInfo.WhereClauses[itemIndex]);
                    paramInfo.OsqlStringBuilders[itemIndex].JOsql.AppendLine(paramInfo.JWhereClauses[itemIndex]);
                }
            }
        }
Example #20
0
        private void GenSelectClause(ref GenOsqlParamInfo paramInfo)
        {
            if (paramInfo == null)
            {
                paramInfo = new GenOsqlParamInfo();
            }
            if (paramInfo.DomainInfo == null || paramInfo.IbmDomain == null)
            {
                paramInfo.OsqlXmlItem = new OsqlXmlItem();
                return;
            }

            paramInfo.RenderXY       = 0;
            paramInfo.DSRelationRow  = null;
            paramInfo.JParameters    = new List <JParameter>();
            paramInfo.TablesHasField = new List <int>();

            AnalyzeDataTag(ref paramInfo);

            GenSelectClauseForFields(ref paramInfo);

            UpdateRelationInfo(ref paramInfo);
        }
Example #21
0
        protected void AddItemToSystemParams(string techName, ref GenOsqlParamInfo paramInfo)
        {
            switch (techName)
            {
            case ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.TemplateName:
                paramInfo.SysParameter.HasTemplateName = true;
                break;

            case ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.TemplateVersion:
                paramInfo.SysParameter.HasTemplateVersion = true;
                break;

            case ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.TemplateID:
                paramInfo.SysParameter.HasTemplateId = true;
                break;

            case ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.UserId:
                paramInfo.SysParameter.HasUserId = true;
                break;

            case ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.ComputerName:
                paramInfo.SysParameter.HasComputerName = true;
                break;

            case ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.GeneratedTime:
                paramInfo.SysParameter.HasGeneratedTime = true;
                break;

            case ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.RenderRequestID:
                paramInfo.SysParameter.HasRenderRequestID = true;
                break;

            default:
                break;
            }
        }
Example #22
0
 protected void UpdateRelationInfo(ref GenOsqlParamInfo paramInfo)
 {
     paramInfo.PutRootSelectedTable(paramInfo.DomainInfo.DSDomainData.Name);
     paramInfo.IbmDomain.SelectedTables = paramInfo.SelectedTables;
     paramInfo.IbmDomain.Relations      = paramInfo.DomainInfo.Relations;
 }
Example #23
0
        /// <summary>
        /// separate osql to multi paths
        /// </summary>
        /// <param name="fullItems"></param>
        /// <param name="dsDomain"></param>
        /// <returns></returns>
        protected List <List <InternalBookmarkItem> > GetPaths(ref GenOsqlParamInfo paramInfo,
                                                               List <InternalBookmarkItem> fullItems, DSDomain dsDomain)
        {
            List <List <InternalBookmarkItem> > paths = new List <List <InternalBookmarkItem> >();

            #region calculate used table indexes
            Dictionary <int, List <InternalBookmarkItem> > usedTableIndexes = new Dictionary <int, List <InternalBookmarkItem> >();
            List <int> sortedTableIndexes = new List <int>();
            foreach (InternalBookmarkItem ibmItem in fullItems)
            {
                if (!usedTableIndexes.ContainsKey(ibmItem.TableIndex))
                {
                    usedTableIndexes.Add(ibmItem.TableIndex, new List <InternalBookmarkItem>());
                    sortedTableIndexes.Add(ibmItem.TableIndex);
                }

                usedTableIndexes[ibmItem.TableIndex].Add(ibmItem);
            }
            if (!usedTableIndexes.ContainsKey(0))
            {
                usedTableIndexes.Add(0, new List <InternalBookmarkItem>());
                sortedTableIndexes.Add(0);
            }
            sortedTableIndexes = sortedTableIndexes.OrderBy(c => c).ToList();
            #endregion

            #region get paths
            string whereClauseName                    = "WhereClause";
            Dictionary <int, bool> checker            = new Dictionary <int, bool>();
            List <DSRelationRow>   dsRelationRows     = dsDomain.TableRelations.Rows.Items;
            DSRelationRow          dsWhereRelationRow = dsRelationRows.FirstOrDefault(
                c => whereClauseName.Equals(c.Name, StringComparison.OrdinalIgnoreCase));
            string whereRelations = BitHelper.ToBinaryFormat(dsWhereRelationRow.Data, true);
            whereRelations = BaseMarkupUtilities.ReverseString(whereRelations);
            foreach (DSRelationRow dsRelationRow in dsRelationRows)
            {
                if (whereClauseName.Equals(dsRelationRow.Name, StringComparison.OrdinalIgnoreCase))
                {
                    paramInfo.DSWhereClauseRelationRow = dsRelationRow;
                    continue;
                }

                List <InternalBookmarkItem> path = new List <InternalBookmarkItem>();
                string relations = BitHelper.ToBinaryFormat(dsRelationRow.Data, true);
                relations = BaseMarkupUtilities.ReverseString(relations);
                bool hasTable = false;
                foreach (int tableIndex in sortedTableIndexes)
                {
                    int index = tableIndex;
                    if (relations.Length > index && relations[index] == '1')
                    {
                        path.AddRange(usedTableIndexes[tableIndex]);
                        if (!checker.ContainsKey(tableIndex))
                        {
                            hasTable = true;
                            checker.Add(tableIndex, true);
                        }
                    }
                }

                if (hasTable)
                {
                    int parentTableIndex = GetParentTableInexInJoinClause(dsWhereRelationRow, dsRelationRow);
                    if (!usedTableIndexes.ContainsKey(parentTableIndex))
                    {
                        usedTableIndexes.Add(parentTableIndex, new List <InternalBookmarkItem>());
                    }
                    InternalBookmarkItem ibmItem = usedTableIndexes[parentTableIndex].FirstOrDefault(
                        c => c.TableIndex == parentTableIndex && c.DSIconType == DSIconType.Field);
                    if (ibmItem == null)
                    {
                        DSTreeView firstField = paramInfo.DomainInfo.Fields.Values.FirstOrDefault(
                            c => c.TableIndex == parentTableIndex && c.Type == DSIconType.Field);
                        if (firstField != null)
                        {
                            ibmItem = new InternalBookmarkItem()
                            {
                                BizName    = firstField.Text,
                                ItemType   = "Field",
                                JavaName   = firstField.JavaClause,
                                Key        = Guid.NewGuid().ToString(),
                                OrderNo    = 1,
                                TableIndex = parentTableIndex,
                                TechName   = firstField.TechName,
                                Type       = XsltType.Select
                            };

                            usedTableIndexes[parentTableIndex].Insert(0, ibmItem);
                            path.Insert(0, ibmItem);
                        }
                    }

                    paths.Add(path);
                }
            }
            #endregion

            return(paths);
        }
Example #24
0
        protected void GenWhereClause(ref GenOsqlParamInfo paramInfo)
        {
            if (paramInfo.WhereClauses == null)
            {
                paramInfo.WhereClauses = new List <string>();
            }
            if (paramInfo.JWhereClauses == null)
            {
                paramInfo.JWhereClauses = new List <string>();
            }
            if (paramInfo.DomainInfo.DSDomainData.WhereClause.DSJoins == null ||
                paramInfo.DomainInfo.DSDomainData.WhereClause.DSJoins.Count == 0)
            {
                paramInfo.WhereClauses.Add(paramInfo.DomainInfo.DSDomainData.WhereClause.Clause);
                paramInfo.JWhereClauses.Add(paramInfo.DomainInfo.DSDomainData.WhereClause.JavaClause);
            }
            else
            {
                paramInfo.DSWhereClauseRelationRow = null;
                string whereClause  = string.Empty;
                string jWhereClause = string.Empty;
                string logicType    = string.Empty;
                bool   hasRootJoin  = false;
                foreach (DSJoin dsJoin in paramInfo.DomainInfo.DSDomainData.WhereClause.DSJoins)
                {
                    string usedTables = BitHelper.ToBinaryFormat(dsJoin.Tables.Data, true);
                    usedTables = BaseMarkupUtilities.ReverseString(usedTables);
                    bool isUseDSJoin = true;

                    #region check use or no
                    for (int index = 0; index < usedTables.Length; index++)
                    {
                        if (usedTables[index] == '1')
                        {
                            if (!paramInfo.SelectedTableIndexes.Contains(index))
                            {
                                isUseDSJoin = false;
                                break;
                            }
                        }
                    }
                    if (!isUseDSJoin)
                    {
                        continue;
                    }
                    #endregion

                    #region build where clause
                    if ("and".Equals(dsJoin.LogicType, StringComparison.OrdinalIgnoreCase) ||
                        "or".Equals(dsJoin.LogicType, StringComparison.OrdinalIgnoreCase))
                    {
                        if (!hasRootJoin)
                        {
                            whereClause  = dsJoin.LogicType + " " + dsJoin.Condition + " " + whereClause;
                            jWhereClause = dsJoin.LogicType + " " + dsJoin.JavaCondition + " " + jWhereClause;
                        }
                        else
                        {
                            whereClause  = whereClause + " " + dsJoin.LogicType + " " + dsJoin.Condition;
                            jWhereClause = jWhereClause + " " + dsJoin.LogicType + " " + dsJoin.JavaCondition;
                        }
                        logicType = dsJoin.LogicType;
                    }
                    else
                    {
                        whereClause  = dsJoin.Condition + " " + whereClause;
                        jWhereClause = dsJoin.JavaCondition + " " + jWhereClause;
                        hasRootJoin  = true;
                    }
                    #endregion

                    #region mark used for gen from clause
                    if (paramInfo.DSWhereClauseRelationRow == null)
                    {
                        paramInfo.DSWhereClauseRelationRow = dsJoin.Tables.Clone();
                    }
                    else
                    {
                        paramInfo.DSWhereClauseRelationRow.OrRow(dsJoin.Tables);
                    }
                    #endregion
                }

                if (!hasRootJoin && !string.IsNullOrWhiteSpace(logicType))
                {
                    whereClause  = whereClause.Substring(logicType.Length);
                    jWhereClause = jWhereClause.Substring(logicType.Length);
                }
                paramInfo.WhereClauses.Add(whereClause);
                paramInfo.JWhereClauses.Add(jWhereClause);
                if (paramInfo.DSWhereClauseRelationRow == null)
                {
                    DSRelationRow templateRow = paramInfo.DomainInfo.DSDomainData.WhereClause.DSJoins[0].Tables;
                    paramInfo.DSWhereClauseRelationRow = templateRow.Clone();
                    for (int index = 0; index < paramInfo.DSWhereClauseRelationRow.Data.Count; index++)
                    {
                        paramInfo.DSWhereClauseRelationRow.Data[index] = paramInfo.DSWhereClauseRelationRow.Data[index] & 0;
                    }
                    foreach (int tableIndex in paramInfo.SelectedTableIndexes)
                    {
                        int index = (tableIndex / 64) + (tableIndex % 64 != 0 ? 1 : 0);
                        index--;
                        if (index >= 0 && index < paramInfo.DSWhereClauseRelationRow.Data.Count)
                        {
                            int position = tableIndex % 64;
                            paramInfo.DSWhereClauseRelationRow.Data[index] =
                                paramInfo.DSWhereClauseRelationRow.TurnOnBit(paramInfo.DSWhereClauseRelationRow.Data[index], position);
                        }
                    }
                }
            }
        }
Example #25
0
        private void GenSelectClauseForFields(ref GenOsqlParamInfo paramInfo)
        {
            paramInfo.HasImage = false;
            paramInfo.HasField = false;
            if (paramInfo.DataTagFields != null && paramInfo.DataTagFields.Count > 0)
            {
                paramInfo.OrderDataTagFieldsByTableIndex();
                List <List <InternalBookmarkItem> > paths = GetPaths(ref paramInfo, paramInfo.DataTagFields, paramInfo.DomainInfo.DSDomainData);
                foreach (List <InternalBookmarkItem> path in paths)
                {
                    if (path.Count <= 0)
                    {
                        continue;
                    }

                    paramInfo.OsqlStringBuilder = new OsqlStringBuilder();
                    paramInfo.OsqlStringBuilder.AppendLine(OracleQueryConstants.SelectClause);
                    paramInfo.DSRelationRow = null;
                    // add paramater for watermark at start of query for osql & jsql
                    paramInfo.OsqlStringBuilder.Osql.AppendLine(string.Format(OracleQueryConstants.SQLSystemInfo,
                                                                              ProntoDoc.Framework.CoreObject.FrameworkConstants.PdwWatermark,
                                                                              ProntoDoc.Framework.CoreObject.FrameworkConstants.PdwWatermark) + OracleQueryConstants.SQLComma);
                    paramInfo.OsqlStringBuilder.JOsql.AppendLine(string.Format(OracleQueryConstants.JSQLSystemInfo,
                                                                               ProntoDoc.Framework.CoreObject.FrameworkConstants.PdwWatermark) + OracleQueryConstants.SQLComma);
                    paramInfo.OsqlStringBuilder.SelectedColumns = string.Empty;
                    paramInfo.CurrentTableName = string.Empty;
                    paramInfo.PutSelectedTable(string.Empty, true);
                    paramInfo.SelectedTableIndexes = new List <int>();
                    foreach (InternalBookmarkItem item in path)
                    {
                        DSIconType type = item.DSIconType;
                        if (type == DSIconType.Field)
                        {
                            paramInfo.HasField = true;
                        }

                        if (type == DSIconType.USC)
                        {
                            string sqlUSC      = GenSelectClauseForUSC(item, ref paramInfo);
                            string itemBizName = BaseMarkupUtilities.GetOriginalBizName(item.Key, item.BizName);
                            GenSelectClauseItem(type, sqlUSC, string.Empty, itemBizName, false, true, ref paramInfo);

                            string tableName = paramInfo.SelectedTables[0][0];
                            UpdateSelectedColumns(ref paramInfo, tableName, itemBizName);
                        }
                        else
                        {
                            if (item.Relation != null)
                            {
                                if (paramInfo.DSRelationRow == null)
                                {
                                    paramInfo.DSRelationRow = item.Relation.Clone();
                                }
                                else
                                {
                                    paramInfo.DSRelationRow.OrRow(item.Relation);
                                }
                            }

                            GenSelectClauseForField(item, ref paramInfo);
                        }

                        if (item != null && item.DataType != null &&
                            (item.DataType.Name == SQLTypeName.BINARY || item.DataType.Name == SQLTypeName.VARBINARY))
                        {
                            paramInfo.HasImage = true;
                        }
                    }
                    UpdateOsqlXmlItem(ref paramInfo);
                }
            }
        }
Example #26
0
        private void GenSelectClauseItem(DSIconType type, string techName, string javaName, string name, bool isImage,
                                         bool isField, ref GenOsqlParamInfo paramInfo)
        {
            name = NormalizeBizName(name);
            switch (type)
            {
            case DSIconType.UDF:
            {
                paramInfo.OsqlStringBuilder.Osql.AppendLine(string.Format(OracleQueryConstants.SQLUDFFormat, techName, name) + OracleQueryConstants.SQLComma);
                paramInfo.OsqlStringBuilder.JOsql.AppendLine(string.Format(OracleQueryConstants.SQLUDFFormat, javaName, name) + OracleQueryConstants.SQLComma);
            }
            break;

            case DSIconType.Field:
            {
                string select = string.Format(OracleQueryConstants.SQLFieldFormat,
                                              isImage ? string.Format(OracleQueryConstants.UdfTruncImage, techName) : techName, name)
                                + OracleQueryConstants.SQLComma;
                paramInfo.OsqlStringBuilder.Osql.AppendLine(select);
                select = string.Format(OracleQueryConstants.SQLFieldFormat,
                                       isImage ? string.Format(OracleQueryConstants.UdfTruncImage, javaName) : javaName, name)
                         + OracleQueryConstants.SQLComma;
                paramInfo.OsqlStringBuilder.JOsql.AppendLine(select);
            }
            break;

            case DSIconType.Condition:
            case DSIconType.USC:
                if (!string.IsNullOrEmpty(techName))
                {
                    string select = string.Format(OracleQueryConstants.SQLConditionFormat, techName, name) + OracleQueryConstants.SQLComma;
                    paramInfo.OsqlStringBuilder.AppendLine(select);
                }
                break;

            case DSIconType.SystemInfo:
            case DSIconType.RenderXY:
                if (string.Compare(techName, ProntoDoc.Framework.CoreObject.FrameworkConstants.PluginSystemInfo.GeneratedTime) == 0)
                {
                    string select = string.Format(OracleQueryConstants.SQLGeneratedTime, name) + OracleQueryConstants.SQLComma;
                    paramInfo.OsqlStringBuilder.AppendLine(select);
                }
                else
                {
                    AddItemToListJParameters(techName, ref paramInfo, OracleQueryConstants.DicSelectClauseParamName);
                    string norTechName = techName.Replace(" ", "");
                    string select;
                    string jSelect;
                    if (!paramInfo.IsNeedInKeyword)
                    {
                        select  = string.Format(OracleQueryConstants.SQLSystemInfo, norTechName, name) + OracleQueryConstants.SQLComma;
                        jSelect = string.Format(OracleQueryConstants.JSQLSystemInfo, name) + OracleQueryConstants.SQLComma;
                    }
                    else
                    {
                        select  = string.Format(OracleQueryConstants.SQLSystemInfoWithIn, norTechName, name) + OracleQueryConstants.SQLComma;
                        jSelect = string.Format(OracleQueryConstants.JSQLSystemInfoWithIn, name) + OracleQueryConstants.SQLComma;
                    }

                    paramInfo.OsqlStringBuilder.Osql.AppendLine(select);
                    paramInfo.OsqlStringBuilder.JOsql.AppendLine(jSelect);
                }
                AddItemToSystemParams(techName, ref paramInfo);

                break;
            }
        }