Project

General

Profile

« Previous | Next » 

Revision 60196

BibTex converter: info from source field

View differences:

modules/dnet-isti/trunk/src/test/java/eu/dnetlib/data/utils/BibTexConverterTest.java
1
package eu.dnetlib.data.utils;
2

  
3
import org.junit.Ignore;
4
import org.junit.Test;
5

  
6
import eu.dnetlib.data.mdstore.plugins.objects.MdRecord;
7

  
8
public class BibTexConverterTest {
9

  
10
	@Test
11
	@Ignore
12
	public void testAsBibTex_1() {
13

  
14
		final MdRecord record = new MdRecord();
15

  
16
		record.setId("1234");
17
		record.setTitle("The D-NET software toolkit A framework for the realization, maintenance, and operation of aggregative infrastructures");
18

  
19
		record.getCreators().add("Manghi P.");
20
		record.getCreators().add("Artini M.");
21

  
22
		record.setPublisher("Emerald, Bradford, Regno Unito");
23
		record.getDois().add("10.1108/PROG-08-2013-0045");
24
		record.setDate(2014);
25
		record.setSource("Program (Lond., 1966) 48 (2014): 322–354. doi:10.1108/PROG-08-2013-0045");
26
		record.setType("Article");
27

  
28
		final String bib = BibTexConverter.asBibTex(record);
29

  
30
		System.out.println(bib);
31

  
32
	}
33

  
34
	@Test
35
	public void testAsBibTex_article_source_1() {
36

  
37
		final MdRecord record = new MdRecord();
38

  
39
		record.setId("1234");
40
		record.setType("Article");
41

  
42
		record.setSource("Internet of Things 13 (2020): 1–14");
43

  
44
		final String bib = BibTexConverter.asBibTex(record);
45

  
46
		System.out.println(bib);
47

  
48
	}
49

  
50
}
modules/dnet-isti/trunk/src/main/java/eu/dnetlib/data/utils/CsvConverter.java
26 26
		sw.append(prepareValue("" + record.getDate()));
27 27
		sw.append("\t");
28 28
		sw.append(prepareValue(record.getDois()));
29
		sw.append("\t");
30
		sw.append(prepareValue(record.getSource()));
29 31

  
30 32
		return sw.toString();
31 33
	}
modules/dnet-isti/trunk/src/main/java/eu/dnetlib/data/utils/BibTexConverter.java
4 4
import java.io.StringWriter;
5 5
import java.io.Writer;
6 6
import java.util.Collection;
7
import java.util.regex.Matcher;
8
import java.util.regex.Pattern;
7 9
import java.util.stream.Collectors;
8 10

  
9 11
import org.apache.commons.lang3.StringUtils;
......
30 32
			addSimpleStringValue(dbEntry, BibTeXEntry.KEY_TITLE, record.getTitle());
31 33
			addMultipleStringValue(dbEntry, BibTeXEntry.KEY_AUTHOR, record.getCreators());
32 34
			addSimpleStringValue(dbEntry, BibTeXEntry.KEY_PUBLISHER, record.getPublisher());
33
			addSimpleStringValue(dbEntry, BibTeXEntry.KEY_YEAR, record.getDate());
34 35
			addMultipleStringValue(dbEntry, BibTeXEntry.KEY_DOI, record.getDois());
35 36

  
37
			addSourceAndDate(dbEntry, record);
38

  
36 39
			final BibTeXFormatter formatter = new BibTeXFormatter();
37 40
			final Writer res = new StringWriter();
38 41
			final BibTeXDatabase db = new BibTeXDatabase();
......
62 65
		}
63 66
	}
