示例#1
0
        async static void GetData()
        {
            ISchemaContext ctx = new SchemaDb();
            dynamic contacts2 = new ExpandoObject();
            (contacts2 as IDictionary<string, object>).Add("Usia", 39);
            contacts2.Name = "Asep XX";
            contacts2.Phone = "206-555-0155";
            contacts2.House = new List<dynamic>();
            contacts2.House.Add(new ExpandoObject());
            contacts2.House[0].Address = "Jln. Klumet";
            contacts2.House[0].POBox = "23456";
            contacts2._id = 1;
           

            IDataContext dtx = new InMemoryDb("lake",ctx);

            dtx.InsertData(contacts2, "contacts");
            //dtx.InsertData(contacts2, "contacts");
            var datas = await dtx.GetAllData("contacts");
            //var datas = await dtx.GetDataByStartId(2,1,"contacts");
            foreach (dynamic item in datas)
            {
                Console.WriteLine($"{item.House[0].Address}");
                //Console.WriteLine(SchemaConverter.AreExpandoStructureEquals(item, contacts2));
                //(item as IDictionary<string, object>)["Usia"]= 31;
               
                //dtx.UpdateData(item, "contacts");
            }
        }
示例#2
0
        public async Task<OutputCls> ExportData(long SchemaId,string UserName,string Tipe)
        {
            SetDatabaseName();
            OutputCls output = new OutputCls() { Result = false, Comment = "export data error." };
            try {
                string SchemaName = string.Empty;
                SchemaTypes SchemaType = SchemaTypes.StreamData;
               
                ISchemaContext ctx = new SchemaDb();
                var data = from c in ctx.GetAllData<SchemaEntity>()
                           where c.Id == SchemaId
                           select c;
                foreach (var item in data)
                {
                    SchemaName = item.SchemaName;
                    SchemaType = item.SchemaType;
                }

                IDataContext dtx = null;
                dtx = GetDB(SchemaType);
                string PathToFile = string.Format(string.Format("{0}/{1}/{2}", DownloadPath, UserName, SchemaName));
                if (!Directory.Exists(PathToFile)) Directory.CreateDirectory(PathToFile);
                var temp = await dtx.GetAllData(SchemaName);
                var FileName = string.Empty;
                switch (Tipe)
                {
                    case "csv":
                        string csvstr = SchemaConverter.ExpandoToCsv(temp);
                        FileName = SchemaName + DateTime.Now.ToString("_yyyyMMdd_HHmm") + ".csv";
                        File.WriteAllText(string.Format("{0}/{1}", PathToFile, FileName), csvstr);
                        break;
                    case "json":
                        string jsonstr = JsonConvert.SerializeObject(temp);
                        FileName = SchemaName + DateTime.Now.ToString("_yyyyMMdd_HHmm") + ".json";
                        File.WriteAllText(string.Format("{0}/{1}", PathToFile, FileName), jsonstr);
                        break;
                    case "xml":
                        XElement el = SchemaConverter.ExpandoToXML(temp, SchemaName);
                        FileName = SchemaName + DateTime.Now.ToString("_yyyyMMdd_HHmm") + ".xml";
                        File.WriteAllText(string.Format("{0}/{1}", PathToFile, FileName), el.ToString());
                        break;

                }
                output.Params = new List<dynamic>();
                output.Params.Add(string.Format("/downloads/{0}/{1}/{2}", UserName, SchemaName, FileName));
                output.Result = true;
                output.Comment = "ok";
                return output;
            }
            catch (Exception ex)
            {
                output.Comment = ex.Message;
                return output;
            }
        }
示例#3
0
        public OutputCls DesignSchema(dynamic Entity,List<dynamic> Rows)
        {
            ISchemaContext ctx = new SchemaDb();
            var Fields = new List<IDField>();
            OutputCls res = new OutputCls() { Result = false, Comment = "Schema invalid." };
            foreach(dynamic item in Rows)
            {   
                var Field = new IDField();
                Field.Name = item.field_name;
                Field.IsMandatory = (bool)item.field_mandatory;
                Field.FieldType = FieldTypes.SingleField;
                switch ((string)item.field_type)
                {
                    case "string":
                        Field.NativeType = typeof(string);
                        break;
                    case "integer":
                        Field.NativeType = typeof(Int64);
                        break;
                    case "double":
                        Field.NativeType = typeof(double);
                        break;
                    case "datetime":
                        Field.NativeType = typeof(DateTime);
                        break;
                    case "boolean":
                        Field.NativeType = typeof(bool);
                        break;
                    case "character":
                        Field.NativeType = typeof(char);
                        break;
                    default:
                        Field.NativeType = typeof(string);
                        break;                  
                }
                Field.RegexValidation = item.field_regex;
                Field.Desc = item.field_description;
                Fields.Add(Field);
            }
            string SchemaName = Entity.SchemaName;
            SchemaEntity newEntity = SchemaConverter.DesignToSchema(Fields, SchemaName);
            newEntity.GroupName = Entity.GroupName;
            newEntity.SchemaType = (SchemaTypes)Entity.SchemaType;
            newEntity.Description = Entity.Description;
            newEntity.AccessType = (AccessTypes)Entity.AccessType;
            newEntity.CreatedBy = Entity.UserName;
            newEntity.Id = ctx.GetSequence<SchemaEntity>();
            ctx.InsertData<SchemaEntity>(newEntity);
            res.Result = true;
            res.Comment = "ok";

            //khusus columnar (casandra)
            if ((SchemaTypes)Entity.SchemaType == SchemaTypes.HistoricalData)
            {
                SetDatabaseName();
                var dx = container.Get<ColumnarDb>();
                dx.SetupKeyspaceAndTable(SchemaName, newEntity.Fields);
            }
            return res;
        }
示例#4
0
        static void Main(string[] args)
        {

            ISchemaContext ctx = new SchemaDb();
            dynamic contacts = new System.Dynamic.ExpandoObject();
            (contacts as IDictionary<string, object>).Add("Usia", 40);
            contacts.Name = "Patrick Hines";
            contacts.Phone = "206-555-0144";
            (contacts as IDictionary<string, object>).Add("House", new List<dynamic>());
            contacts.House.Add(new System.Dynamic.ExpandoObject());
            contacts.House[0].Address = "Jln. Klumeten";
            contacts.House[0].POBox = "7658";

            dynamic contacts2 = new ExpandoObject();
            (contacts2 as IDictionary<string, object>).Add("Usia", 39);
            contacts2.Name = "Ellen Adams";
            contacts2.Phone = "206-555-0155";
            contacts2.House = new List<dynamic>();
            contacts2.House.Add(new ExpandoObject());
            contacts2.House[0].Address = "Jln. Klumet";
            contacts2.House[0].POBox = "23456";
           
            Console.WriteLine(SchemaConverter.AreExpandoStructureEquals(contacts, contacts2));
            //GetData();
            //dtx.InsertData<dynamic>(contacts, "contacts");
            SchemaEntity item = SchemaConverter.ExpandoToSchema(contacts, nameof(contacts));
            item.Id = ctx.GetSequence<SchemaEntity>();
            ctx.InsertData<SchemaEntity>(item);
            /*
            var data = ctx.GetAllData<SchemaEntity>();
            foreach(var item in data)
            {
                dynamic obj = SchemaConverter.JsonToExpando(item.JsonStructure);
                if (obj is ExpandoObject)
                {
                    foreach (var property in (IDictionary<String, Object>)obj)
                    {
                        if (property.Value is ExpandoObject)
                        {
                            //do nothing

                        }
                        else if (property.Value is List<dynamic>)
                        {
                            foreach (var element in (List<dynamic>)property.Value)
                            {
                                if (element is ExpandoObject)
                                {
                                    foreach (var pr in (IDictionary<String, Object>)element)
                                    {
                                        Console.WriteLine($"{pr.Key} as {pr.Value.GetType().ToString()} = {pr.Value}");
                                    }
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine($"{property.Key} as {property.Value.GetType().ToString()} = {property.Value}");
                        }

                    }
                }
                
            }*/
            Console.ReadLine();
        }