public DbConstraintPkViewModel(DbTable table, DbPrimaryKey dbPrimaryKey)
 {
     this.dbPrimaryKey = dbPrimaryKey;
     this.DisplayName = "Pk " + table.DisplayName;
     this.Name = dbPrimaryKey.Name;
     this.Id = dbPrimaryKey.Id;
 }
 public DbConstraintUkViewModel(DbTable table, DbUniqueKey uk)
 {
     // TODO: Complete member initialization
     this.uk = uk;
     this.DisplayName = "Uk " + table.DisplayName ;
     this.Name = uk.Name;
     this.Id = uk.Id;
 }
        public DbTableViewModel(DbSchema schema,DbTable model)
        {
            this.Id = model.Id;
            this.DisplayName = model.DisplayName;
            this.Name = model.Name;
            this.Items = new ObservableCollection<ViewModelBase>();
            this.EntityName = NameConverter.TableNameToEntityName(model.Name);
            DbColumnsViewModel vms = new DbColumnsViewModel();
            model.Columns = (from c in model.Columns orderby c.DisplayName select c).ToList();
            foreach (DbColumn column in model.Columns)
            {
                DbColumnViewModel vm = new DbColumnViewModel(column);
                vms.Items.Add(vm);
            }
            this.Items.Add(vms);

            DbConstraintsViewModel vmsC = new DbConstraintsViewModel();
            if (model.PrimaryKey != null)
            {
                DbConstraintViewModel pkVm = new DbConstraintPkViewModel(model,model.PrimaryKey);
                vmsC.Items.Add(pkVm);

            }

            foreach (DbUniqueKey uk in model.UniqueKeys)
            {
                DbConstraintUkViewModel ukVm = new DbConstraintUkViewModel(model,uk);
                vmsC.Items.Add(ukVm);
            }
            foreach (DbForeignKey fk in model.ForeignKeys)
            {
                DbConstraintFkViewModel fkVm = new DbConstraintFkViewModel(schema,fk);
                vmsC.Items.Add(fkVm);
            }
            this.Items.Add(vmsC);

            this.Model = model;
        }
Exemple #4
0
        private DbSchema LoadSchema(XmlDocument doc)
        {
            XmlNode nodeModel = doc.SelectSingleNode("/Model/RootObject/Children/Model");
            DbSchema schema = new DbSchema();
            schema.Id = nodeModel.Attributes["Id"].Value;
            schema.Name = nodeModel.SelectSingleNode("Code").InnerText;
            schema.DisplayName = nodeModel.SelectSingleNode("Name").InnerText;

            XmlNodeList nodeRules = doc.SelectNodes("/Model/RootObject/Children/Model/BusinessRules/BusinessRule");

            foreach (XmlNode nodeRule in nodeRules)
            {
                String serverExpression = nodeRule.SelectSingleNode("ServerExpression").InnerText;
                if (serverExpression.StartsWith("@PR"))
                {
                    DbRulePr rulePr = new DbRulePr();
                    rulePr.Id = nodeRule.Attributes["Id"].Value;
                    rulePr.ChausseIdColumnName = serverExpression.Replace("@PR", "").Replace("(", "").Replace(")", "");
                    schema.Rules.Add(rulePr);
                }

                if (serverExpression.StartsWith("@EMPRISE_CHAUSSEE"))
                {
                    DbRuleEmprise ruleEmprise = new DbRuleEmprise();
                    ruleEmprise.Id = nodeRule.Attributes["Id"].Value;
                    ruleEmprise.ChausseIdColumnName = serverExpression.Replace("@EMPRISE_CHAUSSEE", "").Replace("(", "").Replace(")", "");
                    schema.Rules.Add(ruleEmprise);
                }

                if (serverExpression.StartsWith("@COLOR"))
                {
                    DbRuleColor ruleColor = new DbRuleColor();
                    ruleColor.Id = nodeRule.Attributes["Id"].Value;
                    schema.Rules.Add(ruleColor);
                }
                if (serverExpression.StartsWith("@LOCATION_REF"))
                {
                    DbRuleLocationRef ruleLocation = new DbRuleLocationRef();

                    ruleLocation.Id = nodeRule.Attributes["Id"].Value;
                    schema.Rules.Add(ruleLocation);
                }
                if (serverExpression.StartsWith("@LOCATION_REF_GEOM"))
                {
                    DbRuleLocationRefGeom ruleLocation = new DbRuleLocationRefGeom();
                     ruleLocation.Id = nodeRule.Attributes["Id"].Value;
                    schema.Rules.Add(ruleLocation);
                }
                if (serverExpression.StartsWith("@LOCATION_DEB"))
                {
                    DbRuleLocationDeb ruleLocation = new DbRuleLocationDeb();
                    ruleLocation.Id = nodeRule.Attributes["Id"].Value;
                    schema.Rules.Add(ruleLocation);
                }
                if (serverExpression.StartsWith("@LOCATION_FIN"))
                {
                    DbRuleLocationFin ruleLocation = new DbRuleLocationFin();
                   ruleLocation.Id = nodeRule.Attributes["Id"].Value;
                    schema.Rules.Add(ruleLocation);
                }
            }

            XmlNodeList nodes = doc.SelectNodes("/Model/RootObject/Children/Model/Tables/Table");
            foreach (XmlNode nodeTable in nodes)
            {

                String id = nodeTable.Attributes["Id"].Value;
                DbTable table = new DbTable();
                table.Id = id;
                table.Name = nodeTable.SelectSingleNode("Code").InnerText;

                table.DisplayName = nodeTable.SelectSingleNode("Name").InnerText;

                XmlNodeList nodeTableRules = nodeTable.SelectNodes("AttachedRules/BusinessRule");
                foreach (XmlNode nodeTableRule in nodeTableRules)
                {
                    String ruleId = nodeTableRule.Attributes["Ref"].Value;
                    DbRule rule = (from s in schema.Rules where s.Id.Equals(ruleId) select s).FirstOrDefault();
                    if (rule != null)
                    {
                        table.Rules.Add(rule);
                    }
                }

                XmlNodeList nodeColumns = nodeTable.SelectNodes("Columns/Column");
                foreach (XmlNode nodeColumn in nodeColumns)
                {
                    DbColumn column = new DbColumn();
                    column.Id = nodeColumn.Attributes["Id"].Value;
                    column.Name = nodeColumn.SelectSingleNode("Code").InnerText;
                    column.DisplayName = nodeColumn.SelectSingleNode("Name").InnerText;
                    column.DataType = nodeColumn.SelectSingleNode("DataType").InnerText;
                    column.Length = null;
                    if (nodeColumn.SelectSingleNode("Length") != null)
                    { column.Length = Int32.Parse(nodeColumn.SelectSingleNode("Length").InnerText); }

                    column.AllowNull = true;
                    if (nodeColumn.SelectSingleNode("Mandatory") != null)
                    {
                        if (nodeColumn.SelectSingleNode("Mandatory").InnerText.Equals("1"))
                        { column.AllowNull = false; }

                    }
                    XmlNodeList nodeColumnRules = nodeColumn.SelectNodes("AttachedRules/BusinessRule");
                    foreach (XmlNode nodeColumnRule in nodeColumnRules)
                    {
                        String ruleId = nodeColumnRule.Attributes["Ref"].Value;
                        DbRule rule = (from s in schema.Rules where s.Id.Equals (ruleId ) select s).FirstOrDefault();
                        if (rule != null)
                        {
                             column.Rules.Add(rule);
                        }

                    }
                    table.Columns.Add(column);
                }

                schema.Tables.Add(table);

            }

            return schema;
        }