Skip to content

Commit

Permalink
HSEARCH-3776 Simplify LuceneIndexingParameters
Browse files Browse the repository at this point in the history
  • Loading branch information
yrodiere committed Apr 20, 2020
1 parent a609ccd commit 0e4c926
Showing 1 changed file with 19 additions and 81 deletions.
Expand Up @@ -6,7 +6,6 @@
*/
package org.hibernate.search.backend.lucene.lowlevel.writer.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.search.engine.cfg.spi.ConfigurationPropertySource;
Expand All @@ -16,9 +15,6 @@

/**
* Wrapper class around the Lucene indexing parameters defined in IndexWriterSetting.
* <p>In previous versions of Hibernate Search you could set different values for batch
* or transactional properties, these are now unified as different sets don't apply to
* the internal design anymore.</p>
*
* @author Hardy Ferentschik
* @author Sanne Grinovero
Expand All @@ -28,95 +24,37 @@ public class LuceneIndexingParameters {
// property path keywords
public static final String PROP_GROUP = "indexwriter";

private final ParameterSet indexParameters;
private final List<IndexWriterSettingValue<?>> values;

public LuceneIndexingParameters(ConfigurationPropertySource propertySource) {
ConfigurationPropertySource indexingParameters = propertySource.withMask( PROP_GROUP );
indexParameters = new ParameterSet( indexingParameters );
}

public ParameterSet getIndexParameters() {
return indexParameters;
values = IndexWriterSettings.extractAll( indexingParameters );
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append( "LuceneIndexingParameters{" );
sb.append( indexParameters );
sb.append( '}' );
return sb.toString();
return "LuceneIndexingParameters{" + values + '}';
}

public static class ParameterSet implements Serializable {

private static final long serialVersionUID = -6121723702279869524L;

private final List<IndexWriterSettingValue<?>> values;

public ParameterSet(ConfigurationPropertySource prop) {
values = IndexWriterSettings.extractAll( prop );
}

/**
* Applies the parameters represented by this to a writer.
* Undefined parameters are not set, leaving the lucene default.
*
* @param writerConfig the IndexWriter configuration whereto the parameters will be applied.
*/
public void applyToWriter(IndexWriterConfig writerConfig) {
for ( IndexWriterSettingValue<?> value : values ) {
value.applySetting( writerConfig );
}
}

/**
* Creates a new LogByteSizeMergePolicy as configured by this property set.
* @return a new LogByteSizeMergePolicy instance.
*/
public LogByteSizeMergePolicy getNewMergePolicy() {
LogByteSizeMergePolicy logByteSizeMergePolicy = new LogByteSizeMergePolicy();
for ( IndexWriterSettingValue<?> value : values ) {
value.applySetting( logByteSizeMergePolicy );
}
return logByteSizeMergePolicy;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + values.hashCode();
return result;
}

@Override
public boolean equals(Object obj) {
if ( this == obj ) {
return true;
}
if ( obj == null ) {
return false;
}
if ( getClass() != obj.getClass() ) {
return false;
}
final ParameterSet other = (ParameterSet) obj;
return values.equals( other.values );
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append( "ParameterSet" );
sb.append( "{values=" ).append( values );
sb.append( '}' );
return sb.toString();
/**
* Applies the parameters represented by this to a writer.
* Undefined parameters are not set, leaving the lucene default.
*
* @param writerConfig the IndexWriter configuration whereto the parameters will be applied.
*/
public void applyToWriter(IndexWriterConfig writerConfig) {
for ( IndexWriterSettingValue<?> value : values ) {
value.applySetting( writerConfig );
}
writerConfig.setMergePolicy( createMergePolicy() );
}

public void applyToWriter(IndexWriterConfig writerConfig) {
getIndexParameters().applyToWriter( writerConfig );
private LogByteSizeMergePolicy createMergePolicy() {
LogByteSizeMergePolicy logByteSizeMergePolicy = new LogByteSizeMergePolicy();
for ( IndexWriterSettingValue<?> value : values ) {
value.applySetting( logByteSizeMergePolicy );
}
return logByteSizeMergePolicy;
}

}

0 comments on commit 0e4c926

Please sign in to comment.