import javax.swing.ListSelectionModel;\r
import javax.swing.table.DefaultTableModel;\r
\r
+import org.tianocore.frameworkwizard.common.DataType;\r
import org.tianocore.frameworkwizard.common.Log;\r
import org.tianocore.frameworkwizard.common.Tools;\r
import org.tianocore.frameworkwizard.common.ui.IDialog;\r
private JTable jTablePackage = null;\r
\r
private PartialTableModel model = null;\r
- List<PackageIdentification> updatPkgList = new ArrayList<PackageIdentification>();\r
+\r
+ List<PackageIdentification> updatPkgList = new ArrayList<PackageIdentification>();\r
\r
public UpdateStepTwo(IDialog iDialog, boolean modal, UpdateStepOne stepOne) {\r
this(iDialog, modal);\r
WorkspaceTools wt = new WorkspaceTools();\r
List<PackageIdentification> packagesInDb = wt.getAllPackages();\r
\r
- updatPkgList = AggregationOperation.intersection(packagesInDb, packagesInFar);\r
+ updatPkgList = AggregationOperation.intersection(packagesInDb, packagesInFar);\r
//\r
// Change here to get packages and platforms from FAR\r
//\r
- Iterator<PackageIdentification> iter = updatPkgList.iterator() ;//packageList.iterator();\r
- while (iter.hasNext()) {\r
- String[] str = new String[4];\r
- PackageIdentification item = iter.next();\r
- str[0] = item.getName();\r
- str[1] = item.getVersion();\r
- str[2] = item.getGuid();\r
- str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));\r
- model.addRow(str);\r
- } \r
- }\r
- catch (Exception ex) {\r
- ex.printStackTrace();\r
+ Iterator<PackageIdentification> iter = updatPkgList.iterator();//packageList.iterator();\r
+ while (iter.hasNext()) {\r
+ String[] str = new String[4];\r
+ PackageIdentification item = iter.next();\r
+ str[0] = item.getName();\r
+ str[1] = item.getVersion();\r
+ str[2] = item.getGuid();\r
+ str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));\r
+ model.addRow(str);\r
+ }\r
+ } catch (Exception ex) {\r
+ ex.printStackTrace();\r
+ }\r
}\r
- }\r
\r
/**\r
* This is the default constructor\r
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);\r
}\r
\r
- /**\r
- * This method initializes jContentPane\r
- * \r
- * @return javax.swing.JPanel\r
- */\r
- private JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jLabel = new JLabel();\r
- jLabel.setBounds(new java.awt.Rectangle(30,70,281,20));\r
- jLabel.setText("Following packages will be updated: ");\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.add(getJTextArea(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- jContentPane.add(getJButtonFinish(), null);\r
- jContentPane.add(getJButtonPrevious(), null);\r
- jContentPane.add(getJScrollPane(), null);\r
- jContentPane.add(jLabel, null);\r
- }\r
- return jContentPane;\r
- }\r
- public void mouseClicked(MouseEvent e) {\r
- if (e.getSource() == jButtonCancel) {\r
- this.setVisible(false);\r
- }\r
- else if (e.getSource() == jButtonFinish) {\r
- //\r
- // Check depedency ?\r
- //\r
- WorkspaceTools wsTools = new WorkspaceTools();\r
- \r
- Iterator<PackageIdentification> iter = updatPkgList.iterator();\r
- List<PackageIdentification> depResultList = new ArrayList<PackageIdentification>();\r
- while (iter.hasNext()){\r
- List<PackageIdentification> depPkgList = stepOne.getFar().getPackageDependencies(iter.next());\r
- depResultList = AggregationOperation.union(depResultList, depPkgList);\r
- }\r
- \r
- List<PackageIdentification> dbPkgList = DistributeRule.vectorToList(wsTools.getAllPackages());\r
- List<PackageIdentification> resultList = AggregationOperation.minus(depResultList, AggregationOperation.union(\r
- this.updatPkgList, dbPkgList));\r
- Iterator resultIter = resultList.iterator();\r
- while (resultIter.hasNext()){\r
- Log.err("Missing dependency package " + ((PackageIdentification)resultIter.next()).toString() + "in workspace!");\r
- return;\r
- }\r
- \r
- //\r
- // Remove all update packages\r
- //\r
- //\r
- // For all packages, remove all files. \r
- // Exception FPD file still in DB\r
- //\r
- Vector<PlatformIdentification> allPlatforms = wsTools.getAllPlatforms();\r
- Set<File> allPlatformFiles = new LinkedHashSet<File>();\r
- \r
- Iterator<PlatformIdentification> allPlfIter = allPlatforms.iterator();\r
- while (iter.hasNext()) {\r
- allPlatformFiles.add(allPlfIter.next().getFpdFile());\r
- }\r
- \r
- Iterator<PackageIdentification> packageIter = this.updatPkgList.iterator();\r
- while (packageIter.hasNext()) {\r
- PackageIdentification item = packageIter.next();\r
- Set<File> deleteFiles = new LinkedHashSet<File>();\r
- recursiveDir(deleteFiles, item.getSpdFile().getParentFile(), allPlatformFiles);\r
- Iterator<File> iterDeleteFile = deleteFiles.iterator();\r
- while (iterDeleteFile.hasNext()){\r
- deleteFiles(iterDeleteFile.next());\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 70, 281, 20));\r
+ jLabel.setText("Following packages will be updated: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonFinish(), null);\r
+ jContentPane.add(getJButtonPrevious(), null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ jContentPane.add(jLabel, null);\r
}\r
- //\r
- // Remove all empty parent dir\r
- //\r
- File parentDir = item.getSpdFile().getParentFile();\r
- while (parentDir.listFiles().length == 0) {\r
- File tempFile = parentDir;\r
- parentDir = parentDir.getParentFile();\r
- tempFile.delete();\r
+ return jContentPane;\r
+ }\r
+\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ } else if (e.getSource() == jButtonFinish) {\r
+ //\r
+ // Check depedency ?\r
+ //\r
+ WorkspaceTools wsTools = new WorkspaceTools();\r
+\r
+ Iterator<PackageIdentification> iter = updatPkgList.iterator();\r
+ List<PackageIdentification> depResultList = new ArrayList<PackageIdentification>();\r
+ while (iter.hasNext()) {\r
+ List<PackageIdentification> depPkgList = stepOne.getFar().getPackageDependencies(iter.next());\r
+ depResultList = AggregationOperation.union(depResultList, depPkgList);\r
+ }\r
+\r
+ List<PackageIdentification> dbPkgList = DistributeRule.vectorToList(wsTools.getAllPackages());\r
+ List<PackageIdentification> resultList = AggregationOperation\r
+ .minus(\r
+ depResultList,\r
+ AggregationOperation\r
+ .union(\r
+ this.updatPkgList,\r
+ dbPkgList));\r
+ Iterator resultIter = resultList.iterator();\r
+ while (resultIter.hasNext()) {\r
+ Log.err("Missing dependency package " + ((PackageIdentification) resultIter.next()).toString()\r
+ + "in workspace!");\r
+ return;\r
+ }\r
+\r
+ //\r
+ // Remove all update packages\r
+ //\r
+ //\r
+ // For all packages, remove all files. \r
+ // Exception FPD file still in DB\r
+ //\r
+ Vector<PlatformIdentification> allPlatforms = wsTools.getAllPlatforms();\r
+ Set<File> allPlatformFiles = new LinkedHashSet<File>();\r
+\r
+ Iterator<PlatformIdentification> allPlfIter = allPlatforms.iterator();\r
+ while (iter.hasNext()) {\r
+ allPlatformFiles.add(allPlfIter.next().getFpdFile());\r
+ }\r
+\r
+ Iterator<PackageIdentification> packageIter = this.updatPkgList.iterator();\r
+ while (packageIter.hasNext()) {\r
+ PackageIdentification item = packageIter.next();\r
+ Set<File> deleteFiles = new LinkedHashSet<File>();\r
+ recursiveDir(deleteFiles, item.getSpdFile().getParentFile(), allPlatformFiles);\r
+ Iterator<File> iterDeleteFile = deleteFiles.iterator();\r
+ while (iterDeleteFile.hasNext()) {\r
+ deleteFiles(iterDeleteFile.next());\r
+ }\r
+ //\r
+ // Remove all empty parent dir\r
+ //\r
+ File parentDir = item.getSpdFile().getParentFile();\r
+ while (parentDir.listFiles().length == 0) {\r
+ File tempFile = parentDir;\r
+ parentDir = parentDir.getParentFile();\r
+ tempFile.delete();\r
+ }\r
+ }\r
+\r
+ //\r
+ // Install all update packages\r
+ //\r
+ Iterator<PackageIdentification> updataIter = this.updatPkgList.iterator();\r
+ while (updataIter.hasNext()) {\r
+ PackageIdentification pkgId = updataIter.next();\r
+ try {\r
+ stepOne.getFar().installPackage(pkgId, new File(pkgId.getSpdFile().getParent()));\r
+ } catch (Exception ex) {\r
+ Log.err("Can install " + pkgId.toString() + " pakcage, please check it!");\r
+ }\r
+\r
+ }\r
+ this.stepOne.returnType = DataType.RETURN_TYPE_OK;\r
+\r
+ this.setVisible(false);\r
+ this.dispose();\r
+ } else if (e.getSource() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepOne.setVisible(true);\r
}\r
- }\r
- \r
- //\r
- // Install all update packages\r
- //\r
- Iterator<PackageIdentification> updataIter = this.updatPkgList.iterator();\r
- while (updataIter.hasNext()){\r
- PackageIdentification pkgId = updataIter.next();\r
- try{\r
- stepOne.getFar().installPackage(pkgId, pkgId.getSpdFile());\r
- }catch (Exception ex){\r
- Log.err("Can install " + pkgId.toString() + " pakcage, please check it!");\r
- }\r
- \r
- }\r
- \r
- \r
- this.setVisible(false);\r
}\r
- else if (e.getSource() == jButtonPrevious) {\r
- this.setVisible(false);\r
- stepOne.setVisible(true);\r
+\r
+ public void mousePressed(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ public void mouseReleased(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
}\r
- }\r
- public void mousePressed(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
- public void mouseReleased(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
- public void mouseEntered(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
- public void mouseExited(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
-\r
- private void recursiveDir(Set<File> files, File dir, Set<File> platformFiles) {\r
- File[] fileList = dir.listFiles();\r
- for (int i = 0; i < fileList.length; i ++) {\r
- if (fileList[i].isFile()) {\r
- if( ! platformFiles.contains(fileList[i])) {\r
- files.add(fileList[i]);\r
- }\r
- }\r
- else {\r
- if (isContain(fileList[i], platformFiles)) {\r
- recursiveDir(files, fileList[i], platformFiles);\r
- }\r
- else {\r
- files.add(fileList[i]);\r
- }\r
+\r
+ public void mouseEntered(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ public void mouseExited(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ private void recursiveDir(Set<File> files, File dir, Set<File> platformFiles) {\r
+ File[] fileList = dir.listFiles();\r
+ for (int i = 0; i < fileList.length; i++) {\r
+ if (fileList[i].isFile()) {\r
+ if (!platformFiles.contains(fileList[i])) {\r
+ files.add(fileList[i]);\r
+ }\r
+ } else {\r
+ if (isContain(fileList[i], platformFiles)) {\r
+ recursiveDir(files, fileList[i], platformFiles);\r
+ } else {\r
+ files.add(fileList[i]);\r
+ }\r
+ }\r
}\r
- }\r
}\r
- \r
+\r
private void deleteFiles(File file) {\r
- if (file.isDirectory()) {\r
- File[] files = file.listFiles();\r
- for (int i = 0; i < files.length; i ++) {\r
- deleteFiles(files[i]);\r
+ if (file.isDirectory()) {\r
+ File[] files = file.listFiles();\r
+ for (int i = 0; i < files.length; i++) {\r
+ deleteFiles(files[i]);\r
+ }\r
}\r
- }\r
- file.delete();\r
+ file.delete();\r
}\r
- \r
+\r
private boolean isContain(File dir, Set<File> platformFiles) {\r
- Iterator<File> iter = platformFiles.iterator();\r
- while (iter.hasNext()) {\r
- File file = iter.next();\r
- if (file.getPath().startsWith(dir.getPath())) {\r
- //\r
- // continue this FPD file\r
- //\r
- return true;\r
+ Iterator<File> iter = platformFiles.iterator();\r
+ while (iter.hasNext()) {\r
+ File file = iter.next();\r
+ if (file.getPath().startsWith(dir.getPath())) {\r
+ //\r
+ // continue this FPD file\r
+ //\r
+ return true;\r
+ }\r
}\r
- }\r
- return false;\r
+ return false;\r
}\r
- }\r
-\r
+}\r
\r
class PartialTableModel extends DefaultTableModel {\r
- /**\r
- * \r
- */\r
- private static final long serialVersionUID = 1L;\r
-\r
- public boolean isCellEditable(int row, int col) {\r
- switch (col){\r
- case 3:\r
- return false;\r
- default:\r
- return false; \r
- }\r
- }\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ public boolean isCellEditable(int row, int col) {\r
+ switch (col) {\r
+ case 3:\r
+ return false;\r
+ default:\r
+ return false;\r
+ }\r
+ }\r
}\r