64 67

  
68
	private static void addSourceAndDate(final BibTeXEntry dbEntry, final MdRecord record) {
69
		String year = "" + record.getDate();
70

  
71
		switch (record.getType().toLowerCase()) {
72
		case "conference object":
73
			addSimpleStringValue(dbEntry, BibTeXEntry.KEY_BOOKTITLE, record.getSource());
74
			break;
75
		case "part of book or chapter of book":
76
			addSimpleStringValue(dbEntry, BibTeXEntry.KEY_BOOKTITLE, record.getSource());
77
			break;
78
		case "report":
79
			addSimpleStringValue(dbEntry, BibTeXEntry.KEY_INSTITUTION, record.getSource());
80
			break;
81
		case "article":
82
			final String regex = "^(.+) (\\d*) \\((\\d{4})\\)(: (\\d+\\–?\\d*))?";
83
			final Pattern pattern = Pattern.compile(regex);
84
			final Matcher matcher = pattern.matcher(record.getSource());
85

  
86
			if (matcher.find()) {
87
				if (matcher.groupCount() >= 1) {
88
					addSimpleStringValue(dbEntry, BibTeXEntry.KEY_JOURNAL, matcher.group(1));
89
				}
90
				if (matcher.groupCount() >= 2) {
91
					addSimpleStringValue(dbEntry, BibTeXEntry.KEY_VOLUME, matcher.group(2));
92
				}
93
				if (matcher.groupCount() >= 3) {
94
					year = matcher.group(3);
95
				}
96
				if (matcher.groupCount() >= 5) {
97
					addSimpleStringValue(dbEntry, BibTeXEntry.KEY_PAGES, matcher.group(5));
98
				}
99
			}
100

  
101
			break;
102
		case "patent":
103
			addSimpleStringValue(dbEntry, BibTeXEntry.KEY_HOWPUBLISHED, record.getSource());
104
			break;
105
		}
106

  
107
		addSimpleStringValue(dbEntry, BibTeXEntry.KEY_YEAR, year);
108
	}
109

  
65 110
	private static Key findBibTexType(final String resourceType) {
66
		switch (resourceType) {
67
		case "Conference object":
111
		switch (resourceType.toLowerCase()) {
112
		case "conference object":
68 113
			return BibTeXEntry.TYPE_INPROCEEDINGS;
69
		case "Report":
114
		case "report":
70 115
			return BibTeXEntry.TYPE_TECHREPORT;
71
		case "Article":
116
		case "article":
72 117
			return BibTeXEntry.TYPE_ARTICLE;
73
		case "Other":
118
		case "other":
74 119
			return BibTeXEntry.TYPE_MISC;
75
		case "Part of book or chapter of book":
120
		case "part of book or chapter of book":
76 121
			return BibTeXEntry.TYPE_INBOOK;
77
		case "Book":
122
		case "book":
78 123
			return BibTeXEntry.TYPE_BOOK;
79
		case "Bachelor thesis":
124
		case "bachelor thesis":
80 125
			return BibTeXEntry.TYPE_MASTERSTHESIS;
81
		case "Doctoral thesis":
126
		case "doctoral thesis":
82 127
			return BibTeXEntry.TYPE_PHDTHESIS;
83
		case "Patent":
128
		case "patent":
84 129
			return BibTeXEntry.TYPE_MISC;
85
		case "Master thesis":
130
		case "master thesis":
86 131
			return BibTeXEntry.TYPE_MASTERSTHESIS;
87 132
		default:
88 133
			return BibTeXEntry.TYPE_MISC;
modules/dnet-isti/trunk/src/main/resources/eu/dnetlib/bootstrap/profiles/workflows/common/index.xml
95 95
				</NODE>
96 96
				
97 97
				<NODE name="freezeStore" type="RunMDStorePlugin">
98
					<DESCRIPTION>Enrich with projects</DESCRIPTION>
98
					<DESCRIPTION>Freeze stores</DESCRIPTION>
99 99
					<PARAMETERS>
100 100
						<PARAM name="pluginName" value="freezeMDStorePlugin"/>
101 101
						<PARAM name="parameters">

Also available in: Unified diff