1 | public String getAuthorsLastFirstFirstLastAnds(boolean abbreviate) { | | 1 | /** |
2 | int abbrInt = (abbreviate ? 0 : 1); | | 2 | * Returns the list of authors separated by commas with first names before |
3 | // Check if we've computed this before: | | 3 | * last name; first names are abbreviated or not depending on parameter. If |
4 | if (authorsLastFirstFirstLast[abbrInt] != null) | | 4 | * the list consists of three or more authors, "and" is inserted before the |
5 | return authorsLastFirstFirstLast[abbrInt]; | | 5 | * last author's name. |
6 | | | 6 | * <p> |
7 | StringBuffer res = new StringBuffer(); | | 7 | * <ul> |
8 | if (size() > 0) { | | 8 | * <li>"John Smith" ==> "John Smith" or "J. Smith"</li> |
9 | res.append(getAuthor(0).getLastFirst(abbreviate)); | | 9 | * <li>"John Smith and Black Brown, Peter" ==> "John Smith and Peter Black |
10 | for (int i = 1; i < size(); i++) { | | 10 | * Brown" or "J. Smith and P. Black Brown"</li> |
11 | res.append(" and "); | | 11 | * <li> "John von Neumann and John Smith and Black Brown, Peter" ==> "John |
12 | res.append(getAuthor(i).getFirstLast(abbreviate)); | | 12 | * von Neumann, John Smith and Peter Black Brown" or "J. von Neumann, J. |
13 | } | | 13 | * Smith and P. Black Brown" </li> |
14 | } | | 14 | * </ul> |
15 | | | 15 | * |
16 | authorsLastFirstFirstLast[abbrInt] = res.toString(); | | 16 | * @param abbr |
17 | return authorsLastFirstFirstLast[abbrInt]; | | 17 | * whether to abbreivate first names. |
18 | } | | 18 | * |
| | | 19 | * @param oxfordComma |
| | | 20 | * Whether to put a comma before the and at the end. |
| | | 21 | * |
| | | 22 | * @see http://en.wikipedia.org/wiki/Serial_comma For an detailed |
| | | 23 | * explaination about the Oxford comma. |
| | | 24 | * |
| | | 25 | * @return formatted list of authors. |
| | | 26 | */ |
| | | 27 | public String getAuthorsFirstFirst(boolean abbr, boolean oxfordComma) { |
| | | 28 | |
| | | 29 | int abbrInt = (abbr ? 0 : 1); |
| | | 30 | abbrInt += (oxfordComma ? 0 : 2); |
| | | 31 | |
| | | 32 | // Check if we've computed this before: |
| | | 33 | if (authorsFirstFirst[abbrInt] != null) |
| | | 34 | return authorsFirstFirst[abbrInt]; |
| | | 35 | |
| | | 36 | StringBuffer res = new StringBuffer(); |
| | | 37 | if (size() > 0) { |
| | | 38 | res.append(getAuthor(0).getFirstLast(abbr)); |
| | | 39 | int i = 1; |
| | | 40 | while (i < size() - 1) { |
| | | 41 | res.append(", "); |
| | | 42 | res.append(getAuthor(i).getFirstLast(abbr)); |
| | | 43 | i++; |
| | | 44 | } |
| | | 45 | if (size() > 2 && oxfordComma) |
| | | 46 | res.append(","); |
| | | 47 | if (size() > 1) { |
| | | 48 | res.append(" and "); |
| | | 49 | res.append(getAuthor(i).getFirstLast(abbr)); |
| | | 50 | } |
| | | 51 | } |
| | | 52 | authorsFirstFirst[abbrInt] = res.toString(); |
| | | 53 | return authorsFirstFirst[abbrInt]; |
| | | 54 | } |