Examples of MiddleComponentData


Examples of org.hibernate.envers.entities.mapper.relation.MiddleComponentData

        // in a join table, so the prefix value is arbitrary).
        MiddleIdData referencedIdData = new MiddleIdData(mainGenerator.getVerEntCfg(), referencedIdMapping,
                null, referencedEntityName);

        // Generating the element mapping.
        MiddleComponentData elementComponentData = new MiddleComponentData(
                new MiddleRelatedComponentMapper(referencedIdData), 0);

        // Generating the index mapping, if an index exists. It can only exists in case a javax.persistence.MapKey
        // annotation is present on the entity. So the middleEntityXml will be not be used. The queryGeneratorBuilder
        // will only be checked for nullnes.
        MiddleComponentData indexComponentData = addIndex(null, null);

        // Generating the query generator - it should read directly from the related entity.
        RelationQueryGenerator queryGenerator = new OneAuditEntityQueryGenerator(mainGenerator.getGlobalCfg(),
                mainGenerator.getVerEntCfg(), referencingIdData, referencedEntityName,
                referencedIdMapping.getIdMapper());
View Full Code Here

Examples of org.hibernate.envers.entities.mapper.relation.MiddleComponentData

        }

        // ******
        // Generating the element mapping.
        // ******
        MiddleComponentData elementComponentData = addValueToMiddleTable(propertyValue.getElement(), middleEntityXml,
                queryGeneratorBuilder, referencedPrefix, propertyAuditingData.getJoinTable().inverseJoinColumns());

        // ******
        // Generating the index mapping, if an index exists.
        // ******
        MiddleComponentData indexComponentData = addIndex(middleEntityXml, queryGeneratorBuilder);

        // ******
        // Generating the property mapper.
        // ******
        // Building the query generator.
View Full Code Here

Examples of org.hibernate.envers.entities.mapper.relation.MiddleComponentData

                IdMappingData referencedIdMapping = mainGenerator.getEntitiesConfigurations()
                        .get(referencedEntityName).getIdMappingData();
                int currentIndex = queryGeneratorBuilder == null ? 0 : queryGeneratorBuilder.getCurrentIndex();
                if ("".equals(mapKey)) {
                    // The key of the map is the id of the entity.
                    return new MiddleComponentData(new MiddleMapKeyIdComponentMapper(mainGenerator.getVerEntCfg(),
                            referencedIdMapping.getIdMapper()), currentIndex);
                } else {
                    // The key of the map is a property of the entity.
                    return new MiddleComponentData(new MiddleMapKeyPropertyComponentMapper(mapKey,
                            propertyAuditingData.getAccessType()), currentIndex);
                }
            }
        } else {
            // No index - creating a dummy mapper.
            return new MiddleComponentData(new MiddleDummyComponentMapper(), 0);
        }
    }
View Full Code Here

Examples of org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData

        referencedIdMapping,
        null, referencedEntityName
    );

    // Generating the element mapping.
    final MiddleComponentData elementComponentData = new MiddleComponentData(
        new MiddleRelatedComponentMapper( referencedIdData ), 0
    );

    // Generating the index mapping, if an index exists. It can only exists in case a javax.persistence.MapKey
    // annotation is present on the entity. So the middleEntityXml will be not be used. The queryGeneratorBuilder
    // will only be checked for nullnes.
    MiddleComponentData indexComponentData = addIndex( null, null );

    // Generating the query generator - it should read directly from the related entity.
    final RelationQueryGenerator queryGenerator = new OneAuditEntityQueryGenerator(
        mainGenerator.getGlobalCfg(),
        mainGenerator.getVerEntCfg(),
        mainGenerator.getAuditStrategy(),
        referencingIdData,
        referencedEntityName,
        referencedIdData,
        isEmbeddableElementType()
    );

    // Creating common mapper data.
    final CommonCollectionMapperData commonCollectionMapperData = new CommonCollectionMapperData(
        mainGenerator.getVerEntCfg(), referencedEntityName,
        propertyAuditingData.getPropertyData(),
        referencingIdData, queryGenerator
    );

    PropertyMapper fakeBidirectionalRelationMapper;
    PropertyMapper fakeBidirectionalRelationIndexMapper;
    if ( fakeOneToManyBidirectional ) {
      // In case of a fake many-to-one bidirectional relation, we have to generate a mapper which maps
      // the mapped-by property name to the id of the related entity (which is the owner of the collection).
      final String auditMappedBy = propertyAuditingData.getAuditMappedBy();

      // Creating a prefixed relation mapper.
      final IdMapper relMapper = referencingIdMapping.getIdMapper().prefixMappedProperties(
          MappingTools.createToOneRelationPrefix( auditMappedBy )
      );

      fakeBidirectionalRelationMapper = new ToOneIdMapper(
          relMapper,
          // The mapper will only be used to map from entity to map, so no need to provide other details
          // when constructing the PropertyData.
          new PropertyData( auditMappedBy, null, null, null ),
          referencingEntityName, false
      );

      // Checking if there's an index defined. If so, adding a mapper for it.
      if ( propertyAuditingData.getPositionMappedBy() != null ) {
        final String positionMappedBy = propertyAuditingData.getPositionMappedBy();
        fakeBidirectionalRelationIndexMapper = new SinglePropertyMapper(
            new PropertyData(
                positionMappedBy,
                null,
                null,
                null
            )
        );

        // Also, overwriting the index component data to properly read the index.
        indexComponentData = new MiddleComponentData(
            new MiddleStraightComponentMapper( positionMappedBy ),
            0
        );
      }
      else {
View Full Code Here

Examples of org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData

    }

    // ******
    // Generating the element mapping.
    // ******
    final MiddleComponentData elementComponentData = addValueToMiddleTable(
        propertyValue.getElement(),
        middleEntityXml,
        queryGeneratorBuilder,
        referencedPrefix,
        propertyAuditingData.getJoinTable().inverseJoinColumns()
    );

    // ******
    // Generating the index mapping, if an index exists.
    // ******
    final MiddleComponentData indexComponentData = addIndex( middleEntityXml, queryGeneratorBuilder );

    // ******
    // Generating the property mapper.
    // ******
    // Building the query generator.
View Full Code Here

Examples of org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData

        final IdMappingData referencedIdMapping = mainGenerator.getEntitiesConfigurations()
            .get( referencedEntityName ).getIdMappingData();
        final int currentIndex = queryGeneratorBuilder == null ? 0 : queryGeneratorBuilder.getCurrentIndex();
        if ( "".equals( mapKey ) ) {
          // The key of the map is the id of the entity.
          return new MiddleComponentData(
              new MiddleMapKeyIdComponentMapper(
                  mainGenerator.getVerEntCfg(),
                  referencedIdMapping.getIdMapper()
              ),
              currentIndex
          );
        }
        else {
          // The key of the map is a property of the entity.
          return new MiddleComponentData(
              new MiddleMapKeyPropertyComponentMapper(
                  mapKey,
                  propertyAuditingData.getAccessType()
              ),
              currentIndex
          );
        }
      }
    }
    else {
      // No index - creating a dummy mapper.
      return new MiddleComponentData( new MiddleDummyComponentMapper(), 0 );
    }
  }
