コード例 #1
0
ファイル: AttributeMapper.cs プロジェクト: kamchung322/eXpand
        public List<IPersistentAttributeInfo> Create(Column column, IPersistentMemberInfo owner, DataTypeMapper dataTypeMapper) {
            var persistentAttributeInfos = new List<IPersistentAttributeInfo>();

            if (owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPOneToOnePropertyMember)
                return persistentAttributeInfos;
            if (column.InPrimaryKey) {
                if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType != TemplateType.Struct) {
                    persistentAttributeInfos.Add(GetPersistentKeyAttribute(column));
                }
            }
            if (!column.Nullable && !column.InPrimaryKey) {
                persistentAttributeInfos.Add(GetPersistentRuleRequiredFieldAttribute(column));
            }
            if (dataTypeMapper.GetDataType(column) == DBColumnType.String) {
                persistentAttributeInfos.Add(GetPersistentSizeAttribute(column));
            }
            if (IsSimpleForeignKey(column) || ((IsCompoundPrimaryKey(owner, column) && column.IsForeignKey)))
                persistentAttributeInfos.Add(GetPersistentAssociationAttribute(column));
            //            if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType!=TemplateType.Struct)

            var persistentPersistentAttribute = GetPersistentPersistentAttribute(column.Name);
            if (IsSimpleForeignKey(column) && IsCompoundForeignKey(column))
                persistentPersistentAttribute.MapTo = String.Empty;
            persistentAttributeInfos.Add(persistentPersistentAttribute);
            return persistentAttributeInfos;
        }
コード例 #2
0
 public MemberAttributeGenerator(MemberGeneratorInfo memberGeneratorInfo, ClassGeneratorInfo classGeneratorInfo) {
     _objectSpace = XPObjectSpace.FindObjectSpaceByObject(memberGeneratorInfo.PersistentMemberInfo);
     _persistentMemberInfo = memberGeneratorInfo.PersistentMemberInfo;
     _column = memberGeneratorInfo.DbColumn;
     _isPrimaryKey = CalculatePrimaryKey(memberGeneratorInfo, classGeneratorInfo);
     _dbTable = classGeneratorInfo.DbTable;
 }
コード例 #3
0
ファイル: ExtraInfoBuilder.cs プロジェクト: jas99/eXpand
        public void CreateExtraInfos(Column column, IPersistentMemberInfo persistentMemberInfo, ForeignKeyCalculator foreignKeyCalculator) {
            var persistentReferenceMemberInfo = (IPersistentReferenceMemberInfo)persistentMemberInfo;
            if (persistentMemberInfo.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPOneToOnePropertyMember) {
                CreateTemplateInfo(persistentReferenceMemberInfo, column, foreignKeyCalculator);
            } else if (!column.InPrimaryKey && persistentMemberInfo.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPReadWritePropertyMember)
                CreateCollection(persistentReferenceMemberInfo, persistentReferenceMemberInfo.Owner);

        }
コード例 #4
0
ファイル: CodeEngine.cs プロジェクト: akingunes/eXpand
 static string GetPropertyType(IPersistentMemberInfo persistentMemberInfo){
     if (persistentMemberInfo is IPersistentCoreTypeMemberInfo)
         return Type.GetType("System."+((IPersistentCoreTypeMemberInfo)persistentMemberInfo).DataType).FullName;
     if (persistentMemberInfo is IPersistentReferenceMemberInfo)
         return ((IPersistentReferenceMemberInfo) persistentMemberInfo).ReferenceTypeFullName;
     if (persistentMemberInfo is IPersistentCollectionMemberInfo)
         return ((IPersistentCollectionMemberInfo)persistentMemberInfo).CollectionTypeFullName;
     throw new NotImplementedException(persistentMemberInfo.GetType().FullName);
 }
コード例 #5
0
 private static XPMemberInfo CreateMemberCore(IPersistentMemberInfo info) {
     if (info is IPersistentCollectionMemberInfo)
         return info.Owner.PersistentTypeClassInfo.CreateMember(info.Name, typeof(XPCollection), true);
     if (info is IPersistentCoreTypeMemberInfo)
         return info.Owner.PersistentTypeClassInfo.CreateMember(info.Name, Type.GetType("System." + ((IPersistentCoreTypeMemberInfo)info).DataType, true));
     if (info is IPersistentReferenceMemberInfo) {
         var xpClassInfo = info.Owner.PersistentTypeClassInfo.Dictionary.GetClassInfo(((IPersistentReferenceMemberInfo)info).ReferenceType);
         return info.Owner.PersistentTypeClassInfo.CreateMember(info.Name, xpClassInfo);
     }
     throw new NotImplementedException(info.GetType().FullName);
 }
