Package org.hibernate.envers.internal.entities

Examples of org.hibernate.envers.internal.entities.EntityConfiguration


   * @param entityName Entity name.
   *
   * @return Entity class, name and information whether it is audited or not.
   */
  protected EntityInfo getEntityInfo(AuditConfiguration verCfg, String entityName) {
    EntityConfiguration entCfg = verCfg.getEntCfg().get( entityName );
    boolean isRelationAudited = true;
    if ( entCfg == null ) {
      // a relation marked as RelationTargetAuditMode.NOT_AUDITED
      entCfg = verCfg.getEntCfg().getNotVersionEntityConfiguration( entityName );
      isRelationAudited = false;
    }
    final Class entityClass = ReflectionTools.loadClass( entCfg.getEntityClassName(), verCfg.getClassLoaderService() );
    return new EntityInfo( entityClass, entityName, isRelationAudited );
  }
View Full Code Here


    // 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
    final String parentEntityName = pc.getSuperclass().getEntityName();

    final EntityConfiguration parentConfiguration = entitiesConfigurations.get( parentEntityName );
    if ( parentConfiguration == null ) {
      throw new MappingException(
          "Entity '" + pc.getEntityName() + "' is audited, but its superclass: '" +
              parentEntityName + "' is not."
      );
    }

    final ExtendedPropertyMapper parentPropertyMapper = parentConfiguration.getPropertyMapper();
    final ExtendedPropertyMapper propertyMapper = new SubclassPropertyMapper(
        new MultiPropertyMapper(),
        parentPropertyMapper
    );
