Example #1
0
        private void AddProperty(
            DataCollectionMetadata tableDef,
            List <Utils.ColumnDescription> columnDescriptions,
            List <string> properties,
            TableColumn tableColumn,
            string csharpTypeName)
        {
            var columnName        = tableColumn.Name;
            var columnNameCS      = Utils.Utils.CSharpifyName(columnName);
            var columnDescription = new Utils.ColumnDescription
            {
                CassandraColumnName = columnName,
                CamelCaseName       = Utils.Utils.CamelCase(columnName),
                CSharpName          = columnNameCS,
                IsPartitionKey      = tableDef.PartitionKeys.Any(k => k.Name == columnName),
                IsClusteringKey     = tableDef.ClusteringKeys.Any(k => k.Item1.Name == columnName),
                CassandraType       = tableColumn.TypeCode.ToString(),
                CSharpType          = csharpTypeName,
                IsFrozen            = this.isFrozen,
            };

            columnDescriptions.Add(columnDescription);
            if (columnDescription.IsPartitionKey)
            {
                properties.Add("        [PartitionKey]");
            }

            if (columnDescription.IsFrozen)
            {
                properties.Add("        [FrozenValue]");
            }

            if (columnDescription.IsClusteringKey)
            {
                properties.Add($"        [ClusteringKey(0, Name = \"{columnName}\")]");
            }
            else
            {
                properties.Add($"        [Column(\"{columnName}\")]");
            }
            properties.Add($"        [JsonProperty(\"{columnName}\")]");
            properties.Add($"        public {csharpTypeName} {columnNameCS} {{ get; set; }}");
            properties.Add("");
        }
Example #2
0
        private void CreateCS(KeyspaceMetadata keySpace, DataCollectionMetadata tableDef)
        {
            var columnDescriptions = new List <Utils.ColumnDescription>();
            var className          = Utils.Utils.CSharpifyName(tableDef.Name);

            this.swaggerRoot.Definitions.Add(className, new Schema());
            Utils.Utils.WriteLineGreen($" Starting table {tableDef.Name}, class {className}");
            var properties = new List <string> {
                ""
            };

            foreach (var tableColumn in tableDef.TableColumns)
            {
                this.isFrozen = false;
                Utils.Utils.WriteLineGreen($" Table {tableDef.Name}, class {className}, column {tableColumn.Name}");

                var csharpTypeName = this.GetCSharpTypeName(tableColumn);

                if (csharpTypeName != null)
                {
                    AddProperty(tableDef, columnDescriptions, properties, tableColumn, csharpTypeName);
                }
                else
                {
                    Utils.Utils.WriteLineGreen($" Table {tableDef.Name}, class {className}, column {tableColumn.Name}: DON'T KNOW HOW TO HANDLE TYPE {tableColumn.TypeCode}");
                }
            }
            PopulateIsIndexField(columnDescriptions, tableDef);
            this.CreateCSFile(
                className,
                properties,
                "using Cassandra.Mapping.Attributes;",
                $@"[Table(""{tableDef.Name}"", Keyspace = ""{keySpace.Name}"" )]");
            this.typeDescriptions.Add(
                new Utils.TypeDescription
            {
                CassandraTableName = tableDef.Name,
                CSharpName         = className,
                ColumnDescriptions = columnDescriptions
            });
        }
Example #3
0
        private void PopulateIsIndexField(List <ColumnDescription> columnDescriptions, DataCollectionMetadata dataCollectionDef)
        {
            var tableDef = dataCollectionDef as TableMetadata;

            if (tableDef != null)
            {
                foreach (var index in tableDef.Indexes)
                {
                    var indexedPropertyName = Utils.Utils.CSharpifyName(index.Value.Target);
                    var indexedProperty     = columnDescriptions.FirstOrDefault(c => c.CSharpName == indexedPropertyName);

                    if (indexedProperty != null)
                    {
                        indexedProperty.IsIndex = true;
                    }
                }
            }
        }
