Revision 44514
Added by Alessia Bardi over 7 years ago
modules/dnet-oai-store-service/branches/nodeRefactoring/src/main/java/eu/dnetlib/data/oai/store/parser/PublisherRecordParser.java | ||
---|---|---|
4 | 4 |
import java.util.List; |
5 | 5 |
import java.util.Map.Entry; |
6 | 6 |
|
7 |
import com.google.common.base.Function; |
|
8 |
import com.google.common.collect.ArrayListMultimap; |
|
9 |
import com.google.common.collect.Iterables; |
|
10 |
import com.google.common.collect.Multimap; |
|
11 |
import eu.dnetlib.data.information.oai.publisher.PublisherField; |
|
12 |
import eu.dnetlib.data.information.oai.publisher.conf.OAIConfigurationExistReader; |
|
13 |
import org.apache.commons.lang.StringUtils; |
|
7 | 14 |
import org.apache.commons.logging.Log; |
8 | 15 |
import org.apache.commons.logging.LogFactory; |
9 | 16 |
import org.dom4j.Document; |
... | ... | |
11 | 18 |
import org.dom4j.Node; |
12 | 19 |
import org.dom4j.io.SAXReader; |
13 | 20 |
|
14 |
import com.google.common.base.Function; |
|
15 |
import com.google.common.collect.ArrayListMultimap; |
|
16 |
import com.google.common.collect.Iterables; |
|
17 |
import com.google.common.collect.Multimap; |
|
18 |
|
|
19 |
import eu.dnetlib.data.information.oai.publisher.PublisherField; |
|
20 |
|
|
21 | 21 |
/** |
22 | 22 |
* An instance of this class can parse an XML record and extract the information needed to store the record in a publisher store. |
23 | 23 |
* |
... | ... | |
45 | 45 |
* @return a Multimap describing the values to be indexed for this record. |
46 | 46 |
*/ |
47 | 47 |
@SuppressWarnings({ "unchecked", "rawtypes" }) |
48 |
public Multimap<String, String> parseRecord(final String record) { |
|
48 |
public Multimap<String, String> parseRecord(final String record, final String source) {
|
|
49 | 49 |
Multimap<String, String> recordProps = ArrayListMultimap.create(); |
50 | 50 |
try { |
51 | 51 |
Document doc = this.saxReader.read(new StringReader(record)); |
52 |
if(StringUtils.isNotBlank(source)) recordProps.put(OAIConfigurationExistReader.SET_FIELD, source); |
|
52 | 53 |
for (PublisherField field : this.storeIndices) { |
53 | 54 |
for (Entry<String, String> indexEntry : field.getSources().entries()) { |
54 | 55 |
// each xpath can return a list of nodes or strings, depending on the xpath |
Also available in: Unified diff
put the source into the record properties