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