1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portal.search.lucene;
21  
22  import com.liferay.portal.kernel.util.InstancePool;
23  import com.liferay.portal.util.PropsValues;
24  
25  import java.io.File;
26  import java.io.IOException;
27  import java.io.InputStream;
28  
29  import java.util.Date;
30  
31  import org.apache.lucene.document.DateTools;
32  import org.apache.lucene.document.Field;
33  
34  /**
35   * <a href="LuceneFields.java.html"><b><i>View Source</i></b></a>
36   *
37   * @author Brian Wing Shun Chan
38   *
39   */
40  public class LuceneFields {
41  
42      public static String getUID(String portletId, long field1) {
43          return getUID(portletId, String.valueOf(field1));
44      }
45  
46      public static String getUID(String portletId, Long field1) {
47          return getUID(portletId, field1.longValue());
48      }
49  
50      public static String getUID(String portletId, String field1) {
51          return getUID(portletId, field1, null);
52      }
53  
54      public static String getUID(
55          String portletId, long field1, String field2) {
56  
57          return getUID(portletId, String.valueOf(field1), field2);
58      }
59  
60      public static String getUID(
61          String portletId, Long field1, String field2) {
62  
63          return getUID(portletId, field1.longValue(), field2);
64      }
65  
66      public static String getUID(
67          String portletId, String field1, String field2) {
68  
69          return getUID(portletId, field1, field2, null);
70      }
71  
72      public static String getUID(
73          String portletId, String field1, String field2, String field3) {
74  
75          String uid = portletId + _UID_PORTLET + field1;
76  
77          if (field2 != null) {
78              uid += _UID_FIELD + field2;
79          }
80  
81          if (field3 != null) {
82              uid += _UID_FIELD + field3;
83          }
84  
85          return uid;
86      }
87  
88      public static Field getDate(String field) {
89          return getDate(field, new Date());
90      }
91  
92      public static Field getDate(String field, Date date) {
93          if (date == null) {
94              return getDate(field);
95          }
96          else {
97              return new Field(
98                  field,
99                  DateTools.dateToString(date, DateTools.Resolution.SECOND),
100                 Field.Store.YES, Field.Index.UN_TOKENIZED);
101         }
102     }
103 
104     public static Field getFile(String field, InputStream is, String fileExt) {
105         LuceneFileExtractor fileExtractor =
106             (LuceneFileExtractor)InstancePool.get(
107                 PropsValues.LUCENE_FILE_EXTRACTOR);
108 
109         return fileExtractor.getFile(field, is, fileExt);
110     }
111 
112     public static Field getFile(String field, byte[] bytes, String fileExt) {
113         LuceneFileExtractor fileExtractor =
114             (LuceneFileExtractor)InstancePool.get(
115                 PropsValues.LUCENE_FILE_EXTRACTOR);
116 
117         return fileExtractor.getFile(field, bytes, fileExt);
118     }
119 
120     public static Field getFile(String field, File file, String fileExt)
121         throws IOException {
122 
123         LuceneFileExtractor fileExtractor =
124             (LuceneFileExtractor)InstancePool.get(
125                 PropsValues.LUCENE_FILE_EXTRACTOR);
126 
127         return fileExtractor.getFile(field, file, fileExt);
128     }
129 
130     public static Field getKeyword(String field, double keyword) {
131         return getKeyword(field, String.valueOf(keyword));
132     }
133 
134     public static Field getKeyword(String field, long keyword) {
135         return getKeyword(field, String.valueOf(keyword));
136     }
137 
138     public static Field getKeyword(String field, Long keyword) {
139         return getKeyword(field, keyword.longValue());
140     }
141 
142     public static Field getKeyword(String field, String keyword) {
143         //keyword = KeywordsUtil.escape(keyword);
144 
145         Field fieldObj = new Field(
146             field, keyword, Field.Store.YES, Field.Index.UN_TOKENIZED);
147 
148         //fieldObj.setBoost(0);
149 
150         return fieldObj;
151     }
152 
153     public static Field getText(String field, String text) {
154         return new Field(field, text, Field.Store.YES, Field.Index.TOKENIZED);
155     }
156 
157     public static Field getText(String field, StringBuilder sb) {
158         return getText(field, sb.toString());
159     }
160 
161     private static final String _UID_PORTLET = "_PORTLET_";
162 
163     private static final String _UID_FIELD = "_FIELD_";
164 
165 }