]> source.dussan.org Git - archiva.git/blob
169058be1146d6997f4af81390a464936769e334
[archiva.git] /
1 package org.apache.maven.archiva.indexer.lucene;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.commons.lang.StringUtils;
23 import org.apache.lucene.document.Document;
24 import org.apache.lucene.document.Field;
25
26 import java.util.List;
27
28 /**
29  * LuceneDocumentMaker - a utility class for making lucene documents. 
30  *
31  * @version $Id$
32  */
33 public class LuceneDocumentMaker
34 {
35     public static final String PRIMARY_KEY = "pk";
36     
37     public static final String REPOSITORY_ID = "repoId";
38
39     private Document document;
40
41     /**
42      * Construct a LuceneDocumentMaker based on the record provider.
43      * 
44      * @param record the record.
45      * @throws IllegalArgumentException if the primary key is invalid.
46      */
47     public LuceneDocumentMaker( LuceneRepositoryContentRecord record ) throws IllegalArgumentException
48     {
49         if ( record == null )
50         {
51             throw new IllegalArgumentException( "Not allowed to have a null record provider." );
52         }
53
54         String primaryKey = record.getPrimaryKey();
55
56         if ( StringUtils.isBlank( primaryKey ) )
57         {
58             throw new IllegalArgumentException( "Not allowed to have a blank primary key." );
59         }
60
61         String repositoryId = record.getRepositoryId();
62         
63         if ( StringUtils.isBlank( repositoryId ) )
64         {
65             throw new IllegalArgumentException( "Not allowed to have a blank repository id." );
66         }
67
68         document = new Document();
69
70         document.add( new Field( PRIMARY_KEY, primaryKey, Field.Store.NO, Field.Index.UN_TOKENIZED ) );
71         document.add( new Field( REPOSITORY_ID, repositoryId, Field.Store.YES, Field.Index.UN_TOKENIZED ) );
72     }
73
74     public LuceneDocumentMaker addFieldTokenized( String key, String value )
75     {
76         if ( value != null )
77         {
78             document.add( new Field( key, value, Field.Store.YES, Field.Index.TOKENIZED ) );
79         }
80
81         return this;
82     }
83
84     public LuceneDocumentMaker addFieldTokenized( String key, List list )
85     {
86         if ( ( list != null ) && ( !list.isEmpty() ) )
87         {
88             return addFieldTokenized( key, StringUtils.join( list.iterator(), "\n" ) );
89         }
90
91         return this;
92     }
93
94     public LuceneDocumentMaker addFieldUntokenized( String name, String value )
95     {
96         if ( value != null )
97         {
98             document.add( new Field( name, value, Field.Store.YES, Field.Index.UN_TOKENIZED ) );
99         }
100
101         return this;
102     }
103
104     public LuceneDocumentMaker addFieldExact( String name, String value )
105     {
106         if ( value != null )
107         {
108             document.add( new Field( name, value, Field.Store.NO, Field.Index.UN_TOKENIZED ) );
109         }
110
111         return this;
112     }
113
114     public Document getDocument()
115     {
116         return this.document;
117     }
118 }