Project

General

Profile

« Previous | Next » 

Revision 60196

BibTex converter: info from source field

View differences:

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;

Also available in: Unified diff