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
+ return resultList; \r
+ \r
}\r
\r
// public void installPackgCheck (PackageIdentification pkgId, String pkgPath){\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
+ \r
+ public void creatFar (List<PackageIdentification> pkgList,\r
+ List<PlatformIdentification> plfList, Set<String> fileFilter,\r
+ FarHeader fHeader) throws Exception{\r
jos = new JarOutputStream(new FileOutputStream(jarFile));\r
\r
//\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
+ 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(Tools.convertPathToUnixType(Tools.getRelativePath(file.getPath(),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
+ \r
+ public void InstallFar (Map<PlatformIdentification, File> plfMap, Map<PackageIdentification, File> pkgMap) throws Exception{\r
Set<PlatformIdentification> plfKeys = plfMap.keySet();\r
Iterator<PlatformIdentification> plfIter = plfKeys.iterator();\r
while (plfIter.hasNext()) {\r
public boolean hibernateToFile() {\r
return true;\r
}\r
-\r
+// public static void main(String[] args){\r
+// try {\r
+// JarFile jarFile = new JarFile(new File("C:\\cvswork\\newEdk\\jar.jar.far"));\r
+// JarEntry je= jarFile.getJarEntry("MdePkg/MdePkg.spd");\r
+// InputStream is = jarFile.getInputStream(je);\r
+// byte[] buffer = new byte[1]; \r
+// File tempFile = new File("C:\\cvswork\\newEdk\\tempFile");\r
+// File tfile2 = new File("C:\\cvswork\\newEdk\\tempFile1");\r
+// FileOutputStream fos1 = new FileOutputStream(tfile2);\r
+// FileOutputStream fos = new FileOutputStream(tempFile);\r
+// int size = is.read(buffer);\r
+// int totoalSize = size;\r
+// while ( size >= 0) {\r
+// fos.write(buffer);\r
+// size = is.read(buffer);\r
+// totoalSize = totoalSize + size;\r
+// }\r
+// \r
+// \r
+//// is = jarFile.getInputStream(je);\r
+//// is.read(totalbuffer);\r
+//// fos.write(totalbuffer);\r
+// fos.close();\r
+// byte[] totalbuffer = new byte[(int)tempFile.length()];\r
+// FileInputStream fis = new FileInputStream(tempFile);\r
+// fis.read(totalbuffer);\r
+// fos1.write(totalbuffer);\r
+// fos1.close();\r
+// }catch(Exception e){\r
+// \r
+// }\r
+// }\r
+ \r
public void extract(List<FarFileItem> allFile, String dir) throws Exception {\r
\r
Iterator filesItem = allFile.iterator();\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
+ ffItem = (FarFileItem)filesItem.next();\r
je = jf.getJarEntry(Tools.convertPathToUnixType(ffItem.getDefaultPath()));\r
InputStream entryStream = jf.getInputStream(je);\r
File file = new File(dir + ffItem.getRelativeFilename());\r
// exists).\r
//\r
FileOutputStream outputStream = new FileOutputStream(file);\r
+ \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
+ byte[] buffer = new byte[1]; \r
+ File tempFile = new File("tempFile");\r
+ FileOutputStream fos = new FileOutputStream(tempFile);\r
+ int size = entryStream.read(buffer);\r
+ while ( size >= 0) {\r
+ fos.write(buffer);\r
+ size = entryStream.read(buffer);\r
+ }\r
+ \r
+ fos.close();\r
+ byte[] totalBuffer = new byte[(int)tempFile.length()];\r
+ FileInputStream fis = new FileInputStream(tempFile);\r
+ fis.read(totalBuffer);\r
+ outputStream.write(totalBuffer);\r
+ fis.close();\r
+ tempFile.delete();\r
} finally {\r
outputStream.close();\r
}\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
+ public void addFileToFar (File file, JarOutputStream farOuputStream, String workDir){\r
+ \r
}\r
\r
/**\r
+/** @file\r
+ \r
+ The file is used to save information of Far 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 FarIdentification {\r
// / Mainfest file element name\r
// /\r
final static String mfFileName = "FarMainfest.MF";\r
-\r
//\r
// Header\r
//\r
File mfFile = null;\r
\r
public FarHeader getHeader() {\r
- return fhInfo;\r
+ return fhInfo;\r
}\r
-\r
+ \r
public Mainfest() throws Exception {\r
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();\r
DocumentBuilder dombuilder = domfac.newDocumentBuilder();\r
this.fhInfo = fHeader;\r
}\r
\r
- public void createManifest(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,\r
- Set<String> fileFilter) throws Exception {\r
+ public void createManifest(List<PackageIdentification> pkgList,\r
+ List<PlatformIdentification> plfList, Set<String> fileFilter) throws Exception {\r
\r
//\r
// Add Package and it's contents to FarPackageList.\r
\r
public void addPkgToPkgList(PackageIdentification packageId, Set<String> fileFilter) throws Exception {\r
files.add(packageId.getSpdFile());\r
-\r
+ \r
FarPackage farPackage = new FarPackage();\r
//\r
// Add SPD file to FarPackage\r
\r
FarFileItem ffItem = new FarFileItem(spdFile.getName(), FarMd5.md5(spdFile));\r
farPackage.setFarFile(ffItem);\r
-\r
+ \r
//\r
// Add package guid value.\r
//\r
farPackage.setGuidValue(packageId.getGuid());\r
-\r
+ \r
//\r
// Add package version\r
//\r
farPackage.setVersion(packageId.getVersion());\r
-\r
+ \r
//\r
// Add DefaultPat: Package absoulte path - Workspace absolut\r
// path.\r
// Remove current package's SPD file\r
//\r
fileSet.remove(packageId.getSpdFile());\r
-\r
+ \r
files.addAll(fileSet);\r
\r
Iterator<File> iter = fileSet.iterator();\r
ffItem = new FarFileItem(fileRelativePath, FarMd5.md5(normalFile));\r
contents.add(ffItem);\r
}\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
+ \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
+ private void recursiveDirectory(Set<File> files, Set<File> fpds, File dir,\r
+ Set<String> fileFilter) {\r
if (isFilter(dir, fileFilter)) {\r
return;\r
}\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
+// 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
public void addPlatformIdToFarPlatformItemList(PlatformIdentification platformId) throws Exception {\r
files.add(platformId.getFpdFile());\r
-\r
+ \r
FarPlatformItem fpfItem = new FarPlatformItem();\r
FarFileItem ffItem;\r
String fpfPath = platformId.getPath();\r
//\r
// Add farFileName\r
//\r
- ffItem = new FarFileItem(Tools.getRelativePath(fpfFile.getPath(), Workspace.getCurrentWorkspace()),\r
- FarMd5.md5(fpfFile));\r
+ ffItem = new FarFileItem(Tools.getRelativePath(fpfFile.getPath(),Workspace.getCurrentWorkspace()), FarMd5.md5(fpfFile));\r
fpfItem.setFarFile(ffItem);\r
\r
//\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
+ PackageIdentification pkgId = new PackageIdentification(fPkg.getFarFile().getRelativeFilename(), fPkg.getGuidValue(), fPkg.getVersion());\r
+ pkgId.setPath(Workspace.getCurrentWorkspace() + File.separatorChar + fPkg.getDefaultPath() + 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
- public List<PlatformIdentification> getPlatformList() throws Exception, IOException, XmlException {\r
+ public List<PlatformIdentification> getPlatformList() throws Exception,\r
+ IOException, XmlException {\r
//\r
// PlatformIdentification set.\r
//\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
+ File file = new File(Workspace.getCurrentWorkspace()\r
+ + 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
+ PlatformIdentification plfId = new PlatformIdentification (fpfItem.getFarFile().getRelativeFilename(), 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
public List<FarFileItem> getPlatformContents(PlatformIdentification platformId) {\r
List<FarFileItem> result = new ArrayList<FarFileItem>();\r
Iterator<FarPlatformItem> iter = this.fPlfList.iterator();\r
-\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
+ farFileItem.setRelativeFilename(Tools.getFileNameOnly(farFileItem.getRelativeFilename()));\r
result.add(farFileItem);\r
- break;\r
+ break ;\r
}\r
}\r
return result;\r
}\r
-\r
+ \r
public List<FarFileItem> getPackageContents(PackageIdentification packageId) {\r
List<FarFileItem> farFileList = new ArrayList<FarFileItem>();\r
Iterator pkgItem = this.fPkgList.iterator();\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
+// 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
+ while(ffIter.hasNext()){\r
+ FarFileItem ffItem = ffIter.next();\r
ffItem.setDefaultPath(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename());\r
}\r
break;\r
}\r
}\r
\r
+ \r
return farFileList;\r
}\r
\r
* @param pkgId\r
* @return String: return string represent jar file entry; \r
*/\r
- public String[] getPackgeSpd(PackageIdentification pkgId) {\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
+ entryStr[0] = pkg.getFarFile().getRelativeFilename();\r
+ entryStr[1] = pkg.getDefaultPath() ;\r
return entryStr;\r
}\r
}\r
return null;\r
- }\r
-\r
+ } \r
+ \r
public List<FarFileItem> getPackageContents() {\r
//\r
// In this farFilelist,all FarFileItem's relativeFileName should be\r
//\r
// Set farFileItem relativeFileName = absolutePath + file Name.\r
//\r
- farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename(),\r
- ffItem.getMd5Value()));\r
+ farFileList.add(new FarFileItem(pkg.getDefaultPath()\r
+ + File.separatorChar + ffItem.getRelativeFilename(), ffItem\r
+ .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
+ farFileList.add(new FarFileItem(pkg.getDefaultPath()\r
+ + File.separator + ffItem.getRelativeFilename(), ffItem\r
+ .getMd5Value()));\r
}\r
//\r
// Add all farfiles in <FarPlatformList> to list.\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
+ farFileList.add(new FarFileItem(pkg.getDefaultPath()\r
+ + File.separator + ffItem.getRelativeFilename(), ffItem\r
+ .getMd5Value()));\r
}\r
}\r
return farFileList;\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
+ \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
// Add far files in <FarPlatformList> to list\r
//\r
- NodeList elementList = this.mainfestDoc.getElementsByTagName(farPlatformList);\r
+ NodeList elementList = this.mainfestDoc\r
+ .getElementsByTagName(farPlatformList);\r
for (int i = 0; i < elementList.getLength(); i++) {\r
//\r
// Get <farPlatform> node list.\r
//\r
// Get child node value and set to platformIdentification.\r
//\r
- if (tempNode.getNodeName().equalsIgnoreCase(farPackage_FarfileName)) {\r
+ if (tempNode.getNodeName().equalsIgnoreCase(\r
+ 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
+ FarFileItem farFile = new FarFileItem(tempNode\r
+ .getTextContent(), farAttr.getNamedItem(\r
+ farFileName_Md5sum).getTextContent());\r
ffiList.add(farFile);\r
}\r
}\r
//\r
// create mainfest root node\r
//\r
- Element rootNode = this.mainfestDoc.createElement("FrameworkArchiveManifest");\r
+ Element rootNode = this.mainfestDoc\r
+ .createElement("FrameworkArchiveManifest");\r
this.mainfestDoc.appendChild(rootNode);\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("{http://xml.apache.org/xslt}indent-amount",\r
+ "2");\r
xformer.setOutputProperty(OutputKeys.INDENT, "yes");\r
\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
+ this.mfFile = new File(Workspace.getCurrentWorkspace()\r
+ + File.separatorChar + mfFileName);\r
//\r
// generate all directory path\r
//\r
}\r
\r
public void pkgToFarPkgNode(Element parentNode, FarPackage pkgItem) {\r
- Element pkgNode = this.mainfestDoc.createElement(farPackageList_FarPackage);\r
+ Element pkgNode = this.mainfestDoc\r
+ .createElement(farPackageList_FarPackage);\r
//\r
// Add <FarFileName>\r
//\r
//\r
// Add <DefaultPath>\r
//\r
- setStrItemToNode(pkgNode, pkgItem.getDefaultPath(), farPackage_DefaultPath);\r
+ setStrItemToNode(pkgNode, pkgItem.getDefaultPath(),\r
+ farPackage_DefaultPath);\r
\r
//\r
// Add <Contents>\r
}\r
\r
public void PlfToPlatformNode(Element parentNode, FarPlatformItem fplItem) {\r
- Element fplNode = this.mainfestDoc.createElement(farPlatformList_FarPlatform);\r
+ Element fplNode = this.mainfestDoc\r
+ .createElement(farPlatformList_FarPlatform);\r
//\r
// Add <FarFileName>\r
//\r
}\r
\r
public void ffiToFfNode(Element parentNode, FarFileItem ffi) {\r
- Element farFileName = this.mainfestDoc.createElement(farPackage_FarfileName);\r
+ Element farFileName = this.mainfestDoc\r
+ .createElement(farPackage_FarfileName);\r
farFileName.setTextContent(ffi.getRelativeFilename());\r
System.out.println(farFileName.getTextContent());\r
- System.out.println(ffi.getRelativeFilename());\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
+ public void setStrItemToNode(Element parentNode, String strValue,\r
+ String strName) {\r
Element node = this.mainfestDoc.createElement(strName);\r
node.setTextContent(strValue);\r
parentNode.appendChild(node);\r
} else {\r
return;\r
}\r
- NodeList childList = headerNode.getChildNodes();\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
+ if (nodeName.equalsIgnoreCase(farHeader_FarName)) {\r
String nodeValue = node.getTextContent();\r
this.fhInfo.setFarName(nodeValue);\r
} else if (nodeName.equalsIgnoreCase(guidValue)) {\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
+ if (fpnList.item(i).getNodeType()== Node.TEXT_NODE){\r
continue;\r
}\r
FarPackage fpItem = new FarPackage();\r
* @param fpfListNode\r
* @param plfList\r
*/\r
- public void parseFarPlatformList(Node fpfListNode, List<FarPlatformItem> plfList) {\r
+ public void parseFarPlatformList(Node fpfListNode,\r
+ 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
+ if (child.item(i).getNodeType()== Node.TEXT_NODE){\r
continue;\r
}\r
farPlfNode = child.item(i);\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
+ if (contentList.item(i).getNodeType()== Node.TEXT_NODE){\r
continue;\r
}\r
contentNode = contentList.item(i);\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
+ FarFileItem ffItem = new FarFileItem(ffName, attr.getNamedItem(\r
+ 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
+ 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
- }\r
return false;\r
}\r
\r
import java.awt.event.MouseListener;\r
import java.io.File;\r
import java.util.Vector;\r
+import java.util.jar.JarFile;\r
\r
import javax.swing.JFileChooser;\r
import javax.swing.JPanel;\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
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ }\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
+ try{\r
+ JarFile file = new JarFile(farFile);\r
+ this.far = new Far(file);\r
+ } catch (Exception ex){\r
+ Log.err(ex.getMessage());\r
+ }\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
+ this.setVisible(false);\r
+ stepTwo.prepareTable();\r
+ stepTwo.setVisible(true);\r
+ }\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
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.LinkedHashSet;\r
import java.util.List;\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.ListSelectionModel;\r
import javax.swing.table.DefaultTableModel;\r
\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.DistributeRule;\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
private JTable jTablePackage = null;\r
\r
private PartialTableModel model = null;\r
+ List<PackageIdentification> updatPkgList = new ArrayList<PackageIdentification>();\r
\r
public UpdateStepTwo(IDialog iDialog, boolean modal, UpdateStepOne stepOne) {\r
this(iDialog, modal);\r
WorkspaceTools wt = new WorkspaceTools();\r
List<PackageIdentification> packagesInDb = wt.getAllPackages();\r
\r
- List<PackageIdentification> result = AggregationOperation.intersection(packagesInDb, packagesInFar);\r
+ updatPkgList = AggregationOperation.intersection(packagesInDb, packagesInFar);\r
//\r
// Change here to get packages and platforms from FAR\r
//\r
- Iterator<PackageIdentification> iter = 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
+ Iterator<PackageIdentification> iter = updatPkgList.iterator() ;//packageList.iterator();\r
+ while (iter.hasNext()) {\r
+ String[] str = new String[4];\r
+ PackageIdentification item = iter.next();\r
+ str[0] = item.getName();\r
+ str[1] = item.getVersion();\r
+ str[2] = item.getGuid();\r
+ str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));\r
+ model.addRow(str);\r
+ } \r
+ }\r
+ catch (Exception ex) {\r
+ ex.printStackTrace();\r
}\r
+ }\r
\r
/**\r
* This is the default constructor\r
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);\r
}\r
\r
- /**\r
- * This method initializes jContentPane\r
- * \r
- * @return javax.swing.JPanel\r
- */\r
- private JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jLabel = new JLabel();\r
- jLabel.setBounds(new java.awt.Rectangle(30, 70, 281, 20));\r
- jLabel.setText("Following packages will be updated: ");\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.add(getJTextArea(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- jContentPane.add(getJButtonFinish(), null);\r
- jContentPane.add(getJButtonPrevious(), null);\r
- jContentPane.add(getJScrollPane(), null);\r
- jContentPane.add(jLabel, null);\r
- }\r
- return jContentPane;\r
+ /**\r
+ * This method initializes jContentPane\r
+ * \r
+ * @return javax.swing.JPanel\r
+ */\r
+ private JPanel getJContentPane() {\r
+ if (jContentPane == null) {\r
+ jLabel = new JLabel();\r
+ jLabel.setBounds(new java.awt.Rectangle(30,70,281,20));\r
+ jLabel.setText("Following packages will be updated: ");\r
+ jContentPane = new JPanel();\r
+ jContentPane.setLayout(null);\r
+ jContentPane.add(getJTextArea(), null);\r
+ jContentPane.add(getJButtonCancel(), null);\r
+ jContentPane.add(getJButtonFinish(), null);\r
+ jContentPane.add(getJButtonPrevious(), null);\r
+ jContentPane.add(getJScrollPane(), null);\r
+ jContentPane.add(jLabel, null);\r
}\r
-\r
- 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
+ return jContentPane;\r
+ }\r
+ public void mouseClicked(MouseEvent e) {\r
+ if (e.getSource() == jButtonCancel) {\r
+ this.setVisible(false);\r
+ }\r
+ else if (e.getSource() == jButtonFinish) {\r
+ //\r
+ // Check depedency ?\r
+ //\r
+ WorkspaceTools wsTools = new WorkspaceTools();\r
+ \r
+ Iterator<PackageIdentification> iter = updatPkgList.iterator();\r
+ List<PackageIdentification> depResultList = new ArrayList<PackageIdentification>();\r
+ while (iter.hasNext()){\r
+ List<PackageIdentification> depPkgList = stepOne.getFar().getPackageDependencies(iter.next());\r
+ depResultList = AggregationOperation.union(depResultList, depPkgList);\r
+ }\r
+ \r
+ List<PackageIdentification> dbPkgList = DistributeRule.vectorToList(wsTools.getAllPackages());\r
+ List<PackageIdentification> resultList = AggregationOperation.minus(depResultList, AggregationOperation.union(\r
+ this.updatPkgList, dbPkgList));\r
+ Iterator resultIter = resultList.iterator();\r
+ while (resultIter.hasNext()){\r
+ Log.err("Missing dependency package " + ((PackageIdentification)resultIter.next()).toString() + "in workspace!");\r
+ return;\r
+ }\r
+ \r
+ //\r
+ // Remove all update packages\r
+ //\r
+ //\r
+ // For all packages, remove all files. \r
+ // Exception FPD file still in DB\r
+ //\r
+ Vector<PlatformIdentification> allPlatforms = wsTools.getAllPlatforms();\r
+ Set<File> allPlatformFiles = new LinkedHashSet<File>();\r
+ \r
+ Iterator<PlatformIdentification> allPlfIter = allPlatforms.iterator();\r
+ while (iter.hasNext()) {\r
+ allPlatformFiles.add(allPlfIter.next().getFpdFile());\r
+ }\r
+ \r
+ Iterator<PackageIdentification> packageIter = this.updatPkgList.iterator();\r
+ while (packageIter.hasNext()) {\r
+ PackageIdentification item = packageIter.next();\r
+ Set<File> deleteFiles = new LinkedHashSet<File>();\r
+ recursiveDir(deleteFiles, item.getSpdFile().getParentFile(), allPlatformFiles);\r
+ Iterator<File> iterDeleteFile = deleteFiles.iterator();\r
+ while (iterDeleteFile.hasNext()){\r
+ deleteFiles(iterDeleteFile.next());\r
+ }\r
+ //\r
+ // Remove all empty parent dir\r
+ //\r
+ File parentDir = item.getSpdFile().getParentFile();\r
+ while (parentDir.listFiles().length == 0) {\r
+ File tempFile = parentDir;\r
+ parentDir = parentDir.getParentFile();\r
+ tempFile.delete();\r
}\r
+ }\r
+ \r
+ //\r
+ // Install all update packages\r
+ //\r
+ Iterator<PackageIdentification> updataIter = this.updatPkgList.iterator();\r
+ while (updataIter.hasNext()){\r
+ PackageIdentification pkgId = updataIter.next();\r
+ try{\r
+ stepOne.getFar().installPackage(pkgId, pkgId.getSpdFile());\r
+ }catch (Exception ex){\r
+ Log.err("Can install " + pkgId.toString() + " pakcage, please check it!");\r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ this.setVisible(false);\r
}\r
-\r
- public void mousePressed(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
-\r
+ else if (e.getSource() == jButtonPrevious) {\r
+ this.setVisible(false);\r
+ stepOne.setVisible(true);\r
}\r
-\r
- public void mouseReleased(MouseEvent e) {\r
- // TODO Auto-generated method stub\r
-\r
+ }\r
+ public void mousePressed(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ public void mouseReleased(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ public void mouseEntered(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+ public void mouseExited(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ private void recursiveDir(Set<File> files, File dir, Set<File> platformFiles) {\r
+ File[] fileList = dir.listFiles();\r
+ for (int i = 0; i < fileList.length; i ++) {\r
+ if (fileList[i].isFile()) {\r
+ if( ! platformFiles.contains(fileList[i])) {\r
+ files.add(fileList[i]);\r
+ }\r
+ }\r
+ else {\r
+ if (isContain(fileList[i], platformFiles)) {\r
+ recursiveDir(files, fileList[i], platformFiles);\r
+ }\r
+ else {\r
+ files.add(fileList[i]);\r
+ }\r
+ }\r
+ }\r
}\r
-\r
- public void mouseEntered(MouseEvent e) {\r
- // TODO Auto-generated method stub\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
- public void mouseExited(MouseEvent e) {\r
- // TODO Auto-generated method stub\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
\r
-}\r
\r
class PartialTableModel extends DefaultTableModel {\r
- /**\r
- * \r
- */\r
- private static final long serialVersionUID = 1L;\r
-\r
- public boolean isCellEditable(int row, int col) {\r
- switch (col) {\r
- case 3:\r
- return false;\r
- default:\r
- return false;\r
- }\r
- }\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ public boolean isCellEditable(int row, int col) {\r
+ switch (col){\r
+ case 3:\r
+ return false;\r
+ default:\r
+ return false; \r
+ }\r
+ }\r
}\r