org.hibernate.search.engine.metadata.impl.ParseContext Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-search-engine Show documentation
Show all versions of hibernate-search-engine Show documentation
Core of the Object/Lucene mapper, query engine and index management
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.search.engine.metadata.impl;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
import org.hibernate.annotations.common.reflection.XClass;
import org.hibernate.search.indexes.spi.IndexManagerType;
/**
* Collects context information needed during the processing of the annotations.
*
* @author Hardy Ferentschik
*/
public class ParseContext {
private final Set processedClasses = new LinkedHashSet<>();
private final Set spatialNames = new TreeSet<>();
private final Set unqualifiedCollectedCollectionRoles = new LinkedHashSet<>();
private IndexManagerType indexManagerType;
private XClass currentClass;
private int level = 0;
private int maxLevel = Integer.MAX_VALUE;
private boolean explicitDocumentId = false;
private DocumentFieldPath idFieldPath;
private boolean includeEmbeddedObjectId = false;
public IndexManagerType getIndexManagerType() {
return indexManagerType;
}
void setIndexManagerType(IndexManagerType indexManagerType) {
this.indexManagerType = indexManagerType;
}
/**
* If the {@code IndexManager} type is not defined, we skip the {@code FieldBridge} construction.
*
* Typically the {@code IndexManager} type is not defined when building the metadata for {@code ContainedIn}
* entities. See {@link MetadataProvider#getTypeMetadataForContainedIn(Class)} for more information.
*/
boolean skipFieldBridges() {
return indexManagerType == null;
}
/**
* If the {@code IndexManager} type is not defined, we skip the {@code NullMarkerCodec} construction.
*
* Typically the {@code IndexManager} type is not defined when building the metadata for {@code ContainedIn}
* entities. See {@link MetadataProvider#getTypeMetadataForContainedIn(Class)} for more information.
*/
boolean skipNullMarkerCodec() {
return indexManagerType == null;
}
/**
* If the {@code IndexManager} type is not defined, we skip the {@code Analyzer} construction.
*
* Typically the {@code IndexManager} type is not defined when building the metadata for {@code ContainedIn}
* entities. See {@link MetadataProvider#getTypeMetadataForContainedIn(Class)} for more information.
*/
boolean skipAnalyzers() {
return indexManagerType == null;
}
boolean hasBeenProcessed(XClass processedClass) {
return processedClasses.contains( processedClass );
}
void processingClass(XClass processedClass) {
processedClasses.add( processedClass );
}
void removeProcessedClass(XClass processedClass) {
processedClasses.remove( processedClass );
}
boolean isSpatialNameUsed(DocumentFieldPath path) {
return spatialNames.contains( path.getAbsoluteName() );
}
void markSpatialNameAsUsed(DocumentFieldPath path) {
spatialNames.add( path.getAbsoluteName() );
}
public XClass getCurrentClass() {
return currentClass;
}
public void setCurrentClass(XClass currentClass) {
this.currentClass = currentClass;
}
boolean isMaxLevelReached() {
return level > maxLevel;
}
public int getMaxLevel() {
return maxLevel;
}
public void setMaxLevel(int newMaxLevel) {
this.maxLevel = newMaxLevel;
}
public int getLevel() {
return level;
}
public void incrementLevel() {
this.level++;
}
public void decrementLevel() {
this.level--;
}
public DocumentFieldPath getIdFieldPath() {
return idFieldPath;
}
public void setIdFieldPath(DocumentFieldPath idFieldPath) {
this.idFieldPath = idFieldPath;
}
public boolean isExplicitDocumentId() {
return explicitDocumentId;
}
public void setExplicitDocumentId(boolean explicitDocumentId) {
this.explicitDocumentId = explicitDocumentId;
}
public Set getCollectedUnqualifiedCollectionRoles() {
return unqualifiedCollectedCollectionRoles;
}
public void collectUnqualifiedCollectionRole(String unqualifiedCollectionRole) {
unqualifiedCollectedCollectionRoles.add( unqualifiedCollectionRole );
}
public boolean includeEmbeddedObjectId() {
return includeEmbeddedObjectId;
}
public void setIncludeEmbeddedObjectId(boolean includeEmbeddedObjectId) {
this.includeEmbeddedObjectId = includeEmbeddedObjectId;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy