Project

General

Profile

1
package eu.dnetlib.index.solr.feed;
2

    
3
import java.text.ParseException;
4
import java.text.SimpleDateFormat;
5
import java.util.Arrays;
6
import java.util.List;
7
import javax.xml.stream.XMLStreamException;
8

    
9
import org.apache.solr.common.SolrInputDocument;
10
import org.dom4j.DocumentException;
11

    
12
/**
13
 * @author claudio
14
 */
15
public abstract class InputDocumentFactory {
16

    
17
	public static final String INDEX_FIELD_PREFIX = "__";
18

    
19
	public static final String DS_VERSION = INDEX_FIELD_PREFIX + "dsversion";
20

    
21
	public static final String DS_ID = INDEX_FIELD_PREFIX + "dsid";
22

    
23
	public static final String RESULT = "result";
24

    
25
	public static final String INDEX_RESULT = INDEX_FIELD_PREFIX + RESULT;
26

    
27
	public static final String INDEX_RECORD_ID = INDEX_FIELD_PREFIX + "indexrecordidentifier";
28

    
29
	private static final String outFormat = new String("yyyy-MM-dd'T'hh:mm:ss'Z'");
30

    
31
	private final static List<String> dateFormats = Arrays.asList("yyyy-MM-dd'T'hh:mm:ss", "yyyy-MM-dd", "dd-MM-yyyy", "dd/MM/yyyy", "yyyy");
32

    
33
	/**
34
	 * method return a solr-compatible string representation of a date
35
	 *
36
	 * @param date
37
	 * @return
38
	 * @throws DocumentException
39
	 * @throws ParseException
40
	 */
41
	public static String getParsedDateField(final String date) {
42
		for (String formatString : dateFormats) {
43
			try {
44
				return new SimpleDateFormat(outFormat).format(new SimpleDateFormat(formatString).parse(date));
45
			} catch (ParseException e) {}
46
		}
47
		throw new IllegalStateException("unable to parse date: " + date);
48
	}
49

    
50
	public abstract SolrInputDocument parseDocument(final String version,
51
			final String inputDocument,
52
			final String dsId,
53
			final String resultName) throws XMLStreamException;
54

    
55
	public abstract SolrInputDocument parseDocument(final String version,
56
			final String inputDocument,
57
			final String dsId,
58
			final String resultName,
59
			final ResultTransformer resultTransformer) throws XMLStreamException;
60

    
61
	public String parseDate(final String date) {
62
		return getParsedDateField(date);
63
	}
64

    
65
}
(1-1/3)