Project

General

Profile

1
package eu.dnetlib.functionality.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

    
8
import javax.xml.stream.XMLStreamException;
9

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

    
13
/**
14
 *
15
 * @author claudio
16
 *
17
 */
18
public abstract class InputDocumentFactory {
19

    
20
	public static final String INDEX_FIELD_PREFIX = "__";
21

    
22
	public static final String DS_VERSION = INDEX_FIELD_PREFIX + "dsversion";
23

    
24
	public static final String DS_ID = INDEX_FIELD_PREFIX + "dsid";
25

    
26
	public static final String RESULT = "result";
27

    
28
	public static final String INDEX_RESULT = INDEX_FIELD_PREFIX + RESULT;
29

    
30
	public static final String INDEX_RECORD_ID = INDEX_FIELD_PREFIX + "indexrecordidentifier";
31

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

    
34
	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");
35

    
36
	public abstract SolrInputDocument parseDocument(final String version, String inputDocument, String dsId, final String resultName) throws XMLStreamException;
37

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

    
55
	public String parseDate(final String date) {
56
		return getParsedDateField(date);
57
	}
58

    
59
}
(1-1/2)