6d64f7c706c5d90528e46cc9707bc24ecc6f7199
[debian/jabref.git] / src / java / net / sf / jabref / imports / CaseKeeper.java
1 /*  Copyright (C) 2012 JabRef contributors.
2     This program is free software; you can redistribute it and/or modify
3     it under the terms of the GNU General Public License as published by
4     the Free Software Foundation; either version 2 of the License, or
5     (at your option) any later version.
6
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10     GNU General Public License for more details.
11
12     You should have received a copy of the GNU General Public License along
13     with this program; if not, write to the Free Software Foundation, Inc.,
14     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
15 */
16 package net.sf.jabref.imports;
17
18 import java.util.HashMap;
19 import java.util.Arrays;
20 import java.util.Comparator;
21
22 import net.sf.jabref.export.layout.LayoutFormatter;
23
24 public class CaseKeeper implements LayoutFormatter {
25     
26     public CaseKeeper() {
27         super();
28     }
29     
30     public String format(String text, String [] listOfWords) {
31         if (text == null)
32             return null;
33         Arrays.sort(listOfWords, new LengthComparator());  // Seems like the sorting is not working
34         // For each word in the list
35         for (int i = 0; i < listOfWords.length; i++) {
36             // Add {} if the character before is a space, -, /, (, [, or } or if it is at the start of the string but not if it is followed by a }
37             text = text.replaceAll("(^|[- /\\[(}])" + listOfWords[i] + "($|[^}])","$1\\{" + listOfWords[i] + "\\}$2");
38         }
39         return text;
40     }
41     
42
43     public String format(String text) {
44         if (text == null)
45             return null;
46         final CaseKeeperList list = new CaseKeeperList();
47         return this.format(text,list.getAll());
48     }
49     
50
51 }
52
53 class LengthComparator implements Comparator<String>{
54     @Override
55     public int compare(String o1, String o2) {  
56         if (o1.length() > o2.length()) {
57             return 1;
58         }
59         return 0;
60     }
61 }