Пример #1
0
        public static IList <StormResult> ToResults(StormDataSet data,
                                                    SchemaNavigator navigator,
                                                    List <Origin> requests,
                                                    OriginTree fromTree)
        {
            var root        = navigator.GetEntity(data.root);
            var ranges      = data.ObjectRanges;
            var primaryKeys = data.IdentityIndexes;
            var items       = new Dictionary <EntityPath, Dictionary <object, StormResult> >();
            var results     = new List <StormResult>();

            for (int i = 0; i < data.Count(); i++)
            {
                var ctx = new RecCtx()
                {
                    Data        = data,
                    Index       = i,
                    PrimaryKeys = primaryKeys,
                    Ranges      = ranges,
                    Root        = root
                };

                var(pk, r) = CreateResult(fromTree.root, ctx);

                if (!results.Any(x => x.PrimaryKey == pk))
                {
                    results.Add(r);
                }

                r = results.First(x => x.PrimaryKey == pk);
                CreateResultRelations(ctx, requests.Where(x => x.FullPath != fromTree.root.FullPath).ToList(), r);
            }

            return(results);
        }
Пример #2
0
 internal BaseCommand(SchemaNavigator navigator, String from)
 {
     this.navigator  = navigator;
     this.rootEntity = navigator.GetEntity(from).ID;
     this.query      = new Query($"{navigator.GetEntity(from).DBName} as A0");
     commandId       = Helpers.Util.UCode();
     sw = new Stopwatch();
 }
Пример #3
0
        /// <summary></summary>
        public override bool HasMaxLength(DataSet dataSchema, DataRowView rowColumn)
        {
            SchemaNavigator sn = new SchemaNavigator(dataSchema);
            //CHARACTER_MAXIMUM_LENGTH
            bool isNull = rowColumn["CHARACTER_MAXIMUM_LENGTH"] == DBNull.Value;

            return(!isNull);
        }
Пример #4
0
 internal StormConnection(SchemaNavigator navigator, IDbConnection connection, SQLEngine engine)
 {
     isOpen            = false;
     this.navigator    = navigator;
     this.connection   = connection;
     this.engine       = engine;
     this.connectionId = Util.UCode();
 }
Пример #5
0
        internal DeleteCommand(SchemaNavigator navigator, String from) : base(navigator, from)
        {
            this.from = new OriginTree()
            {
                navigator = navigator,
                root      = new Origin()
                {
                    Alias    = "",
                    FullPath = new EntityPath(from, ""),
                    Edge     = null,
                    Entity   = navigator.GetEntity(from),
                    children = new List <Origin>()
                }
            };

            ((BaseCommand)this).CommandLog(LogLevel.Info, "DeleteCommand", $"{{\"Action\":\"Delete\", \"Entity\":\"{from}\"}}");
        }
Пример #6
0
        public override string GetPrimaryKey(DataSet dataSchema, DataRowView rowColumn)
        {
            SchemaNavigator sn        = new SchemaNavigator(dataSchema);
            string          tablename = rowColumn.GetString("TABLE_NAME");
            string          output    = null;

            using (DataView v = sn.ViewIndexes)
            {
//				output = (from u in v where u.TABLE_NAME == tablename select u).FirstOrDefault().GetString("INDEX_NAME");
                foreach (DataRowView row in v)
                {
                    if (row.GetString("TABLE_NAME") == tablename)
                    {
                        output = row.GetString("TABLE_NAME");
                    }
                }
            }
            sn = null;
            return(output);
        }
Пример #7
0
        /// <summary></summary>
