コード例 #1
0
ファイル: TableMapper.cs プロジェクト: krazana/eXpand
        public IPersistentClassInfo Create(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo) {

            var persistentClassInfo = CreateCore(table, persistentAssemblyInfo,mapperInfo);
            foreach (ForeignKey foreignKey in table.ForeignKeys) {
                CreateCore(_database.Tables[foreignKey.ReferencedTable], persistentAssemblyInfo, mapperInfo);
            }
            return persistentClassInfo;
        }
コード例 #2
0
ファイル: TableMapper.cs プロジェクト: kamchung322/eXpand
 private IPersistentClassInfo CreateCore(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo) {
     int count = table.Columns.OfType<Column>().Where(column => column.InPrimaryKey).Count();
     IPersistentClassInfo persistentClassInfo = CreatePersistentClassInfo(table.Name, TemplateType.Class, persistentAssemblyInfo);
     persistentClassInfo.BaseType = typeof(XPLiteObject);
     if (count > 1)
         CreatePersistentClassInfo(table.Name + KeyStruct, TemplateType.Struct, persistentAssemblyInfo);
     _extraInfoBuilder.CreateExtraInfos(table, persistentClassInfo, mapperInfo);
     if (count == 0)
         Tracing.Tracer.LogError("No primary keys found for " + table.Name);
     return persistentClassInfo;
 }
コード例 #3
0
ファイル: ExtraInfoBuilder.cs プロジェクト: krazana/eXpand
 public void CreateExtraInfos(Table table, IPersistentClassInfo persistentClassInfo, IMapperInfo mapperInfo) {
     var persistentAttributeInfos = _attributeMapper.Create(table, persistentClassInfo, mapperInfo);
     foreach (var persistentAttributeInfo in persistentAttributeInfos) {
         persistentClassInfo.TypeAttributes.Add(persistentAttributeInfo);
     }
     var count = table.Columns.OfType<Column>().Where(column => column.InPrimaryKey).Count();
     if (count > 0) {
         var templateInfo = (ITemplateInfo) _objectSpace.CreateObject(WCTypesInfo.Instance.FindBussinessObjectType(typeof (ITemplateInfo)));
         templateInfo.Name = SupportPersistentObjectsAsAPartOfACompositeKey;
         persistentClassInfo.TemplateInfos.Add(templateInfo);
     }
 }
コード例 #4
0
ファイル: DbMapper.cs プロジェクト: kevin3274/eXpand
 public void Map(Database database, IMapperInfo mapperInfo) {
     var attributeMapper = new AttributeMapper(_objectSpace);
     var tableMapper = new TableMapper(_objectSpace, database, attributeMapper);
     var dataTypeMapper = new DataTypeMapper();
     var columnMapper = new ColumnMapper(dataTypeMapper, attributeMapper);
     Tracing.Tracer.LogSeparator("DBMapper Start mapping database " + database.Name);
     foreach (Table table in database.Tables.OfType<Table>().Where(table => !(table.IsSystemObject))) {
         Tracing.Tracer.LogValue("Table", table.Name);
         IPersistentClassInfo persistentClassInfo = tableMapper.Create(table, _persistentAssemblyInfo, mapperInfo);
         foreach (Column column in table.Columns) {
             columnMapper.Create(column, persistentClassInfo);
         }
     }
     _dataStoreLogonObject = (IDataStoreLogonObject)ReflectionHelper.CreateObject(XafTypesInfo.Instance.FindBussinessObjectType<IDataStoreLogonObject>(), new object[] { _persistentAssemblyInfo.Session, _dataStoreLogonObject });
     attributeMapper.Create(_persistentAssemblyInfo, _dataStoreLogonObject);
     Func<ITemplateInfo, bool> templateInfoPredicate = info => info.Name == ExtraInfoBuilder.SupportPersistentObjectsAsAPartOfACompositeKey;
     CodeEngine.SupportCompositeKeyPersistentObjects(_persistentAssemblyInfo, templateInfoPredicate);
 }
コード例 #5
0
        public void Map(Database database, IMapperInfo mapperInfo)
        {
            var attributeMapper = new AttributeMapper(_objectSpace);
            var tableMapper     = new TableMapper(_objectSpace, database, attributeMapper);
            var dataTypeMapper  = new DataTypeMapper();
            var columnMapper    = new ColumnMapper(dataTypeMapper, attributeMapper);

            Tracing.Tracer.LogSeparator("DBMapper Start mapping database " + database.Name);
            foreach (Table table in database.Tables.OfType <Table>().Where(table => !(table.IsSystemObject)))
            {
                Tracing.Tracer.LogValue("Table", table.Name);
                IPersistentClassInfo persistentClassInfo = tableMapper.Create(table, _persistentAssemblyInfo, mapperInfo);
                foreach (Column column in table.Columns)
                {
                    columnMapper.Create(column, persistentClassInfo);
                }
            }
            _dataStoreLogonObject = (IDataStoreLogonObject)XafTypesInfo.Instance.FindBussinessObjectType <IDataStoreLogonObject>().CreateInstance(new object[] { _persistentAssemblyInfo.Session, _dataStoreLogonObject });
            attributeMapper.Create(_persistentAssemblyInfo, _dataStoreLogonObject);
            Func <ITemplateInfo, bool> templateInfoPredicate = info => info.Name == ExtraInfoBuilder.SupportPersistentObjectsAsAPartOfACompositeKey;

            CodeEngine.SupportCompositeKeyPersistentObjects(_persistentAssemblyInfo, templateInfoPredicate);
        }
