Révision 1292

tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/MergeDuplicatedStringsInAPlugin.java (revision 1292)
3 3
import java.io.FileNotFoundException;
4 4
import java.io.IOException;
5 5
import java.io.UnsupportedEncodingException;
6
import java.util.HashMap;
7
import java.util.TreeMap;
8
import java.util.TreeSet;
6 9

  
7 10
import org.txm.rcp.translate.i18n.PluginMessagesManager;
8 11
import org.txm.rcp.translate.i18n.WorkspaceMessagesManager;
......
25 28
	}
26 29

  
27 30
	public void merge(PluginMessagesManager pm) {
28
		// TODO Auto-generated method stub
31
		HashMap<String, String> defaults = pm.getMessagesForDefaultLang();
32
		TreeMap<String, String> value2Key = new TreeMap<String, String>();
33
		
34
		TreeMap<String, TreeSet<String>> merges = new TreeMap<String, TreeSet<String>>();
35
		TreeSet<String> keys = new TreeSet<String>(defaults.keySet());
36
		for (String key : keys) {
37
			String value = defaults.get(key);
38
			if (value2Key.containsKey(value)) { // duplicated message
39
				pm.renameKey(key, value2Key.get(value));
40
				merges.get(value2Key.get(value)).add(key);
41
			} else {
42
				value2Key.put(value, key);
43
				merges.put(key, new TreeSet<String>());
44
			}
45
		}
29 46
	}
30 47
	
31 48
	/**
tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/i18n/PluginMessagesManager.java (revision 1292)
676 676
		for (File p : langs.keySet()) {
677 677
			HashMap<String, String> h = langs.get(p);
678 678
			if (h.containsKey(oldName)) {
679
				h.put(newName, h.get(oldName));
679
				if (h.containsKey(newName) 
680
						&& !h.get(newName).equals(h.get(oldName))) { // a value is already set for the new key
681
					System.err.println("PluginMessagesManager.renameKey(): WARNING new key=" + newName + " already set in "+p+" with value="+h.get(newName)+" new value="+h.get(oldName));
682
				} else {
683
					h.put(newName, h.get(oldName));
684
				}
680 685
				h.remove(oldName);
681 686
			}
682 687
		}
......
707 712
		keyModifications.remove(key); // if any modifications was done
708 713
	}
709 714

  
715
	public void newKey(String defaultMessage) {
716
		String key = NormalizeKeys.normalize(defaultMessage);
717
		String newKey = ""+key;
718
		int c = 1;
719
		while (messageKeys.contains(newKey)) {
720
			newKey = key+"_"+(c++);
721
		}
722
		
723
		messageKeys.add(newKey);
724
		getMessagesForDefaultLang().put(newKey, defaultMessage);
725
	}
726

  
710 727
	/**
711 728
	 * 
712 729
	 * @return the renamed keys
......
801 818
		System.out.println("dir="+pmManager.getProjectDirectory());
802 819
		System.out.println("PluginMessagesManager.main(): done.");
803 820
	}
804

  
805
	private void newKey(String defaultMessage) {
806
		String key = NormalizeKeys.normalize(defaultMessage);
807
		String newKey = ""+key;
808
		int c = 1;
809
		while (messageKeys.contains(newKey)) {
810
			newKey = key+"_"+(c++);
811
		}
812
		
813
		messageKeys.add(newKey);
814
		getMessagesForDefaultLang().put(newKey, defaultMessage);
815
	}
816 821
}

Formats disponibles : Unified diff