+ public static String stateAsString(int state) {\r
+ switch (state) {\r
+ case Bundle.UNINSTALLED:\r
+ return "UNINSTALLED";\r
+ case Bundle.INSTALLED:\r
+ return "INSTALLED";\r
+ case Bundle.RESOLVED:\r
+ return "RESOLVED";\r
+ case Bundle.STARTING:\r
+ return "STARTING";\r
+ case Bundle.ACTIVE:\r
+ return "ACTIVE";\r
+ case Bundle.STOPPING:\r
+ return "STOPPING";\r
+ default:\r
+ return Integer.toString(state);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * @return ==0: versions are identical, <0: tested version is newer, >0:\r
+ * currentVersion is newer.\r
+ */\r
+ public static int compareVersions(String currentVersion,\r
+ String testedVersion) {\r
+ List cToks = new ArrayList();\r
+ StringTokenizer cSt = new StringTokenizer(currentVersion, ".");\r
+ while (cSt.hasMoreTokens())\r
+ cToks.add(cSt.nextToken());\r
+ List tToks = new ArrayList();\r
+ StringTokenizer tSt = new StringTokenizer(currentVersion, ".");\r
+ while (tSt.hasMoreTokens())\r
+ tToks.add(tSt.nextToken());\r
+ \r
+ int comp = 0;\r
+ comp: for (int i = 0; i < cToks.size(); i++) {\r
+ if (tToks.size() <= i) {\r
+ // equals until then, tested shorter\r
+ comp = 1;\r
+ break comp;\r
+ }\r
+ \r
+ String c = (String) cToks.get(i);\r
+ String t = (String) tToks.get(i);\r
+ \r
+ try {\r
+ int cInt = Integer.parseInt(c);\r
+ int tInt = Integer.parseInt(t);\r
+ if (cInt == tInt)\r
+ continue comp;\r
+ else {\r
+ comp = (cInt - tInt);\r
+ break comp;\r
+ }\r
+ } catch (NumberFormatException e) {\r
+ if (c.equals(t))\r
+ continue comp;\r
+ else {\r
+ comp = c.compareTo(t);\r
+ break comp;\r
+ }\r
+ }\r
+ }\r
+ \r
+ if (comp == 0 && tToks.size() > cToks.size()) {\r
+ // equals until then, current shorter\r
+ comp = -1;\r
+ }\r
+ \r
+ return comp;\r
+ }\r
+\r