コード例 #6
0
ファイル: TableMapper.cs プロジェクト: landytest/eXpand
        private IPersistentClassInfo CreateCore(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo)
        {
            int count = table.Columns.OfType <Column>().Where(column => column.InPrimaryKey).Count();
            IPersistentClassInfo persistentClassInfo = CreatePersistentClassInfo(table.Name, TemplateType.Class, persistentAssemblyInfo);

            persistentClassInfo.BaseType = typeof(XPLiteObject);
            if (count > 1)
            {
                CreatePersistentClassInfo(table.Name + KeyStruct, TemplateType.Struct, persistentAssemblyInfo);
            }
            _extraInfoBuilder.CreateExtraInfos(table, persistentClassInfo, mapperInfo);
            if (count == 0)
            {
                Tracing.Tracer.LogError("No primary keys found for " + table.Name);
            }
            return(persistentClassInfo);
        }
コード例 #7
0
ファイル: TableMapper.cs プロジェクト: landytest/eXpand
        public IPersistentClassInfo Create(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo)
        {
            var persistentClassInfo = CreateCore(table, persistentAssemblyInfo, mapperInfo);

            foreach (ForeignKey foreignKey in table.ForeignKeys)
            {
                CreateCore(_database.GetTable(foreignKey.ReferencedTable, foreignKey.ReferencedTableSchema), persistentAssemblyInfo, mapperInfo);
            }
            return(persistentClassInfo);
        }
コード例 #8
0
ファイル: ExtraInfoBuilder.cs プロジェクト: landytest/eXpand
        public void CreateExtraInfos(Table table, IPersistentClassInfo persistentClassInfo, IMapperInfo mapperInfo)
        {
            var persistentAttributeInfos = _attributeMapper.Create(table, persistentClassInfo, mapperInfo);

            foreach (var persistentAttributeInfo in persistentAttributeInfos)
            {
                persistentClassInfo.TypeAttributes.Add(persistentAttributeInfo);
            }
            var count = table.Columns.OfType <Column>().Count(column => column.InPrimaryKey);

            if (count > 0)
            {
                if (persistentClassInfo.TemplateInfos.FirstOrDefault(info => info.Name == SupportPersistentObjectsAsAPartOfACompositeKey) == null)
                {
                    var templateInfo = (ITemplateInfo)_objectSpace.CreateObject(WCTypesInfo.Instance.FindBussinessObjectType(typeof(ITemplateInfo)));
                    templateInfo.Name = SupportPersistentObjectsAsAPartOfACompositeKey;
                    persistentClassInfo.TemplateInfos.Add(templateInfo);
                }
            }
        }
コード例 #9
0
        public List <IPersistentAttributeInfo> Create(Table table, IPersistentClassInfo owner, IMapperInfo mapperInfo)
        {
            var persistentAttributeInfos = new List <IPersistentAttributeInfo>();

            if (owner.TypeAttributes.OfType <IPersistentPersistentAttribute>().FirstOrDefault() == null)
            {
                persistentAttributeInfos.Add(GetPersistentPersistentAttribute(table.Name));
            }
            if (!(string.IsNullOrEmpty(mapperInfo.NavigationPath)) && owner.TypeAttributes.OfType <IPersistentNavigationItemAttribute>().FirstOrDefault() == null)
            {
                var persistentNavigationItemAttribute = ObjectSpace.CreateWCObject <IPersistentNavigationItemAttribute>();
                var cleanName = owner.Name.CleanCodeName();
                persistentNavigationItemAttribute.Path   = mapperInfo.NavigationPath + "/" + cleanName;
                persistentNavigationItemAttribute.ViewId = cleanName + "_ListView";
                persistentAttributeInfos.Add(persistentNavigationItemAttribute);
            }
            return(persistentAttributeInfos);
        }
コード例 #10
0
ファイル: AttributeMapper.cs プロジェクト: kamchung322/eXpand
 public List<IPersistentAttributeInfo> Create(Table table, IPersistentClassInfo owner, IMapperInfo mapperInfo) {
     var persistentAttributeInfos = new List<IPersistentAttributeInfo>();
     if (owner.TypeAttributes.OfType<IPersistentPersistentAttribute>().FirstOrDefault() == null)
         persistentAttributeInfos.Add(GetPersistentPersistentAttribute(table.Name));
     if (!(string.IsNullOrEmpty(mapperInfo.NavigationPath)) && owner.TypeAttributes.OfType<IPersistentNavigationItemAttribute>().FirstOrDefault() == null) {
         var persistentNavigationItemAttribute = ObjectSpace.CreateWCObject<IPersistentNavigationItemAttribute>();
         var cleanName = owner.Name.CleanCodeName();
         persistentNavigationItemAttribute.Path = mapperInfo.NavigationPath + "/" + cleanName;
         persistentNavigationItemAttribute.ViewId = cleanName + "_ListView";
         persistentAttributeInfos.Add(persistentNavigationItemAttribute);
     }
     return persistentAttributeInfos;
 }