Bundle tool added
[mir.git] / source / tool / BundleTool.java
1 package tool;\r
2 \r
3 import java.util.*;\r
4 import java.io.*;\r
5 import org.apache.commons.collections.*;\r
6 \r
7 import mir.util.*;\r
8 \r
9 public class BundleTool {\r
10   public static void main(String[] anArguments) {\r
11 \r
12     if (anArguments.length!=3) {\r
13       System.out.println("Usage:");\r
14 \r
15       System.out.println("  BundleTool <bundle base> <master locale> <slave locale>");\r
16       System.out.println("");\r
17       System.out.println("Description:");\r
18       System.out.println("  Reorders keys/values from a slave bundle according to a master bundle.");\r
19 \r
20       return;\r
21     }\r
22 \r
23       PropertiesManipulator master;\r
24       PropertiesManipulator slave;\r
25       PropertiesManipulator result;\r
26 \r
27       try {\r
28         master = PropertiesManipulator.readProperties(new FileInputStream(new File(anArguments[0] + "_" + anArguments[1] + ".properties")));\r
29       }\r
30       catch (Throwable t) {\r
31         System.out.println("Unable to read master properties: " + t.getMessage());\r
32         return;\r
33       }\r
34 \r
35       try {\r
36         slave = PropertiesManipulator.readProperties(new FileInputStream(new File(anArguments[0] + "_" + anArguments[2] + ".properties")));\r
37       }\r
38       catch (FileNotFoundException t) {\r
39         slave = new PropertiesManipulator();\r
40       }\r
41       catch (Throwable t) {\r
42         System.out.println("Unable to read slave properties: " + t.getMessage());\r
43         return;\r
44       }\r
45       result = new PropertiesManipulator();\r
46 \r
47       Iterator i = slave.getEntries();\r
48       while (i.hasNext()) {\r
49         Object e = i.next();\r
50 \r
51         if (e instanceof PropertiesManipulator.EmptyLine) {\r
52           result.addEmptyLine();\r
53         }\r
54         else if (e instanceof PropertiesManipulator.Comment) {\r
55           result.addComment(((PropertiesManipulator.Comment) e).getComment());\r
56         }\r
57 \r
58         if (!(e instanceof PropertiesManipulator.Comment))\r
59           break;\r
60       }\r
61 \r
62       boolean insideHeader=true;\r
63       i = master.getEntries();\r
64       while (i.hasNext()) {\r
65         Object e = i.next();\r
66 \r
67         if (!insideHeader && (e instanceof PropertiesManipulator.EmptyLine)) {\r
68           result.addEmptyLine();\r
69         }\r
70         else if (!insideHeader && e instanceof PropertiesManipulator.Comment) {\r
71           result.addComment(((PropertiesManipulator.Comment) e).getComment());\r
72         }\r
73         else if (e instanceof PropertiesManipulator.Entry) {\r
74           String key = ((PropertiesManipulator.Entry) e).getKey();\r
75           String value = slave.get(key);\r
76           result.addEntry(key,value);\r
77         }\r
78 \r
79         insideHeader = insideHeader && (e instanceof PropertiesManipulator.Comment);\r
80       }\r
81       try {\r
82         PropertiesManipulator.writeProperties(result, new FileOutputStream(new File(anArguments[0] + "_" + anArguments[2] + ".properties")));\r
83       }\r
84       catch (Throwable t) {\r
85         System.out.println("Unable to write slave properties: " + t.getMessage());\r
86         return;\r
87       }\r
88   }\r
89 }