View Full Code Here

        return;
      }

      final ExtendedPropertyMapper propertyMapper = null;
      final String parentEntityName = null;
      final EntityConfiguration entityCfg = new EntityConfiguration(
          entityName,
          pc.getClassName(),
          idMapper,
          propertyMapper,
          parentEntityName
      );
      notAuditedEntitiesConfigurations.put( entityName, entityCfg );
      return;
    }

    final String entityName = pc.getEntityName();
    LOG.debugf( "Generating first-pass auditing mapping for entity %s", entityName );

    final String auditEntityName = verEntCfg.getAuditEntityName( entityName );
    final String auditTableName = verEntCfg.getAuditTableName( entityName, pc.getTable().getName() );

    // Registering the audit entity name, now that it is known
    auditEntityNameRegister.register( auditEntityName );

    final AuditTableData auditTableData = new AuditTableData( auditEntityName, auditTableName, schema, catalog );

    // Generating a mapping for the id
    final IdMappingData idMapper = idMetadataGenerator.addId( pc, true );

    final InheritanceType inheritanceType = InheritanceType.get( pc );

    // These properties will be read from the mapping data
    final Element classMapping;
    final ExtendedPropertyMapper propertyMapper;
    final String parentEntityName;

    final Triple<Element, ExtendedPropertyMapper, String> mappingData;

    // Reading the mapping data depending on inheritance type (if any)
    switch ( inheritanceType ) {
      case NONE:
        mappingData = generateMappingData( pc, xmlMappingData, auditTableData, idMapper );
        break;

      case SINGLE:
        mappingData = generateInheritanceMappingData( pc, xmlMappingData, auditTableData, "subclass" );
        break;

      case JOINED:
        mappingData = generateInheritanceMappingData( pc, xmlMappingData, auditTableData, "joined-subclass" );

        // Adding the "key" element with all id columns...
        final Element keyMapping = mappingData.getFirst().addElement( "key" );
        MetadataTools.addColumns( keyMapping, pc.getTable().getPrimaryKey().columnIterator() );

        // ... and the revision number column, read from the revision info relation mapping.
        keyMapping.add( (Element) cloneAndSetupRevisionInfoRelationMapping().element( "column" ).clone() );
        break;

      case TABLE_PER_CLASS:
        mappingData = generateInheritanceMappingData( pc, xmlMappingData, auditTableData, "union-subclass" );
        break;

      default:
        throw new AssertionError( "Impossible enum value." );
    }

    classMapping = mappingData.getFirst();
    propertyMapper = mappingData.getSecond();
    parentEntityName = mappingData.getThird();

    xmlMappingData.setClassMapping( classMapping );

    // Mapping unjoined properties
    addProperties(
        classMapping, pc.getUnjoinedPropertyIterator(), propertyMapper,
        auditingData, pc.getEntityName(), xmlMappingData,
        true
    );

    // Creating and mapping joins (first pass)
    createJoins( pc, classMapping, auditingData );
    addJoins( pc, propertyMapper, auditingData, pc.getEntityName(), xmlMappingData, true );

    // Storing the generated configuration
    final EntityConfiguration entityCfg = new EntityConfiguration(
        auditEntityName,
        pc.getClassName(),
        idMapper,
        propertyMapper,
        parentEntityName
View Full Code Here

   */
  IdMappingData getReferencedIdMappingData(
      String entityName, String referencedEntityName,
      PropertyAuditingData propertyAuditingData,
      boolean allowNotAuditedTarget) {
    EntityConfiguration configuration = getEntitiesConfigurations().get( referencedEntityName );
    if ( configuration == null ) {
      final RelationTargetAuditMode relationTargetAuditMode = propertyAuditingData.getRelationTargetAuditMode();
      configuration = getNotAuditedEntitiesConfigurations().get( referencedEntityName );

      if ( configuration == null || !allowNotAuditedTarget || !RelationTargetAuditMode.NOT_AUDITED.equals(
          relationTargetAuditMode
      ) ) {
        throw new MappingException(
            "An audited relation from " + entityName + "."
                + propertyAuditingData.getName() + " to a not audited entity " + referencedEntityName + "!"
                + (allowNotAuditedTarget ?
                " Such mapping is possible, but has to be explicitly defined using @Audited(targetAuditMode = NOT_AUDITED)." :
                "")
        );
      }
    }

    return configuration.getIdMappingData();
  }
View Full Code Here

      CompositeMapperBuilder mapper,
      String entityName) {
    final OneToOne propertyValue = (OneToOne) value;
    final String owningReferencePropertyName = propertyValue.getReferencedPropertyName();

    final EntityConfiguration configuration = mainGenerator.getEntitiesConfigurations().get( entityName );
    if ( configuration == null ) {
      throw new MappingException( "An audited relation to a non-audited entity " + entityName + "!" );
    }

    final IdMappingData ownedIdMapping = configuration.getIdMappingData();

    if ( ownedIdMapping == null ) {
      throw new MappingException( "An audited relation to a non-audited entity " + entityName + "!" );
    }
View Full Code Here

   *
   * @return A found relation description corresponding to the given entity or {@code null}, if no description can
   *         be found.
   */
  private RelationDescription searchForRelationDescription(String entityName, String referencingPropertyName) {
    final EntityConfiguration configuration = getAuditConfiguration().getEntCfg().get( entityName );
    final RelationDescription rd = configuration.getRelationDescription( referencingPropertyName );
    if ( rd == null && configuration.getParentEntityName() != null ) {
      return searchForRelationDescription( configuration.getParentEntityName(), referencingPropertyName );
    }

    return rd;
  }
View Full Code Here

      CompositeMapperBuilder mapper,
      String entityName) {
    final OneToOne propertyValue = (OneToOne) value;
    final String owningReferencePropertyName = propertyValue.getReferencedPropertyName();

    final EntityConfiguration configuration = mainGenerator.getEntitiesConfigurations().get( entityName );
    if ( configuration == null ) {
      throw new MappingException( "An audited relation to a non-audited entity " + entityName + "!" );
    }

    final IdMappingData ownedIdMapping = configuration.getIdMappingData();

    if ( ownedIdMapping == null ) {
      throw new MappingException( "An audited relation to a non-audited entity " + entityName + "!" );
    }
View Full Code Here

    // 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
    final String parentEntityName = pc.getSuperclass().getEntityName();

    final EntityConfiguration parentConfiguration = entitiesConfigurations.get( parentEntityName );
    if ( parentConfiguration == null ) {
      throw new MappingException(
          "Entity '" + pc.getEntityName() + "' is audited, but its superclass: '" +
              parentEntityName + "' is not."
      );
    }

    final ExtendedPropertyMapper parentPropertyMapper = parentConfiguration.getPropertyMapper();
    final ExtendedPropertyMapper propertyMapper = new SubclassPropertyMapper(
        new MultiPropertyMapper(),
        parentPropertyMapper
    );
View Full Code Here

        return;
      }

      final ExtendedPropertyMapper propertyMapper = null;
      final String parentEntityName = null;
      final EntityConfiguration entityCfg = new EntityConfiguration(
          entityName,
          pc.getClassName(),
          idMapper,
          propertyMapper,
          parentEntityName
      );
      notAuditedEntitiesConfigurations.put( entityName, entityCfg );
      return;
    }

    final String entityName = pc.getEntityName();
    LOG.debugf( "Generating first-pass auditing mapping for entity %s", entityName );

    final String auditEntityName = verEntCfg.getAuditEntityName( entityName );
    final String auditTableName = verEntCfg.getAuditTableName( entityName, pc.getTable().getName() );

    // Registering the audit entity name, now that it is known
    auditEntityNameRegister.register( auditEntityName );

    final AuditTableData auditTableData = new AuditTableData( auditEntityName, auditTableName, schema, catalog );

    // Generating a mapping for the id
    final IdMappingData idMapper = idMetadataGenerator.addId( pc, true );

    final InheritanceType inheritanceType = InheritanceType.get( pc );

    // These properties will be read from the mapping data
    final Element classMapping;
    final ExtendedPropertyMapper propertyMapper;
    final String parentEntityName;

    final Triple<Element, ExtendedPropertyMapper, String> mappingData;

    // Reading the mapping data depending on inheritance type (if any)
    switch ( inheritanceType ) {
      case NONE:
        mappingData = generateMappingData( pc, xmlMappingData, auditTableData, idMapper );
        break;

      case SINGLE:
        mappingData = generateInheritanceMappingData( pc, xmlMappingData, auditTableData, "subclass" );
        break;

      case JOINED:
        mappingData = generateInheritanceMappingData( pc, xmlMappingData, auditTableData, "joined-subclass" );

        // Adding the "key" element with all id columns...
        final Element keyMapping = mappingData.getFirst().addElement( "key" );
        MetadataTools.addColumns( keyMapping, pc.getTable().getPrimaryKey().columnIterator() );

        // ... and the revision number column, read from the revision info relation mapping.
        keyMapping.add( (Element) cloneAndSetupRevisionInfoRelationMapping().element( "column" ).clone() );
        break;

      case TABLE_PER_CLASS:
        mappingData = generateInheritanceMappingData( pc, xmlMappingData, auditTableData, "union-subclass" );
        break;

      default:
        throw new AssertionError( "Impossible enum value." );
    }

    classMapping = mappingData.getFirst();
    propertyMapper = mappingData.getSecond();
    parentEntityName = mappingData.getThird();

    xmlMappingData.setClassMapping( classMapping );

    // Mapping unjoined properties
    addProperties(
        classMapping, pc.getUnjoinedPropertyIterator(), propertyMapper,
        auditingData, pc.getEntityName(), xmlMappingData,
        true
    );

    // Creating and mapping joins (first pass)
    createJoins( pc, classMapping, auditingData );
    addJoins( pc, propertyMapper, auditingData, pc.getEntityName(), xmlMappingData, true );

    // Storing the generated configuration
    final EntityConfiguration entityCfg = new EntityConfiguration(
        auditEntityName,
        pc.getClassName(),
        idMapper,
        propertyMapper,
        parentEntityName
View Full Code Here

   */
  IdMappingData getReferencedIdMappingData(
      String entityName, String referencedEntityName,
      PropertyAuditingData propertyAuditingData,
      boolean allowNotAuditedTarget) {
    EntityConfiguration configuration = getEntitiesConfigurations().get( referencedEntityName );
    if ( configuration == null ) {
      final RelationTargetAuditMode relationTargetAuditMode = propertyAuditingData.getRelationTargetAuditMode();
      configuration = getNotAuditedEntitiesConfigurations().get( referencedEntityName );

      if ( configuration == null || !allowNotAuditedTarget || !RelationTargetAuditMode.NOT_AUDITED.equals(
          relationTargetAuditMode
      ) ) {
        throw new MappingException(
            "An audited relation from " + entityName + "."
                + propertyAuditingData.getName() + " to a not audited entity " + referencedEntityName + "!"
                + (allowNotAuditedTarget ?
                " Such mapping is possible, but has to be explicitly defined using @Audited(targetAuditMode = NOT_AUDITED)." :
                "")
        );
      }
    }

    return configuration.getIdMappingData();
  }
View Full Code Here

TOP

Related Classes of org.hibernate.envers.internal.entities.EntityConfiguration

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.