//		public override AccessDataTypes GetNativeType(DataSet dataSchema, DataRowView rowColumn)
//		{
//			SchemaNavigator sn = new SchemaNavigator(dataSchema);
//			string typename = rowColumn.GetString("DATA_TYPE");
//			bool hasmax = HasMaxLength(dataSchema,rowColumn);
//			int maxlen = (hasmax) ? GetMaxLength(dataSchema,rowColumn) : -1;
//
//			switch (typename)
//			{
//				case "3": // autoincr,number
//					return AccessDataTypes.Number;
//				case "6": // currency
//					return AccessDataTypes.Currency;
//				case "7": // datetime
//					return AccessDataTypes.DateTime;
//				case "11": // yesno
//					return AccessDataTypes.YesNo;
//				case "130": // Memo,Hyperlink
//					if (hasmax && (maxlen >0) && (maxlen <= 255))
//					{
//						return AccessDataTypes.Text;
//					}
//					return AccessDataTypes.Memo;
//				case "128": // Ole
//					return AccessDataTypes.Ole;
//			}
//
//			string output = null;
//			using (DataView v = sn.ViewDataTypes)
//			{
//				foreach (DataRowView row in v)
//					if (row.GetString("NativeDataType")==typename)
//						output = row.GetString("NativeDataType");
//			}
//			return (AccessDataTypes) Enum.Parse(typeof(AccessDataTypes),output);
//		}
        #endregion

        /// <summary></summary>
        public override TypeCode GetDataType(DataSet dataSchema, DataRowView rowColumn)
        {
            SchemaNavigator sn       = new SchemaNavigator(dataSchema);
            string          typename = rowColumn.GetString("DATA_TYPE");
            string          output   = null;

            using (DataView v = sn.ViewDataTypes)
            {
                foreach (DataRowView row in v)
                {
                    if (row.GetString("NativeDataType") == typename)
                    {
                        output = row.GetString("NativeDataType");
                    }
                }
            }
            if (output == null)
            {
                return(TypeCode.Empty);
            }
            output = output.Replace("System.", "");
            return((TypeCode)Enum.Parse(typeof(TypeCode), output));
        }
Пример #8
0
 public SelectCommand(SchemaNavigator navigator, string from) : base(navigator, from)
 {
 }
Пример #9
0
 internal SetCommand(SchemaNavigator navigator, String from, Object id) : base(navigator, from)
 {
     this.id = id;
     entity  = navigator.GetEntity(this.rootEntity);
     ((BaseCommand)this).CommandLog(LogLevel.Info, "SetCommand", $"{{\"Action\":\"Insert\", \"Entity\":\"{from}\"}}");
 }
Пример #10
0
 internal SetCommand(SchemaNavigator navigator, String from) : base(navigator, from)
 {
     entity = navigator.GetEntity(this.rootEntity);
     ((BaseCommand)this).CommandLog(LogLevel.Info, "SetCommand", $"{{\"Action\":\"Update\", \"Entity\":\"{from}\"}}");
 }
Пример #11
0
 public SQLFromParser(OriginTree fromTree, SchemaNavigator schemaNavigator, Query query) : base(schemaNavigator, query)
 {
     this.fromTree = fromTree;
 }
Пример #12
0
 public GetCommand(SchemaNavigator navigator, String from) : base(navigator, from)
 {
     requests.Add(base.from.root);
 }
Пример #13
0
 public NestedCommand(SchemaNavigator navigator, string from) : base(navigator, from)
 {
 }
Пример #14
0
 public SQLWhereParser(OriginTree fromTree, Filter filter, SchemaNavigator schemaNavigator, Query query) : base(schemaNavigator, query)
 {
     this.fromTree = fromTree;
     this.filter   = filter;
 }
Пример #15
0
 public SQLParser(SchemaNavigator navigator, Query query)
 {
     this.navigator = navigator;
     this.query     = query;
 }
Пример #16
0
 public SQLJoinParser(Origin sourceNode, Origin targetNode, OriginTree fromTree, Filter join, SchemaNavigator schemaNavigator, Query query) : base(fromTree, join, schemaNavigator, query)
 {
     this.sourceNode = sourceNode;
     this.targetNode = targetNode;
 }