コード例 #6
0
ファイル: CodeEngine.cs プロジェクト: akingunes/eXpand
 public static string GenerateCode(IPersistentMemberInfo persistentMemberInfo) {
     if (persistentMemberInfo.CodeTemplateInfo.TemplateInfo != null) {
         string code = persistentMemberInfo.CodeTemplateInfo.TemplateInfo.TemplateCode;
         if (code != null) {
             code = code.Replace("$TYPEATTRIBUTES$", GetAttributesCode(persistentMemberInfo));
             code = code.Replace("$PROPERTYNAME$", persistentMemberInfo.Name);
             code = code.Replace("$PROPERTYTYPE$", GetPropertyType(persistentMemberInfo));
         }
         return code;
     }
     return null;
 }
コード例 #7
0
        static string GetPropertyTypeCode(IPersistentMemberInfo persistentMemberInfo)
        {
            if (persistentMemberInfo is IPersistentCoreTypeMemberInfo)
            {
                return(GetCorePropertyTypeCode(persistentMemberInfo));
            }
            var persistentReferenceMemberInfo = persistentMemberInfo as IPersistentReferenceMemberInfo;

            if (persistentReferenceMemberInfo != null)
            {
                return(CleanFullName((persistentReferenceMemberInfo).ReferenceTypeFullName));
            }
            var persistentCollectionMemberInfo = persistentMemberInfo as IPersistentCollectionMemberInfo;

            if (persistentCollectionMemberInfo != null)
            {
                return(CleanFullName((persistentCollectionMemberInfo).CollectionTypeFullName));
            }
            throw new NotImplementedException(persistentMemberInfo.GetType().FullName);
        }
コード例 #8
0
        public List <IPersistentAttributeInfo> Create(Column column, IPersistentMemberInfo owner, DataTypeMapper dataTypeMapper)
        {
            var persistentAttributeInfos = new List <IPersistentAttributeInfo>();

            if (owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPOneToOnePropertyMember)
            {
                return(persistentAttributeInfos);
            }
            if (column.InPrimaryKey)
            {
                if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType != TemplateType.Struct)
                {
                    persistentAttributeInfos.Add(GetPersistentKeyAttribute(column));
                }
            }
            if (!column.Nullable && !column.InPrimaryKey)
            {
                persistentAttributeInfos.Add(GetPersistentRuleRequiredFieldAttribute(column));
            }
            if (dataTypeMapper.GetDataType(column) == DBColumnType.String)
            {
                persistentAttributeInfos.Add(GetPersistentSizeAttribute(column));
            }
            if (IsSimpleForeignKey(column) || ((IsCompoundPrimaryKey(owner, column) && column.IsForeignKey)))
            {
                persistentAttributeInfos.Add(GetPersistentAssociationAttribute(column));
            }
            //            if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType!=TemplateType.Struct)

            var persistentPersistentAttribute = GetPersistentPersistentAttribute(column.Name);

            if (IsSimpleForeignKey(column) && IsCompoundForeignKey(column))
            {
                persistentPersistentAttribute.MapTo = String.Empty;
            }
            persistentAttributeInfos.Add(persistentPersistentAttribute);
            return(persistentAttributeInfos);
        }
コード例 #9
0
 private static string GetAttributesCode(IPersistentMemberInfo persistentMemberInfo)
 {
     return(string.Join(Environment.NewLine, persistentMemberInfo.TypeAttributes.Select(GenerateCode)));
 }
コード例 #10
0
ファイル: AttributeMapper.cs プロジェクト: kamchung322/eXpand
 bool IsCompoundPrimaryKey(IPersistentMemberInfo owner, Column column) {
     return owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.Struct && column.InPrimaryKey;
 }
コード例 #11
0
        static string GetCorePropertyTypeCode(IPersistentMemberInfo persistentMemberInfo)
        {
            DBColumnType dbColumnType = ((IPersistentCoreTypeMemberInfo)persistentMemberInfo).DataType;

            switch (dbColumnType)
            {
            case DBColumnType.Boolean:
                return("bool");

            case DBColumnType.Byte:
                return("byte");

            case DBColumnType.SByte:
                return("sbyte");

            case DBColumnType.Char:
                return("char");

            case DBColumnType.Decimal:
                return("decimal");

            case DBColumnType.Single:
                return("float");

            case DBColumnType.Double:
                return("double");

            case DBColumnType.Int32:
                return("int");

            case DBColumnType.UInt32:
                return("uint");

            case DBColumnType.Int16:
                return("short");

            case DBColumnType.UInt16:
                return("ushort");

            case DBColumnType.Int64:
                return("long");

            case DBColumnType.UInt64:
                return("ulong");

            case DBColumnType.String:
                return("string");

            case DBColumnType.DateTime:
                return("DateTime");

            case DBColumnType.Guid:
                return("Guid");

            case DBColumnType.TimeSpan:
                return("TimeSpan");

            case DBColumnType.ByteArray:
                return("byte[]");

            default:
                return(dbColumnType.ToString());
            }
        }