Example #4
0
        public void PutMetaDataTest()
        {
            var client = new MongoClient("mongodb://localhost:27017");
            var db = client.GetDatabase("hra");
            BsonClassMap.RegisterClassMap<DataCollectionMetadata>(cm =>
            {
                cm.AutoMap();
                cm.MapIdMember(c => c.CollectionName);

            });

            //db.CreateCollectionAsync("collectionMetadata").Wait();
            //t.Start();
            //t.Wait();

            var items = db.GetCollection<DataCollectionMetadata>("collectionMetadata");

            var s = new DataCollectionMetadata();
            s.CollectionName = "incumbent";
            s.DataSourceName = "hra";
            s.DisplayName = "Incumbent";
            //Dimensions are slicers
            var yearColumnDimension = new DimensionColumnMetadata();
            yearColumnDimension.ColumnIndex = 22;
            yearColumnDimension.ColumnName = "Year";
            yearColumnDimension.DataType = ColumnDataTypes.Int32;
            yearColumnDimension.DisplayName = "Year";
            yearColumnDimension.IsDefault = true;

            var jobFamilyDimension = new DimensionColumnMetadata();
            jobFamilyDimension.ColumnIndex = 12;
            jobFamilyDimension.ColumnName = "Job_Family";
            jobFamilyDimension.DisplayName = "Job Family";
            jobFamilyDimension.DataType = ColumnDataTypes.String;

            var jobTrackDimension = new DimensionColumnMetadata();
            jobTrackDimension.ColumnIndex = 14;
            jobTrackDimension.ColumnName = "Job_Track";
            jobTrackDimension.DisplayName = "Job Track";
            jobTrackDimension.DataType = ColumnDataTypes.String;

            var jobLevelDimension = new DimensionColumnMetadata();
            jobLevelDimension.ColumnIndex = 16;
            jobLevelDimension.ColumnName = "Job_Level";
            jobLevelDimension.DisplayName = "Job Level";
            jobLevelDimension.DataType = ColumnDataTypes.String;

            var orgTypeDimension = new DimensionColumnMetadata();
            orgTypeDimension.ColumnIndex = 7;
            orgTypeDimension.ColumnName = "org_type";
            orgTypeDimension.DisplayName = "Organization Type";
            orgTypeDimension.DataType = ColumnDataTypes.String;

            var orgType = new DimensionColumnMetadata();
            orgType.ColumnIndex = 7;
            orgType.ColumnName = "org_type";
            orgType.DataType = ColumnDataTypes.String;
            orgType.DisplayName = "Organization Type";

            var basePay = new MeasureDataColumnMetadata();
            basePay.ColumnIndex = 23;
            basePay.ColumnName = "Base_Pay";
            basePay.DataType = ColumnDataTypes.Double;
            basePay.DisplayName = "Base Pay";
            basePay.IsDefault = true;

            var yearColumn = new DataColumnMetadata();
            yearColumn.ColumnIndex = 22;
            yearColumn.ColumnName = "Year";
            yearColumn.DataType = ColumnDataTypes.Int32;
            yearColumn.DisplayName = "Year";

            var jobFamily = new FilterDataColumnMetadata();
            jobFamily.ColumnIndex = 12;
            jobFamily.ColumnName = "Job_Family";
            jobFamily.DisplayName = "Job Family";
            basePay.DataType = ColumnDataTypes.String;

            var jobTrack = new FilterDataColumnMetadata();
            jobTrack.ColumnIndex = 14;
            jobTrack.ColumnName = "Job_Track";
            jobTrack.DisplayName = "Job Track";
            jobTrack.FilterDependencyColumns.Add(jobFamily);
            basePay.DataType = ColumnDataTypes.String;

            var jobLevel = new FilterDataColumnMetadata();
            jobLevel.ColumnIndex = 16;
            jobLevel.ColumnName = "Job_Level";
            jobLevel.DisplayName = "Job Level";
            basePay.DataType = ColumnDataTypes.String;

            s.Columns.Add(yearColumn);
            s.Columns.Add(orgType);
            s.Columns.Add(basePay);
            s.Columns.Add(jobFamily);
            s.Columns.Add(jobTrack);
            s.Columns.Add(jobLevel);

            s.Dimensions.Add(yearColumnDimension);
            s.Dimensions.Add(jobFamilyDimension);
            s.Dimensions.Add(jobTrackDimension);
            s.Dimensions.Add(jobLevelDimension);
            s.Dimensions.Add(orgTypeDimension);

            s.Measures.Add(basePay);

            //do filters
            s.Filters.Add(jobFamily);
            s.Filters.Add(jobTrack);
            s.Filters.Add(jobLevel);

            items.InsertOneAsync(s).Wait();
        }