package fr.openwide.core.jpa.search.bridge;
import org.apache.lucene.document.Document;
import org.hibernate.search.bridge.FieldBridge;
import org.hibernate.search.bridge.LuceneOptions;
import org.hibernate.search.bridge.StringBridge;
import fr.openwide.core.jpa.business.generic.model.GenericEntityReference;
public class GenericEntityReferenceFieldBridge implements FieldBridge, StringBridge {
@Override
public String objectToString(Object object) {
if (object == null) {
return null;
}
if (!(object instanceof GenericEntityReference)) {
throw new IllegalArgumentException("This FieldBridge only supports GenericEntityReference properties.");
}
GenericEntityReference<?, ?> entityReference = (GenericEntityReference<?, ?>) object;
Object id = entityReference.getId();
Class<?> clazz = entityReference.getType();
if (clazz == null) {
return null;
} else {
return clazz.getCanonicalName() + "|" + id.toString();
}
}
@Override
public void set(String name, Object value, Document document, LuceneOptions luceneOptions) {
if (value == null) {
return;
}
luceneOptions.addFieldToDocument(name, objectToString(value), document);
}
}