pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / analyzers / common / src / java / org / apache / lucene / analysis / sinks / DateRecognizerSinkFilter.java
1 package org.apache.lucene.analysis.sinks;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import java.text.DateFormat;
21 import java.text.ParseException;
22 import java.util.Date;
23
24 import org.apache.lucene.analysis.TeeSinkTokenFilter.SinkFilter;
25 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
26 import org.apache.lucene.util.AttributeSource;
27
28 /**
29  * Attempts to parse the {@link org.apache.lucene.analysis.Token#termBuffer()} as a Date using a {@link java.text.DateFormat}.
30  * If the value is a Date, it will add it to the sink.
31  * <p/> 
32  *
33  **/
34 public class DateRecognizerSinkFilter extends SinkFilter {
35   public static final String DATE_TYPE = "date";
36
37   protected DateFormat dateFormat;
38   protected CharTermAttribute termAtt;
39   
40   /**
41    * Uses {@link java.text.SimpleDateFormat#getDateInstance()} as the {@link java.text.DateFormat} object.
42    */
43   public DateRecognizerSinkFilter() {
44     this(DateFormat.getDateInstance());
45   }
46   
47   public DateRecognizerSinkFilter(DateFormat dateFormat) {
48     this.dateFormat = dateFormat; 
49   }
50
51   @Override
52   public boolean accept(AttributeSource source) {
53     if (termAtt == null) {
54       termAtt = source.addAttribute(CharTermAttribute.class);
55     }
56     try {
57       Date date = dateFormat.parse(termAtt.toString());//We don't care about the date, just that we can parse it as a date
58       if (date != null) {
59         return true;
60       }
61     } catch (ParseException e) {
62   
63     }
64     
65     return false;
66   }
67
68 }