protected MemberConfig ReadMemberConfig(XElement memberElement) { String memberName = XmlConfigUtil.GetRequiredAttribute(memberElement, XmlConstants.NAME); MemberConfig memberConfig = new MemberConfig(memberName); String columnName = XmlConfigUtil.GetAttribute(memberElement, XmlConstants.COLUMN); if (columnName.Length > 0) { memberConfig.ColumnName = columnName; } String transientValue = XmlConfigUtil.GetAttribute(memberElement, XmlConstants.TRANSIENT); if (transientValue.Length != 0) { memberConfig.Transient = Boolean.Parse(transientValue); } String definedByValue = XmlConfigUtil.GetAttribute(memberElement, XmlConstants.DEFINED_BY); if (definedByValue.Length != 0) { memberConfig.DefinedBy = definedByValue; } return(memberConfig); }
protected MemberConfig ReadUniqueMemberConfig(String tagName, IMap <String, IList <XElement> > attributeMap) { XElement memberElement = attributeMap.Get(tagName)[0]; MemberConfig memberConfig = ReadMemberConfig(memberElement); return(memberConfig); }
private static String ConstructName(MemberConfig[] members) { StringBuilder sb = new StringBuilder(members[0].Name); for (int i = 1; i < members.Length; i++) { MemberConfig member = members[i]; sb.Append('-').Append(member.Name); } return(sb.ToString()); }
public override bool Equals(Object obj) { if (obj is MemberConfig) { MemberConfig other = (MemberConfig)obj; return(Name.Equals(other.Name)); } else { return(false); } }
protected MemberConfig ReadMemberConfig(XElement memberElement) { String memberName = XmlConfigUtil.GetRequiredAttribute(memberElement, XmlConstants.NAME, true); String columnName = null; XElement columnElement = XmlConfigUtil.GetChildUnique(memberElement, XmlConstants.COLUMN); if (columnElement != null) { columnName = XmlConfigUtil.GetRequiredAttribute(columnElement, XmlConstants.NAME); } MemberConfig memberConfig = new MemberConfig(memberName, columnName); bool alternateId = XmlConfigUtil.AttributeIsTrue(memberElement, XmlConstants.ALT_ID); memberConfig.AlternateId = alternateId; return(memberConfig); }
protected CompositeMemberConfig ReadCompositeMemberConfig(XElement memberElement, IMap <String, MemberConfig> allIdMemberConfigs) { IEnumerable <XElement> idFragmentNodes = GetDescendants(memberElement, XmlConstants.ID_FRAGMENT); IList <XElement> idFragments = XmlConfigUtil.NodesToElements(idFragmentNodes); MemberConfig[] memberConfigs = new MemberConfig[idFragments.Count]; for (int i = 0; i < idFragments.Count; i++) { XElement idFragment = idFragments[i]; String memberName = XmlConfigUtil.GetRequiredAttribute(idFragment, XmlConstants.NAME); MemberConfig memberConfig = allIdMemberConfigs.Get(memberName); if (memberConfig == null) { memberConfig = ReadMemberConfig(idFragment); allIdMemberConfigs.Put(memberName, memberConfig); } memberConfigs[i] = memberConfig; } CompositeMemberConfig compositeMemberConfig = new CompositeMemberConfig(memberConfigs); return(compositeMemberConfig); }
protected EntityConfig ReadEntityConfig(XElement entityTag) { String entityTypeName = XmlConfigUtil.GetRequiredAttribute(entityTag, XmlConstants.CLASS); try { Type entityType = XmlConfigUtil.GetTypeForName(entityTypeName); Type realType = ProxyHelper.GetRealType(entityType); EntityConfig entityConfig = new EntityConfig(entityType, realType); bool localEntity = !XmlConfigUtil.GetAttribute(entityTag, XmlConstants.TYPE).Equals(XmlConstants.EXTERN.LocalName); entityConfig.Local = localEntity; IMap <String, IList <XElement> > attributeMap = null; IMap <String, IList <XElement> > entityDefs = XmlConfigUtil.ChildrenToElementMap(entityTag); if (entityDefs.ContainsKey(XmlConstants.TABLE.LocalName)) { String specifiedTableName = XmlConfigUtil.GetRequiredAttribute(entityDefs.Get(XmlConstants.TABLE.LocalName)[0], XmlConstants.NAME); entityConfig.TableName = specifiedTableName; } if (entityDefs.ContainsKey(XmlConstants.PERMISSION_GROUP.LocalName)) { String permissionGroupName = XmlConfigUtil.GetRequiredAttribute(entityDefs.Get(XmlConstants.PERMISSION_GROUP.LocalName)[0], XmlConstants.NAME); entityConfig.PermissionGroupName = permissionGroupName; } if (entityDefs.ContainsKey(XmlConstants.SEQ.LocalName)) { String sequenceName = XmlConfigUtil.GetRequiredAttribute(entityDefs.Get(XmlConstants.SEQ.LocalName)[0], XmlConstants.NAME); entityConfig.SequenceName = sequenceName; } if (entityDefs.ContainsKey(XmlConstants.ATTR.LocalName)) { attributeMap = XmlConfigUtil.ChildrenToElementMap(entityDefs.Get(XmlConstants.ATTR.LocalName)[0]); } bool versionRequired = true; if (attributeMap != null) { if (attributeMap.ContainsKey(XmlConstants.ID.LocalName)) { XElement idElement = attributeMap.Get(XmlConstants.ID.LocalName)[0]; MemberConfig idMemberConfig = ReadMemberConfig(idElement); entityConfig.IdMemberConfig = idMemberConfig; } else if (!localEntity) { throw new Exception("ID member name has to be set on external entities"); } if (attributeMap.ContainsKey(XmlConstants.VERSION.LocalName)) { XElement versionElement = attributeMap.Get(XmlConstants.VERSION.LocalName)[0]; versionRequired = XmlConfigUtil.AttributeIsTrue(versionElement, XmlConstants.WITHOUT); if (versionRequired) { MemberConfig versionMemberConfig = ReadMemberConfig(versionElement); entityConfig.VersionMemberConfig = versionMemberConfig; } } else if (!localEntity) { throw new Exception("Version member name has to be set on external entities"); } if (attributeMap.ContainsKey(XmlConstants.BASIC.LocalName)) { IList <XElement> basicAttrs = attributeMap.Get(XmlConstants.BASIC.LocalName); for (int j = basicAttrs.Count; j-- > 0;) { XElement memberElement = basicAttrs[j]; MemberConfig memberConfig = ReadMemberConfig(memberElement); entityConfig.AddMemberConfig(memberConfig); } } if (attributeMap.ContainsKey(XmlConstants.TO_ONE.LocalName)) { IList <XElement> toOneAttrs = attributeMap.Get(XmlConstants.TO_ONE.LocalName); for (int j = toOneAttrs.Count; j-- > 0;) { XElement toOneElement = toOneAttrs[j]; RelationConfigLegathy relationConfig = ReadRelationConfig(toOneElement, localEntity, true); entityConfig.AddRelationConfig(relationConfig); } } if (attributeMap.ContainsKey(XmlConstants.TO_MANY.LocalName)) { IList <XElement> toManyAttrs = attributeMap.Get(XmlConstants.TO_MANY.LocalName); for (int j = toManyAttrs.Count; j-- > 0;) { XElement toManyElement = toManyAttrs[j]; RelationConfigLegathy relationConfig = ReadRelationConfig(toManyElement, localEntity, false); entityConfig.AddRelationConfig(relationConfig); } } if (attributeMap.ContainsKey(XmlConstants.IGNORE.LocalName)) { IList <XElement> ignoreAttrs = attributeMap.Get(XmlConstants.IGNORE.LocalName); for (int j = ignoreAttrs.Count; j-- > 0;) { XElement ignoreElement = ignoreAttrs[j]; MemberConfig memberConfig = ReadMemberConfig(ignoreElement); memberConfig.Ignore = true; entityConfig.AddMemberConfig(memberConfig); } } } entityConfig.VersionRequired = versionRequired; return(entityConfig); } catch (Exception e) { throw new Exception("Error occured while processing mapping for entity: " + entityTypeName, e); } }
protected EntityConfig ReadEntityConfig(XElement entityTag, IMap <String, ILinkConfig> nameToLinkMap) { String entityTypeName = XmlConfigUtil.GetRequiredAttribute(entityTag, XmlConstants.CLASS); try { Type entityType = XmlConfigUtil.GetTypeForName(entityTypeName); Type realType = ProxyHelper.GetRealType(entityType); EntityConfig entityConfig = new EntityConfig(entityType, realType); bool localEntity = !entityTag.Name.Equals(XmlConstants.EXTERNAL_ENTITY); entityConfig.Local = localEntity; IMap <String, IList <XElement> > attributeMap = null; IMap <String, IList <XElement> > entityDefs = XmlConfigUtil.ChildrenToElementMap(entityTag); if (entityDefs.ContainsKey(XmlConstants.TABLE.LocalName)) { String specifiedTableName = XmlConfigUtil.GetRequiredAttribute(entityDefs.Get(XmlConstants.TABLE.LocalName)[0], XmlConstants.NAME); entityConfig.TableName = specifiedTableName; } if (entityDefs.ContainsKey(XmlConstants.PERMISSION_GROUP.LocalName)) { String permissionGroupName = XmlConfigUtil.GetRequiredAttribute(entityDefs.Get(XmlConstants.PERMISSION_GROUP.LocalName)[0], XmlConstants.NAME); entityConfig.PermissionGroupName = permissionGroupName; } if (entityDefs.ContainsKey(XmlConstants.SEQ.LocalName)) { String sequenceName = XmlConfigUtil.GetRequiredAttribute(entityDefs.Get(XmlConstants.SEQ.LocalName)[0], XmlConstants.NAME); entityConfig.SequenceName = sequenceName; } if (attributeMap.ContainsKey(XmlConstants.DESCRIMINATOR.LocalName)) { String descriminatorName = XmlConfigUtil.GetRequiredAttribute(entityDefs.Get(XmlConstants.DESCRIMINATOR.LocalName)[0], XmlConstants.NAME); entityConfig.DescriminatorName = descriminatorName; } if (entityDefs.ContainsKey(XmlConstants.ATTR.LocalName)) { attributeMap = XmlConfigUtil.ToElementMap(entityDefs.Get(XmlConstants.ATTR.LocalName)[0].Elements()); } bool versionRequired = true; if (attributeMap != null) { IMap <String, MemberConfig> allIdMemberConfigs = new HashMap <String, MemberConfig>(); if (attributeMap.ContainsKey(XmlConstants.ID.LocalName)) { MemberConfig idMemberConfig = ReadUniqueMemberConfig(XmlConstants.ID.LocalName, attributeMap); entityConfig.IdMemberConfig = idMemberConfig; allIdMemberConfigs.Put(idMemberConfig.Name, idMemberConfig); } else if (attributeMap.ContainsKey(XmlConstants.ID_COMP.LocalName)) { XElement memberElement = attributeMap.Get(XmlConstants.ID_COMP.LocalName)[0]; IMemberConfig idMemberConfig = ReadCompositeMemberConfig(memberElement, allIdMemberConfigs); entityConfig.IdMemberConfig = idMemberConfig; } else if (!localEntity) { throw new ArgumentException("ID member name has to be set on external entities"); } if (attributeMap.ContainsKey(XmlConstants.ALT_ID.LocalName)) { IList <XElement> altIds = attributeMap.Get(XmlConstants.ALT_ID.LocalName); for (int j = altIds.Count; j-- > 0;) { XElement memberElement = altIds[j]; MemberConfig memberConfig = ReadMemberConfig(memberElement); memberConfig.AlternateId = true; entityConfig.AddMemberConfig(memberConfig); allIdMemberConfigs.Put(memberConfig.Name, memberConfig); } } if (attributeMap.ContainsKey(XmlConstants.ALT_ID_COMP.LocalName)) { IList <XElement> altIdsComp = attributeMap.Get(XmlConstants.ALT_ID_COMP.LocalName); for (int j = altIdsComp.Count; j-- > 0;) { XElement memberElement = altIdsComp[j]; CompositeMemberConfig memberConfig = ReadCompositeMemberConfig(memberElement, allIdMemberConfigs); memberConfig.AlternateId = true; entityConfig.AddMemberConfig(memberConfig); } } if (attributeMap.ContainsKey(XmlConstants.VERSION.LocalName)) { MemberConfig versionMemberConfig = ReadUniqueMemberConfig(XmlConstants.VERSION.LocalName, attributeMap); entityConfig.VersionMemberConfig = versionMemberConfig; } else if (attributeMap.ContainsKey(XmlConstants.NO_VERSION.LocalName)) { versionRequired = false; } else if (!localEntity) { throw new ArgumentException("Version member name has to be set on external entities"); } if (attributeMap.ContainsKey(XmlConstants.CREATED_BY.LocalName)) { MemberConfig createdByMemberConfig = ReadUniqueMemberConfig(XmlConstants.CREATED_BY.LocalName, attributeMap); entityConfig.CreatedByMemberConfig = createdByMemberConfig; } if (attributeMap.ContainsKey(XmlConstants.CREATED_ON.LocalName)) { MemberConfig createdOnMemberConfig = ReadUniqueMemberConfig(XmlConstants.CREATED_ON.LocalName, attributeMap); entityConfig.CreatedOnMemberConfig = createdOnMemberConfig; } if (attributeMap.ContainsKey(XmlConstants.UPDATED_BY.LocalName)) { MemberConfig updatedByMemberConfig = ReadUniqueMemberConfig(XmlConstants.UPDATED_BY.LocalName, attributeMap); entityConfig.UpdatedByMemberConfig = updatedByMemberConfig; } if (attributeMap.ContainsKey(XmlConstants.UPDATED_ON.LocalName)) { MemberConfig updatedOnMemberConfig = ReadUniqueMemberConfig(XmlConstants.UPDATED_ON.LocalName, attributeMap); entityConfig.UpdatedOnMemberConfig = updatedOnMemberConfig; } if (attributeMap.ContainsKey(XmlConstants.BASIC.LocalName)) { IList <XElement> basicAttrs = attributeMap.Get(XmlConstants.BASIC.LocalName); for (int j = basicAttrs.Count; j-- > 0;) { XElement memberElement = basicAttrs[j]; MemberConfig memberConfig = ReadMemberConfig(memberElement); entityConfig.AddMemberConfig(memberConfig); } } if (attributeMap.ContainsKey(XmlConstants.IGNORE.LocalName)) { IList <XElement> ignoreAttrs = attributeMap.Get(XmlConstants.IGNORE.LocalName); for (int j = ignoreAttrs.Count; j-- > 0;) { XElement ignoreElement = ignoreAttrs[j]; MemberConfig memberConfig = ReadMemberConfig(ignoreElement); memberConfig.Ignore = true; entityConfig.AddMemberConfig(memberConfig); } } if (attributeMap.ContainsKey(XmlConstants.RELATION.LocalName)) { IList <XElement> relationAttrs = attributeMap.Get(XmlConstants.RELATION.LocalName); for (int j = relationAttrs.Count; j-- > 0;) { XElement relationElement = relationAttrs[j]; IRelationConfig relationConfig = ReadRelationConfig(relationElement, nameToLinkMap); entityConfig.AddRelationConfig(relationConfig); } } } entityConfig.VersionRequired = versionRequired; return(entityConfig); } catch (Exception e) { throw RuntimeExceptionUtil.Mask(e, "Error occured while processing mapping for entity: " + entityTypeName); } }