You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/04/06 00:50:11 UTC
svn commit: r762180 - in /lucene/solr/trunk/contrib/dataimporthandler:
CHANGES.txt
src/main/java/org/apache/solr/handler/dataimport/DateFormatTransformer.java
Author: shalin
Date: Sun Apr 5 22:50:10 2009
New Revision: 762180
URL: http://svn.apache.org/viewvc?rev=762180&view=rev
Log:
SOLR-1098 -- DateFormatTransformer can cache the format objects
Modified:
lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DateFormatTransformer.java
Modified: lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt?rev=762180&r1=762179&r2=762180&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt Sun Apr 5 22:50:10 2009
@@ -131,6 +131,9 @@
3. SOLR-1004: Check for abort more frequently during delta-imports.
(Marc Sturlese, shalin)
+4. SOLR-1098: DateFormatTransformer can cache the format objects.
+ (Noble Paul via shalin)
+
Bug Fixes
----------------------
1. SOLR-800: Deep copy collections to avoid ConcurrentModificationException in XPathEntityprocessor while streaming
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DateFormatTransformer.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DateFormatTransformer.java?rev=762180&r1=762179&r2=762180&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DateFormatTransformer.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DateFormatTransformer.java Sun Apr 5 22:50:10 2009
@@ -19,10 +19,8 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,6 +41,7 @@
* @since solr 1.3
*/
public class DateFormatTransformer extends Transformer {
+ private Map<String, SimpleDateFormat> fmtCache = new HashMap<String, SimpleDateFormat>();
private static final Logger LOG = LoggerFactory
.getLogger(DateFormatTransformer.class);
@@ -59,29 +58,35 @@
try {
Object o = aRow.get(srcCol);
if (o instanceof List) {
- List<String> inputs = (List<String>) o;
+ List inputs = (List) o;
List<Date> results = new ArrayList<Date>();
- for (String input : inputs) {
+ for (Object input : inputs) {
results.add(process(input, fmt));
}
aRow.put(column, results);
} else {
- if (o != null) {
- aRow.put(column, process(o.toString(), fmt));
+ if (o != null) {
+ aRow.put(column, process(o, fmt));
}
}
} catch (ParseException e) {
- LOG.warn( "Could not parse a Date field ", e);
+ LOG.warn("Could not parse a Date field ", e);
}
}
return aRow;
}
- private Date process(String value, String format) throws ParseException {
- if (value == null || value.trim().length() == 0)
+ private Date process(Object value, String format) throws ParseException {
+ if (value == null) return null;
+ String strVal = value.toString().trim();
+ if (strVal.length() == 0)
return null;
-
- return new SimpleDateFormat(format).parse(value);
+ SimpleDateFormat fmt = fmtCache.get(format);
+ if (fmt == null) {
+ fmt = new SimpleDateFormat(format);
+ fmtCache.put(format, fmt);
+ }
+ return fmt.parse(strVal);
}
public static final String DATE_TIME_FMT = "dateTimeFormat";