View Full Code Here

Examples of org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData

          referencedEntityName
      );
      // And adding it to the generator builder.
      queryGeneratorBuilder.addRelation( referencedIdData );

      return new MiddleComponentData(
          new MiddleRelatedComponentMapper( referencedIdData ),
          queryGeneratorBuilder.getCurrentIndex()
      );
    }
    else if ( type instanceof ComponentType ) {
      // Collection of embeddable elements.
      final Component component = (Component) value;
      final Class componentClass = ReflectionTools.loadClass(
          component.getComponentClassName(),
          mainGenerator.getClassLoaderService()
      );
      final MiddleEmbeddableComponentMapper componentMapper = new MiddleEmbeddableComponentMapper(
          new MultiPropertyMapper(),
          componentClass
      );

      final Element parentXmlMapping = xmlMapping.getParent();
      final ComponentAuditingData auditData = new ComponentAuditingData();
      final ReflectionManager reflectionManager = mainGenerator.getCfg().getReflectionManager();

      new ComponentAuditedPropertiesReader(
          ModificationStore.FULL,
          new AuditedPropertiesReader.ComponentPropertiesSource( reflectionManager, component ),
          auditData, mainGenerator.getGlobalCfg(), reflectionManager, ""
      ).read();

      // Emulating first pass.
      for ( String auditedPropertyName : auditData.getPropertyNames() ) {
        final PropertyAuditingData nestedAuditingData = auditData.getPropertyAuditingData( auditedPropertyName );
        mainGenerator.addValue(
            parentXmlMapping,
            component.getProperty( auditedPropertyName ).getValue(),
            componentMapper,
            prefix, xmlMappingData,
            nestedAuditingData,
            true,
            true,
            true
        );
      }

      // Emulating second pass so that the relations can be mapped too.
      for ( String auditedPropertyName : auditData.getPropertyNames() ) {
        final PropertyAuditingData nestedAuditingData = auditData.getPropertyAuditingData( auditedPropertyName );
        mainGenerator.addValue(
            parentXmlMapping,
            component.getProperty( auditedPropertyName ).getValue(),
            componentMapper,
            referencingEntityName,
            xmlMappingData,
            nestedAuditingData,
            true,
            false,
            true
        );
      }

      // Add an additional column holding a number to make each entry unique within the set.
      // Embeddable properties may contain null values, so cannot be stored within composite primary key.
      if ( propertyValue.isSet() ) {
        final String setOrdinalPropertyName = mainGenerator.getVerEntCfg()
            .getEmbeddableSetOrdinalPropertyName();
        final Element ordinalProperty = MetadataTools.addProperty(
            xmlMapping, setOrdinalPropertyName, "integer", true, true
        );
        MetadataTools.addColumn(
            ordinalProperty, setOrdinalPropertyName, null, null, null, null, null, null, false
        );
      }

      return new MiddleComponentData( componentMapper, 0 );
    }
    else {
      // Last but one parameter: collection components are always insertable
      final boolean mapped = mainGenerator.getBasicMetadataGenerator().addBasic(
          xmlMapping,
          new PropertyAuditingData(
              prefix,
              "field",
              ModificationStore.FULL,
              RelationTargetAuditMode.AUDITED,
              null,
              null,
              false
          ),
          value,
          null,
          true,
          true
      );

      if ( mapped ) {
        // Simple values are always stored in the first item of the array returned by the query generator.
        return new MiddleComponentData(
            new MiddleSimpleComponentMapper( mainGenerator.getVerEntCfg(), prefix ),
            0
        );
      }
      else {
View Full Code Here

Examples of org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData

        referencedIdMapping,
        null, referencedEntityName
    );

    // Generating the element mapping.
    final MiddleComponentData elementComponentData = new MiddleComponentData(
        new MiddleRelatedComponentMapper( referencedIdData ), 0
    );

    // Generating the index mapping, if an index exists. It can only exists in case a javax.persistence.MapKey
    // annotation is present on the entity. So the middleEntityXml will be not be used. The queryGeneratorBuilder
    // will only be checked for nullnes.
    MiddleComponentData indexComponentData = addIndex( null, null );

    // Generating the query generator - it should read directly from the related entity.
    final RelationQueryGenerator queryGenerator = new OneAuditEntityQueryGenerator(
        mainGenerator.getGlobalCfg(),
        mainGenerator.getVerEntCfg(),
        mainGenerator.getAuditStrategy(),
        referencingIdData,
        referencedEntityName,
        referencedIdData,
        isEmbeddableElementType()
    );

    // Creating common mapper data.
    final CommonCollectionMapperData commonCollectionMapperData = new CommonCollectionMapperData(
        mainGenerator.getVerEntCfg(), referencedEntityName,
        propertyAuditingData.getPropertyData(),
        referencingIdData, queryGenerator
    );

    PropertyMapper fakeBidirectionalRelationMapper;
    PropertyMapper fakeBidirectionalRelationIndexMapper;
    if ( fakeOneToManyBidirectional ) {
      // In case of a fake many-to-one bidirectional relation, we have to generate a mapper which maps
      // the mapped-by property name to the id of the related entity (which is the owner of the collection).
      final String auditMappedBy = propertyAuditingData.getAuditMappedBy();

      // Creating a prefixed relation mapper.
      final IdMapper relMapper = referencingIdMapping.getIdMapper().prefixMappedProperties(
          MappingTools.createToOneRelationPrefix( auditMappedBy )
      );

      fakeBidirectionalRelationMapper = new ToOneIdMapper(
          relMapper,
          // The mapper will only be used to map from entity to map, so no need to provide other details
          // when constructing the PropertyData.
          new PropertyData( auditMappedBy, null, null, null ),
          referencingEntityName, false
      );

      // Checking if there's an index defined. If so, adding a mapper for it.
      if ( propertyAuditingData.getPositionMappedBy() != null ) {
        final String positionMappedBy = propertyAuditingData.getPositionMappedBy();
        fakeBidirectionalRelationIndexMapper = new SinglePropertyMapper(
            new PropertyData(
                positionMappedBy,
                null,
                null,
                null
            )
        );

        // Also, overwriting the index component data to properly read the index.
        indexComponentData = new MiddleComponentData(
            new MiddleStraightComponentMapper( positionMappedBy ),
            0
        );
      }
      else {
View Full Code Here

Examples of org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData

    }

    // ******
    // Generating the element mapping.
    // ******
    final MiddleComponentData elementComponentData = addValueToMiddleTable(
        propertyValue.getElement(),
        middleEntityXml,
        queryGeneratorBuilder,
        referencedPrefix,
        propertyAuditingData.getJoinTable().inverseJoinColumns()
    );

    // ******
    // Generating the index mapping, if an index exists.
    // ******
    final MiddleComponentData indexComponentData = addIndex( middleEntityXml, queryGeneratorBuilder );

    // ******
    // Generating the property mapper.
    // ******
    // Building the query generator.
View Full Code Here

Examples of org.hibernate.envers.internal.entities.mapper.relation.MiddleComponentData

        final IdMappingData referencedIdMapping = mainGenerator.getEntitiesConfigurations()
            .get( referencedEntityName ).getIdMappingData();
        final int currentIndex = queryGeneratorBuilder == null ? 0 : queryGeneratorBuilder.getCurrentIndex();
        if ( "".equals( mapKey ) ) {
          // The key of the map is the id of the entity.
          return new MiddleComponentData(
              new MiddleMapKeyIdComponentMapper(
                  mainGenerator.getVerEntCfg(),
                  referencedIdMapping.getIdMapper()
              ),
              currentIndex
          );
        }
        else {
          // The key of the map is a property of the entity.
          return new MiddleComponentData(
              new MiddleMapKeyPropertyComponentMapper(
                  mapKey,
                  propertyAuditingData.getAccessType()
              ),
              currentIndex
          );
        }
      }
    }
    else {
      // No index - creating a dummy mapper.
      return new MiddleComponentData( new MiddleDummyComponentMapper(), 0 );
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.