Author: epbernard Date: 2006-06-10 23:50:42 -0400 (Sat, 10 Jun 2006) New Revision: 10010 Added: trunk/HibernateExt/metadata/lib/lucene-core-2.0.0.jar Removed: trunk/HibernateExt/metadata/lib/lucene-1.4.3.jar Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java Log: ANN-367 Lucene version update ANN-368 Index keywork is now decapitalized Deleted: trunk/HibernateExt/metadata/lib/lucene-1.4.3.jar =================================================================== (Binary files differ) Added: trunk/HibernateExt/metadata/lib/lucene-core-2.0.0.jar =================================================================== (Binary files differ) Property changes on: trunk/HibernateExt/metadata/lib/lucene-core-2.0.0.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java 2006-06-10 03:24:05 UTC (rev 10009) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/DocumentBuilder.java 2006-06-11 03:50:42 UTC (rev 10010) @@ -9,6 +9,7 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; +import java.beans.Introspector; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Document; @@ -18,6 +19,7 @@ import org.hibernate.HibernateException; import org.hibernate.cfg.annotations.Version; +//TODO handle attribute (only getters are handled currently) public class DocumentBuilder<T> { static { @@ -36,10 +38,10 @@ private String idKeywordName; private final Analyzer analyzer; - public DocumentBuilder(Class clazz, Analyzer analyzer, File indexDir) { + public DocumentBuilder(Class<?> clazz, Analyzer analyzer, File indexDir) { //this.beanClass = clazz; this.analyzer = analyzer; - String fileName = getTypeName( clazz, ( (Indexed) clazz.getAnnotation( Indexed.class ) ).index() ); + String fileName = getTypeName( clazz, ( clazz.getAnnotation( Indexed.class ) ).index() ); file = new File( indexDir, fileName ); for ( Class currClass = clazz; currClass != null ; currClass = currClass.getSuperclass() ) { @@ -96,26 +98,27 @@ public Document getDocument(T instance, Serializable id) { Document doc = new Document(); - doc.add( Field.Keyword( idKeywordName, id.toString() ) ); + doc.add( new Field( idKeywordName, id.toString(), Field.Store.YES, Field.Index.UN_TOKENIZED ) ); for ( int i = 0; i < keywordNames.size() ; i++ ) { Member member = keywordGetters.get( i ); Object value = getValue( member, instance ); if ( value != null ) { - doc.add( Field.Keyword( keywordNames.get( i ), toString( value ) ) ); + doc.add( new Field( keywordNames.get( i ), toString( value ), Field.Store.YES, Field.Index.UN_TOKENIZED ) ); } } for ( int i = 0; i < textNames.size() ; i++ ) { Object value = getValue( textGetters.get( i ), instance ); if ( value != null ) { - doc.add( Field.Text( textNames.get( i ), toString( value ) ) ); + doc.add( new Field( textNames.get( i ), toString( value ), Field.Store.YES, Field.Index.TOKENIZED) ); } } for ( int i = 0; i < unstoredNames.size() ; i++ ) { Object value = getValue( unstoredGetters.get( i ), instance ); if ( value != null ) { - doc.add( Field.UnStored( unstoredNames.get( i ), toString( value ) ) ); + doc.add( new Field( unstoredNames.get( i ), toString( value ), Field.Store.NO, Field.Index.TOKENIZED ) ); } } + return doc; } @@ -128,8 +131,16 @@ } private static String getAttributeName(Method method, String name) { - //FIXME: yuk! what about "is" - return "".equals( name ) ? method.getName().substring( 3 ) : name; + if( ! "".equals( name ) ) return name; //explicit field name + + //decapitalize + String methodName = method.getName(); + //FIXME we probably should exclude methods not starting with "get" nor "is" + int startIndex = 3; + if( methodName.startsWith("is") ) { + startIndex = 2; + } + return Introspector.decapitalize( methodName.substring( startIndex ) ); } private static String getTypeName(Class clazz, String name) { Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java 2006-06-10 03:24:05 UTC (rev 10009) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/lucene/event/LuceneEventListener.java 2006-06-11 03:50:42 UTC (rev 10010) @@ -41,7 +41,7 @@ public class LuceneEventListener implements PostDeleteEventListener, PostInsertEventListener, PostUpdateEventListener, Initializable { - private Map<Class, DocumentBuilder> documentBuilders = new HashMap<Class, DocumentBuilder>(); + private Map<Class, DocumentBuilder<Object>> documentBuilders = new HashMap<Class, DocumentBuilder<Object>>(); private boolean initialized; private static final Log log = LogFactory.getLog( LuceneEventListener.class ); @@ -90,10 +90,10 @@ Iterator iter = cfg.getClassMappings(); while ( iter.hasNext() ) { PersistentClass clazz = (PersistentClass) iter.next(); - Class mappedClass = clazz.getMappedClass(); + Class<?> mappedClass = clazz.getMappedClass(); if ( mappedClass != null ) { if ( mappedClass.getAnnotation( Indexed.class ) != null ) { - final DocumentBuilder documentBuilder = new DocumentBuilder( mappedClass, analyzer, indexDir ); + final DocumentBuilder<Object> documentBuilder = new DocumentBuilder<Object>( mappedClass, analyzer, indexDir ); documentBuilders.put( mappedClass, documentBuilder ); // try { // IndexWriter iw = new IndexWriter( documentBuilder.getFile(), new StopAnalyzer(), true ); @@ -118,7 +118,7 @@ public void onPostInsert(PostInsertEvent event) { final Object entity = event.getEntity(); - DocumentBuilder builder = documentBuilders.get( entity.getClass() ); + DocumentBuilder<Object> builder = documentBuilders.get( entity.getClass() ); if ( builder != null ) { add( entity, builder, event.getId() ); } @@ -126,7 +126,7 @@ public void onPostUpdate(PostUpdateEvent event) { final Object entity = event.getEntity(); - DocumentBuilder builder = documentBuilders.get( entity.getClass() ); + DocumentBuilder<Object> builder = documentBuilders.get( entity.getClass() ); if ( builder != null ) { final Serializable id = event.getId(); remove( builder, id ); @@ -134,12 +134,12 @@ } } - private void remove(DocumentBuilder builder, Serializable id) { + private void remove(DocumentBuilder<?> builder, Serializable id) { Term term = builder.getTerm( id ); log.debug( "removing: " + term ); try { IndexReader reader = IndexReader.open( builder.getFile() ); - reader.delete( term ); + reader.deleteDocuments( term ); reader.close(); } catch (IOException ioe) { @@ -147,9 +147,11 @@ } } - private void add(final Object entity, final DocumentBuilder builder, final Serializable id) { + private void add(final Object entity, final DocumentBuilder<Object> builder, final Serializable id) { Document doc = builder.getDocument( entity, id ); - log.debug( "adding: " + doc ); + if( log.isDebugEnabled() ) { + log.debug( "adding: " + doc ); + } try { File file = builder.getFile(); IndexWriter writer = new IndexWriter( file, builder.getAnalyzer(), ! file.exists() ); Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java =================================================================== --- trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java 2006-06-10 03:24:05 UTC (rev 10009) +++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/lucene/LuceneTest.java 2006-06-11 03:50:42 UTC (rev 10010) @@ -78,7 +78,7 @@ docs = reader.termDocs( new Term( "Title", "Action" ) ); doc = reader.document( docs.doc() ); assertFalse( docs.next() ); - assertEquals( "1", doc.getField( "Id" ).stringValue() ); + assertEquals( "1", doc.getField( "id" ).stringValue() ); reader.close(); s = getSessions().openSession(); @@ -109,7 +109,7 @@ docs = reader.termDocs( new Term( "Title", "Seam" ) ); doc = reader.document( docs.doc() ); assertFalse( docs.next() ); - assertEquals( "2", doc.getField( "Id" ).stringValue() ); + assertEquals( "2", doc.getField( "id" ).stringValue() ); reader.close(); s = getSessions().openSession(); |