return dataModified;\r
}\r
\r
- private void maintainDynPcdMap(String pcdKey, String moduleInfo) {\r
+ private synchronized void maintainDynPcdMap(String pcdKey, String moduleInfo) {\r
\r
ArrayList<String> al = dynPcdMap.get(pcdKey);\r
if (al == null) {\r
return choosedType;\r
}\r
\r
- private void genPcdData (String cName, Object token, String tsGuid, String itemType, String dataType, String defaultVal, \r
+ private synchronized void genPcdData (String cName, Object token, String tsGuid, String itemType, String dataType, String defaultVal, \r
ModuleSADocument.ModuleSA moduleSa, PcdDeclarationsDocument.PcdDeclarations.PcdEntry spdPcd) \r
throws PcdItemTypeConflictException, PcdValueMalFormed{\r
if (moduleSa.getPcdBuildDefinition() == null){\r
\r
private static final int timeToWait = 2000;\r
\r
+ private static final int pcdSyncThreadNumber = 10;\r
+ \r
private long savedMs = 0;\r
\r
String searchField = "";\r
\r
private class PcdSyncTask extends Thread {\r
\r
+ boolean pcdSynced = false;\r
public void run () {\r
Vector<String> vExceptions = new Vector<String>();\r
- if (pcdSync(vExceptions)) {\r
+ pcdSync(vExceptions);\r
+ if (pcdSynced) {\r
JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), "PCD in this platform are synchronized with those in MSA files."); \r
docConsole.setSaved(false);\r
}\r
JOptionPane.showMessageDialog(FrameworkWizardUI.getInstance(), "Error occurred during synchronization:\n" + errorMsg);\r
}\r
}\r
+ \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
}\r
\r
/**\r
\r
}\r
\r
- private boolean pcdSync(Vector<String> v) {\r
- boolean synced = false;\r
- String[] sa = new String[5];\r
- for (int i = 0; i < jTableFpdModules.getRowCount(); ++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
- synced = true;\r
- }\r
- }\r
- catch (Exception exp) {\r
-// JOptionPane.showMessageDialog(frame, exp.getMessage());\r
- continue;\r
- }\r
- }\r
- return synced;\r
- \r
- }\r
- \r
private void showAllModules() {\r
\r
if (miList == null) {\r