import org.tianocore.frameworkwizard.common.ui.IDesktopManager;\r
import org.tianocore.frameworkwizard.common.ui.IFrame;\r
import org.tianocore.frameworkwizard.common.ui.ITree;\r
+import org.tianocore.frameworkwizard.far.createui.CreateStepOne;\r
+import org.tianocore.frameworkwizard.far.deleteui.DeleteStepOne;\r
+import org.tianocore.frameworkwizard.far.installui.InstallStepOne;\r
+import org.tianocore.frameworkwizard.far.updateui.UpdateStepOne;\r
import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
import org.tianocore.frameworkwizard.module.ui.ModuleBootModes;\r
import org.tianocore.frameworkwizard.module.ui.ModuleDataHubs;\r
}\r
\r
if (arg0.getSource() == jMenuItemProjectCreateFar) {\r
-\r
+ CreateStepOne cso = new CreateStepOne(this, true);\r
+ int result = cso.showDialog();\r
+ if (result == DataType.RETURN_TYPE_OK) {\r
+ this.closeAll();\r
+ }\r
+ cso.dispose();\r
}\r
\r
if (arg0.getSource() == jMenuItemProjectInstallFar) {\r
- this.closeAll();\r
+ InstallStepOne iso = new InstallStepOne(this, true);\r
+ int result = iso.showDialog();\r
+ if (result == DataType.RETURN_TYPE_OK) {\r
+ this.closeAll();\r
+ }\r
+ iso.dispose();\r
}\r
\r
if (arg0.getSource() == jMenuItemProjectRemoveFar) {\r
- this.closeAll();\r
+ DeleteStepOne dso = new DeleteStepOne(this, true);\r
+ int result = dso.showDialog();\r
+ if (result == DataType.RETURN_TYPE_OK) {\r
+ this.closeAll();\r
+ }\r
+ dso.dispose();\r
}\r
\r
if (arg0.getSource() == jMenuItemProjectUpdateFar) {\r
- this.closeAll();\r
+ UpdateStepOne uso = new UpdateStepOne(this, true);\r
+ int result = uso.showDialog();\r
+ if (result == DataType.RETURN_TYPE_OK) {\r
+ this.closeAll();\r
+ }\r
+ uso.dispose();\r
}\r
\r
if (arg0.getSource() == jMenuItemToolsClone) {\r
\r
public static final int RETURN_TYPE_TEXT = 16;\r
\r
+ public static final int RETURN_TYPE_FAR_SURFACE_AREA = 17;\r
+ \r
+ \r
//\r
// Define all used final variables\r
//\r
\r
public static final String TEXT_FILE_EXT_DESCRIPTION = TEXT_FILE + " (*." + TEXT_FILE_EXT + ")";\r
\r
+ public static final String FAR_SURFACE_AREA = "Framework Archive";\r
+ \r
+ public static final String FAR_SURFACE_AREA_EXT = "far";\r
+ \r
+ public static final String FAR_SURFACE_AREA_EXT_DESCRIPTION = FAR_SURFACE_AREA + " (*." + FAR_SURFACE_AREA_EXT + ")";\r
//\r
// Define file separator for current OS\r
//\r
return DataType.PLATFORM_SURFACE_AREA_EXT_DESCRIPTION;\r
if (strExt.equals(DataType.TEXT_FILE_EXT))\r
return DataType.TEXT_FILE_EXT_DESCRIPTION;\r
+ if (strExt.equals(DataType.FAR_SURFACE_AREA_EXT))\r
+ return DataType.FAR_SURFACE_AREA_EXT_DESCRIPTION;\r
return "";\r
}\r
\r
}\r
\r
public boolean equals(Object obj) {\r
- if (obj instanceof Identification) {\r
- Identification id = (Identification)obj;\r
- if (path.equals(id.path)) {\r
- //if ( name.equals(id.name) && guid.equals(id.guid) && version.equals(id.version)) {\r
- return true;\r
- }\r
- return false;\r
- }\r
- else {\r
- return super.equals(obj);\r
- }\r
- }\r
+ if (obj instanceof Identification) {\r
+ Identification id = (Identification)obj;\r
+ if (path.equals(id.path)) {\r
+ //if ( name.equals(id.name) && guid.equals(id.guid) && version.equals(id.version)) {\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+ else {\r
+ return super.equals(obj);\r
+ }\r
+ }\r
+ \r
+ public boolean equalsWithGuid(Object obj) {\r
+ if (obj instanceof Identification) {\r
+ Identification id = (Identification)obj;\r
+ if ( guid.equalsIgnoreCase(id.guid)) {\r
+ if (version == null || id.version == null) {\r
+ return true;\r
+ }\r
+ else if (version.trim().equalsIgnoreCase("") || id.version.trim().equalsIgnoreCase("")){\r
+ return true;\r
+ }\r
+ else if (version.equalsIgnoreCase(id.version)) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+ else {\r
+ return super.equals(obj);\r
+ }\r
+ }\r
\r
public void setName(String name) {\r
this.name = name;\r
public String getPath() {\r
return path;\r
}\r
+ \r
+ public int hashCode(){\r
+ return guid.toLowerCase().hashCode();\r
+ }\r
}\r
if (type == DataType.RETURN_TYPE_TEXT) {\r
match = DataType.FILE_EXT_SEPARATOR + DataType.TEXT_FILE_EXT;\r
}\r
+ if (type == DataType.RETURN_TYPE_FAR_SURFACE_AREA) {\r
+ match = DataType.FILE_EXT_SEPARATOR + DataType.FAR_SURFACE_AREA_EXT;\r
+ }\r
if (path.length() <= match.length()) {\r
path = path + match;\r
return path;\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+\r
+public class AggregationOperation {\r
+\r
+ public static synchronized List<PackageIdentification> union(List<PackageIdentification> list1,\r
+ List<PackageIdentification> list2) {\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ result.addAll(list1);\r
+ Iterator<PackageIdentification> iter = list2.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ if (!belongs(item, result)) {\r
+ result.add(item);\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public static synchronized List<PackageIdentification> intersection(List<PackageIdentification> list1,\r
+ List<PackageIdentification> list2) {\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ Iterator<PackageIdentification> iter = list1.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ if (belongs(item, list2)) {\r
+ result.add(item);\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public static synchronized List<PackageIdentification> minus(List<PackageIdentification> list1,\r
+ List<PackageIdentification> list2) {\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ Iterator<PackageIdentification> iter = list1.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ if (!belongs(item, list2)) {\r
+ result.add(item);\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public static synchronized boolean belongs(PackageIdentification o, List<PackageIdentification> list) {\r
+ Iterator<PackageIdentification> iter = list.iterator();\r
+ while (iter.hasNext()) {\r
+ if (iter.next().equalsWithGuid(o)) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ public static synchronized List<PackageIdentification> getExistedItems(PackageIdentification o,\r
+ List<PackageIdentification> list) {\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ Iterator<PackageIdentification> iter = list.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ if (item.equalsWithGuid(o)) {\r
+ result.add(item);\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to distribute Far\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+public class DistributeRule {\r
+ static PackageQuery pkgQ = new PackageQuery();\r
+\r
+ static WorkspaceTools wsTools = new WorkspaceTools();\r
+\r
+ static List<PackageIdentification> farPkgList = new ArrayList<PackageIdentification>();\r
+\r
+ public static List<PackageIdentification> installFarCheck(Far far) {\r
+\r
+ Far myFar = far;\r
+ List<PackageIdentification> pkgDepList = new ArrayList<PackageIdentification>();\r
+ List<PackageIdentification> dbPkgList = new ArrayList<PackageIdentification>();\r
+ List<PackageIdentification> depResultList = new ArrayList<PackageIdentification>();\r
+ //\r
+ // Get Far packages list;\r
+ // \r
+ try {\r
+ farPkgList = myFar.mainfest.getPackageList();\r
+ Iterator pkgItems = farPkgList.iterator();\r
+ while (pkgItems.hasNext()) {\r
+ PackageIdentification id = (PackageIdentification) pkgItems.next();\r
+ pkgDepList = myFar.getPackageDependencies(id);\r
+ depResultList = AggregationOperation.union(depResultList, pkgDepList);\r
+ }\r
+ dbPkgList = vectorToList(wsTools.getAllPackages());\r
+\r
+ } catch (Exception e) {\r
+ System.out.println(e.getMessage());\r
+ }\r
+\r
+ //\r
+ // Check does the dependence meet the requirement.\r
+ //\r
+ List<PackageIdentification> resultList = AggregationOperation.minus(depResultList,\r
+ AggregationOperation.union(farPkgList,\r
+ dbPkgList));\r
+\r
+ //\r
+ // If dependencies don't meet, print the error message and return.\r
+ // \r
+ // if (resultList != null || resultList.size()> 0){\r
+ // Iterator resItem = resultList.iterator();\r
+ // while (resItem.hasNext()){\r
+ // System.out.println("Missing package:" + resItem.next().toString() + " !");\r
+ // }\r
+ // }\r
+ return resultList;\r
+\r
+ }\r
+\r
+ // public void installPackgCheck (PackageIdentification pkgId, String pkgPath){\r
+ // List<PackageIdentification> dbPkgList = new ArrayList<PackageIdentification>();\r
+ // dbPkgList = vectorToList(wsTools.getAllPackages());\r
+ // //\r
+ // // Install far's package one by one.\r
+ // //\r
+ // if ((AggregationOperation.getExistItems(pkgId, dbPkgList))){\r
+ // \r
+ // }\r
+ // }\r
+\r
+ public void UpdatCheck(String orgFar, String destFar) {\r
+\r
+ }\r
+\r
+ public static List<PackageIdentification> vectorToList(Vector vec) {\r
+ List<PackageIdentification> set = new ArrayList<PackageIdentification>();\r
+ Iterator vecItem = vec.iterator();\r
+ while (vecItem.hasNext()) {\r
+ set.add((PackageIdentification) vecItem.next());\r
+ }\r
+ return set;\r
+ }\r
+\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to create far file\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileOutputStream;\r
+import java.io.InputStream;\r
+import java.util.ArrayList;\r
+import java.util.Enumeration;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+import java.util.jar.JarEntry;\r
+import java.util.jar.JarFile;\r
+import java.util.jar.JarOutputStream;\r
+\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+\r
+public class Far {\r
+ //\r
+ // Class member Mainfest\r
+ //\r
+ public Mainfest mainfest = null;\r
+\r
+ //\r
+ // Jar file\r
+ //\r
+ private JarFile jf = null;\r
+\r
+ private File jarFile = null;\r
+\r
+ //\r
+ // Jar outputStream.\r
+ //\r
+ static public JarOutputStream jos = null;\r
+\r
+ public Far(File jarFile) {\r
+ this.jarFile = jarFile;\r
+ }\r
+\r
+ //\r
+ // For install/updat jar\r
+ //\r
+ public Far(JarFile farFile) throws Exception {\r
+ jf = farFile;\r
+ this.mainfest = new Mainfest(getMainfestFile());\r
+ }\r
+\r
+ public void creatFar(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,\r
+ Set<String> fileFilter, FarHeader fHeader) throws Exception {\r
+ jos = new JarOutputStream(new FileOutputStream(jarFile));\r
+\r
+ //\r
+ // Generate Manifest and get file lists\r
+ //\r
+ this.mainfest = new Mainfest();\r
+ this.mainfest.setFarHeader(fHeader);\r
+ this.mainfest.createManifest(pkgList, plfList, fileFilter);\r
+\r
+ this.mainfest.hibernateToFile();\r
+\r
+ //\r
+ // Write Mainifest file to JAR.\r
+ //\r
+ if (this.mainfest.mfFile != null) {\r
+ writeToJar(this.mainfest.mfFile, jos);\r
+ }\r
+\r
+ //\r
+ // Write all files to JAR\r
+ //\r
+ Set<File> files = this.mainfest.files;\r
+ Iterator<File> iter = files.iterator();\r
+ while (iter.hasNext()) {\r
+ writeToJar(iter.next(), jos);\r
+ }\r
+ jos.close();\r
+ }\r
+\r
+ private void writeToJar(File file, JarOutputStream jos) throws Exception {\r
+ byte[] buffer = new byte[(int) file.length()];\r
+ FileInputStream fInput = new FileInputStream(file);\r
+ JarEntry entry = new JarEntry(\r
+ Tools\r
+ .convertPathToUnixType(Tools\r
+ .getRelativePath(file.getPath(),\r
+ Workspace.getCurrentWorkspace())));\r
+ jos.putNextEntry(entry);\r
+ fInput.read(buffer);\r
+ jos.write(buffer);\r
+ fInput.close();\r
+ }\r
+\r
+ public void InstallFar(String dir) throws Exception {\r
+ List<FarFileItem> allFile = mainfest.getAllFileItem();\r
+ extract(allFile, dir);\r
+ }\r
+\r
+ public void InstallFar(Map<PlatformIdentification, File> plfMap, Map<PackageIdentification, File> pkgMap)\r
+ throws Exception {\r
+ Set<PlatformIdentification> plfKeys = plfMap.keySet();\r
+ Iterator<PlatformIdentification> plfIter = plfKeys.iterator();\r
+ while (plfIter.hasNext()) {\r
+ PlatformIdentification item = plfIter.next();\r
+ extract(this.mainfest.getPlatformContents(item), plfMap.get(item).getPath());\r
+ }\r
+\r
+ Set<PackageIdentification> pkgKeys = pkgMap.keySet();\r
+ Iterator<PackageIdentification> pkgIter = pkgKeys.iterator();\r
+ while (pkgIter.hasNext()) {\r
+ PackageIdentification item = pkgIter.next();\r
+ installPackage(item, pkgMap.get(item));\r
+ }\r
+ jf.close();\r
+ }\r
+\r
+ public void installPackage(PackageIdentification packageId, File installPath) throws Exception {\r
+ List<FarFileItem> contents = this.mainfest.getPackageContents(packageId);\r
+ extract(contents, installPath.getPath());\r
+ }\r
+\r
+ public InputStream getMainfestFile() throws Exception {\r
+ JarEntry je = null;\r
+ for (Enumeration e = jf.entries(); e.hasMoreElements();) {\r
+ je = (JarEntry) e.nextElement();\r
+ if (je.getName().equalsIgnoreCase(Mainfest.mfFileName))\r
+ return jf.getInputStream(je);\r
+ }\r
+ return null;\r
+ }\r
+\r
+ public void createFar() {\r
+\r
+ }\r
+\r
+ public boolean hibernateToFile() {\r
+ return true;\r
+ }\r
+\r
+ public void extract(List<FarFileItem> allFile, String dir) throws Exception {\r
+\r
+ Iterator filesItem = allFile.iterator();\r
+ FarFileItem ffItem;\r
+ JarEntry je;\r
+ new File(dir).mkdirs();\r
+ dir += File.separatorChar;\r
+ while (filesItem.hasNext()) {\r
+ try {\r
+ ffItem = (FarFileItem) filesItem.next();\r
+ // Enumeration<JarEntry> a = jf.entries();\r
+ // while (a.hasMoreElements()) {\r
+ // System.out.println("##" + a.nextElement().getName());\r
+ // }\r
+ je = jf.getJarEntry(Tools.convertPathToUnixType(ffItem.getDefaultPath()));\r
+ InputStream entryStream = jf.getInputStream(je);\r
+ File file = new File(dir + ffItem.getRelativeFilename());\r
+ file.getParentFile().mkdirs();\r
+ try {\r
+ //\r
+ // Create the output file (clobbering the file if it\r
+ // exists).\r
+ //\r
+ FileOutputStream outputStream = new FileOutputStream(file);\r
+\r
+ try {\r
+ //\r
+ // Read the entry data and write it to the output\r
+ // file.\r
+ //\r
+ int size = entryStream.available();\r
+ byte[] buffer = new byte[size];\r
+ outputStream.write(buffer);\r
+ // if (!(FarMd5.md5(buffer)).equalsIgnoreCase(ffItem.getMd5Value())){\r
+ // throw new Exception (je.getName() + " Md5 is invalided!");\r
+ // }\r
+\r
+ // System.out.println(je.getName() + " extracted.");\r
+ } finally {\r
+ outputStream.close();\r
+ }\r
+ } finally {\r
+ entryStream.close();\r
+ }\r
+\r
+ } finally {\r
+ //jf.close();\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ // public void installFarPackage (PackageIdentification pkgId, String dir) throws Exception{\r
+ // String pkgDir = null;\r
+ // List<FarFileItem> farFileList = new ArrayList<FarFileItem>();\r
+ // farFileList = this.mainfest.getPackageContents(pkgId);\r
+ // if (dir == null){\r
+ // pkgDir = this.mainfest.getPackageDefaultPath(pkgId);\r
+ // }else {\r
+ // pkgDir = dir;\r
+ // }\r
+ // extract(farFileList,pkgDir);\r
+ // }\r
+\r
+ public void addFileToFar(File file, JarOutputStream farOuputStream, String workDir) {\r
+\r
+ }\r
+\r
+ /**\r
+ * \r
+ * @param pkgId\r
+ * @return\r
+ */\r
+ public List<PackageIdentification> getPackageDependencies(PackageIdentification pkgId) {\r
+ String[] entry = new String[2];\r
+ PackageQuery pkgQ = new PackageQuery();\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+\r
+ entry = this.mainfest.getPackgeSpd(pkgId);\r
+ if (entry[0] != null) {\r
+ try {\r
+ JarEntry je;\r
+ je = jf.getJarEntry(Tools.convertPathToUnixType(entry[1] + File.separatorChar + entry[0]));\r
+ List<String> masList = pkgQ.getPackageMsaList(jf.getInputStream(je));\r
+ Iterator item = masList.iterator();\r
+ while (item.hasNext()) {\r
+ je = jf.getJarEntry(Tools.convertPathToUnixType(entry[1] + File.separatorChar + item.next()));\r
+ List<PackageIdentification> pkgIdList = pkgQ.getModuleDependencies(jf.getInputStream(je));\r
+ Iterator pkgItem = pkgIdList.iterator();\r
+ while (pkgItem.hasNext()) {\r
+ PackageIdentification id = (PackageIdentification) pkgItem.next();\r
+ if (!AggregationOperation.belongs(id, result)) {\r
+ result.add(id);\r
+ }\r
+ }\r
+ }\r
+ } catch (Exception e) {\r
+ System.out.println(e.getMessage());\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to save information of <FarFile> item.\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+public class FarFileItem {\r
+\r
+ private String relativeFilename;\r
+\r
+ private String md5Value;\r
+\r
+ private String defaultPath;\r
+\r
+ public FarFileItem(String relativeFilename, String md5Value) {\r
+ this.relativeFilename = relativeFilename;\r
+ this.md5Value = md5Value;\r
+ }\r
+\r
+ public String getMd5Value() {\r
+ return md5Value;\r
+ }\r
+\r
+ public String getRelativeFilename() {\r
+ return relativeFilename;\r
+ }\r
+\r
+ public void setMd5Value(String md5Value) {\r
+ this.md5Value = md5Value;\r
+ }\r
+\r
+ public void setRelativeFilename(String relativeFilename) {\r
+ this.relativeFilename = relativeFilename;\r
+ }\r
+\r
+ public String getDefaultPath() {\r
+ return defaultPath;\r
+ }\r
+\r
+ public void setDefaultPath(String defaultPath) {\r
+ this.defaultPath = defaultPath;\r
+ }\r
+\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to save <farPackage> information.\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+public class FarHeader {\r
+ //\r
+ // class member\r
+ //\r
+ private String farName;\r
+\r
+ private String guidValue;\r
+\r
+ private String version;\r
+\r
+ private String abstractStr;\r
+\r
+ private String description;\r
+\r
+ private String copyright;\r
+\r
+ private String license;\r
+\r
+ private String specification;\r
+\r
+ public String getAbstractStr() {\r
+ return abstractStr;\r
+ }\r
+\r
+ public void setAbstractStr(String abstractStr) {\r
+ this.abstractStr = abstractStr;\r
+ }\r
+\r
+ public String getCopyright() {\r
+ return copyright;\r
+ }\r
+\r
+ public void setCopyright(String copyright) {\r
+ this.copyright = copyright;\r
+ }\r
+\r
+ public String getDescription() {\r
+ return description;\r
+ }\r
+\r
+ public void setDescription(String description) {\r
+ this.description = description;\r
+ }\r
+\r
+ public String getFarName() {\r
+ return farName;\r
+ }\r
+\r
+ public void setFarName(String farName) {\r
+ this.farName = farName;\r
+ }\r
+\r
+ public String getGuidValue() {\r
+ return guidValue;\r
+ }\r
+\r
+ public void setGuidValue(String guidValue) {\r
+ this.guidValue = guidValue;\r
+ }\r
+\r
+ public String getLicense() {\r
+ return license;\r
+ }\r
+\r
+ public void setLicense(String license) {\r
+ this.license = license;\r
+ }\r
+\r
+ public String getSpecification() {\r
+ return specification;\r
+ }\r
+\r
+ public void setSpecification(String specification) {\r
+ this.specification = specification;\r
+ }\r
+\r
+ public String getVersion() {\r
+ return version;\r
+ }\r
+\r
+ public void setVersion(String version) {\r
+ this.version = version;\r
+ }\r
+}\r
--- /dev/null
+package org.tianocore.frameworkwizard.far;\r
+\r
+public class FarIdentification {\r
+\r
+ private String guid;\r
+\r
+ private String md5Value;\r
+\r
+ private String path;\r
+\r
+ public FarIdentification(String guid, String md5Value, String path) {\r
+ this.guid = guid;\r
+ this.md5Value = md5Value;\r
+ this.path = path;\r
+ }\r
+\r
+ public String getGuid() {\r
+ return guid;\r
+ }\r
+\r
+ public void setGuid(String guid) {\r
+ this.guid = guid;\r
+ }\r
+\r
+ public String getMd5Value() {\r
+ return md5Value;\r
+ }\r
+\r
+ public void setMd5Value(String md5Value) {\r
+ this.md5Value = md5Value;\r
+ }\r
+\r
+ public String getPath() {\r
+ return path;\r
+ }\r
+\r
+ public void setPath(String path) {\r
+ this.path = path;\r
+ }\r
+\r
+ public String toString() {\r
+ return path + " [" + guid + "]";\r
+ }\r
+}\r
--- /dev/null
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.Reader;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+\r
+public interface FarInterface {\r
+\r
+ public Reader getManifestFile();\r
+\r
+ public void hibernateToFile();\r
+\r
+ public boolean extract(Map<PackageIdentification, String> packagePathes,\r
+ Map<PlatformIdentification, String> platformPathes);\r
+\r
+ public Set<PackageIdentification> getPackageDependencies(PackageIdentification packageId);\r
+\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to caculate file MD5 value.\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.security.MessageDigest;\r
+\r
+public class FarMd5 {\r
+\r
+ static public String md5(File file) throws Exception {\r
+ byte[] buffer = new byte[(int) file.length()];\r
+ FileInputStream fInput = new FileInputStream(file);\r
+ fInput.read(buffer);\r
+ fInput.close();\r
+ return md5(buffer);\r
+\r
+ }\r
+\r
+ static public String md5(byte[] buffer) throws Exception {\r
+ MessageDigest md = MessageDigest.getInstance("MD5");\r
+ byte[] md5 = md.digest(buffer);\r
+ return new String(String.format("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", md5[0], md5[1], md5[2], md5[3], md5[4],\r
+ md5[5], md5[6], md5[7], md5[8], md5[9], md5[10], md5[11], md5[12], md5[13],\r
+ md5[14], md5[15]));\r
+\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to save <farPackage> information.\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.File;\r
+import java.util.List;\r
+\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+\r
+public class FarPackage {\r
+ //\r
+ // Class member\r
+ //\r
+ private FarFileItem farFile;\r
+\r
+ private String guidValue;\r
+\r
+ private String version;\r
+\r
+ private String defaultPath;\r
+\r
+ private List<FarPlatformItem> farPlatformList;\r
+\r
+ private List<FarFileItem> contentList;\r
+\r
+ public String getDefaultPath() {\r
+ return defaultPath;\r
+ }\r
+\r
+ public void setDefaultPath(String defaultPath) {\r
+ this.defaultPath = defaultPath;\r
+ }\r
+\r
+ public FarFileItem getFarFile() {\r
+ return farFile;\r
+ }\r
+\r
+ public void setFarFile(FarFileItem farFile) {\r
+ this.farFile = farFile;\r
+ }\r
+\r
+ public List<FarPlatformItem> getFarPlatformList() {\r
+ return farPlatformList;\r
+ }\r
+\r
+ public void setFarPlatformList(List<FarPlatformItem> farPlatformList) {\r
+ this.farPlatformList = farPlatformList;\r
+ }\r
+\r
+ public String getGuidValue() {\r
+ return guidValue;\r
+ }\r
+\r
+ public void setGuidValue(String guidValue) {\r
+ this.guidValue = guidValue;\r
+ }\r
+\r
+ public String getVersion() {\r
+ return version;\r
+ }\r
+\r
+ public void setVersion(String version) {\r
+ this.version = version;\r
+ }\r
+\r
+ public List<FarFileItem> getContentList() {\r
+ return this.contentList;\r
+ }\r
+\r
+ public void setContentList(List<FarFileItem> contentList) {\r
+ this.contentList = contentList;\r
+ }\r
+\r
+ public boolean isIdentityPkg(PackageIdentification pkgId) {\r
+ File file = new File(farFile.getRelativeFilename());\r
+ if (pkgId.getName() == file.getName() && pkgId.getGuid() == guidValue && pkgId.getVersion() == version) {\r
+ return true;\r
+ }\r
+ return false;\r
+\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to save <farPlatform> information.\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+\r
+public class FarPlatformItem {\r
+ //\r
+ // class member\r
+ //\r
+ private FarFileItem farFile;\r
+\r
+ private String guidValue;\r
+\r
+ private String version;\r
+\r
+ public FarFileItem getFarFile() {\r
+ return farFile;\r
+ }\r
+\r
+ public void setFarFile(FarFileItem farFile) {\r
+ this.farFile = farFile;\r
+ }\r
+\r
+ public String getGuidValue() {\r
+ return guidValue;\r
+ }\r
+\r
+ public void setGuidValue(String guidValue) {\r
+ this.guidValue = guidValue;\r
+ }\r
+\r
+ public String getVersion() {\r
+ return version;\r
+ }\r
+\r
+ public void setVersion(String version) {\r
+ this.version = version;\r
+ }\r
+\r
+ public boolean isIdentityPlf(PlatformIdentification plfId) {\r
+ if (plfId.getGuid() == guidValue && plfId.getVersion() == version) {\r
+ return true;\r
+ }\r
+ return false;\r
+\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+ \r
+ The file is used to create Far's mainfest file\r
+ \r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+\r
+import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+import javax.xml.transform.OutputKeys;\r
+import javax.xml.transform.Result;\r
+import javax.xml.transform.Source;\r
+import javax.xml.transform.Transformer;\r
+import javax.xml.transform.TransformerFactory;\r
+import javax.xml.transform.dom.DOMSource;\r
+import javax.xml.transform.stream.StreamResult;\r
+\r
+import org.apache.xmlbeans.XmlException;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.w3c.dom.Document;\r
+import org.w3c.dom.Element;\r
+import org.w3c.dom.NamedNodeMap;\r
+import org.w3c.dom.Node;\r
+import org.w3c.dom.NodeList;\r
+\r
+public class Mainfest implements ManifestInterface {\r
+ // /\r
+ // / mainfest document\r
+ // /\r
+ Document mainfestDoc = null;\r
+\r
+ // /\r
+ // / Mainfest file element name\r
+ // /\r
+ final static String mfFileName = "FarMainfest.MF";\r
+\r
+ //\r
+ // Header\r
+ //\r
+ final static String farHeader = "FarHeader";\r
+\r
+ final static String farHeader_FarName = "FarName";\r
+\r
+ final static String farHeader_Abstract = "Abstract";\r
+\r
+ final static String farHeader_Description = "Description";\r
+\r
+ final static String farHeader_CopyRight = "CopyRight";\r
+\r
+ final static String farHeader_License = "Licese";\r
+\r
+ final static String farHeader_Specification = "Specification";\r
+\r
+ //\r
+ // Package list\r
+ //\r
+ final static String farPackageList = "FarPackageList";\r
+\r
+ final static String farPlatformList = "FarPlatformList";\r
+\r
+ final static String contents = "Contents";\r
+\r
+ final static String userExtensions = "UserExtensions";\r
+\r
+ //\r
+ // Common node name\r
+ //\r
+\r
+ final static String guidValue = "GuidValue";\r
+\r
+ final static String version = "Version";\r
+\r
+ //\r
+ // FarPackage node name\r
+ //\r
+ final static String farPackageList_FarPackage = "FarPackage";\r
+\r
+ final static String farPackage_FarfileName = "FarFileName";\r
+\r
+ final static String farPackage_DefaultPath = "DefaultPath";\r
+\r
+ final static String farPlatformList_FarPlatform = "FarPlatform";\r
+\r
+ final static String farFileName_FarGuid = "FarGuid";\r
+\r
+ final static String farFileName_Md5sum = "Md5sum";\r
+\r
+ //\r
+ // mainfest header information.\r
+ //\r
+ FarHeader fhInfo = new FarHeader();\r
+\r
+ //\r
+ // FarPackage list\r
+ //\r
+ List<FarPackage> fPkgList = new ArrayList<FarPackage>();\r
+\r
+ //\r
+ // FarPlatform list\r
+ //\r
+ List<FarPlatformItem> fPlfList = new ArrayList<FarPlatformItem>();\r
+\r
+ Set<File> files = new LinkedHashSet<File>();\r
+\r
+ //\r
+ // Mainfest file\r
+ //\r
+ File mfFile = null;\r
+\r
+ public FarHeader getHeader() {\r
+ return fhInfo;\r
+ }\r
+\r
+ public Mainfest() throws Exception {\r
+ DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();\r
+ DocumentBuilder dombuilder = domfac.newDocumentBuilder();\r
+ Document document = dombuilder.newDocument();\r
+ this.mainfestDoc = document;\r
+\r
+ }\r
+\r
+ public Mainfest(InputStream mainfestInputStream) throws Exception {\r
+ DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();\r
+ try {\r
+ if (mainfestInputStream != null) {\r
+ DocumentBuilder dombuilder = domfac.newDocumentBuilder();\r
+ this.mainfestDoc = dombuilder.parse(mainfestInputStream);\r
+ parseMainfest();\r
+ }\r
+\r
+ } catch (Exception e) {\r
+ //\r
+ // Will change to throw Wizader exception.\r
+ //\r
+ throw new Exception(e.getMessage());\r
+ }\r
+ }\r
+\r
+ public void setFarHeader(FarHeader fHeader) {\r
+ this.fhInfo = fHeader;\r
+ }\r
+\r
+ public void createManifest(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,\r
+ Set<String> fileFilter) throws Exception {\r
+\r
+ //\r
+ // Add Package and it's contents to FarPackageList.\r
+ //\r
+ Iterator<PackageIdentification> pkgItem = pkgList.iterator();\r
+ while (pkgItem.hasNext()) {\r
+ PackageIdentification pkgId = pkgItem.next();\r
+\r
+ //\r
+ // Add package and it's contents to <FarPackageList>.\r
+ //\r
+ addPkgToPkgList(pkgId, fileFilter);\r
+ }\r
+\r
+ //\r
+ // Add FarPlatform to this.farPlatformList.\r
+ //\r
+ Iterator<PlatformIdentification> plfItem = plfList.iterator();\r
+ while (plfItem.hasNext()) {\r
+ PlatformIdentification plfId = plfItem.next();\r
+\r
+ //\r
+ // Add platform to Mainifest.\r
+ //\r
+ addPlatformIdToFarPlatformItemList(plfId);\r
+ }\r
+ }\r
+\r
+ public void setManifestFile(File mainfestFile) throws Exception {\r
+ DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();\r
+ DocumentBuilder dombuilder = domfac.newDocumentBuilder();\r
+ InputStream is = new FileInputStream(mainfestFile);\r
+ this.mainfestDoc = dombuilder.parse(is);\r
+ }\r
+\r
+ public void addPkgToPkgList(PackageIdentification packageId, Set<String> fileFilter) throws Exception {\r
+ files.add(packageId.getSpdFile());\r
+\r
+ FarPackage farPackage = new FarPackage();\r
+ //\r
+ // Add SPD file to FarPackage\r
+ //\r
+ File spdFile = new File(packageId.getPath());\r
+\r
+ FarFileItem ffItem = new FarFileItem(spdFile.getName(), FarMd5.md5(spdFile));\r
+ farPackage.setFarFile(ffItem);\r
+\r
+ //\r
+ // Add package guid value.\r
+ //\r
+ farPackage.setGuidValue(packageId.getGuid());\r
+\r
+ //\r
+ // Add package version\r
+ //\r
+ farPackage.setVersion(packageId.getVersion());\r
+\r
+ //\r
+ // Add DefaultPat: Package absoulte path - Workspace absolut\r
+ // path.\r
+ //\r
+ String pkgDir = Tools.getFilePathOnly(packageId.getPath());\r
+ File rootDir = new File(pkgDir);\r
+ farPackage.setDefaultPath(Tools.getRelativePath(rootDir.getPath(), Workspace.getCurrentWorkspace()));\r
+\r
+ //\r
+ // Get package root dir contains.\r
+ //\r
+ Set<File> fileSet = new LinkedHashSet<File>();\r
+ Set<File> fpdFileSet = new LinkedHashSet<File>();\r
+\r
+ //\r
+ // Get all files and fpd files\r
+ //\r
+ recursiveDirectory(fileSet, fpdFileSet, rootDir, fileFilter);\r
+\r
+ //\r
+ // Remove current package's SPD file\r
+ //\r
+ fileSet.remove(packageId.getSpdFile());\r
+\r
+ files.addAll(fileSet);\r
+\r
+ Iterator<File> iter = fileSet.iterator();\r
+ List<FarFileItem> contents = new ArrayList<FarFileItem>();\r
+ while (iter.hasNext()) {\r
+ File normalFile = iter.next();\r
+ String fileRelativePath = Tools.getRelativePath(normalFile.getPath(), pkgDir);\r
+ ffItem = new FarFileItem(fileRelativePath, FarMd5.md5(normalFile));\r
+ contents.add(ffItem);\r
+ }\r
+\r
+ farPackage.setContentList(contents);\r
+\r
+ // List<FarPlatformItem> fpfList = new ArrayList<FarPlatformItem>();\r
+ //\r
+ // iter = fpdFileSet.iterator();\r
+ //\r
+ // while (iter.hasNext()) {\r
+ // File fpdFile = iter.next();\r
+ // PlatformIdentification platformId = new PlatformIdentification(wsTool\r
+ // .getId(fpdFile.getPath(), OpenFile.openFpdFile(fpdFile\r
+ // .getPath())));\r
+ // addPlatformIdToFarPlatformItemList(fpfList, platformId);\r
+ // }\r
+ // farPackage.setFarPlatformList(fpfList);\r
+ fPkgList.add(farPackage);\r
+ }\r
+\r
+ private void recursiveDirectory(Set<File> files, Set<File> fpds, File dir, Set<String> fileFilter) {\r
+ if (isFilter(dir, fileFilter)) {\r
+ return;\r
+ }\r
+ File[] allFilesInDir = dir.listFiles();\r
+ for (int i = 0; i < allFilesInDir.length; i++) {\r
+ if (allFilesInDir[i].isFile()) {\r
+ if (isFilter(allFilesInDir[i], fileFilter)) {\r
+ continue;\r
+ }\r
+ // if (allFilesInDir[i].getPath().toLowerCase().endsWith(".fpd")) {\r
+ // fpds.add(allFilesInDir[i]);\r
+ // } else {\r
+ files.add(allFilesInDir[i]);\r
+ // }\r
+ } else {\r
+ recursiveDirectory(files, fpds, allFilesInDir[i], fileFilter);\r
+ }\r
+ }\r
+ }\r
+\r
+ public void addPlatformIdToFarPlatformItemList(PlatformIdentification platformId) throws Exception {\r
+ files.add(platformId.getFpdFile());\r
+\r
+ FarPlatformItem fpfItem = new FarPlatformItem();\r
+ FarFileItem ffItem;\r
+ String fpfPath = platformId.getPath();\r
+ File fpfFile = new File(fpfPath);\r
+ //\r
+ // Add farFileName\r
+ //\r
+ ffItem = new FarFileItem(Tools.getRelativePath(fpfFile.getPath(), Workspace.getCurrentWorkspace()),\r
+ FarMd5.md5(fpfFile));\r
+ fpfItem.setFarFile(ffItem);\r
+\r
+ //\r
+ // Add guid value\r
+ //\r
+ fpfItem.setGuidValue(platformId.getGuid());\r
+\r
+ //\r
+ // Add version\r
+ //\r
+ fpfItem.setVersion(platformId.getVersion());\r
+\r
+ fPlfList.add(fpfItem);\r
+ }\r
+\r
+ /**\r
+ * \r
+ * @param\r
+ * @return Set<PackageIdentification> list of PackageIdentification.\r
+ */\r
+ public List<PackageIdentification> getPackageList() throws Exception {\r
+ //\r
+ // PackageIdentification set.\r
+ //\r
+ List<PackageIdentification> pkgList = new ArrayList<PackageIdentification>();\r
+ //\r
+ // \r
+ //\r
+ Iterator pkgItem = this.fPkgList.iterator();\r
+ while (pkgItem.hasNext()) {\r
+ FarPackage fPkg = (FarPackage) pkgItem.next();\r
+ //\r
+ // Get package information from SPD file and create a package\r
+ // identification.\r
+ //\r
+\r
+ PackageIdentification pkgId = new PackageIdentification(fPkg.getFarFile().getRelativeFilename(),\r
+ fPkg.getGuidValue(), fPkg.getVersion());\r
+ pkgId.setPath(Workspace.getCurrentWorkspace() + File.separatorChar + fPkg.getDefaultPath()\r
+ + File.separatorChar + fPkg.getFarFile().getRelativeFilename());\r
+ // wsTool.getId(\r
+ // Workspace.getCurrentWorkspace() + File.separatorChar\r
+ // + fPkg.getDefaultPath(), OpenFile\r
+ // .openFpdFile(Workspace.getCurrentWorkspace()\r
+ // + File.separatorChar\r
+ // + fPkg.getDefaultPath()\r
+ // + File.separatorChar\r
+ // + fPkg.getFarFile().getRelativeFilename()));\r
+ pkgList.add(pkgId);\r
+ }\r
+ return pkgList;\r
+ }\r
+\r
+ /**\r
+ * \r
+ */\r
+ public List<PlatformIdentification> getPlatformList() throws Exception, IOException, XmlException {\r
+ //\r
+ // PlatformIdentification set.\r
+ //\r
+ List<PlatformIdentification> plfList = new ArrayList<PlatformIdentification>();\r
+ Iterator plfItem = this.fPlfList.iterator();\r
+ while (plfItem.hasNext()) {\r
+ FarPlatformItem fpfItem = (FarPlatformItem) plfItem.next();\r
+ File file = new File(Workspace.getCurrentWorkspace() + File.separatorChar\r
+ + fpfItem.getFarFile().getRelativeFilename());\r
+ //\r
+ // Set platformIdentificaiton's path as absolutly path (include\r
+ // workspace and FPD relatively path)\r
+ //\r
+ PlatformIdentification plfId = new PlatformIdentification(fpfItem.getFarFile().getRelativeFilename(),\r
+ fpfItem.getGuidValue(), fpfItem.getVersion(),\r
+ file.getPath());\r
+\r
+ // (PlatformIdentification) wsTool\r
+ // .getId(file.getParent(), OpenFile.openFpdFile(Workspace\r
+ // .getCurrentWorkspace()\r
+ // + File.separatorChar\r
+ // + fpfItem.getFarFile().getRelativeFilename()));\r
+ plfList.add(plfId);\r
+ }\r
+ return plfList;\r
+ }\r
+\r
+ public List<FarFileItem> getPlatformContents(PlatformIdentification platformId) {\r
+ List<FarFileItem> result = new ArrayList<FarFileItem>();\r
+ Iterator<FarPlatformItem> iter = this.fPlfList.iterator();\r
+\r
+ while (iter.hasNext()) {\r
+ FarPlatformItem item = iter.next();\r
+ if (item.isIdentityPlf(platformId)) {\r
+ FarFileItem farFileItem = item.getFarFile();\r
+ farFileItem.setDefaultPath(farFileItem.getRelativeFilename());\r
+ result.add(farFileItem);\r
+ break;\r
+ }\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public List<FarFileItem> getPackageContents(PackageIdentification packageId) {\r
+ List<FarFileItem> farFileList = new ArrayList<FarFileItem>();\r
+ Iterator pkgItem = this.fPkgList.iterator();\r
+ while (pkgItem.hasNext()) {\r
+ FarPackage pkg = (FarPackage) pkgItem.next();\r
+ if (pkg.isIdentityPkg(packageId)) {\r
+ //\r
+ // Add spd far file to list.\r
+ //\r
+ farFileList.add(pkg.getFarFile());\r
+ //\r
+ // Add all files in contents to list.\r
+ //\r
+ farFileList.addAll(pkg.getContentList());\r
+ //\r
+ // Add all farfiles in <FarPlatformList> to list.\r
+ //\r
+ // List<FarPlatformItem> plfList = pkg.getFarPlatformList();\r
+ // Iterator plfItem = plfList.iterator();\r
+ // while (plfItem.hasNext()) {\r
+ // farFileList.add(((FarPlatformItem) plfItem.next())\r
+ // .getFarFile());\r
+ // }\r
+\r
+ Iterator<FarFileItem> ffIter = farFileList.iterator();\r
+ while (ffIter.hasNext()) {\r
+ FarFileItem ffItem = ffIter.next();\r
+ ffItem.setDefaultPath(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename());\r
+ }\r
+ break;\r
+ }\r
+ }\r
+\r
+ return farFileList;\r
+ }\r
+\r
+ /**\r
+ * \r
+ * @param pkgId\r
+ * @return String: return string represent jar file entry; \r
+ */\r
+ public String[] getPackgeSpd(PackageIdentification pkgId) {\r
+ Iterator pkgItem = this.fPkgList.iterator();\r
+ String[] entryStr = new String[2];\r
+ while (pkgItem.hasNext()) {\r
+ FarPackage pkg = (FarPackage) pkgItem.next();\r
+ if (pkg.isIdentityPkg(pkgId)) {\r
+ entryStr[0] = pkg.getFarFile().getRelativeFilename();\r
+ entryStr[1] = pkg.getDefaultPath();\r
+ return entryStr;\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ public List<FarFileItem> getPackageContents() {\r
+ //\r
+ // In this farFilelist,all FarFileItem's relativeFileName should be\r
+ // set as absolutely path.\r
+ //\r
+ List<FarFileItem> farFileList = new ArrayList<FarFileItem>();\r
+ Iterator pkgItem = this.fPkgList.iterator();\r
+ FarFileItem ffItem = null;\r
+\r
+ while (pkgItem.hasNext()) {\r
+ FarPackage pkg = (FarPackage) pkgItem.next();\r
+\r
+ //\r
+ // Add spd far file to list.\r
+ //\r
+ ffItem = pkg.getFarFile();\r
+ //\r
+ // Set farFileItem relativeFileName = absolutePath + file Name.\r
+ //\r
+ farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename(),\r
+ ffItem.getMd5Value()));\r
+ //\r
+ // Add all files in contents to list.\r
+ //\r
+ Iterator contentsItem = pkg.getContentList().iterator();\r
+ while (contentsItem.hasNext()) {\r
+ ffItem = (FarFileItem) contentsItem.next();\r
+ farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separator + ffItem.getRelativeFilename(),\r
+ ffItem.getMd5Value()));\r
+ }\r
+ //\r
+ // Add all farfiles in <FarPlatformList> to list.\r
+ //\r
+ List<FarPlatformItem> plfList = pkg.getFarPlatformList();\r
+ Iterator plfItem = plfList.iterator();\r
+ while (plfItem.hasNext()) {\r
+ ffItem = ((FarPlatformItem) plfItem.next()).getFarFile();\r
+ farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separator + ffItem.getRelativeFilename(),\r
+ ffItem.getMd5Value()));\r
+ }\r
+ }\r
+ return farFileList;\r
+ }\r
+\r
+ public String getPackageDefaultPath(PackageIdentification packageId) {\r
+ Iterator pkgItr = this.fPkgList.iterator();\r
+ while (pkgItr.hasNext()) {\r
+ FarPackage farPackage = (FarPackage) pkgItr.next();\r
+ if (farPackage.isIdentityPkg(packageId)) {\r
+ return farPackage.getDefaultPath();\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ // public void setPackageInstallPath(PackageIdentification packageId, String path) {\r
+ // Iterator<FarPackage> pkgItr = this.fPkgList.iterator();\r
+ // while (pkgItr.hasNext()) {\r
+ // FarPackage farPackage = pkgItr.next();\r
+ // if (farPackage.isIdentityPkg(packageId)) {\r
+ // farPackage.setDefaultPath(path);\r
+ // return ;\r
+ // }\r
+ // }\r
+ // }\r
+ //\r
+ // public void setPlatformInstallPath(PlatformIdentification platformId, String path) {\r
+ // Iterator<FarPlatformItem> plfItr = this.fPlfList.iterator();\r
+ // while (plfItr.hasNext()) {\r
+ // FarPlatformItem farPlatform = plfItr.next();\r
+ // if (farPlatform.i.isIdentity(platformId)) {\r
+ // farPackage.setDefaultPath(path);\r
+ // return ;\r
+ // }\r
+ // }\r
+ // }\r
+\r
+ public List<FarFileItem> getAllFileItem() {\r
+ //\r
+ // The farFileName in this list are all abosulte path.\r
+ //\r
+ List<FarFileItem> ffiList = new ArrayList<FarFileItem>();\r
+ //\r
+ // Add far files in <FarPackageList> to list.\r
+ //\r
+ ffiList = this.getPackageContents();\r
+\r
+ //\r
+ // Add far files in <FarPlatformList> to list\r
+ //\r
+ NodeList elementList = this.mainfestDoc.getElementsByTagName(farPlatformList);\r
+ for (int i = 0; i < elementList.getLength(); i++) {\r
+ //\r
+ // Get <farPlatform> node list.\r
+ //\r
+ Node item = elementList.item(i);\r
+ NodeList plfElements = item.getChildNodes();\r
+ for (int j = 0; j < plfElements.getLength(); j++) {\r
+ //\r
+ // Get each <FarPlatform> content.\r
+ //\r
+ NodeList plfChildNode = plfElements.item(i).getChildNodes();\r
+ Node tempNode = null;\r
+ for (int t = 0; t < plfChildNode.getLength(); t++) {\r
+ tempNode = plfChildNode.item(t);\r
+ //\r
+ // Get child node value and set to platformIdentification.\r
+ //\r
+ if (tempNode.getNodeName().equalsIgnoreCase(farPackage_FarfileName)) {\r
+ NamedNodeMap farAttr = tempNode.getAttributes();\r
+ //\r
+ // Change relative path to absolute one\r
+ //\r
+ FarFileItem farFile = new FarFileItem(tempNode.getTextContent(),\r
+ farAttr.getNamedItem(farFileName_Md5sum).getTextContent());\r
+ ffiList.add(farFile);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return ffiList;\r
+ }\r
+\r
+ public void hibernateToFile() throws Exception {\r
+ //\r
+ // create mainfest root node\r
+ //\r
+ Element rootNode = this.mainfestDoc.createElement("FrameworkArchiveManifest");\r
+ this.mainfestDoc.appendChild(rootNode);\r
+\r
+ //\r
+ // create mainfest header node\r
+ //\r
+ Element headerNode = this.mainfestDoc.createElement(farHeader);\r
+ rootNode.appendChild(headerNode);\r
+ //\r
+ // Add FarHeader to headerNode.\r
+ //\r
+ Element farName = this.mainfestDoc.createElement(farHeader_FarName);\r
+ farName.setTextContent(this.fhInfo.getFarName());\r
+ headerNode.appendChild(farName);\r
+\r
+ Element gv = this.mainfestDoc.createElement(guidValue);\r
+ gv.setTextContent(this.fhInfo.getGuidValue());\r
+ headerNode.appendChild(gv);\r
+\r
+ Element ver = this.mainfestDoc.createElement(version);\r
+ ver.setTextContent(this.fhInfo.getVersion());\r
+ headerNode.appendChild(ver);\r
+\r
+ Element abstra = this.mainfestDoc.createElement(farHeader_Abstract);\r
+ abstra.setTextContent(this.fhInfo.getAbstractStr());\r
+ headerNode.appendChild(abstra);\r
+\r
+ Element descr = this.mainfestDoc.createElement(farHeader_Description);\r
+ descr.setTextContent(this.fhInfo.getDescription());\r
+ headerNode.appendChild(descr);\r
+\r
+ Element copyright = this.mainfestDoc.createElement(farHeader_CopyRight);\r
+ copyright.setTextContent(this.fhInfo.getCopyright());\r
+ headerNode.appendChild(copyright);\r
+\r
+ Element license = this.mainfestDoc.createElement(farHeader_License);\r
+ license.setTextContent(this.fhInfo.getLicense());\r
+ headerNode.appendChild(license);\r
+\r
+ Element spec = this.mainfestDoc.createElement(farHeader_Specification);\r
+ spec.setTextContent(this.fhInfo.getSpecification());\r
+ System.out.println(this.fhInfo.getSpecification());\r
+ headerNode.appendChild(spec);\r
+\r
+ //\r
+ // create mainfest FarPackageList node\r
+ //\r
+ Element pkgListNode = this.mainfestDoc.createElement(farPackageList);\r
+ rootNode.appendChild(pkgListNode);\r
+\r
+ //\r
+ // Save each item in farPackage list to <FarPackage>.\r
+ //\r
+ Iterator pkgItem = this.fPkgList.iterator();\r
+ while (pkgItem.hasNext()) {\r
+ pkgToFarPkgNode(pkgListNode, (FarPackage) pkgItem.next());\r
+\r
+ }\r
+\r
+ //\r
+ // create mainfest FarPlatformList node\r
+ //\r
+ Element plfListNode = this.mainfestDoc.createElement(farPlatformList);\r
+ rootNode.appendChild(plfListNode);\r
+\r
+ //\r
+ // Save farPakcage list info to <FarPackageList> node\r
+ //\r
+ Iterator plfItem = this.fPlfList.iterator();\r
+ while (plfItem.hasNext()) {\r
+ FarPlatformItem plfIterator = (FarPlatformItem) plfItem.next();\r
+ PlfToPlatformNode(plfListNode, plfIterator);\r
+ }\r
+\r
+ //\r
+ // Write the DOM document to the file\r
+ //\r
+ Transformer xformer = TransformerFactory.newInstance().newTransformer();\r
+ xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");\r
+ xformer.setOutputProperty(OutputKeys.INDENT, "yes");\r
+\r
+ //\r
+ // Prepare the DOM document for writing\r
+ //\r
+ Source source = new DOMSource(this.mainfestDoc);\r
+ //\r
+ // Prepare the output file, get the Mainifest file name from <FarHeader>\r
+ // /<FarName>.\r
+ //\r
+ this.mfFile = new File(Workspace.getCurrentWorkspace() + File.separatorChar + mfFileName);\r
+ //\r
+ // generate all directory path\r
+ //\r
+ Result result = new StreamResult(this.mfFile);\r
+ xformer.transform(source, result);\r
+ }\r
+\r
+ public void pkgToFarPkgNode(Element parentNode, FarPackage pkgItem) {\r
+ Element pkgNode = this.mainfestDoc.createElement(farPackageList_FarPackage);\r
+ //\r
+ // Add <FarFileName>\r
+ //\r
+ ffiToFfNode(pkgNode, pkgItem.getFarFile());\r
+ //\r
+ // Add <GuidValue>\r
+ //\r
+ setStrItemToNode(pkgNode, pkgItem.getGuidValue(), guidValue);\r
+ //\r
+ // Add <Version>\r
+ //\r
+ setStrItemToNode(pkgNode, pkgItem.getVersion(), version);\r
+ //\r
+ // Add <DefaultPath>\r
+ //\r
+ setStrItemToNode(pkgNode, pkgItem.getDefaultPath(), farPackage_DefaultPath);\r
+\r
+ //\r
+ // Add <Contents>\r
+ //\r
+ Element contentNode = this.mainfestDoc.createElement(contents);\r
+ Iterator iterator = pkgItem.getContentList().iterator();\r
+ while (iterator.hasNext()) {\r
+ ffiToFfNode(contentNode, (FarFileItem) iterator.next());\r
+ }\r
+ pkgNode.appendChild(contentNode);\r
+ parentNode.appendChild(pkgNode);\r
+ }\r
+\r
+ public void PlfToPlatformNode(Element parentNode, FarPlatformItem fplItem) {\r
+ Element fplNode = this.mainfestDoc.createElement(farPlatformList_FarPlatform);\r
+ //\r
+ // Add <FarFileName>\r
+ //\r
+ ffiToFfNode(fplNode, fplItem.getFarFile());\r
+ //\r
+ // Add <GuidValue>\r
+ //\r
+ setStrItemToNode(fplNode, fplItem.getGuidValue(), guidValue);\r
+ //\r
+ // Add <Version>\r
+ //\r
+ setStrItemToNode(fplNode, fplItem.getVersion(), version);\r
+ //\r
+ // Add to <PlatformList>\r
+ //\r
+ parentNode.appendChild(fplNode);\r
+\r
+ }\r
+\r
+ public void ffiToFfNode(Element parentNode, FarFileItem ffi) {\r
+ Element farFileName = this.mainfestDoc.createElement(farPackage_FarfileName);\r
+ farFileName.setTextContent(ffi.getRelativeFilename());\r
+ System.out.println(farFileName.getTextContent());\r
+ System.out.println(ffi.getRelativeFilename());\r
+ farFileName.setAttribute(farFileName_Md5sum, ffi.getMd5Value());\r
+ parentNode.appendChild(farFileName);\r
+ }\r
+\r
+ public void setStrItemToNode(Element parentNode, String strValue, String strName) {\r
+ Element node = this.mainfestDoc.createElement(strName);\r
+ node.setTextContent(strValue);\r
+ parentNode.appendChild(node);\r
+ }\r
+\r
+ private void parseMainfest() {\r
+\r
+ //\r
+ // Parse header\r
+ //\r
+ parseMfHeader();\r
+ //\r
+ // parse <farPackageList>\r
+ //\r
+ parseHeaderFarPackageList();\r
+\r
+ //\r
+ // parse <farPlatformList>\r
+ //\r
+ NodeList ele = this.mainfestDoc.getElementsByTagName(farPlatformList);\r
+ Node plfNode;\r
+ if (ele.getLength() > 0) {\r
+ //\r
+ // Only have one <FarPlatformList> node under mainfest root node.\r
+ //\r
+ plfNode = ele.item(0);\r
+ parseFarPlatformList(plfNode, this.fPlfList);\r
+ }\r
+ }\r
+\r
+ private void parseMfHeader() {\r
+ Node headerNode;\r
+ NodeList ele = this.mainfestDoc.getElementsByTagName(farHeader);\r
+ if (ele.getLength() > 0) {\r
+ //\r
+ // For mainfest file only have one <FarHeader>\r
+ //\r
+ headerNode = ele.item(0);\r
+ } else {\r
+ return;\r
+ }\r
+ NodeList childList = headerNode.getChildNodes();\r
+ Node node = null;\r
+ String nodeName = null;\r
+ for (int i = 0; i < childList.getLength(); i++) {\r
+ node = childList.item(i);\r
+ nodeName = node.getNodeName();\r
+ if (nodeName.equalsIgnoreCase(farHeader_FarName)) {\r
+ String nodeValue = node.getTextContent();\r
+ this.fhInfo.setFarName(nodeValue);\r
+ } else if (nodeName.equalsIgnoreCase(guidValue)) {\r
+ this.fhInfo.setGuidValue(node.getTextContent());\r
+ } else if (nodeName.equalsIgnoreCase(version)) {\r
+ this.fhInfo.setVersion(node.getTextContent());\r
+ } else if (nodeName.equalsIgnoreCase(farHeader_Abstract)) {\r
+ this.fhInfo.setAbstractStr(node.getTextContent());\r
+ } else if (nodeName.equalsIgnoreCase(farHeader_Description)) {\r
+ this.fhInfo.setDescription(node.getTextContent());\r
+ } else if (nodeName.equalsIgnoreCase(farHeader_CopyRight)) {\r
+ this.fhInfo.setCopyright(node.getTextContent());\r
+ } else if (nodeName.equalsIgnoreCase(farHeader_License)) {\r
+ this.fhInfo.setLicense(node.getTextContent());\r
+ } else if (nodeName.equalsIgnoreCase(farHeader_Specification)) {\r
+ this.fhInfo.setSpecification(node.getTextContent());\r
+ }\r
+ }\r
+ }\r
+\r
+ public void parseHeaderFarPackageList() {\r
+ Node farPkgNode;\r
+ NodeList ele = this.mainfestDoc.getElementsByTagName(farPackageList);\r
+ if (ele.getLength() > 0) {\r
+ //\r
+ // For mainfest file only have one <FarHeader>\r
+ //\r
+ farPkgNode = ele.item(0);\r
+ } else {\r
+ return;\r
+ }\r
+ NodeList fpnList = farPkgNode.getChildNodes();\r
+ for (int i = 0; i < fpnList.getLength(); i++) {\r
+ if (fpnList.item(i).getNodeType() == Node.TEXT_NODE) {\r
+ continue;\r
+ }\r
+ FarPackage fpItem = new FarPackage();\r
+ parseFarPackage(fpnList.item(i), fpItem);\r
+ this.fPkgList.add(fpItem);\r
+ }\r
+ }\r
+\r
+ public void parseFarPackage(Node farPkgNode, FarPackage fpItem) {\r
+ NodeList childList = farPkgNode.getChildNodes();\r
+ Node childNode;\r
+ String childName;\r
+ for (int i = 0; i < childList.getLength(); i++) {\r
+ childNode = childList.item(i);\r
+ childName = childNode.getNodeName();\r
+ if (childName.equalsIgnoreCase(farPackage_FarfileName)) {\r
+ fpItem.setFarFile(parseFarFile(childNode));\r
+ } else if (childName.equalsIgnoreCase(guidValue)) {\r
+ fpItem.setGuidValue(childNode.getTextContent());\r
+ } else if (childName.equalsIgnoreCase(version)) {\r
+ fpItem.setVersion(childNode.getTextContent());\r
+ } else if (childName.equalsIgnoreCase(farPackage_DefaultPath)) {\r
+ fpItem.setDefaultPath(childNode.getTextContent());\r
+ } else if (childName.equalsIgnoreCase(farPlatformList)) {\r
+ List<FarPlatformItem> plfList = new ArrayList<FarPlatformItem>();\r
+ parseFarPlatformList(childNode, plfList);\r
+ fpItem.setFarPlatformList(plfList);\r
+ } else if (childName.equalsIgnoreCase(contents)) {\r
+ List<FarFileItem> ffList = new ArrayList<FarFileItem>();\r
+ parseContents(childNode, ffList);\r
+ fpItem.setContentList(ffList);\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * \r
+ * @param fpfListNode\r
+ * @param plfList\r
+ */\r
+ public void parseFarPlatformList(Node fpfListNode, List<FarPlatformItem> plfList) {\r
+ //\r
+ // Get <FarPlatform> list.\r
+ //\r
+ NodeList child = fpfListNode.getChildNodes();\r
+ Node farPlfNode;\r
+ for (int i = 0; i < child.getLength(); i++) {\r
+ if (child.item(i).getNodeType() == Node.TEXT_NODE) {\r
+ continue;\r
+ }\r
+ farPlfNode = child.item(i);\r
+ plfList.add(parseFarPlatform(farPlfNode));\r
+ }\r
+ }\r
+\r
+ /**\r
+ * \r
+ * @param fpfNode\r
+ * @return\r
+ */\r
+ public FarPlatformItem parseFarPlatform(Node fpfNode) {\r
+ //\r
+ // New FarPlatformItem.\r
+ //\r
+ FarPlatformItem fplItem = new FarPlatformItem();\r
+ //\r
+ // Get <FarPlatform> elements;\r
+ //\r
+ NodeList childList = fpfNode.getChildNodes();\r
+ Node child;\r
+ String nodeName;\r
+ for (int i = 0; i < childList.getLength(); i++) {\r
+ child = childList.item(i);\r
+ nodeName = child.getNodeName();\r
+ if (nodeName.equalsIgnoreCase(farPackage_FarfileName)) {\r
+ fplItem.setFarFile(parseFarFile(child));\r
+ } else if (nodeName.equalsIgnoreCase(guidValue)) {\r
+ fplItem.setGuidValue(child.getTextContent());\r
+ } else if (nodeName.equalsIgnoreCase(version)) {\r
+ fplItem.setVersion(child.getTextContent());\r
+ }\r
+ }\r
+\r
+ return fplItem;\r
+ }\r
+\r
+ public void parseContents(Node contentsNode, List<FarFileItem> ffList) {\r
+ NodeList contentList = contentsNode.getChildNodes();\r
+ Node contentNode;\r
+ for (int i = 0; i < contentList.getLength(); i++) {\r
+ if (contentList.item(i).getNodeType() == Node.TEXT_NODE) {\r
+ continue;\r
+ }\r
+ contentNode = contentList.item(i);\r
+ //\r
+ // Parse each <FarFileName>.\r
+ //\r
+ ffList.add(parseFarFile(contentNode));\r
+ }\r
+ }\r
+\r
+ public FarFileItem parseFarFile(Node farFileNode) {\r
+ String ffName = farFileNode.getTextContent();\r
+ NamedNodeMap attr = farFileNode.getAttributes();\r
+ FarFileItem ffItem = new FarFileItem(ffName, attr.getNamedItem(farFileName_Md5sum).getTextContent());\r
+ return ffItem;\r
+ }\r
+\r
+ public boolean isFilter(File file, Set<String> fileter) {\r
+ Iterator<String> iter = fileter.iterator();\r
+ while (iter.hasNext()) {\r
+ Pattern pattern = Pattern.compile(iter.next());\r
+ Matcher matcher = pattern.matcher(file.getName());\r
+\r
+ if (matcher.find()) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.apache.xmlbeans.XmlException;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+\r
+public interface ManifestInterface {\r
+\r
+ public void createManifest(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,\r
+ Set<String> fileFilter) throws Exception;\r
+\r
+ public void setManifestFile(File manifestFile) throws Exception;\r
+\r
+ public List<PackageIdentification> getPackageList() throws Exception;\r
+\r
+ public List<PlatformIdentification> getPlatformList() throws Exception, IOException, XmlException;\r
+\r
+ public List<FarFileItem> getPackageContents(PackageIdentification packageId);\r
+\r
+ public String getPackageDefaultPath(PackageIdentification packageId);\r
+\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.File;\r
+import java.io.InputStream;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.xmlbeans.XmlObject;\r
+import org.tianocore.ModuleSurfaceAreaDocument;\r
+import org.tianocore.PackageDependenciesDocument;\r
+import org.tianocore.PackageSurfaceAreaDocument;\r
+import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
+import org.tianocore.frameworkwizard.common.Identifications.OpenFile;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+public class PackageQuery implements PackageQueryInterface {\r
+\r
+ public PackageIdentification getPackageIdentification(File spdFile) {\r
+ PackageIdentification packageId = null;\r
+ try {\r
+ String path = spdFile.getPath();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ packageId = new PackageIdentification(wt.getId(path, OpenFile.openSpdFile(path)));\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ return packageId;\r
+ }\r
+\r
+ public List<String> getPackageMsaList(InputStream spdInput) {\r
+ List<String> result = new ArrayList<String>();\r
+ try {\r
+ PackageSurfaceAreaDocument spd = (PackageSurfaceAreaDocument) XmlObject.Factory.parse(spdInput);\r
+ result = spd.getPackageSurfaceArea().getMsaFiles().getFilenameList();\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public List<PackageIdentification> getModuleDependencies(InputStream msaInput) {\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ try {\r
+ ModuleSurfaceAreaDocument msa = (ModuleSurfaceAreaDocument) XmlObject.Factory.parse(msaInput);\r
+ ModuleSurfaceAreaDocument.ModuleSurfaceArea sa = msa.getModuleSurfaceArea();\r
+ if (sa == null) {\r
+ return result;\r
+ }\r
+ PackageDependenciesDocument.PackageDependencies pkgDep = sa.getPackageDependencies();\r
+ if (pkgDep == null) {\r
+ return result;\r
+ }\r
+ List<PackageDependenciesDocument.PackageDependencies.Package> list = pkgDep.getPackageList();\r
+ Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = list.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageDependenciesDocument.PackageDependencies.Package item = iter.next();\r
+ PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),\r
+ item.getPackageVersion());\r
+ result.add(packageId);\r
+ }\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public List<File> getPackageMsaList(File spdFile) {\r
+ List<File> result = new Vector<File>();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ List<String> v = wt.getAllModulesOfPackage(spdFile.getPath());\r
+ Iterator<String> iter = v.iterator();\r
+ while (iter.hasNext()) {\r
+ result.add(new File(iter.next()));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public List<PackageIdentification> getPackageDependencies(File spdFile) {\r
+ List<File> msaFiles = getPackageMsaList(spdFile);\r
+ return getPackageDependencies(msaFiles);\r
+ }\r
+\r
+ public List<PackageIdentification> getPackageDependencies(List<File> msaFiles) {\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ Iterator<File> iter = msaFiles.iterator();\r
+ while (iter.hasNext()) {\r
+ result = AggregationOperation.union(result, getModuleDependencies(iter.next()));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public List<PackageIdentification> getModuleDependencies(File msaFile) {\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ try {\r
+ ModuleSurfaceArea msa = OpenFile.openMsaFile(msaFile.getPath());\r
+ List<PackageDependenciesDocument.PackageDependencies.Package> p = msa.getPackageDependencies()\r
+ .getPackageList();\r
+ Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = p.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageDependenciesDocument.PackageDependencies.Package item = iter.next();\r
+ PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),\r
+ item.getPackageVersion());\r
+ if (!AggregationOperation.belongs(packageId, result)) {\r
+ result.add(packageId);\r
+ }\r
+ }\r
+ } catch (Exception e) {\r
+ }\r
+ return result;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far;\r
+\r
+import java.io.File;\r
+import java.io.InputStream;\r
+import java.util.List;\r
+\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+\r
+public interface PackageQueryInterface {\r
+\r
+ public PackageIdentification getPackageIdentification(File spdFile);\r
+\r
+ public List<File> getPackageMsaList(File spdFile);\r
+\r
+ public List<String> getPackageMsaList(InputStream spdInput);\r
+\r
+ public List<PackageIdentification> getPackageDependencies(File spdFile);\r
+\r
+ public List<PackageIdentification> getPackageDependencies(List<File> msaFiles);\r
+\r
+ public List<PackageIdentification> getModuleDependencies(InputStream msaInput);\r
+\r
+ public List<PackageIdentification> getModuleDependencies(File msaFile);\r
+\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.createui;\r
+\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JTextField;\r
+import javax.swing.table.DefaultTableModel;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.IFileFilter;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.far.AggregationOperation;\r
+import org.tianocore.frameworkwizard.far.Far;\r
+import org.tianocore.frameworkwizard.far.PackageQuery;\r
+import org.tianocore.frameworkwizard.far.PackageQueryInterface;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+\r
+public class CreateStepFour extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = -7397213364965470902L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JTextArea jTextAreaInstruction = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JLabel jLabel2 = null;\r
+\r
+ private JTextField jTextFieldSaveToFile = null;\r
+\r
+ private JButton jButtonBrowser = null;\r
+\r
+ // private JScrollPane jScrollPane = null;\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonFinish = null;\r
+\r
+ private JButton jButtonPrevious = null;\r
+\r
+ private PartialTableModel model = null;\r
+\r
+ private CreateStepThree stepThree = null;\r
+\r
+ // private JTable jTable = null;\r
+ public CreateStepFour(IDialog iDialog, boolean modal, CreateStepThree stepThree) {\r
+ this(iDialog, modal);\r
+ this.stepThree = stepThree;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextAreaInstruction == null) {\r
+ jTextAreaInstruction = new JTextArea();\r
+ jTextAreaInstruction.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextAreaInstruction.setText("Step 4: Choose a file \n");\r
+ jTextAreaInstruction.setEditable(false);\r
+ }\r
+ return jTextAreaInstruction;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextField1 \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextField1() {\r
+ if (jTextFieldSaveToFile == null) {\r
+ jTextFieldSaveToFile = new JTextField();\r
+ jTextFieldSaveToFile.setBounds(new java.awt.Rectangle(139, 70, 400, 20));\r
+ }\r
+ return jTextFieldSaveToFile;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonBrowser \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonBrower() {\r
+ if (jButtonBrowser == null) {\r
+ jButtonBrowser = new JButton();\r
+ jButtonBrowser.setBounds(new java.awt.Rectangle(542, 70, 97, 20));\r
+ jButtonBrowser.setText("Browser...");\r
+ jButtonBrowser.addMouseListener(this);\r
+ }\r
+ return jButtonBrowser;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ // private JScrollPane getJScrollPane() {\r
+ // if (jScrollPane == null) {\r
+ // jScrollPane = new JScrollPane();\r
+ // jScrollPane.setBounds(new java.awt.Rectangle(139,85,500,100));\r
+ // jScrollPane.setViewportView(getJTable());\r
+ // }\r
+ // return jScrollPane;\r
+ // }\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonFinish \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonFinish() {\r
+ if (jButtonFinish == null) {\r
+ jButtonFinish = new JButton();\r
+ jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonFinish.setText("Finish");\r
+ jButtonFinish.addMouseListener(this);\r
+ }\r
+ return jButtonFinish;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonPrevious \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonPrevious() {\r
+ if (jButtonPrevious == null) {\r
+ jButtonPrevious = new JButton();\r
+ jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
+ jButtonPrevious.setText("Previous");\r
+ jButtonPrevious.addMouseListener(this);\r
+ }\r
+ return jButtonPrevious;\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public CreateStepFour(IDialog iDialog, boolean modal) {\r
+ super(iDialog, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Create Framework Archive(FAR) - Step 4: Summary");\r
+ this.centerWindow();\r
+ }\r
+\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jLabel2 = new JLabel();\r
+ jLabel2.setBounds(new java.awt.Rectangle(30, 70, 220, 18));\r
+ jLabel2.setText("Select File to Save: ");\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 64, 320, 20));\r
+ jLabel.setText("This FAR will depend on following packages: ");\r
+ jLabel.setVisible(false);\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(jLabel, null);\r
+ // jContentPane.add(getJScrollPane(), null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonFinish(), null);\r
+ jContentPane.add(getJButtonPrevious(), null);\r
+ jContentPane.add(jLabel2, null);\r
+ jContentPane.add(getJTextField1(), null);\r
+ jContentPane.add(getJButtonBrower(), null);\r
+ }\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
+ // Add some logic process here\r
+ // Guid Check, File Check etc.\r
+ //\r
+ if (this.jTextFieldSaveToFile.getText() == null) {\r
+ Log.err("Please input the Far name!");\r
+ }\r
+ try {\r
+ //\r
+ // Create an output stream for JAR\r
+ //\r
+\r
+ Far far = new Far(new File(this.jTextFieldSaveToFile.getText()));\r
+\r
+ far.creatFar(this.getPreviousStep().getPreviousStep().getSelectedPackages(),\r
+ this.getPreviousStep().getPreviousStep().getSelectedPlatforms(), this.getPreviousStep()\r
+ .getFileFilter(),\r
+ this.getPreviousStep().getPreviousStep().getPreviousStep().getFarHeader());\r
+ } catch (Exception exp) {\r
+ Log.err("Create error! ");\r
+ return;\r
+ }\r
+ getPreviousStep().getPreviousStep().getPreviousStep().returnType = DataType.RETURN_TYPE_OK;\r
+ getPreviousStep().getPreviousStep().dispose();\r
+ getPreviousStep().dispose();\r
+ this.setVisible(false);\r
+ this.dispose();\r
+ } else if (e.getSource() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepThree.setVisible(true);\r
+ } else if (e.getSource() == jButtonBrowser) {\r
+ JFileChooser fc = new JFileChooser();\r
+ fc.setAcceptAllFileFilterUsed(false);\r
+ fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));\r
+ fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+\r
+ int result = fc.showSaveDialog(new JPanel());\r
+ if (result == JFileChooser.APPROVE_OPTION) {\r
+ this.jTextFieldSaveToFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),\r
+ DataType.RETURN_TYPE_FAR_SURFACE_AREA));\r
+ }\r
+ }\r
+ }\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 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
+ public CreateStepThree getPreviousStep() {\r
+ return stepThree;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTable \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ // private JTable getJTable() {\r
+ // if (jTable == null) {\r
+ // jTable = new JTable();\r
+ // model = new PartialTableModel();\r
+ // jTable = new JTable(model);\r
+ // jTable.setRowHeight(20);\r
+ // jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
+ // model.addColumn("GUID");\r
+ // model.addColumn("Version");\r
+ // model.addColumn("Name");\r
+ // \r
+ // jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ // }\r
+ // if (this.stepThree != null) {\r
+ // prepareTable();\r
+ // }\r
+ // return jTable;\r
+ // }\r
+ public void prepareTable() {\r
+ model.setRowCount(0);\r
+\r
+ List<PackageIdentification> packageList = new ArrayList<PackageIdentification>();\r
+ //\r
+ // Change here to get packages and platforms from FAR\r
+ //\r
+ List<PackageIdentification> selectedPackages = getPreviousStep().getPreviousStep().getSelectedPackages();\r
+ PackageQueryInterface pq = new PackageQuery();\r
+\r
+ Iterator<PackageIdentification> iter = selectedPackages.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ List<PackageIdentification> list = pq.getPackageDependencies(item.getSpdFile());\r
+ packageList = AggregationOperation.union(list, packageList);\r
+ }\r
+\r
+ packageList = AggregationOperation.minus(packageList, selectedPackages);\r
+\r
+ iter = packageList.iterator();\r
+ while (iter.hasNext()) {\r
+ String[] str = new String[3];\r
+ PackageIdentification item = iter.next();\r
+ str[2] = item.getName();\r
+ str[1] = item.getVersion();\r
+ str[0] = item.getGuid();\r
+ model.addRow(str);\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
+ default:\r
+ return false;\r
+ }\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.createui;\r
+\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JTextField;\r
+\r
+import org.tianocore.frameworkwizard.common.DataValidation;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
+import org.tianocore.frameworkwizard.far.FarHeader;\r
+\r
+public class CreateStepOne extends IDialog implements MouseListener {\r
+\r
+ // /\r
+ // / Define class Serial Version UID\r
+ // /\r
+ private static final long serialVersionUID = -8152099582923006900L;\r
+\r
+ //\r
+ // Define class members\r
+ //\r
+ private JPanel jContentPane = null;\r
+\r
+ private JLabel jLabelBaseName = null;\r
+\r
+ private JTextField jTextFieldBaseName = null;\r
+\r
+ private JLabel jLabelGuid = null;\r
+\r
+ private JTextField jTextFieldGuid = null;\r
+\r
+ private JLabel jLabelVersion = null;\r
+\r
+ private JTextField jTextFieldVersion = null;\r
+\r
+ private JButton jButtonGenerateGuid = null;\r
+\r
+ private JLabel jLabelLicense = null;\r
+\r
+ private JTextArea jTextAreaLicense = null;\r
+\r
+ private JLabel jLabelCopyright = null;\r
+\r
+ private JLabel jLabelDescription = null;\r
+\r
+ private JTextArea jTextAreaDescription = null;\r
+\r
+ private JLabel jLabelSpecification = null;\r
+\r
+ private JTextField jTextFieldSpecification = null;\r
+\r
+ private JButton jButtonOk = null;\r
+\r
+ private JScrollPane jScrollPaneLicense = null;\r
+\r
+ private JScrollPane jScrollPaneDescription = null;\r
+\r
+ private JLabel jLabelAbstract = null;\r
+\r
+ private JTextField jTextFieldAbstract = null;\r
+\r
+ private StarLabel jStarLabel1 = null;\r
+\r
+ private StarLabel jStarLabel4 = null;\r
+\r
+ private StarLabel jStarLabel5 = null;\r
+\r
+ private StarLabel jStarLabel6 = null;\r
+\r
+ private StarLabel jStarLabel7 = null;\r
+\r
+ private StarLabel jStarLabel8 = null;\r
+\r
+ private StarLabel jStarLabel10 = null;\r
+\r
+ private StarLabel jStarLabel12 = null;\r
+\r
+ private JTextField jTextFieldCopyright = null;\r
+\r
+ private JLabel jLabelURL = null;\r
+\r
+ private JTextField jTextFieldURL = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private CreateStepTwo stepTwo = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonNext = null;\r
+\r
+ private FarHeader farHeader = new FarHeader();\r
+\r
+ /**\r
+ * This method initializes jTextFieldBaseName\r
+ * \r
+ * @return javax.swing.JTextField jTextFieldBaseName\r
+ * \r
+ */\r
+ private JTextField getJTextFieldBaseName() {\r
+ if (jTextFieldBaseName == null) {\r
+ jTextFieldBaseName = new JTextField();\r
+ jTextFieldBaseName.setBounds(new java.awt.Rectangle(160, 10, 260, 20));\r
+ jTextFieldBaseName.setToolTipText("An brief Identifier, such as USB I/O Library, of the module");\r
+ }\r
+ return jTextFieldBaseName;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextFieldGuid\r
+ * \r
+ * @return javax.swing.JTextField jTextFieldGuid\r
+ * \r
+ */\r
+ private JTextField getJTextFieldGuid() {\r
+ if (jTextFieldGuid == null) {\r
+ jTextFieldGuid = new JTextField();\r
+ jTextFieldGuid.setBounds(new java.awt.Rectangle(160, 35, 260, 20));\r
+ jTextFieldGuid.setToolTipText("Guaranteed Unique Identification Number (8-4-4-4-12)");\r
+ }\r
+ return jTextFieldGuid;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextFieldVersion\r
+ * \r
+ * @return javax.swing.JTextField jTextFieldVersion\r
+ * \r
+ */\r
+ private JTextField getJTextFieldVersion() {\r
+ if (jTextFieldVersion == null) {\r
+ jTextFieldVersion = new JTextField();\r
+ jTextFieldVersion.setBounds(new java.awt.Rectangle(160, 60, 260, 20));\r
+ jTextFieldVersion.setToolTipText("A Version Number, 1.0, 1, 1.01");\r
+ }\r
+ return jTextFieldVersion;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonGenerateGuid\r
+ * \r
+ * @return javax.swing.JButton jButtonGenerateGuid\r
+ * \r
+ */\r
+ private JButton getJButtonGenerateGuid() {\r
+ if (jButtonGenerateGuid == null) {\r
+ jButtonGenerateGuid = new JButton();\r
+ jButtonGenerateGuid.setBounds(new java.awt.Rectangle(440, 35, 90, 20));\r
+ jButtonGenerateGuid.setText("Generate");\r
+ jButtonGenerateGuid.addMouseListener(this);\r
+ }\r
+ return jButtonGenerateGuid;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextAreaLicense\r
+ * \r
+ * @return javax.swing.JTextArea jTextAreaLicense\r
+ * \r
+ */\r
+ private JTextArea getJTextAreaLicense() {\r
+ if (jTextAreaLicense == null) {\r
+ jTextAreaLicense = new JTextArea();\r
+ jTextAreaLicense.setText("");\r
+ jTextAreaLicense.setLineWrap(true);\r
+ jTextAreaLicense.setToolTipText("The License for this file");\r
+ }\r
+ return jTextAreaLicense;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextAreaDescription\r
+ * \r
+ * @return javax.swing.JTextArea jTextAreaDescription\r
+ * \r
+ */\r
+ private JTextArea getJTextAreaDescription() {\r
+ if (jTextAreaDescription == null) {\r
+ jTextAreaDescription = new JTextArea();\r
+ jTextAreaDescription.setLineWrap(true);\r
+ jTextAreaDescription.setToolTipText("A verbose description of the module");\r
+ }\r
+ return jTextAreaDescription;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextFieldSpecification\r
+ * \r
+ * @return javax.swing.JTextField jTextFieldSpecification\r
+ * \r
+ */\r
+ private JTextField getJTextFieldSpecification() {\r
+ if (jTextFieldSpecification == null) {\r
+ jTextFieldSpecification = new JTextField();\r
+ jTextFieldSpecification.setText("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052");\r
+ jTextFieldSpecification.setBounds(new java.awt.Rectangle(160, 290, 420, 20));\r
+ jTextFieldSpecification.setEditable(false);\r
+ }\r
+ return jTextFieldSpecification;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneLicense\r
+ * \r
+ * @return javax.swing.JScrollPane jScrollPaneLicense\r
+ * \r
+ */\r
+ private JScrollPane getJScrollPaneLicense() {\r
+ if (jScrollPaneLicense == null) {\r
+ jScrollPaneLicense = new JScrollPane();\r
+ jScrollPaneLicense.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
+ jScrollPaneLicense.setBounds(new java.awt.Rectangle(160, 200, 420, 60));\r
+ jScrollPaneLicense.setViewportView(getJTextAreaLicense());\r
+ }\r
+ return jScrollPaneLicense;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneDescription\r
+ * \r
+ * @return javax.swing.JScrollPane jScrollPaneDescription\r
+ * \r
+ */\r
+ private JScrollPane getJScrollPaneDescription() {\r
+ if (jScrollPaneDescription == null) {\r
+ jScrollPaneDescription = new JScrollPane();\r
+ jScrollPaneDescription.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
+ jScrollPaneDescription.setBounds(new java.awt.Rectangle(160, 110, 420, 60));\r
+ jScrollPaneDescription.setViewportView(getJTextAreaDescription());\r
+ }\r
+ return jScrollPaneDescription;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextFieldAbstract\r
+ * \r
+ * @return javax.swing.JTextField jTextFieldAbstract\r
+ * \r
+ */\r
+ private JTextField getJTextFieldAbstract() {\r
+ if (jTextFieldAbstract == null) {\r
+ jTextFieldAbstract = new JTextField();\r
+ jTextFieldAbstract.setBounds(new java.awt.Rectangle(160, 85, 420, 20));\r
+ jTextFieldAbstract.setToolTipText("A one sentence description of this module");\r
+ }\r
+ return jTextFieldAbstract;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextFieldCopyright\r
+ * \r
+ * @return javax.swing.JTextField jTextFieldCopyright\r
+ * \r
+ */\r
+ private JTextField getJTextFieldCopyright() {\r
+ if (jTextFieldCopyright == null) {\r
+ jTextFieldCopyright = new JTextField();\r
+ jTextFieldCopyright.setBounds(new java.awt.Rectangle(160, 175, 420, 20));\r
+ jTextFieldCopyright.setToolTipText("One or more copyright lines");\r
+ }\r
+ return jTextFieldCopyright;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextFieldURL\r
+ * \r
+ * @return javax.swing.JTextField\r
+ */\r
+ private JTextField getJTextFieldURL() {\r
+ if (jTextFieldURL == null) {\r
+ jTextFieldURL = new JTextField();\r
+ jTextFieldURL.setBounds(new java.awt.Rectangle(160, 265, 420, 20));\r
+ jTextFieldURL.setToolTipText("A URL for the latest version of the license");\r
+ }\r
+ return jTextFieldURL;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane\r
+ * \r
+ * @return javax.swing.JScrollPane\r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setViewportView(getJContentPane());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonCancel1\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonNext\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonNext() {\r
+ if (jButtonNext == null) {\r
+ jButtonNext = new JButton();\r
+ jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonNext.setText("Next");\r
+ jButtonNext.addMouseListener(this);\r
+ }\r
+ return jButtonNext;\r
+ }\r
+\r
+ public static void main(String[] args) {\r
+ CreateStepOne c = new CreateStepOne(new IFrame(), true);\r
+ c.setVisible(true);\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ * \r
+ */\r
+ public CreateStepOne(IFrame iFrame, boolean modal) {\r
+ super(iFrame, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * Disable all components when the mode is view\r
+ * \r
+ * @param isView\r
+ * true - The view mode; false - The non-view mode\r
+ * \r
+ */\r
+ public void setViewMode(boolean isView) {\r
+ if (isView) {\r
+ this.jTextFieldBaseName.setEnabled(!isView);\r
+ this.jTextFieldGuid.setEnabled(!isView);\r
+ this.jTextFieldVersion.setEnabled(!isView);\r
+ this.jTextAreaLicense.setEnabled(!isView);\r
+ this.jTextFieldCopyright.setEnabled(!isView);\r
+ this.jTextAreaDescription.setEnabled(!isView);\r
+ this.jTextFieldSpecification.setEnabled(!isView);\r
+ this.jTextFieldAbstract.setEnabled(!isView);\r
+ this.jButtonGenerateGuid.setEnabled(!isView);\r
+ this.jButtonOk.setEnabled(!isView);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJScrollPane());\r
+ this.setTitle("Create Framework Archive(FAR) - Step 1: Set FAR's baseic information");\r
+ this.centerWindow();\r
+ }\r
+\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel jContentPane\r
+ * \r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+\r
+ jLabelURL = new JLabel();\r
+ jLabelURL.setText("License URL");\r
+ jLabelURL.setBounds(new java.awt.Rectangle(35, 265, 140, 20));\r
+ jLabelBaseName = new JLabel();\r
+ jLabelBaseName.setText("FAR Name");\r
+ jLabelBaseName.setBounds(new java.awt.Rectangle(35, 10, 140, 20));\r
+ jLabelGuid = new JLabel();\r
+ jLabelGuid.setText("Guid Value");\r
+ jLabelGuid.setBounds(new java.awt.Rectangle(35, 35, 140, 20));\r
+ jLabelVersion = new JLabel();\r
+ jLabelVersion.setText("Version");\r
+ jLabelVersion.setBounds(new java.awt.Rectangle(35, 60, 140, 20));\r
+ jLabelAbstract = new JLabel();\r
+ jLabelAbstract.setText("Abstract");\r
+ jLabelAbstract.setBounds(new java.awt.Rectangle(35, 85, 140, 20));\r
+ jLabelDescription = new JLabel();\r
+ jLabelDescription.setText("Description");\r
+ jLabelDescription.setBounds(new java.awt.Rectangle(35, 110, 140, 20));\r
+ jLabelCopyright = new JLabel();\r
+ jLabelCopyright.setText("Copyright");\r
+ jLabelCopyright.setBounds(new java.awt.Rectangle(35, 175, 140, 20));\r
+ jLabelLicense = new JLabel();\r
+ jLabelLicense.setText("License");\r
+ jLabelLicense.setBounds(new java.awt.Rectangle(35, 200, 140, 20));\r
+ jLabelSpecification = new JLabel();\r
+ jLabelSpecification.setText("Specification");\r
+ jLabelSpecification.setBounds(new java.awt.Rectangle(35, 290, 140, 20));\r
+\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+\r
+ jContentPane.add(jLabelBaseName, null);\r
+ jContentPane.add(getJTextFieldBaseName(), null);\r
+ jContentPane.add(jLabelGuid, null);\r
+ jContentPane.add(getJTextFieldGuid(), null);\r
+ jContentPane.add(jLabelVersion, null);\r
+ jContentPane.add(getJTextFieldVersion(), null);\r
+ jContentPane.add(getJButtonGenerateGuid(), null);\r
+ jContentPane.add(jLabelLicense, null);\r
+ jContentPane.add(jLabelCopyright, null);\r
+ jContentPane.add(jLabelDescription, null);\r
+ jContentPane.add(jLabelSpecification, null);\r
+ jContentPane.add(getJTextFieldSpecification(), null);\r
+ jContentPane.add(getJScrollPaneLicense(), null);\r
+ jContentPane.add(getJScrollPaneDescription(), null);\r
+ jContentPane.add(jLabelAbstract, null);\r
+ jContentPane.add(getJTextFieldAbstract(), null);\r
+ jContentPane.add(jLabelURL, null);\r
+ jContentPane.add(getJTextFieldURL(), null);\r
+ jContentPane.add(getJTextFieldCopyright(), null);\r
+ jStarLabel1 = new StarLabel();\r
+ jStarLabel1.setLocation(new java.awt.Point(20, 10));\r
+ jStarLabel4 = new StarLabel();\r
+ jStarLabel4.setLocation(new java.awt.Point(20, 35));\r
+ jStarLabel5 = new StarLabel();\r
+ jStarLabel5.setLocation(new java.awt.Point(20, 60));\r
+ jStarLabel6 = new StarLabel();\r
+ jStarLabel6.setLocation(new java.awt.Point(20, 110));\r
+ jStarLabel7 = new StarLabel();\r
+ jStarLabel7.setLocation(new java.awt.Point(20, 175));\r
+ jStarLabel8 = new StarLabel();\r
+ jStarLabel8.setLocation(new java.awt.Point(20, 200));\r
+ jStarLabel10 = new StarLabel();\r
+ jStarLabel10.setLocation(new java.awt.Point(20, 85));\r
+ jStarLabel12 = new StarLabel();\r
+ jStarLabel12.setLocation(new java.awt.Point(20, 290));\r
+\r
+ jContentPane.add(jStarLabel1, null);\r
+ jContentPane.add(jStarLabel4, null);\r
+ jContentPane.add(jStarLabel5, null);\r
+ jContentPane.add(jStarLabel6, null);\r
+ jContentPane.add(jStarLabel7, null);\r
+ jContentPane.add(jStarLabel8, null);\r
+ jContentPane.add(jStarLabel10, null);\r
+ jContentPane.add(jStarLabel12, null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonNext(), null);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ public boolean valid() {\r
+ //\r
+ // Check BaseName\r
+ //\r
+ if (isEmpty(this.jTextFieldBaseName.getText())) {\r
+ Log.err("Base Name couldn't be empty");\r
+ return false;\r
+ }\r
+ if (!DataValidation.isBaseName(this.jTextFieldBaseName.getText())) {\r
+ Log.err("Incorrect data type for Base Name");\r
+ return false;\r
+ }\r
+ farHeader.setFarName(this.jTextFieldBaseName.getText());\r
+\r
+ //\r
+ // Check Guid\r
+ //\r
+ if (isEmpty(this.jTextFieldGuid.getText())) {\r
+ Log.err("Guid Value couldn't be empty");\r
+ return false;\r
+ }\r
+ if (!DataValidation.isGuid((this.jTextFieldGuid).getText())) {\r
+ Log.err("Incorrect data type for Guid");\r
+ return false;\r
+ }\r
+ farHeader.setGuidValue(this.jTextFieldGuid.getText());\r
+\r
+ //\r
+ // Check Version\r
+ //\r
+ if (isEmpty(this.jTextFieldVersion.getText())) {\r
+ Log.err("Version couldn't be empty");\r
+ return false;\r
+ }\r
+ if (!DataValidation.isVersion(this.jTextFieldVersion.getText())) {\r
+ Log.err("Incorrect data type for Version");\r
+ return false;\r
+ }\r
+ farHeader.setVersion(this.jTextFieldVersion.getText());\r
+\r
+ //\r
+ // Check Abstact\r
+ //\r
+ if (isEmpty(this.jTextFieldAbstract.getText())) {\r
+ Log.err("Abstract couldn't be empty");\r
+ return false;\r
+ }\r
+ if (!DataValidation.isAbstract(this.jTextFieldAbstract.getText())) {\r
+ Log.err("Incorrect data type for Abstract");\r
+ return false;\r
+ }\r
+ farHeader.setAbstractStr(this.jTextFieldAbstract.getText());\r
+\r
+ //\r
+ // Check Description\r
+ //\r
+ if (isEmpty(this.jTextAreaDescription.getText())) {\r
+ Log.err("Description couldn't be empty");\r
+ return false;\r
+ }\r
+ farHeader.setDescription(this.jTextAreaDescription.getText());\r
+\r
+ //\r
+ // Check Copyright\r
+ //\r
+ if (isEmpty(this.jTextFieldCopyright.getText())) {\r
+ Log.err("Copyright couldn't be empty");\r
+ return false;\r
+ }\r
+ farHeader.setCopyright(this.jTextFieldCopyright.getText());\r
+\r
+ //\r
+ // Check License\r
+ //\r
+ if (isEmpty(this.jTextAreaLicense.getText())) {\r
+ Log.err("License couldn't be empty");\r
+ return false;\r
+ }\r
+ farHeader.setLicense(this.jTextAreaLicense.getText());\r
+\r
+ farHeader.setSpecification(this.jTextFieldSpecification.getText());\r
+ return true;\r
+ }\r
+\r
+ /**\r
+ * Check the input data is empty or not\r
+ * \r
+ * @param strValue\r
+ * The input data which need be checked\r
+ * \r
+ * @retval true - The input data is empty\r
+ * @retval fals - The input data is not empty\r
+ * \r
+ */\r
+ public boolean isEmpty(String strValue) {\r
+ if (strValue.length() > 0) {\r
+ return false;\r
+ }\r
+ return true;\r
+ }\r
+\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ } else if (e.getSource() == jButtonNext) {\r
+ //\r
+ // Add some logic process here\r
+ //\r
+ if (!valid()) {\r
+ return;\r
+ }\r
+ if (stepTwo == null) {\r
+ stepTwo = new CreateStepTwo(this, true, this);\r
+ }\r
+ this.setVisible(false);\r
+ stepTwo.setVisible(true);\r
+ } else if (e.getSource() == jButtonGenerateGuid) {\r
+ this.jTextFieldGuid.setText(Tools.generateUuidString());\r
+ }\r
+ }\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 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
+ public FarHeader getFarHeader() {\r
+ return farHeader;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+package org.tianocore.frameworkwizard.far.createui;\r
+\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashSet;\r
+import java.util.Set;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JButton;\r
+import javax.swing.JLabel;\r
+\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextField;\r
+\r
+public class CreateStepThree extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 7559888600474043337L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JTextArea jTextArea = null;\r
+\r
+ private JButton jButtonNext = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonPrevious = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private ICheckBoxList jComboBoxFileFilter = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JLabel jLabel1 = null;\r
+\r
+ private JTextField jTextField = null;\r
+\r
+ Vector<String> v = new Vector<String>();\r
+\r
+ private CreateStepTwo stepTwo = null;\r
+\r
+ private CreateStepFour stepFour = null;\r
+\r
+ public CreateStepThree(IDialog iDialog, boolean modal, CreateStepTwo stepTwo) {\r
+ this(iDialog, modal);\r
+ this.stepTwo = stepTwo;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextArea == null) {\r
+ jTextArea = new JTextArea();\r
+ jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextArea.setText("Step 2: Set File Filter\n");\r
+ jTextArea.append("Add more file filter regular expressions in text field separated with space. \n");\r
+ jTextArea.append("Note that regular expressions please reference PERL language. ");\r
+ jTextArea.setEditable(false);\r
+ }\r
+ return jTextArea;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonNext \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonNext() {\r
+ if (jButtonNext == null) {\r
+ jButtonNext = new JButton();\r
+ jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonNext.setText("Next");\r
+ jButtonNext.addMouseListener(this);\r
+ }\r
+ return jButtonNext;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonPrevious \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonPrevious() {\r
+ if (jButtonPrevious == null) {\r
+ jButtonPrevious = new JButton();\r
+ jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
+ jButtonPrevious.setText("Previous");\r
+ jButtonPrevious.addMouseListener(this);\r
+ }\r
+ return jButtonPrevious;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jComboBox \r
+ * \r
+ * @return javax.swing.JComboBox \r
+ */\r
+ private ICheckBoxList getJComboBoxFileFilter() {\r
+ if (jComboBoxFileFilter == null) {\r
+ jComboBoxFileFilter = new ICheckBoxList();\r
+ v.addElement(".svn");\r
+ v.addElement("CVS");\r
+ jComboBoxFileFilter.setAllItems(v);\r
+ jComboBoxFileFilter.initCheckedItem(true, v);\r
+ }\r
+ return jComboBoxFileFilter;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setBounds(new java.awt.Rectangle(139, 85, 500, 130));\r
+ jScrollPane.setViewportView(getJComboBoxFileFilter());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextField \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextField() {\r
+ if (jTextField == null) {\r
+ jTextField = new JTextField();\r
+ jTextField.setBounds(new java.awt.Rectangle(139, 250, 500, 20));\r
+ }\r
+ return jTextField;\r
+ }\r
+\r
+ /**\r
+ * @param args\r
+ */\r
+ public static void main(String[] args) {\r
+ // TODO Auto-generated method stub\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public CreateStepThree(IDialog iDialog, boolean modal) {\r
+ super(iDialog, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Create Framework Archive(FAR) - Step 3: Set File Filter");\r
+ this.centerWindow();\r
+ }\r
+\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jLabel1 = new JLabel();\r
+ jLabel1.setBounds(new java.awt.Rectangle(30, 220, 260, 20));\r
+ jLabel1.setText("Input File Filter Pattern (Ref to ...)");\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 64, 160, 20));\r
+ jLabel.setText("File Filter Pattern: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(getJButtonNext(), null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonPrevious(), null);\r
+ jContentPane.add(jLabel, null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ jContentPane.add(jLabel1, null);\r
+ jContentPane.add(getJTextField(), null);\r
+ }\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() == jButtonNext) {\r
+ //\r
+ // Add some logic process here\r
+ //\r
+\r
+ if (stepFour == null) {\r
+ stepFour = new CreateStepFour(this, true, this);\r
+ stepFour.setVisible(true);\r
+ } else {\r
+ stepFour.setVisible(true);\r
+ }\r
+ this.setVisible(false);\r
+ } else if (e.getSource() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepTwo.setVisible(true);\r
+ }\r
+ }\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 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
+ public Set<String> getFileFilter() {\r
+ Set<String> result = new LinkedHashSet<String>();\r
+ Vector<Integer> selected = jComboBoxFileFilter.getAllCheckedItemsIndex();\r
+\r
+ Iterator<Integer> iter = selected.iterator();\r
+\r
+ while (iter.hasNext()) {\r
+ result.add(v.get(iter.next().intValue()));\r
+ }\r
+\r
+ String[] userdefined = jTextField.getText().split(" ");\r
+\r
+ for (int i = 0; i < userdefined.length; i++) {\r
+ if (!userdefined[i].trim().equalsIgnoreCase("")) {\r
+ result.add(userdefined[i]);\r
+ }\r
+ }\r
+\r
+ return result;\r
+ }\r
+\r
+ public CreateStepTwo getPreviousStep() {\r
+ return stepTwo;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.createui;\r
+\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JButton;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextArea;\r
+\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+public class CreateStepTwo extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 3003841865197005528L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JTextArea jTextArea = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JLabel jLabel1 = null;\r
+\r
+ private ICheckBoxList jComboBoxPackage = null;\r
+\r
+ private ICheckBoxList jComboBoxPlatform = null;\r
+\r
+ private JButton jButtonNext = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JScrollPane jScrollPanePackage = null;\r
+\r
+ private JScrollPane jScrollPanePlatform = null;\r
+\r
+ private CreateStepThree stepThree = null;\r
+\r
+ private Vector<PlatformIdentification> platformVector = null;\r
+\r
+ private Vector<PackageIdentification> packageVector = null;\r
+\r
+ private CreateStepOne stepOne = null;\r
+\r
+ private JButton jButtonPrevious = null;\r
+\r
+ public CreateStepTwo(IDialog iDialog, boolean modal, CreateStepOne stepOne) {\r
+ this(iDialog, modal);\r
+ this.stepOne = stepOne;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextArea == null) {\r
+ jTextArea = new JTextArea();\r
+ jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextArea.setText("Step 1: Choose Packages and Platforms\n");\r
+ jTextArea.append("Choose at least one package or platform. ");\r
+ jTextArea.setEditable(false);\r
+ }\r
+ return jTextArea;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jComboBox \r
+ * \r
+ * @return javax.swing.JComboBox \r
+ */\r
+ private ICheckBoxList getJComboBoxPackage() {\r
+ if (jComboBoxPackage == null) {\r
+ jComboBoxPackage = new ICheckBoxList();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ Vector<String> v = new Vector<String>();\r
+ packageVector = wt.getAllPackages();\r
+ Iterator<PackageIdentification> iter = packageVector.iterator();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ String str = item.getName() + " " + item.getVersion() + " [" + item.getPath() + "]";\r
+ v.addElement(str);\r
+ }\r
+ jComboBoxPackage.setAllItems(v);\r
+ }\r
+ return jComboBoxPackage;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jComboBox1 \r
+ * \r
+ * @return javax.swing.JComboBox \r
+ */\r
+ private ICheckBoxList getJComboBoxPlatform() {\r
+ if (jComboBoxPlatform == null) {\r
+ jComboBoxPlatform = new ICheckBoxList();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ Vector<String> v = new Vector<String>();\r
+ platformVector = wt.getAllPlatforms();\r
+ Iterator<PlatformIdentification> iter = platformVector.iterator();\r
+ while (iter.hasNext()) {\r
+ PlatformIdentification item = iter.next();\r
+ String str = item.getName() + " " + item.getVersion() + " [" + item.getPath() + "]";\r
+ v.addElement(str);\r
+ }\r
+ jComboBoxPlatform.setAllItems(v);\r
+ }\r
+ return jComboBoxPlatform;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonNext \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonNext() {\r
+ if (jButtonNext == null) {\r
+ jButtonNext = new JButton();\r
+ jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonNext.setText("Next");\r
+ jButtonNext.addMouseListener(this);\r
+ }\r
+ return jButtonNext;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPanePackage() {\r
+ if (jScrollPanePackage == null) {\r
+ jScrollPanePackage = new JScrollPane();\r
+ jScrollPanePackage.setBounds(new java.awt.Rectangle(139, 64, 500, 130));\r
+ jScrollPanePackage.setViewportView(getJComboBoxPackage());\r
+ }\r
+ return jScrollPanePackage;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane1 \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPanePlatform() {\r
+ if (jScrollPanePlatform == null) {\r
+ jScrollPanePlatform = new JScrollPane();\r
+ jScrollPanePlatform.setBounds(new java.awt.Rectangle(139, 200, 500, 100));\r
+ jScrollPanePlatform.setViewportView(getJComboBoxPlatform());\r
+ }\r
+ return jScrollPanePlatform;\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public CreateStepTwo(IDialog iDialog, boolean modal) {\r
+ super(iDialog, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Create Framework Archive(FAR) - Step 2: Choose Packages and Platform");\r
+ this.centerWindow();\r
+ }\r
+\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jLabel1 = new JLabel();\r
+ jLabel1.setBounds(new java.awt.Rectangle(30, 200, 100, 20));\r
+ jLabel1.setText("Platforms: ");\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 64, 100, 20));\r
+ jLabel.setText("Packages:");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(jLabel, null);\r
+ jContentPane.add(jLabel1, null);\r
+ jContentPane.add(getJButtonNext(), null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJScrollPanePackage(), null);\r
+ jContentPane.add(getJScrollPanePlatform(), null);\r
+ jContentPane.add(getJButtonPrevious(), null);\r
+ }\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() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepOne.setVisible(true);\r
+ } else if (e.getSource() == jButtonNext) {\r
+ //\r
+ // Add some logic process here\r
+ //\r
+ if (jComboBoxPlatform.getAllCheckedItemsIndex().size() == 0\r
+ && jComboBoxPackage.getAllCheckedItemsIndex().size() == 0) {\r
+ Log.err("At least choose one of packages and platforms. ");\r
+ return;\r
+ }\r
+ if (stepThree == null) {\r
+ stepThree = new CreateStepThree(this, true, this);\r
+ }\r
+ this.setVisible(false);\r
+ stepThree.setVisible(true);\r
+ }\r
+ }\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 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
+ /**\r
+ * This method initializes jButtonPrevious \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonPrevious() {\r
+ if (jButtonPrevious == null) {\r
+ jButtonPrevious = new JButton();\r
+ jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
+ jButtonPrevious.setText("Previous");\r
+ jButtonPrevious.addMouseListener(this);\r
+ }\r
+ return jButtonPrevious;\r
+ }\r
+\r
+ public List<PackageIdentification> getSelectedPackages() {\r
+ Vector<Integer> v = jComboBoxPackage.getAllCheckedItemsIndex();\r
+ List<PackageIdentification> result = new ArrayList<PackageIdentification>();\r
+ for (int i = 0; i < v.size(); i++) {\r
+ result.add(packageVector.get(v.get(i).intValue()));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public List<PlatformIdentification> getSelectedPlatforms() {\r
+ Vector<Integer> v = jComboBoxPlatform.getAllCheckedItemsIndex();\r
+ List<PlatformIdentification> result = new ArrayList<PlatformIdentification>();\r
+ for (int i = 0; i < v.size(); i++) {\r
+ result.add(platformVector.get(v.get(i).intValue()));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public CreateStepOne getPreviousStep() {\r
+ return stepOne;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.deleteui;\r
+\r
+import javax.swing.ImageIcon;\r
+import javax.swing.JPanel;\r
+import javax.swing.JButton;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JLabel;\r
+import javax.swing.JScrollPane;\r
+\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.far.AggregationOperation;\r
+import org.tianocore.frameworkwizard.far.FarIdentification;\r
+import org.tianocore.frameworkwizard.far.PackageQuery;\r
+import org.tianocore.frameworkwizard.far.PackageQueryInterface;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+import java.awt.Color;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JList;\r
+import javax.swing.event.ListSelectionEvent;\r
+import javax.swing.event.ListSelectionListener;\r
+\r
+public class DeleteStepOne extends IDialog implements ListSelectionListener, MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 636773964435618476L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonNext = null;\r
+\r
+ private JTextArea jTextAreaInstruction = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JLabel jLabel2 = null;\r
+\r
+ private JLabel jLabel3 = null;\r
+\r
+ private JScrollPane jScrollPane1 = null;\r
+\r
+ private JScrollPane jScrollPane2 = null;\r
+\r
+ private JList jListPlatform = null;\r
+\r
+ private JList jListPackage = null;\r
+\r
+ private JLabel jLabel4 = null;\r
+\r
+ private JButton jButtonDetail = null;\r
+\r
+ private JList jListFar = null;\r
+\r
+ private JLabel jLabelImage = null;\r
+\r
+ private Vector<FarIdentification> farVector = null;\r
+\r
+ Vector<PackageIdentification> removePackages = null;\r
+\r
+ Vector<PlatformIdentification> removePlatforms = null;\r
+\r
+ private DeleteStepTwo stepTwo = null;\r
+\r
+ /**\r
+ * This method initializes jButtonCancel\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonFinish\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonNext() {\r
+ if (jButtonNext == null) {\r
+ jButtonNext = new JButton();\r
+ jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonNext.setText("Next");\r
+ jButtonNext.setEnabled(false);\r
+ }\r
+ return jButtonNext;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea1\r
+ * \r
+ * @return javax.swing.JTextArea\r
+ */\r
+ private JTextArea getJTextArea1() {\r
+ if (jTextAreaInstruction == null) {\r
+ jTextAreaInstruction = new JTextArea();\r
+ jTextAreaInstruction.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextAreaInstruction.setText("Step 1: Choose FAR from framework database. \n");\r
+ jTextAreaInstruction.setCaretColor(Color.RED);\r
+ jTextAreaInstruction\r
+ .append("After choose FAR, the packages and platforms which belong to the FAR will display. \n");\r
+ jTextAreaInstruction.append("Picture \"Okay\" or \"No\" indicates whether FAR can be removed or not. ");\r
+ jTextAreaInstruction.setEditable(false);\r
+ }\r
+ return jTextAreaInstruction;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane\r
+ * \r
+ * @return javax.swing.JScrollPane\r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setBounds(new java.awt.Rectangle(139, 64, 500, 104));\r
+ jScrollPane.setViewportView(getJListFar());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane1\r
+ * \r
+ * @return javax.swing.JScrollPane\r
+ */\r
+ private JScrollPane getJScrollPane1() {\r
+ if (jScrollPane1 == null) {\r
+ jScrollPane1 = new JScrollPane();\r
+ jScrollPane1.setBounds(new java.awt.Rectangle(40, 195, 300, 115));\r
+ jScrollPane1.setViewportView(getJListPackage());\r
+ }\r
+ return jScrollPane1;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane2\r
+ * \r
+ * @return javax.swing.JScrollPane\r
+ */\r
+ private JScrollPane getJScrollPane2() {\r
+ if (jScrollPane2 == null) {\r
+ jScrollPane2 = new JScrollPane();\r
+ jScrollPane2.setBounds(new java.awt.Rectangle(360, 195, 300, 115));\r
+ jScrollPane2.setViewportView(getJListPlatform());\r
+ }\r
+ return jScrollPane2;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jList\r
+ * \r
+ * @return javax.swing.JList\r
+ */\r
+ private JList getJListPlatform() {\r
+ if (jListPlatform == null) {\r
+ jListPlatform = new JList();\r
+ jListPlatform.setEnabled(false);\r
+ }\r
+ return jListPlatform;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jList1\r
+ * \r
+ * @return javax.swing.JList\r
+ */\r
+ private JList getJListPackage() {\r
+ if (jListPackage == null) {\r
+ jListPackage = new JList();\r
+ jListPackage.setEnabled(false);\r
+ }\r
+ return jListPackage;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonDetail\r
+ * \r
+ * @return javax.swing.JButton\r
+ */\r
+ private JButton getJButtonDetail() {\r
+ if (jButtonDetail == null) {\r
+ jButtonDetail = new JButton();\r
+ jButtonDetail.setBounds(new java.awt.Rectangle(367, 325, 69, 20));\r
+ jButtonDetail.setText("Detail");\r
+ jButtonDetail.setVisible(false);\r
+ jButtonDetail.addMouseListener(this);\r
+ }\r
+ return jButtonDetail;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jListFar\r
+ * \r
+ * @return javax.swing.JList\r
+ */\r
+ private JList getJListFar() {\r
+ if (jListFar == null) {\r
+ jListFar = new JList();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ farVector = wt.getAllFars();\r
+ jListFar.setListData(farVector);\r
+ jListFar.addListSelectionListener(this);\r
+ }\r
+ return jListFar;\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public DeleteStepOne(IFrame iFrame, boolean modal) {\r
+ super(iFrame, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Delete Framework Archive(FAR) - Step 1: Choose FAR from framework database");\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\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
+ jLabelImage = new JLabel();\r
+ jLabelImage.setBounds(new java.awt.Rectangle(30, 319, 36, 36));\r
+ jLabel4 = new JLabel();\r
+ jLabel4.setBounds(new java.awt.Rectangle(71, 325, 289, 20));\r
+ jLabel3 = new JLabel();\r
+ jLabel3.setBounds(new java.awt.Rectangle(360, 170, 113, 20));\r
+ jLabel3.setText("FAR's Platforms");\r
+ jLabel2 = new JLabel();\r
+ jLabel2.setBounds(new java.awt.Rectangle(40, 170, 113, 20));\r
+ jLabel2.setText("FAR's Packages");\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 64, 100, 20));\r
+ jLabel.setText("Select one FAR: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonNext(), null);\r
+ jContentPane.add(getJTextArea1(), null);\r
+ jContentPane.add(jLabel, null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ jContentPane.add(jLabel2, null);\r
+ jContentPane.add(jLabel3, null);\r
+ jContentPane.add(getJScrollPane1(), null);\r
+ jContentPane.add(getJScrollPane2(), null);\r
+ jContentPane.add(jLabel4, null);\r
+ jContentPane.add(getJButtonDetail(), null);\r
+ jContentPane.add(jLabelImage, null);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ public void valueChanged(ListSelectionEvent e) {\r
+ //\r
+ // Add logic for FAR list value changed\r
+ //\r
+ if (e.getSource() == jListFar) {\r
+ boolean flag = true;\r
+ FarIdentification far = (FarIdentification) jListFar.getSelectedValue();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+\r
+ removePackages = wt.getPackagesByFar(far);\r
+ jListPackage.setListData(removePackages);\r
+ removePlatforms = wt.getPlatformsByFar(far);\r
+ jListPlatform.setListData(removePlatforms);\r
+\r
+ //\r
+ // Get Dependencies Info for current FAR\r
+ //\r
+ List<PackageIdentification> allPackages = wt.getAllPackages();\r
+\r
+ //\r
+ // Remain packages\r
+ //\r
+ allPackages.removeAll(removePackages);\r
+\r
+ Iterator<PackageIdentification> iter = allPackages.iterator();\r
+\r
+ PackageQueryInterface pq = new PackageQuery();\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ List<PackageIdentification> list = pq.getPackageDependencies(item.getSpdFile());\r
+ List<PackageIdentification> result = AggregationOperation.minus(list, allPackages);\r
+ if (result.size() > 0) {\r
+ if (AggregationOperation.intersection(result, removePackages).size() > 0) {\r
+ flag = false;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ if (flag) {\r
+ jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/Yes.JPG")));\r
+ jLabel4.setText("Without any remain packages depend on this FAR. ");\r
+ jButtonDetail.setVisible(false);\r
+ jButtonNext.setEnabled(true);\r
+ jButtonNext.addMouseListener(this);\r
+ } else {\r
+ jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/No.JPG")));\r
+ jLabel4.setText("Some remain packages still depend on this FAR. ");\r
+ // jButtonDetail.setVisible(true);\r
+ jButtonNext.setEnabled(false);\r
+ jButtonNext.removeMouseListener(this);\r
+ }\r
+ }\r
+ }\r
+\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ } else if (e.getSource() == jButtonNext) {\r
+ //\r
+ // Add some logic process here\r
+ //\r
+\r
+ if (stepTwo == null) {\r
+ stepTwo = new DeleteStepTwo(this, true, this);\r
+ }\r
+ this.setVisible(false);\r
+ stepTwo.setVisible(true);\r
+ }\r
+ }\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 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
+ public FarIdentification getSelecedFar() {\r
+ return (FarIdentification) jListFar.getSelectedValue();\r
+ }\r
+\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.deleteui;\r
+\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.io.File;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashSet;\r
+import java.util.Set;\r
+import java.util.Vector;\r
+\r
+import javax.swing.ButtonGroup;\r
+import javax.swing.JPanel;\r
+import javax.swing.JButton;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JLabel;\r
+import javax.swing.JRadioButton;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.far.FarIdentification;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+public class DeleteStepTwo extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = -1333748185798962746L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonFinish = null;\r
+\r
+ private JButton jButtonPrevious = null;\r
+\r
+ private JTextArea jTextArea = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JRadioButton jRadioButton = null;\r
+\r
+ private JRadioButton jRadioButton1 = null;\r
+\r
+ private DeleteStepOne stepOne = null;\r
+\r
+ public DeleteStepTwo(IDialog iDialog, boolean modal, DeleteStepOne stepOne) {\r
+ this(iDialog, modal);\r
+ this.stepOne = stepOne;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonFinish \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonFinish() {\r
+ if (jButtonFinish == null) {\r
+ jButtonFinish = new JButton();\r
+ jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonFinish.setText("Finish");\r
+ jButtonFinish.addMouseListener(this);\r
+ }\r
+ return jButtonFinish;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonPrevious \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonPrevious() {\r
+ if (jButtonPrevious == null) {\r
+ jButtonPrevious = new JButton();\r
+ jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
+ jButtonPrevious.setText("Previous");\r
+ jButtonPrevious.addMouseListener(this);\r
+ }\r
+ return jButtonPrevious;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextArea == null) {\r
+ jTextArea = new JTextArea();\r
+ jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextArea.setText("Step 2: Choose Delete Mode. \n");\r
+ jTextArea.append("Mode 1 only remove register information from framework database. \n");\r
+ jTextArea.append("Mode 2 also delete all files from file system. ");\r
+ jTextArea.setEditable(false);\r
+ }\r
+ return jTextArea;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jRadioButton \r
+ * \r
+ * @return javax.swing.JRadioButton \r
+ */\r
+ private JRadioButton getJRadioButton() {\r
+ if (jRadioButton == null) {\r
+ jRadioButton = new JRadioButton();\r
+ jRadioButton.setBounds(new java.awt.Rectangle(100, 100, 340, 20));\r
+ jRadioButton.setSelected(true);\r
+ jRadioButton.setText("Mode 1: Only remove from framework database");\r
+ }\r
+ return jRadioButton;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jRadioButton1 \r
+ * \r
+ * @return javax.swing.JRadioButton \r
+ */\r
+ private JRadioButton getJRadioButton1() {\r
+ if (jRadioButton1 == null) {\r
+ jRadioButton1 = new JRadioButton();\r
+ jRadioButton1.setBounds(new java.awt.Rectangle(100, 140, 358, 20));\r
+ jRadioButton1.setText("Mode 2: Delete all related files from workspace");\r
+ }\r
+ return jRadioButton1;\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public DeleteStepTwo(IDialog iDialog, boolean modal) {\r
+ super(iDialog, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Delete Framework Archive(FAR) - Step 2: Choose Delete Mode");\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\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, 200, 20));\r
+ jLabel.setText("Select delete mode: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonFinish(), null);\r
+ jContentPane.add(getJButtonPrevious(), null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(jLabel, null);\r
+ ButtonGroup group = new ButtonGroup();\r
+ group.add(getJRadioButton());\r
+ group.add(getJRadioButton1());\r
+ jContentPane.add(getJRadioButton(), null);\r
+ jContentPane.add(getJRadioButton1(), null);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ this.dispose();\r
+ } else if (e.getSource() == jButtonFinish) {\r
+ FarIdentification far = stepOne.getSelecedFar();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ //\r
+ // If remove all source files\r
+ //\r
+ if (jRadioButton1.isSelected()) {\r
+\r
+ Vector<PackageIdentification> removePackages = wt.getPackagesByFar(far);\r
+ Vector<PlatformIdentification> removePlatforms = wt.getPlatformsByFar(far);\r
+\r
+ Vector<PlatformIdentification> allPlatforms = wt.getAllPlatforms();\r
+ Set<File> allPlatformFiles = new LinkedHashSet<File>();\r
+\r
+ Iterator<PlatformIdentification> iter = allPlatforms.iterator();\r
+ while (iter.hasNext()) {\r
+ allPlatformFiles.add(iter.next().getFpdFile());\r
+ }\r
+\r
+ //\r
+ // For all platforms, only remove its FPD file\r
+ //\r
+ Iterator<PlatformIdentification> platfomrIter = removePlatforms.iterator();\r
+ while (platfomrIter.hasNext()) {\r
+ PlatformIdentification item = platfomrIter.next();\r
+ allPlatformFiles.remove(item.getFpdFile());\r
+ File parentDir = item.getFpdFile().getParentFile();\r
+ item.getFpdFile().delete();\r
+ //\r
+ // Remove all empty parent dir\r
+ //\r
+ while (parentDir.listFiles().length == 0) {\r
+ File tempFile = parentDir;\r
+ parentDir = parentDir.getParentFile();\r
+ tempFile.delete();\r
+ }\r
+ }\r
+\r
+ //\r
+ // For all packages, remove all files. \r
+ // Exception FPD file still in DB\r
+ //\r
+\r
+ Iterator<PackageIdentification> packageIter = removePackages.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
+ //\r
+ // Update DB file\r
+ //\r
+ wt.removeFarFromDb(far);\r
+\r
+ this.setVisible(false);\r
+ this.stepOne.returnType = DataType.RETURN_TYPE_OK;\r
+ this.dispose();\r
+ } else if (e.getSource() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepOne.setVisible(true);\r
+ }\r
+ }\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 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
+ 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
+ }\r
+ }\r
+ file.delete();\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
+ }\r
+ }\r
+ return false;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.installui;\r
+\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.io.File;\r
+import java.util.List;\r
+import java.util.jar.JarFile;\r
+import java.util.Iterator;\r
+\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JPanel;\r
+import javax.swing.JButton;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JLabel;\r
+import javax.swing.JTextField;\r
+import javax.swing.ListSelectionModel;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.IFileFilter;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.far.DistributeRule;\r
+import org.tianocore.frameworkwizard.far.Far;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTable;\r
+import javax.swing.table.DefaultTableModel;\r
+\r
+public class InstallStepOne extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = -8821906198791949544L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonNext = null;\r
+\r
+ private JTextArea jTextArea = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JTextField jTextFieldFarFile = null;\r
+\r
+ private JButton jButtonBrowser = null;\r
+\r
+ private InstallStepTwo stepTwo = null;\r
+\r
+ Far far = null;\r
+\r
+ private JLabel jLabelWarning = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JTable jTable = null;\r
+\r
+ private PartialTableModel model = null;\r
+\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonNext \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonNext() {\r
+ if (jButtonNext == null) {\r
+ jButtonNext = new JButton();\r
+ jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonNext.setText("Next");\r
+ jButtonNext.addMouseListener(this);\r
+ }\r
+ return jButtonNext;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextArea == null) {\r
+ jTextArea = new JTextArea();\r
+ jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextArea.setText("Step 1: Choose a framework archive(FAR) file. \n");\r
+ jTextArea.setEditable(false);\r
+ }\r
+ return jTextArea;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextField \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextFieldFarFile() {\r
+ if (jTextFieldFarFile == null) {\r
+ jTextFieldFarFile = new JTextField();\r
+ jTextFieldFarFile.setBounds(new java.awt.Rectangle(139, 100, 400, 20));\r
+ }\r
+ return jTextFieldFarFile;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonBrowser \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonBrowser() {\r
+ if (jButtonBrowser == null) {\r
+ jButtonBrowser = new JButton();\r
+ jButtonBrowser.setBounds(new java.awt.Rectangle(542, 100, 97, 20));\r
+ jButtonBrowser.setText("Browser...");\r
+ jButtonBrowser.addMouseListener(this);\r
+ }\r
+ return jButtonBrowser;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setBounds(new java.awt.Rectangle(27, 166, 511, 143));\r
+ jScrollPane.setViewportView(getJTable());\r
+ }\r
+ jScrollPane.setVisible(false);\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTable \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTable() {\r
+ if (jTable == null) {\r
+ jTable = new JTable();\r
+ model = new PartialTableModel();\r
+ jTable = new JTable(model);\r
+ jTable.setRowHeight(20);\r
+ jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
+ model.addColumn("Name");\r
+ model.addColumn("Version");\r
+ model.addColumn("GUID");\r
+\r
+ jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ }\r
+ jTable.setVisible(false);\r
+ return jTable;\r
+ }\r
+\r
+ public void prepareTable(List<PackageIdentification> packageList) {\r
+ model.setRowCount(0);\r
+ //\r
+ // Change here to get packages and platforms from FAR\r
+ //\r
+ Iterator<PackageIdentification> iter = packageList.iterator();\r
+ while (iter.hasNext()) {\r
+ String[] str = new String[3];\r
+ PackageIdentification item = iter.next();\r
+ str[0] = item.getName();\r
+ str[1] = item.getVersion();\r
+ str[2] = item.getGuid();\r
+ model.addRow(str);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public InstallStepOne(IFrame iFrame, boolean modal) {\r
+ super(iFrame, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Install Framework Archive(FAR) - Step 1: Choose FAR file");\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\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
+ jLabelWarning = new JLabel();\r
+ jLabelWarning.setBounds(new java.awt.Rectangle(29, 134, 410, 20));\r
+ jLabelWarning.setText("Can't install this FAR, lack following packages in current workspace");\r
+ jLabelWarning.setVisible(false);\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 80, 220, 20));\r
+ jLabel.setText("Choose FAR file: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonNext(), null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(jLabel, null);\r
+ jContentPane.add(getJTextFieldFarFile(), null);\r
+ jContentPane.add(getJButtonBrowser(), null);\r
+ jContentPane.add(jLabelWarning, null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ }\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() == jButtonNext) {\r
+ //\r
+ // Add some logic process here\r
+ //\r
+ File farFile = new File(jTextFieldFarFile.getText());\r
+ if (!farFile.exists() || !farFile.isFile()) {\r
+ Log.err("Please choose a FAR file already exists. ");\r
+ return;\r
+ }\r
+\r
+ //\r
+ // Verify Far\r
+ //\r
+ JarFile jarFar;\r
+ try {\r
+ jarFar = new JarFile(farFile);\r
+ far = new Far(jarFar);\r
+\r
+ //\r
+ // Far dependency check\r
+ //\r
+ List<PackageIdentification> pkgIdList = DistributeRule.installFarCheck(far);\r
+\r
+ if (pkgIdList.size() > 0) {\r
+ prepareTable(pkgIdList);\r
+ jLabelWarning.setVisible(true);\r
+ jTable.setVisible(true);\r
+ jScrollPane.setVisible(true);\r
+ return;\r
+ }\r
+\r
+ } catch (Exception exp) {\r
+ exp.printStackTrace();\r
+ Log.err("Far file invaild! The error message as follow:" + exp.getMessage());\r
+ }\r
+\r
+ if (stepTwo == null) {\r
+ stepTwo = new InstallStepTwo(this, true, this);\r
+ }\r
+ this.setVisible(false);\r
+\r
+ //\r
+ // Refresh table\r
+ //\r
+ stepTwo.preparePackageTable();\r
+ stepTwo.preparePlatformTable();\r
+ stepTwo.setVisible(true);\r
+ } else if (e.getSource() == jButtonBrowser) {\r
+ JFileChooser fc = new JFileChooser();\r
+ fc.setAcceptAllFileFilterUsed(false);\r
+ fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));\r
+ fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+\r
+ int result = fc.showSaveDialog(new JPanel());\r
+ if (result == JFileChooser.APPROVE_OPTION) {\r
+ jLabelWarning.setVisible(false);\r
+ jTable.setVisible(false);\r
+ jScrollPane.setVisible(false);\r
+ this.jTextFieldFarFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),\r
+ DataType.RETURN_TYPE_FAR_SURFACE_AREA));\r
+ }\r
+ }\r
+ }\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 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
+ public Far getFar() {\r
+ return far;\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
+ default:\r
+ return false;\r
+ }\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.installui;\r
+\r
+import java.awt.Color;\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashMap;\r
+import java.util.LinkedHashSet;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JButton;\r
+import javax.swing.JLabel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.ListSelectionModel;\r
+import javax.swing.table.DefaultTableModel;\r
+import javax.swing.JTable;\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
+import org.tianocore.frameworkwizard.far.Far;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+public class InstallStepTwo extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 4583090421587036969L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JTextArea jTextArea = null;\r
+\r
+ private PartialEditableTableModel packageModel = null;\r
+\r
+ private PartialEditableTableModel platformModel = null;\r
+\r
+ private InstallStepOne stepOne = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonFinish = null;\r
+\r
+ private JButton jButtonPrevious = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JTable jTablePackage = null;\r
+\r
+ private JLabel jLabel1 = null;\r
+\r
+ private JScrollPane jScrollPane1 = null;\r
+\r
+ private JTable jTablePlatform = null;\r
+\r
+ List<PlatformIdentification> platformVector = null;\r
+\r
+ List<PackageIdentification> packageVector = null;\r
+\r
+ public InstallStepTwo(IDialog iDialog, boolean modal, InstallStepOne stepOne) {\r
+ this(iDialog, modal);\r
+ this.stepOne = stepOne;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextArea == null) {\r
+ jTextArea = new JTextArea();\r
+ jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextArea.setText("Step 2: Set Path for Packages and Platforms. \n");\r
+ jTextArea.setCaretColor(Color.RED);\r
+ jTextArea.append("Note that path is relative to WORKSPACE. ");\r
+ jTextArea.setEditable(false);\r
+ }\r
+ return jTextArea;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonFinish \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonFinish() {\r
+ if (jButtonFinish == null) {\r
+ jButtonFinish = new JButton();\r
+ jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonFinish.setText("Finish");\r
+ jButtonFinish.addMouseListener(this);\r
+ }\r
+ return jButtonFinish;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonPrevious \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonPrevious() {\r
+ if (jButtonPrevious == null) {\r
+ jButtonPrevious = new JButton();\r
+ jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
+ jButtonPrevious.setText("Previous");\r
+ jButtonPrevious.addMouseListener(this);\r
+ }\r
+ return jButtonPrevious;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setBounds(new java.awt.Rectangle(35, 81, 600, 113));\r
+ jScrollPane.setViewportView(getJTablePackage());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTable \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTablePackage() {\r
+ if (jTablePackage == null) {\r
+ jTablePackage = new JTable();\r
+ packageModel = new PartialEditableTableModel();\r
+ jTablePackage = new JTable(packageModel);\r
+ jTablePackage.setRowHeight(20);\r
+ jTablePackage.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
+ packageModel.addColumn("Name");\r
+ packageModel.addColumn("Version");\r
+ packageModel.addColumn("Default Path");\r
+ packageModel.addColumn("Install To");\r
+\r
+ jTablePackage.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ }\r
+ return jTablePackage;\r
+ }\r
+\r
+ public void preparePackageTable() {\r
+ packageModel.setRowCount(0);\r
+ //\r
+ // Change here to get packages and platforms from FAR\r
+ //\r
+ try {\r
+ Far far = stepOne.getFar();\r
+\r
+ packageVector = far.mainfest.getPackageList();\r
+ Iterator<PackageIdentification> iter = packageVector.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] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));\r
+ str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));\r
+ packageModel.addRow(str);\r
+ }\r
+ } catch (Exception e) {\r
+ }\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane1 \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane1() {\r
+ if (jScrollPane1 == null) {\r
+ jScrollPane1 = new JScrollPane();\r
+ jScrollPane1.setBounds(new java.awt.Rectangle(35, 214, 596, 112));\r
+ jScrollPane1.setViewportView(getJTablePlatform());\r
+ }\r
+ return jScrollPane1;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTablePlatform \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTablePlatform() {\r
+ if (jTablePlatform == null) {\r
+ jTablePlatform = new JTable();\r
+ platformModel = new PartialEditableTableModel();\r
+ jTablePlatform = new JTable(platformModel);\r
+ jTablePlatform.setRowHeight(20);\r
+ jTablePlatform.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
+ platformModel.addColumn("Name");\r
+ platformModel.addColumn("Version");\r
+ platformModel.addColumn("Default Path");\r
+ platformModel.addColumn("Install To");\r
+\r
+ jTablePlatform.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ preparePlatformTable();\r
+ }\r
+ return jTablePlatform;\r
+ }\r
+\r
+ public void preparePlatformTable() {\r
+ platformModel.setRowCount(0);\r
+ //\r
+ // Change here to get packages and platforms from FAR\r
+ //\r
+ try {\r
+ Far far = stepOne.getFar();\r
+\r
+ platformVector = far.mainfest.getPlatformList();\r
+ Iterator<PlatformIdentification> iter = platformVector.iterator();\r
+ while (iter.hasNext()) {\r
+ String[] str = new String[4];\r
+ PlatformIdentification item = iter.next();\r
+ str[0] = item.getName();\r
+ str[1] = item.getVersion();\r
+ str[2] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));\r
+ str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));\r
+ platformModel.addRow(str);\r
+ }\r
+ } catch (Exception e) {\r
+ }\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public InstallStepTwo(IDialog iDialog, boolean modal) {\r
+ super(iDialog, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Install Framework Archive(FAR) - Step 2: Set Path for Packages and Platforms");\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\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
+ jLabel1 = new JLabel();\r
+ jLabel1.setBounds(new java.awt.Rectangle(30, 195, 348, 18));\r
+ jLabel1.setText("Edit pathes for platforms: ");\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(29, 60, 366, 20));\r
+ jLabel.setText("Edit pathes for packages");\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(jLabel, null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ jContentPane.add(jLabel1, null);\r
+ jContentPane.add(getJScrollPane1(), null);\r
+ }\r
+ return jContentPane;\r
+ }\r
+\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ this.dispose();\r
+ } else if (e.getSource() == jButtonFinish) {\r
+ List<String> packageList = new ArrayList<String>();\r
+ List<String> platformList = new ArrayList<String>();\r
+ //\r
+ // Add some logic process here\r
+ // Guid Check, File Check etc.\r
+ //\r
+ Set<File> allNewPath = new LinkedHashSet<File>();\r
+ Map<PackageIdentification, File> packageMap = new LinkedHashMap<PackageIdentification, File>();\r
+ for (int i = 0; i < packageModel.getRowCount(); i++) {\r
+ File toFile = new File(Workspace.getCurrentWorkspace() + File.separatorChar\r
+ + packageModel.getValueAt(i, 3));\r
+ if (!isPackagePathValid(toFile)) {\r
+ Log.err(packageVector.get(i) + " path already has package now. ");\r
+ return;\r
+ }\r
+ if (allNewPath.contains(toFile)) {\r
+ Log.err("Path " + packageModel.getValueAt(i, 3) + " is specified by twice. ");\r
+ return;\r
+ }\r
+ allNewPath.add(toFile);\r
+ File spdFile = new File((String) packageModel.getValueAt(i, 3) + File.separatorChar\r
+ + packageVector.get(i).getSpdFile().getName());\r
+ packageList.add(spdFile.getPath());\r
+ packageMap.put(packageVector.get(i), toFile);\r
+ }\r
+\r
+ Map<PlatformIdentification, File> platformMap = new LinkedHashMap<PlatformIdentification, File>();\r
+ for (int i = 0; i < platformModel.getRowCount(); i++) {\r
+ File toFile = new File(Workspace.getCurrentWorkspace() + File.separatorChar\r
+ + platformModel.getValueAt(i, 3));\r
+ if (!isPlatformPathValid(toFile)) {\r
+ Log.err(platformVector.get(i) + " path already has platform now. ");\r
+ return;\r
+ }\r
+ File fpdFile = new File((String) platformModel.getValueAt(i, 3) + File.separatorChar\r
+ + platformVector.get(i).getFpdFile().getName());\r
+ platformList.add(fpdFile.getPath());\r
+ platformMap.put(platformVector.get(i), toFile);\r
+ }\r
+\r
+ //\r
+ //\r
+ //\r
+ Far far = stepOne.getFar();\r
+ try {\r
+ far.InstallFar(platformMap, packageMap);\r
+ //\r
+ // Add to database\r
+ //\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ wt.addFarToDb(packageList, platformList, far.mainfest.getHeader());\r
+ } catch (Exception ex) {\r
+ ex.printStackTrace();\r
+ Log.err("Install error. ");\r
+ return;\r
+ }\r
+\r
+ this.setVisible(false);\r
+ this.stepOne.returnType = DataType.RETURN_TYPE_OK;\r
+ this.dispose();\r
+ } else if (e.getSource() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepOne.setVisible(true);\r
+ }\r
+ }\r
+\r
+ private boolean isPackagePathValid(File spdFile) {\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ List<PackageIdentification> allPackages = wt.getAllPackages();\r
+ Iterator<PackageIdentification> iter = allPackages.iterator();\r
+\r
+ while (iter.hasNext()) {\r
+ PackageIdentification item = iter.next();\r
+ if (isPathContainMutual(spdFile, item.getSpdFile())) {\r
+ return false;\r
+ }\r
+ }\r
+ return true;\r
+ }\r
+\r
+ private boolean isPlatformPathValid(File fpdFile) {\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ List<PlatformIdentification> allPlatforms = wt.getAllPlatforms();\r
+ Iterator<PlatformIdentification> iter = allPlatforms.iterator();\r
+\r
+ while (iter.hasNext()) {\r
+ PlatformIdentification item = iter.next();\r
+ if (isPathContainMutual(fpdFile, item.getFpdFile())) {\r
+ return false;\r
+ }\r
+ }\r
+ return true;\r
+ }\r
+\r
+ private boolean isPathContainMutual(File path1, File path2) {\r
+ if (path1.getPath().startsWith(path2.getParent())) {\r
+ return true;\r
+ }\r
+ if (path2.getPath().startsWith(path1.getPath())) {\r
+ return true;\r
+ }\r
+ return false;\r
+ }\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 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
+}\r
+\r
+class PartialEditableTableModel 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 true;\r
+ default:\r
+ return false;\r
+ }\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.updateui;\r
+\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.io.File;\r
+import java.util.Vector;\r
+\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JPanel;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JButton;\r
+import javax.swing.JLabel;\r
+import javax.swing.JTextField;\r
+\r
+import org.tianocore.frameworkwizard.common.DataType;\r
+import org.tianocore.frameworkwizard.common.IFileFilter;\r
+import org.tianocore.frameworkwizard.common.Log;\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.common.ui.IFrame;\r
+import org.tianocore.frameworkwizard.far.Far;\r
+import org.tianocore.frameworkwizard.far.FarIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JList;\r
+\r
+public class UpdateStepOne extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 735554907464539931L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JTextArea jTextArea = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonNext = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JTextField jTextFieldFarFile = null;\r
+\r
+ private JButton jButtonBrowser = null;\r
+\r
+ private UpdateStepTwo stepTwo = null;\r
+\r
+ private Far far = null;\r
+\r
+ private Vector<FarIdentification> farVector = null;\r
+\r
+ private JLabel jLabel1 = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JList jListFarFromDb = null;\r
+\r
+ private File farFile = null;\r
+\r
+ public File getFarFile() {\r
+ return farFile;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextArea == null) {\r
+ jTextArea = new JTextArea();\r
+ jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextArea.setText("Step 1: Choose framework archive (FAR) file. \n");\r
+ jTextArea.setEditable(false);\r
+ }\r
+ return jTextArea;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonNext \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonNext() {\r
+ if (jButtonNext == null) {\r
+ jButtonNext = new JButton();\r
+ jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonNext.setText("Next");\r
+ jButtonNext.addMouseListener(this);\r
+ }\r
+ return jButtonNext;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextField \r
+ * \r
+ * @return javax.swing.JTextField \r
+ */\r
+ private JTextField getJTextFieldFarFile() {\r
+ if (jTextFieldFarFile == null) {\r
+ jTextFieldFarFile = new JTextField();\r
+ jTextFieldFarFile.setBounds(new java.awt.Rectangle(130, 100, 400, 20));\r
+ }\r
+ return jTextFieldFarFile;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButton \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonBrowser() {\r
+ if (jButtonBrowser == null) {\r
+ jButtonBrowser = new JButton();\r
+ jButtonBrowser.setBounds(new java.awt.Rectangle(542, 100, 97, 20));\r
+ jButtonBrowser.setText("Browser...");\r
+ jButtonBrowser.addMouseListener(this);\r
+ }\r
+ return jButtonBrowser;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setBounds(new java.awt.Rectangle(130, 164, 500, 160));\r
+ jScrollPane.setViewportView(getJListFarFromDb());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jListFarFromDb \r
+ * \r
+ * @return javax.swing.JList \r
+ */\r
+ private JList getJListFarFromDb() {\r
+ if (jListFarFromDb == null) {\r
+ jListFarFromDb = new JList();\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ farVector = wt.getAllFars();\r
+ jListFarFromDb.setListData(farVector);\r
+ }\r
+ return jListFarFromDb;\r
+ }\r
+\r
+ /**\r
+ * This is the default constructor\r
+ */\r
+ public UpdateStepOne(IFrame iFrame, boolean modal) {\r
+ super(iFrame, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Update Framework Archive(FAR) - Step 1: Choose FAR File");\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\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
+ jLabel1 = new JLabel();\r
+ jLabel1.setBounds(new java.awt.Rectangle(30, 138, 355, 18));\r
+ jLabel1.setText("Choose FAR from current framework database");\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30, 80, 220, 20));\r
+ jLabel.setText("Choose FAR file: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonNext(), null);\r
+ jContentPane.add(jLabel, null);\r
+ jContentPane.add(getJTextFieldFarFile(), null);\r
+ jContentPane.add(getJButtonBrowser(), null);\r
+ jContentPane.add(jLabel1, null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ }\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() == jButtonNext) {\r
+ //\r
+ // Judge if FAR file is existed\r
+ //\r
+ farFile = new File(jTextFieldFarFile.getText());\r
+ if (!farFile.exists() || !farFile.isFile()) {\r
+ Log.err("Please choose a FAR file already exists. ");\r
+ return;\r
+ }\r
+\r
+ //\r
+ // Judge FAR is valid\r
+ //\r
+\r
+ //\r
+ // Add more logic process here\r
+ //\r
+ if (jListFarFromDb.getSelectedValue() == null) {\r
+ Log.err("Please choose a FAR from framework database. ");\r
+ return;\r
+ }\r
+\r
+ if (stepTwo == null) {\r
+ stepTwo = new UpdateStepTwo(this, true, this);\r
+ }\r
+ this.setVisible(false);\r
+ stepTwo.prepareTable();\r
+ stepTwo.setVisible(true);\r
+ } else if (e.getSource() == jButtonBrowser) {\r
+ JFileChooser fc = new JFileChooser();\r
+ fc.setAcceptAllFileFilterUsed(false);\r
+ fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));\r
+ fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
+\r
+ int result = fc.showSaveDialog(new JPanel());\r
+ if (result == JFileChooser.APPROVE_OPTION) {\r
+ this.jTextFieldFarFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),\r
+ DataType.RETURN_TYPE_FAR_SURFACE_AREA));\r
+ }\r
+ }\r
+ }\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 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
+ public FarIdentification getSelecedDbFar() {\r
+ return (FarIdentification) jListFarFromDb.getSelectedValue();\r
+ }\r
+\r
+ public Far getFar() {\r
+ return far;\r
+ }\r
+}\r
--- /dev/null
+/** @file\r
+\r
+ Copyright (c) 2006, Intel Corporation\r
+ All rights reserved. This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+ \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ \r
+ **/\r
+\r
+package org.tianocore.frameworkwizard.far.updateui;\r
+\r
+import java.awt.Dimension;\r
+import java.awt.Toolkit;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JTextArea;\r
+import javax.swing.JButton;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JLabel;\r
+import javax.swing.JTable;\r
+import javax.swing.ListSelectionModel;\r
+import javax.swing.table.DefaultTableModel;\r
+\r
+import org.tianocore.frameworkwizard.common.Tools;\r
+import org.tianocore.frameworkwizard.common.ui.IDialog;\r
+import org.tianocore.frameworkwizard.far.AggregationOperation;\r
+import org.tianocore.frameworkwizard.far.Far;\r
+import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
+import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
+\r
+public class UpdateStepTwo extends IDialog implements MouseListener {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = -4400145363721213110L;\r
+\r
+ private JPanel jContentPane = null;\r
+\r
+ private JTextArea jTextArea = null;\r
+\r
+ private UpdateStepOne stepOne = null;\r
+\r
+ private JButton jButtonCancel = null;\r
+\r
+ private JButton jButtonFinish = null;\r
+\r
+ private JButton jButtonPrevious = null;\r
+\r
+ private JScrollPane jScrollPane = null;\r
+\r
+ private JLabel jLabel = null;\r
+\r
+ private JTable jTablePackage = null;\r
+\r
+ private PartialTableModel model = null;\r
+\r
+ public UpdateStepTwo(IDialog iDialog, boolean modal, UpdateStepOne stepOne) {\r
+ this(iDialog, modal);\r
+ this.stepOne = stepOne;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTextArea \r
+ * \r
+ * @return javax.swing.JTextArea \r
+ */\r
+ private JTextArea getJTextArea() {\r
+ if (jTextArea == null) {\r
+ jTextArea = new JTextArea();\r
+ jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));\r
+ jTextArea.setText("Step 2: Summary. \n");\r
+ jTextArea.setEditable(false);\r
+ }\r
+ return jTextArea;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonCancel \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonCancel() {\r
+ if (jButtonCancel == null) {\r
+ jButtonCancel = new JButton();\r
+ jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addMouseListener(this);\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonFinish \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonFinish() {\r
+ if (jButtonFinish == null) {\r
+ jButtonFinish = new JButton();\r
+ jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));\r
+ jButtonFinish.setText("Finish");\r
+ jButtonFinish.addMouseListener(this);\r
+ }\r
+ return jButtonFinish;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonPrevious \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonPrevious() {\r
+ if (jButtonPrevious == null) {\r
+ jButtonPrevious = new JButton();\r
+ jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));\r
+ jButtonPrevious.setText("Previous");\r
+ jButtonPrevious.addMouseListener(this);\r
+ }\r
+ return jButtonPrevious;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPane \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPane() {\r
+ if (jScrollPane == null) {\r
+ jScrollPane = new JScrollPane();\r
+ jScrollPane.setBounds(new java.awt.Rectangle(30, 98, 570, 170));\r
+ jScrollPane.setViewportView(getJTablePackage());\r
+ }\r
+ return jScrollPane;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTablePackage \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTablePackage() {\r
+ if (jTablePackage == null) {\r
+ jTablePackage = new JTable();\r
+ model = new PartialTableModel();\r
+ jTablePackage = new JTable(model);\r
+ jTablePackage.setRowHeight(20);\r
+ jTablePackage.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);\r
+ model.addColumn("Name");\r
+ model.addColumn("Version");\r
+ model.addColumn("Guid");\r
+ model.addColumn("Path");\r
+\r
+ jTablePackage.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
+ }\r
+ return jTablePackage;\r
+ }\r
+\r
+ public void prepareTable() {\r
+ model.setRowCount(0);\r
+ try {\r
+ Far far = stepOne.getFar();\r
+ List<PackageIdentification> packagesInFar = far.mainfest.getPackageList();\r
+\r
+ WorkspaceTools wt = new WorkspaceTools();\r
+ List<PackageIdentification> packagesInDb = wt.getAllPackages();\r
+\r
+ List<PackageIdentification> result = AggregationOperation.intersection(packagesInDb, packagesInFar);\r
+ //\r
+ // Change here to get packages and platforms from FAR\r
+ //\r
+ Iterator<PackageIdentification> iter = result.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
+ * This is the default constructor\r
+ */\r
+ public UpdateStepTwo(IDialog iDialog, boolean modal) {\r
+ super(iDialog, modal);\r
+ initialize();\r
+ }\r
+\r
+ /**\r
+ * This method initializes this\r
+ * \r
+ * @return void\r
+ */\r
+ private void initialize() {\r
+ this.setSize(700, 400);\r
+ this.setContentPane(getJContentPane());\r
+ this.setTitle("Update Framework Archive(FAR) - Step 2: Summary");\r
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\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
+\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
+\r
+ //\r
+ // Remove all update packages\r
+ //\r
+\r
+ //\r
+ // Install all update packages\r
+ //\r
+\r
+ this.setVisible(false);\r
+ } else if (e.getSource() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepOne.setVisible(true);\r
+ }\r
+ }\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 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
+}\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
package org.tianocore.frameworkwizard.packaging;\r
\r
+import java.io.File;\r
+\r
+import org.tianocore.frameworkwizard.common.Tools;\r
import org.tianocore.frameworkwizard.common.Identifications.Identification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
\r
public class PackageIdentification extends Identification{\r
\r
public PackageIdentification(Identification id){\r
super(id.getName(), id.getGuid(), id.getVersion(), id.getPath());\r
}\r
+ \r
+ public File getSpdFile(){\r
+ File spdFile = new File(this.getPath());\r
+ return spdFile;\r
+ }\r
+ \r
+ public String toString() {\r
+ return getName() + " " + getVersion() + " [" + Tools.getRelativePath(getSpdFile().getPath(), Workspace.getCurrentWorkspace()) + "]";\r
+ }\r
}\r
\r
package org.tianocore.frameworkwizard.platform;\r
\r
+\r
+import java.io.File;\r
+\r
+import org.tianocore.frameworkwizard.common.Tools;\r
import org.tianocore.frameworkwizard.common.Identifications.Identification;\r
+import org.tianocore.frameworkwizard.workspace.Workspace;\r
\r
public class PlatformIdentification extends Identification{\r
\r
+ \r
public PlatformIdentification(String name, String guid, String version, String path){\r
super(name, guid, version, path);\r
}\r
public PlatformIdentification(Identification id){\r
super(id.getName(), id.getGuid(), id.getVersion(), id.getPath());\r
}\r
+ \r
+ public File getFpdFile(){\r
+ File fpdFile = new File(this.getPath());\r
+ return fpdFile;\r
+ }\r
+ \r
+ public String toString() {\r
+ return getName() + " " + getVersion() + " [" + Tools.getRelativePath(getFpdFile().getPath(), Workspace.getCurrentWorkspace()) + "]";\r
+ }\r
}
\ No newline at end of file
**/\r
package org.tianocore.frameworkwizard.workspace;\r
\r
+import java.io.File;\r
import java.io.IOException;\r
+import java.util.List;\r
import java.util.Vector;\r
\r
+import org.apache.xmlbeans.XmlCursor;\r
import org.apache.xmlbeans.XmlException;\r
import org.tianocore.DbPathAndFilename;\r
-import org.tianocore.FrameworkDatabaseDocument;\r
+import org.tianocore.FrameworkDatabaseDocument.FrameworkDatabase;\r
import org.tianocore.IndustryStdIncludesDocument.IndustryStdIncludes;\r
import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
import org.tianocore.MsaFilesDocument.MsaFiles;\r
import org.tianocore.frameworkwizard.common.Tools;\r
import org.tianocore.frameworkwizard.common.Identifications.Identification;\r
import org.tianocore.frameworkwizard.common.Identifications.OpenFile;\r
+import org.tianocore.frameworkwizard.far.FarHeader;\r
+import org.tianocore.frameworkwizard.far.FarIdentification;\r
import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
//\r
// Define class members\r
//\r
- private FrameworkDatabaseDocument.FrameworkDatabase fdb = null;\r
+ private FrameworkDatabase fdb = null;\r
\r
private Vector<ModuleIdentification> vModuleList = new Vector<ModuleIdentification>();\r
\r
Open Framework Database file\r
\r
*/\r
- private void openFrameworkDb() {\r
+ private FrameworkDatabase openFrameworkDb() {\r
String strFrameworkDbFilePath = Workspace.getCurrentWorkspace() + Workspace.getStrWorkspaceDatabaseFile();\r
strFrameworkDbFilePath = Tools.convertPathToCurrentOsType(strFrameworkDbFilePath);\r
try {\r
fdb = OpenFile.openFrameworkDb(strFrameworkDbFilePath);\r
} catch (XmlException e) {\r
Log.err("Open Framework Database " + strFrameworkDbFilePath, e.getMessage());\r
- return;\r
+ return null;\r
} catch (Exception e) {\r
Log.err("Open Framework Database " + strFrameworkDbFilePath, "Invalid file type");\r
- return;\r
+ return null;\r
}\r
+ return fdb;\r
}\r
\r
+ public void addFarToDb(List<String> packageList, List<String> platformList, FarHeader far) {\r
+ FrameworkDatabase fdb = openFrameworkDb();\r
+ \r
+ for (int i = 0; i < packageList.size(); i++) {\r
+ DbPathAndFilename item = DbPathAndFilename.Factory.newInstance();\r
+ item.setFarGuid(far.getGuidValue());\r
+ item.setStringValue(packageList.get(i));\r
+ fdb.getPackageList().getFilenameList().add(item);\r
+ }\r
+ \r
+ for (int i = 0; i < platformList.size(); i++) {\r
+ DbPathAndFilename item = DbPathAndFilename.Factory.newInstance();\r
+ item.setFarGuid(far.getGuidValue());\r
+ item.setStringValue(platformList.get(i));\r
+ fdb.getPlatformList().getFilenameList().add(item);\r
+ }\r
+ \r
+ DbPathAndFilename farItem = DbPathAndFilename.Factory.newInstance();\r
+ farItem.setFarGuid(far.getGuidValue());\r
+ farItem.setStringValue(far.getFarName());\r
+ fdb.getFarList().getFilenameList().add(farItem);\r
+ \r
+ String strFrameworkDbFilePath = Workspace.getCurrentWorkspace() + Workspace.getStrWorkspaceDatabaseFile();\r
+ strFrameworkDbFilePath = Tools.convertPathToCurrentOsType(strFrameworkDbFilePath);\r
+ \r
+ try {\r
+ SaveFile.saveDbFile(strFrameworkDbFilePath, fdb);\r
+ }\r
+ catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ \r
+ \r
+ public void removeFarFromDb(FarIdentification far) {\r
+ FrameworkDatabase fdb = openFrameworkDb();\r
+ //\r
+ // Remove Packages\r
+ //\r
+ XmlCursor cursor = fdb.getPackageList().newCursor();\r
+ cursor.toFirstChild();\r
+ do {\r
+ DbPathAndFilename item = (DbPathAndFilename)cursor.getObject();\r
+ \r
+ if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {\r
+ cursor.removeXml();\r
+ }\r
+ } while (cursor.toNextSibling());\r
+ cursor.dispose();\r
+ \r
+ //\r
+ // Remove Platforms\r
+ //\r
+ cursor = fdb.getPlatformList().newCursor();\r
+ cursor.toFirstChild();\r
+ do {\r
+ DbPathAndFilename item = (DbPathAndFilename)cursor.getObject();\r
+ if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {\r
+ cursor.removeXml();\r
+ }\r
+ } while (cursor.toNextSibling());\r
+ \r
+ //\r
+ // Remove Far\r
+ //\r
+ cursor = fdb.getFarList().newCursor();\r
+ cursor.toFirstChild();\r
+ do {\r
+ DbPathAndFilename item = (DbPathAndFilename)cursor.getObject();\r
+ if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {\r
+ cursor.removeXml();\r
+ }\r
+ } while (cursor.toNextSibling());\r
+ cursor.dispose();\r
+ \r
+ String strFrameworkDbFilePath = Workspace.getCurrentWorkspace() + Workspace.getStrWorkspaceDatabaseFile();\r
+ strFrameworkDbFilePath = Tools.convertPathToCurrentOsType(strFrameworkDbFilePath);\r
+ try {\r
+ SaveFile.saveDbFile(strFrameworkDbFilePath, fdb);\r
+ }\r
+ catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ \r
+ public String getPackageFarGuid(PackageIdentification packageId) {\r
+ openFrameworkDb();\r
+ \r
+ for (int index = 0; index < fdb.getPackageList().getFilenameList().size(); index++) {\r
+ DbPathAndFilename item = fdb.getPackageList().getFilenameArray(index);\r
+ String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR\r
+ + item.getStringValue();\r
+ File tempFile = new File(path);\r
+ if (tempFile.getPath().equalsIgnoreCase(packageId.getSpdFile().getPath())) {\r
+ return fdb.getPackageList().getFilenameArray(index).getFarGuid();\r
+ }\r
+ }\r
+ \r
+ return null;\r
+ }\r
+ \r
+ public String getPlatformFarGuid(PlatformIdentification platformId) {\r
+ openFrameworkDb();\r
+ \r
+ for (int index = 0; index < fdb.getPlatformList().getFilenameList().size(); index++) {\r
+ DbPathAndFilename item = fdb.getPlatformList().getFilenameArray(index);\r
+ String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR\r
+ + item.getStringValue();\r
+ File tempFile = new File(path);\r
+ if (tempFile.getPath().equalsIgnoreCase(platformId.getFpdFile().getPath())) {\r
+ return fdb.getPlatformList().getFilenameArray(index).getFarGuid();\r
+ }\r
+ }\r
+ \r
+ return null;\r
+ }\r
+ \r
+ public String getModuleFarGuid(ModuleIdentification moduleId) {\r
+ PackageIdentification packageId = getPackageIdByModuleId(moduleId);\r
+ if (packageId != null) {\r
+ return getPackageFarGuid(packageId);\r
+ }\r
+ else {\r
+ return null;\r
+ }\r
+ }\r
/**\r
Get all modules' paths from one package\r
\r
Tools.sortPackages(vPackageList, DataType.SORT_TYPE_ASCENDING);\r
return vPackageList;\r
}\r
+\r
+ public Vector<FarIdentification> getAllFars() {\r
+ openFrameworkDb();\r
+ Vector<FarIdentification> v = new Vector<FarIdentification>();\r
+ for (int index = 0; index < fdb.getFarList().getFilenameList().size(); index++) {\r
+ DbPathAndFilename item = fdb.getFarList().getFilenameList().get(index);\r
+ FarIdentification far = new FarIdentification(item.getFarGuid(), item.getMd5Sum(), item.getStringValue());\r
+ v.addElement(far);\r
+ }\r
+ return v;\r
+ }\r
\r
+ public Vector<PackageIdentification> getPackagesByFar(FarIdentification far) {\r
+ Identification id = null;\r
+ openFrameworkDb();\r
+ Vector<PackageIdentification> v = new Vector<PackageIdentification>();\r
+ \r
+ for (int index = 0; index < fdb.getPackageList().getFilenameList().size(); index++) {\r
+ DbPathAndFilename item = fdb.getPackageList().getFilenameArray(index);\r
+ String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR\r
+ + item.getStringValue();\r
+ path = Tools.convertPathToCurrentOsType(path);\r
+ \r
+ if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {\r
+ \r
+ try {\r
+ id = getId(path, OpenFile.openSpdFile(path));\r
+ v.addElement(new PackageIdentification(id));\r
+ } catch (IOException e) {\r
+ Log.err("Open Package Surface Area " + path, e.getMessage());\r
+ e.printStackTrace();\r
+ } catch (XmlException e) {\r
+ Log.err("Open Package Surface Area " + path, e.getMessage());\r
+ e.printStackTrace();\r
+ } catch (Exception e) {\r
+ Log.err("Open Package Surface Area " + path, "Invalid file type");\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+ return v;\r
+ }\r
+ \r
+ public Vector<PlatformIdentification> getPlatformsByFar(FarIdentification far) {\r
+ Identification id = null;\r
+ openFrameworkDb();\r
+ Vector<PlatformIdentification> v = new Vector<PlatformIdentification>();\r
+ \r
+ for (int index = 0; index < fdb.getPlatformList().getFilenameList().size(); index++) {\r
+ DbPathAndFilename item = fdb.getPlatformList().getFilenameArray(index);\r
+ String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR\r
+ + item.getStringValue();\r
+ path = Tools.convertPathToCurrentOsType(path);\r
+ \r
+ if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {\r
+ try {\r
+ id = getId(path, OpenFile.openFpdFile(path));\r
+ v.addElement(new PlatformIdentification(id));\r
+ } catch (IOException e) {\r
+ Log.err("Open Platform Surface Area " + path, e.getMessage());\r
+ e.printStackTrace();\r
+ } catch (XmlException e) {\r
+ Log.err("Open Platform Surface Area " + path, e.getMessage());\r
+ e.printStackTrace();\r
+ } catch (Exception e) {\r
+ Log.err("Open Platform Surface Area " + path, "Invalid file type");\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+ return v;\r
+ }\r
+\r
/**\r
Get all module basic information from a package\r
\r