+ \r
+ private void pcdSync(Vector<String> v) {\r
+ \r
+ Vector<PcdSyncSubTask> vThreads = new Vector<PcdSyncSubTask> ();\r
+ int moduleCount = jTableFpdModules.getRowCount();\r
+ int start = 0;\r
+ for (int i = 0; i < FpdFrameworkModules.pcdSyncThreadNumber; ++i) {\r
+ int end = start + moduleCount/FpdFrameworkModules.pcdSyncThreadNumber;\r
+ if (end > moduleCount) {\r
+ end = moduleCount;\r
+ }\r
+ vThreads.add(new PcdSyncSubTask (start, end, v));\r
+ start = end;\r
+ }\r
+ \r
+ for (int i = 0; i < FpdFrameworkModules.pcdSyncThreadNumber; ++i) {\r
+ vThreads.get(i).start();\r
+ }\r
+ \r
+ try {\r
+ for (int i = 0; i < FpdFrameworkModules.pcdSyncThreadNumber; ++i) {\r
+ vThreads.get(i).join();\r
+ }\r
+ }\r
+ catch (InterruptedException e) {\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ private class PcdSyncSubTask extends Thread {\r
+ \r
+ private int startModule = 0;\r
+ private int endModulePlusOne = 1;\r
+ private Vector<String> v = null;\r
+\r
+ PcdSyncSubTask (int start, int endPlusOne, Vector<String> vErr) {\r
+ startModule = start;\r
+ endModulePlusOne = endPlusOne;\r
+ v = vErr;\r
+ }\r
+ \r
+ public void run () {\r
+ String[] sa = new String[5];\r
+ for (int i = startModule; i < endModulePlusOne; ++i) {\r
+ try {\r
+ ffc.getFrameworkModuleInfo(i, sa);\r
+ String mg = sa[ffcModGuid];\r
+ String mv = sa[ffcModVer];\r
+ String pg = sa[ffcPkgGuid];\r
+ String pv = sa[ffcPkgVer];\r
+ String arch = sa[ffcModArch];\r
+ String key = mg + " " + mv + " " + pg + " " + pv + " " + arch;\r
+ if (ffc.adjustPcd(key, v)) {\r
+ pcdSynced = true;\r
+ }\r
+ }\r
+ catch (Exception exp) {\r
+// JOptionPane.showMessageDialog(frame, exp.getMessage());\r
+ continue;\r
+ }\r
+ }\r
+ }\r
+ }\r