Пример #1
0
        private void GenerateCellRelations(int cellNumber)
        {
            // Generate the view cell relation
            List <ViewCellSlot> projectedSlots = new List <ViewCellSlot>();

            // construct a ViewCellSlot for each slot
            Debug.Assert(CQuery.NumProjectedSlots == SQuery.NumProjectedSlots,
                         "Cell queries in cell have a different number of slots");
            for (int i = 0; i < CQuery.NumProjectedSlots; i++)
            {
                ProjectedSlot cSlot = CQuery.ProjectedSlotAt(i);
                ProjectedSlot sSlot = SQuery.ProjectedSlotAt(i);
                Debug.Assert(cSlot != null, "Has cell query been normalized?");
                Debug.Assert(sSlot != null, "Has cell query been normalized?");

                // These slots better be MemberProjectedSlots. We do not have constants etc at this point.
                Debug.Assert(cSlot is MemberProjectedSlot, "cSlot is expected to be MemberProjectedSlot");
                Debug.Assert(sSlot is MemberProjectedSlot, "sSlot is expected to be MemberProjectedSlot");

                MemberProjectedSlot cJoinSlot = (MemberProjectedSlot)cSlot;
                MemberProjectedSlot sJoinSlot = (MemberProjectedSlot)sSlot;

                ViewCellSlot slot = new ViewCellSlot(i, cJoinSlot, sJoinSlot);
                projectedSlots.Add(slot);
            }
            m_viewCellRelation = new ViewCellRelation(this, projectedSlots, cellNumber);
        }
Пример #2
0
        // effects: Given a cell, determines the paths to which the paths in
        // columns map to in the C-space and returns them. If some columns
        // are not projected in the cell, or if the corresponding properties
        // are not mapped into C-space, returns null
        internal Set <EdmProperty> GetCSlotsForTableColumns(IEnumerable <MemberPath> columns)
        {
            List <int> fieldNums = SQuery.GetProjectedPositions(columns);

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

            // The fields are mapped -- see if they are mapped on the
            // cSide and they correspond to the primary key of the
            // entity set

            Set <EdmProperty> cSideMembers = new Set <EdmProperty>();

            foreach (int fieldNum in fieldNums)
            {
                ProjectedSlot       projectedSlot = CQuery.ProjectedSlotAt(fieldNum);
                MemberProjectedSlot slot          = projectedSlot as MemberProjectedSlot;
                if (slot != null)
                {
                    // We can call LastMember since columns do not map to
                    // extents or memberEnds. Can cast to EdmProperty since it
                    // cannot be an association end
                    cSideMembers.Add((EdmProperty)slot.MemberPath.LeafEdmMember);
                }
                else
                {
                    return(null);
                }
            }
            return(cSideMembers);
        }
Пример #3
0
        private CQuery buildQuery()
        {
            var query = new CQuery
            {
                isStoreProcedure = false,
                name             = QueryName,
                Text             = QueryText
            };

            var match = new Regex(@"(?<columnfilter>(?<column>[\[]?\w+[\]]?)\s*=\s*(?<idvar>\{\{(?<id>\w+)\}\}))").Match(query.Text);

            while (null != match && match.Success)
            {
                var column    = match.Groups["column"].Value;
                var paramName = match.Groups["id"].Value;
                if (!string.IsNullOrEmpty(column) && !string.IsNullOrEmpty(paramName))
                {
                    var col = (from t in SelectedDataset.Table
                               from c in t.Column
                               where c.name.ToLower() == column.ToLower()
                               select c).First();
                    query.Parameter.Add(new CParameter
                    {
                        name         = paramName,
                        type         = col.DbType,
                        defaultValue = ""
                    });
                }

                match = match.NextMatch();
            }

            return(query);
        }
Пример #4
0
        private void OnDataCollectWorker_RemoveDuplicateServers()
        {
            List <CService> servers = new List <CService> {
            };

            servers.AddRange(DiscoveredServers.OfType <CService>());

            servers = servers.OrderBy(o => o.Name).ToList();

            string lastServerName = "";
            int    lastServerType = -1;

            for (int i = 0; i < servers.Count(); i++)
            {
                //Log.Write(servers[i].Name);
                if ((lastServerName.ToLower() == servers[i].Name.ToLower()) && (lastServerType == servers[i].Type))
                {
                    servers.RemoveAt(i); // same server name with same server type
                }
                else
                {
                    CQuery q = servers[i].Session.Queries[0];
                    for (int j = 0; j < q.Result.Count; j++)
                    {
                        CDiscoveredConfig sc = q.Result[j];
                        for (int k = 0; k < servers.Count(); k++)
                        {
                            // server already exists as another server's child
                            if (servers[k].Name.ToLower() == sc.Name.ToLower() && (servers[k].Id != servers[i].Id))
                            {
                                servers.RemoveAt(k);
                            }
                        }
                    }
                }

                if (i < servers.Count)
                {
                    lastServerName = servers[i].Name;
                    lastServerType = servers[i].Type;
                }
            }

            DiscoveredServers.Clear();
            DiscoveredServers.AddRange(servers);
        }
Пример #5
0
        private void GenerateCellRelations(int cellNumber)
        {
            // Generate the view cell relation
            var projectedSlots = new List <ViewCellSlot>();

            // construct a ViewCellSlot for each slot
            Debug.Assert(
                CQuery.NumProjectedSlots == SQuery.NumProjectedSlots,
                "Cell queries in cell have a different number of slots");
            for (var i = 0; i < CQuery.NumProjectedSlots; i++)
            {
                var cSlot = CQuery.ProjectedSlotAt(i);
                var sSlot = SQuery.ProjectedSlotAt(i);
                Debug.Assert(cSlot != null, "Has cell query been normalized?");
                Debug.Assert(sSlot != null, "Has cell query been normalized?");

                var cJoinSlot = (MemberProjectedSlot)cSlot;
                var sJoinSlot = (MemberProjectedSlot)sSlot;

                var slot = new ViewCellSlot(i, cJoinSlot, sJoinSlot);
                projectedSlots.Add(slot);
            }
            m_viewCellRelation = new ViewCellRelation(this, projectedSlots, cellNumber);
        }
Пример #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CSuppress"/> class.
 /// </summary>
 /// <param name="parent">The parent.</param>
 /// <param name="path">The path.</param>
 public CSuppress(CQuery parent, string path) : base(parent, path)
 {
     IsSelect = false;
 }
Пример #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CSelect"/> class.
 /// </summary>
 /// <param name="parent">The parent.</param>
 /// <param name="path">The path.</param>
 public CSelect(CQuery parent, string path)
 {
     Parent = parent;
     Path   = path;
 }
Пример #8
0
 internal override void ToFullString(StringBuilder builder)
 {
     CQuery.ToFullString(builder);
     builder.Append(" = ");
     SQuery.ToFullString(builder);
 }
Пример #9
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Конструктор по умолчанию инициализирует объект класса предустановленными значениями
 /// </summary>
 //---------------------------------------------------------------------------------------------------------
 public CubeXDataGrid()
 {
     InitializeComponent();
     SetResourceReference(StyleProperty, typeof(DataGrid));
     FilterQuery = new CQuery();
 }