Revision 60196
Added by Michele Artini over 3 years ago
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
BibTex converter: info from source field