private Triple<XmlElement, IExtendedPropertyMapper, String> GenerateInheritanceMappingData( PersistentClass pc, EntityXmlMappingData xmlMappingData, AuditTableData auditTableData, String inheritanceMappingType) { String extendsEntityName = VerEntCfg.GetAuditEntityName(pc.Superclass.EntityName); XmlElement class_mapping = MetadataTools.CreateSubclassEntity(xmlMappingData.MainXmlMapping, inheritanceMappingType, auditTableData, extendsEntityName, pc.DiscriminatorValue); // The id and revision type is already mapped in the parent // Getting the property mapper of the parent - when mapping properties, they need to be included String parentEntityName = pc.Superclass.EntityName; EntityConfiguration parentConfiguration = EntitiesConfigurations[parentEntityName]; if (parentConfiguration == null) { throw new MappingException("Entity '" + pc.EntityName + "' is audited, but its superclass: '" + parentEntityName + "' is not."); } IExtendedPropertyMapper parentPropertyMapper = parentConfiguration.PropertyMapper; IExtendedPropertyMapper propertyMapper = new SubclassPropertyMapper(new MultiPropertyMapper(), parentPropertyMapper); return Triple<XmlElement, IExtendedPropertyMapper, String>.Make<XmlElement, IExtendedPropertyMapper, String>(class_mapping, propertyMapper, parentEntityName); }
//@SuppressWarnings({"unchecked"}) private Triple<XmlElement, IExtendedPropertyMapper, String> GenerateMappingData( PersistentClass pc, EntityXmlMappingData xmlMappingData, AuditTableData auditTableData, IdMappingData idMapper) { bool hasDiscriminator = pc.Discriminator != null; XmlElement class_mapping = MetadataTools.CreateEntity(xmlMappingData.MainXmlMapping, auditTableData, hasDiscriminator ? pc.DiscriminatorValue : null); IExtendedPropertyMapper propertyMapper = new MultiPropertyMapper(); // Checking if there is a discriminator column if (hasDiscriminator) { XmlElement discriminator_element = class_mapping.OwnerDocument.CreateElement("discriminator"); class_mapping.AppendChild(discriminator_element); MetadataTools.AddColumns(discriminator_element, (IEnumerator<ISelectable>)pc.Discriminator.ColumnIterator.GetEnumerator()); discriminator_element.SetAttribute("type", pc.Discriminator.Type.Name); } InheritanceType.Type parentInheritance = InheritanceType.GetForParent(pc); switch (parentInheritance) { case InheritanceType.Type.NONE: break; case InheritanceType.Type.SINGLE: AddSingleInheritancePersisterHack(class_mapping); break; case InheritanceType.Type.JOINED: AddJoinedInheritancePersisterHack(class_mapping); break; case InheritanceType.Type.TABLE_PER_CLASS: AddTablePerClassInheritancePersisterHack(class_mapping); break; } // Adding the id mapping XmlNode xmlMp = class_mapping.OwnerDocument.ImportNode(idMapper.XmlMapping,true); class_mapping.AppendChild(xmlMp); // Adding the "revision type" property AddRevisionType(class_mapping); return Triple<XmlElement, IExtendedPropertyMapper, string>.Make<XmlElement, IExtendedPropertyMapper, string>(class_mapping, propertyMapper, null); }
public bool Contains(String entityName, long revision, Object id) { return(cache.ContainsKey(Triple <String, long, Object> .Make(entityName, revision, id))); }
public void Add(String entityName, long revision, Object id, Object entity) { cache.Add(Triple <String, long, Object> .Make(entityName, revision, id), entity); }
public Object this[String entityName, long revision, Object id] { get { return(cache[Triple <String, long, Object> .Make(entityName, revision, id)]); } }
// Projection on this property public Triple <String, String, Boolean> GetData(AuditConfiguration auditCfg) { return(Triple <String, String, Boolean> .Make <String, String, Boolean>(null, propertyNameGetter.Get(auditCfg), false)); }
public Triple <String, String, Boolean> GetData(AuditConfiguration auditCfg) { String propertyName = propertyNameGetter.Get(auditCfg); return(Triple <String, String, Boolean> .Make(function, propertyName, distinct)); }