コード例 #12
0
ファイル: CodeEngine.cs プロジェクト: testexpand/eXpand
 static string GetPropertyTypeCode(IPersistentMemberInfo persistentMemberInfo) {
     if (persistentMemberInfo is IPersistentCoreTypeMemberInfo)
         return GetCorePropertyTypeCode(persistentMemberInfo);
     if (persistentMemberInfo is IPersistentReferenceMemberInfo)
         return CleanFullName(((IPersistentReferenceMemberInfo)persistentMemberInfo).ReferenceTypeFullName);
     if (persistentMemberInfo is IPersistentCollectionMemberInfo)
         return CleanFullName(((IPersistentCollectionMemberInfo)persistentMemberInfo).CollectionTypeFullName);
     throw new NotImplementedException(persistentMemberInfo.GetType().FullName);
 }
コード例 #13
0
ファイル: CodeEngine.cs プロジェクト: testexpand/eXpand
 static string GetMemberName(IPersistentMemberInfo persistentMemberInfo) {
     string memberName = CleanName(persistentMemberInfo.Name);
     if (persistentMemberInfo.Owner.Name == persistentMemberInfo.Name)
         memberName += "Member";
     return memberName;
 }
コード例 #14
0
ファイル: CodeEngine.cs プロジェクト: testexpand/eXpand
 static string GetCorePropertyTypeCode(IPersistentMemberInfo persistentMemberInfo) {
     DBColumnType dbColumnType = ((IPersistentCoreTypeMemberInfo)persistentMemberInfo).DataType;
     switch (dbColumnType) {
         case DBColumnType.Boolean:
             return "bool";
         case DBColumnType.Byte:
             return "byte";
         case DBColumnType.SByte:
             return "sbyte";
         case DBColumnType.Char:
             return "char";
         case DBColumnType.Decimal:
             return "decimal";
         case DBColumnType.Single:
             return "float";
         case DBColumnType.Double:
             return "double";
         case DBColumnType.Int32:
             return "int";
         case DBColumnType.UInt32:
             return "uint";
         case DBColumnType.Int16:
             return "short";
         case DBColumnType.UInt16:
             return "ushort";
         case DBColumnType.Int64:
             return "long";
         case DBColumnType.UInt64:
             return "ulong";
         case DBColumnType.String:
             return "string";
         case DBColumnType.DateTime:
             return "DateTime";
         case DBColumnType.Guid:
             return "Guid";
         case DBColumnType.TimeSpan:
             return "TimeSpan";
         case DBColumnType.ByteArray:
             return "byte[]";
         default:
             return dbColumnType.ToString();
     }
 }
コード例 #15
0
 public MemberGeneratorInfo(IPersistentMemberInfo persistentMemberInfo, DBColumn dbColumn)
     : this()
 {
     _persistentMemberInfo = persistentMemberInfo;
     _dbColumn             = dbColumn;
 }
コード例 #16
0
 private static void CreateMember(IPersistentMemberInfo info, Type type)
 {
     XPMemberInfo result = info.Owner.PersistentTypeClassInfo.FindMember(info.Name) ?? CreateMemberCore( info);
     CreateAttributes(result,info);
 }
コード例 #17
0
        private static void CreateMember(IPersistentMemberInfo info, Type type)
        {
            XPMemberInfo result = info.Owner.PersistentTypeClassInfo.FindMember(info.Name) ?? CreateMemberCore(info);

            CreateAttributes(result, info);
        }
コード例 #18
0
ファイル: WCExtensions.cs プロジェクト: xyyhqq/eXpand
 public static void Init(this IPersistentMemberInfo persistentMemberInfo, Type codeTemplateType, CodeDomProvider codeDomProvider)
 {
     persistentMemberInfo.CodeTemplateInfo.CreateDefaultTemplate(persistentMemberInfo is IPersistentCollectionMemberInfo
             ? TemplateType.XPCollectionMember
             : TemplateType.XPReadWritePropertyMember, codeDomProvider);
 }
コード例 #19
0
 bool IsCompoundPrimaryKey(IPersistentMemberInfo owner, Column column)
 {
     return(owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.Struct && column.InPrimaryKey);
 }
コード例 #20
0
ファイル: MemberGenerator.cs プロジェクト: aries544/eXpand
 public MemberGeneratorInfo(IPersistentMemberInfo persistentMemberInfo, DBColumn dbColumn)
     : this() {
     _persistentMemberInfo = persistentMemberInfo;
     _dbColumn = dbColumn;
 }
コード例 #21
0
ファイル: ColumnMapper.cs プロジェクト: kamchung322/eXpand
 void AddAttributes(Column column, IPersistentMemberInfo persistentMemberInfo) {
     var persistentAttributeInfos = _attributeMapper.Create(column, persistentMemberInfo, _dataTypeMapper);
     foreach (var persistentAttributeInfo in persistentAttributeInfos) {
         persistentMemberInfo.TypeAttributes.Add(persistentAttributeInfo);
     }
 }
コード例 #22
0
 public static bool IsAssociation(this IPersistentMemberInfo persistentMemberInfo)
 {
     return(PersistentAttributeInfoQuery.Find <AssociationAttribute>(persistentMemberInfo) != null);
 }