1. Update release note to use jdk1.5.0_06 to take place of jdk1.5.0_04

2. Support "Update Far" function
3. Fix bugs in Far operations

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@985 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
hche10x 2006-07-13 12:13:23 +00:00
parent 06a9243705
commit ef6e2efe66
9 changed files with 459 additions and 449 deletions

View File

@ -64,7 +64,7 @@ Assembler Tool Chain
GNU binutils 2.16.1 or later GNU binutils 2.16.1 or later
Java Development Kit ( Java 5.0 or later) Java Development Kit ( Java 5.0 or later)
Sun* jdk-1.5.0_04 or later (http://java.sun.com) Sun* jdk-1.5.0_06 or later (http://java.sun.com)
or or
Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com) Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com)

View File

@ -1637,7 +1637,7 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
jMenuItemProjectUpdateFar.setMnemonic('U'); jMenuItemProjectUpdateFar.setMnemonic('U');
jMenuItemProjectUpdateFar.setEnabled(true); jMenuItemProjectUpdateFar.setEnabled(true);
jMenuItemProjectUpdateFar.addActionListener(this); jMenuItemProjectUpdateFar.addActionListener(this);
jMenuItemProjectUpdateFar.setVisible(false); jMenuItemProjectUpdateFar.setVisible(true);
} }
return jMenuItemProjectUpdateFar; return jMenuItemProjectUpdateFar;
} }

View File

@ -86,5 +86,4 @@ public class DistributeRule {
} }
return set; return set;
} }
} }

View File

@ -63,9 +63,8 @@ public class Far {
this.mainfest = new Mainfest(getMainfestFile()); this.mainfest = new Mainfest(getMainfestFile());
} }
public void creatFar (List<PackageIdentification> pkgList, public void creatFar(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,
List<PlatformIdentification> plfList, Set<String> fileFilter, Set<String> fileFilter, FarHeader fHeader) throws Exception {
FarHeader fHeader) throws Exception{
jos = new JarOutputStream(new FileOutputStream(jarFile)); jos = new JarOutputStream(new FileOutputStream(jarFile));
// //
@ -95,14 +94,18 @@ public class Far {
jos.close(); jos.close();
} }
private void writeToJar(File file, JarOutputStream jos) throws Exception{ private void writeToJar(File file, JarOutputStream jos) throws Exception {
byte[] buffer = new byte[(int)file.length()]; byte[] buffer = new byte[(int) file.length()];
FileInputStream fInput = new FileInputStream(file); FileInputStream fInput = new FileInputStream(file);
JarEntry entry = new JarEntry(Tools.convertPathToUnixType(Tools.getRelativePath(file.getPath(),Workspace.getCurrentWorkspace()))); JarEntry entry = new JarEntry(
jos.putNextEntry(entry); Tools
fInput.read(buffer); .convertPathToUnixType(Tools
jos.write(buffer); .getRelativePath(file.getPath(),
fInput.close(); Workspace.getCurrentWorkspace())));
jos.putNextEntry(entry);
fInput.read(buffer);
jos.write(buffer);
fInput.close();
} }
public void InstallFar(String dir) throws Exception { public void InstallFar(String dir) throws Exception {
@ -110,7 +113,8 @@ public class Far {
extract(allFile, dir); extract(allFile, dir);
} }
public void InstallFar (Map<PlatformIdentification, File> plfMap, Map<PackageIdentification, File> pkgMap) throws Exception{ public void InstallFar(Map<PlatformIdentification, File> plfMap, Map<PackageIdentification, File> pkgMap)
throws Exception {
Set<PlatformIdentification> plfKeys = plfMap.keySet(); Set<PlatformIdentification> plfKeys = plfMap.keySet();
Iterator<PlatformIdentification> plfIter = plfKeys.iterator(); Iterator<PlatformIdentification> plfIter = plfKeys.iterator();
while (plfIter.hasNext()) { while (plfIter.hasNext()) {
@ -149,38 +153,39 @@ public class Far {
public boolean hibernateToFile() { public boolean hibernateToFile() {
return true; return true;
} }
// public static void main(String[] args){
// try { // public static void main(String[] args){
// JarFile jarFile = new JarFile(new File("C:\\cvswork\\newEdk\\jar.jar.far")); // try {
// JarEntry je= jarFile.getJarEntry("MdePkg/MdePkg.spd"); // JarFile jarFile = new JarFile(new File("C:\\cvswork\\newEdk\\jar.jar.far"));
// InputStream is = jarFile.getInputStream(je); // JarEntry je= jarFile.getJarEntry("MdePkg/MdePkg.spd");
// byte[] buffer = new byte[1]; // InputStream is = jarFile.getInputStream(je);
// File tempFile = new File("C:\\cvswork\\newEdk\\tempFile"); // byte[] buffer = new byte[1];
// File tfile2 = new File("C:\\cvswork\\newEdk\\tempFile1"); // File tempFile = new File("C:\\cvswork\\newEdk\\tempFile");
// FileOutputStream fos1 = new FileOutputStream(tfile2); // File tfile2 = new File("C:\\cvswork\\newEdk\\tempFile1");
// FileOutputStream fos = new FileOutputStream(tempFile); // FileOutputStream fos1 = new FileOutputStream(tfile2);
// int size = is.read(buffer); // FileOutputStream fos = new FileOutputStream(tempFile);
// int totoalSize = size; // int size = is.read(buffer);
// while ( size >= 0) { // int totoalSize = size;
// fos.write(buffer); // while ( size >= 0) {
// size = is.read(buffer); // fos.write(buffer);
// totoalSize = totoalSize + size; // size = is.read(buffer);
// } // totoalSize = totoalSize + size;
// // }
// //
//// is = jarFile.getInputStream(je); //
//// is.read(totalbuffer); //// is = jarFile.getInputStream(je);
//// fos.write(totalbuffer); //// is.read(totalbuffer);
// fos.close(); //// fos.write(totalbuffer);
// byte[] totalbuffer = new byte[(int)tempFile.length()]; // fos.close();
// FileInputStream fis = new FileInputStream(tempFile); // byte[] totalbuffer = new byte[(int)tempFile.length()];
// fis.read(totalbuffer); // FileInputStream fis = new FileInputStream(tempFile);
// fos1.write(totalbuffer); // fis.read(totalbuffer);
// fos1.close(); // fos1.write(totalbuffer);
// }catch(Exception e){ // fos1.close();
// // }catch(Exception e){
// } //
// } // }
// }
public void extract(List<FarFileItem> allFile, String dir) throws Exception { public void extract(List<FarFileItem> allFile, String dir) throws Exception {
@ -191,7 +196,7 @@ public class Far {
dir += File.separatorChar; dir += File.separatorChar;
while (filesItem.hasNext()) { while (filesItem.hasNext()) {
try { try {
ffItem = (FarFileItem)filesItem.next(); ffItem = (FarFileItem) filesItem.next();
je = jf.getJarEntry(Tools.convertPathToUnixType(ffItem.getDefaultPath())); je = jf.getJarEntry(Tools.convertPathToUnixType(ffItem.getDefaultPath()));
InputStream entryStream = jf.getInputStream(je); InputStream entryStream = jf.getInputStream(je);
File file = new File(dir + ffItem.getRelativeFilename()); File file = new File(dir + ffItem.getRelativeFilename());
@ -203,7 +208,6 @@ public class Far {
// //
FileOutputStream outputStream = new FileOutputStream(file); FileOutputStream outputStream = new FileOutputStream(file);
try { try {
// //
// Read the entry data and write it to the output // Read the entry data and write it to the output
@ -213,13 +217,13 @@ public class Far {
File tempFile = new File("tempFile"); File tempFile = new File("tempFile");
FileOutputStream fos = new FileOutputStream(tempFile); FileOutputStream fos = new FileOutputStream(tempFile);
int size = entryStream.read(buffer); int size = entryStream.read(buffer);
while ( size >= 0) { while (size >= 0) {
fos.write(buffer); fos.write(buffer);
size = entryStream.read(buffer); size = entryStream.read(buffer);
} }
fos.close(); fos.close();
byte[] totalBuffer = new byte[(int)tempFile.length()]; byte[] totalBuffer = new byte[(int) tempFile.length()];
FileInputStream fis = new FileInputStream(tempFile); FileInputStream fis = new FileInputStream(tempFile);
fis.read(totalBuffer); fis.read(totalBuffer);
outputStream.write(totalBuffer); outputStream.write(totalBuffer);
@ -236,10 +240,9 @@ public class Far {
} }
} }
} }
public void addFileToFar(File file, JarOutputStream farOuputStream, String workDir) {
public void addFileToFar (File file, JarOutputStream farOuputStream, String workDir){
} }
@ -254,6 +257,9 @@ public class Far {
List<PackageIdentification> result = new ArrayList<PackageIdentification>(); List<PackageIdentification> result = new ArrayList<PackageIdentification>();
entry = this.mainfest.getPackgeSpd(pkgId); entry = this.mainfest.getPackgeSpd(pkgId);
if (entry == null) {
return result;
}
if (entry[0] != null) { if (entry[0] != null) {
try { try {
JarEntry je; JarEntry je;

View File

@ -14,7 +14,6 @@
**/ **/
package org.tianocore.frameworkwizard.far; package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.util.List; import java.util.List;
import org.tianocore.frameworkwizard.packaging.PackageIdentification; import org.tianocore.frameworkwizard.packaging.PackageIdentification;
@ -84,8 +83,8 @@ public class FarPackage {
} }
public boolean isIdentityPkg(PackageIdentification pkgId) { public boolean isIdentityPkg(PackageIdentification pkgId) {
File file = new File(farFile.getRelativeFilename()); //File file = new File(farFile.getRelativeFilename());
if (pkgId.getName() == file.getName() && pkgId.getGuid() == guidValue && pkgId.getVersion() == version) { if (pkgId.getGuid().equalsIgnoreCase(guidValue) && pkgId.getVersion().equalsIgnoreCase(version)) {
return true; return true;
} }
return false; return false;

View File

@ -57,6 +57,7 @@ public class Mainfest implements ManifestInterface {
// / Mainfest file element name // / Mainfest file element name
// / // /
final static String mfFileName = "FarMainfest.MF"; final static String mfFileName = "FarMainfest.MF";
// //
// Header // Header
// //
@ -131,7 +132,7 @@ public class Mainfest implements ManifestInterface {
File mfFile = null; File mfFile = null;
public FarHeader getHeader() { public FarHeader getHeader() {
return fhInfo; return fhInfo;
} }
public Mainfest() throws Exception { public Mainfest() throws Exception {
@ -163,8 +164,8 @@ public class Mainfest implements ManifestInterface {
this.fhInfo = fHeader; this.fhInfo = fHeader;
} }
public void createManifest(List<PackageIdentification> pkgList, public void createManifest(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,
List<PlatformIdentification> plfList, Set<String> fileFilter) throws Exception { Set<String> fileFilter) throws Exception {
// //
// Add Package and it's contents to FarPackageList. // Add Package and it's contents to FarPackageList.
@ -259,23 +260,22 @@ public class Mainfest implements ManifestInterface {
farPackage.setContentList(contents); farPackage.setContentList(contents);
// List<FarPlatformItem> fpfList = new ArrayList<FarPlatformItem>(); // List<FarPlatformItem> fpfList = new ArrayList<FarPlatformItem>();
// //
// iter = fpdFileSet.iterator(); // iter = fpdFileSet.iterator();
// //
// while (iter.hasNext()) { // while (iter.hasNext()) {
// File fpdFile = iter.next(); // File fpdFile = iter.next();
// PlatformIdentification platformId = new PlatformIdentification(wsTool // PlatformIdentification platformId = new PlatformIdentification(wsTool
// .getId(fpdFile.getPath(), OpenFile.openFpdFile(fpdFile // .getId(fpdFile.getPath(), OpenFile.openFpdFile(fpdFile
// .getPath()))); // .getPath())));
// addPlatformIdToFarPlatformItemList(fpfList, platformId); // addPlatformIdToFarPlatformItemList(fpfList, platformId);
// } // }
// farPackage.setFarPlatformList(fpfList); // farPackage.setFarPlatformList(fpfList);
fPkgList.add(farPackage); fPkgList.add(farPackage);
} }
private void recursiveDirectory(Set<File> files, Set<File> fpds, File dir, private void recursiveDirectory(Set<File> files, Set<File> fpds, File dir, Set<String> fileFilter) {
Set<String> fileFilter) {
if (isFilter(dir, fileFilter)) { if (isFilter(dir, fileFilter)) {
return; return;
} }
@ -285,11 +285,11 @@ public class Mainfest implements ManifestInterface {
if (isFilter(allFilesInDir[i], fileFilter)) { if (isFilter(allFilesInDir[i], fileFilter)) {
continue; continue;
} }
// if (allFilesInDir[i].getPath().toLowerCase().endsWith(".fpd")) { // if (allFilesInDir[i].getPath().toLowerCase().endsWith(".fpd")) {
// fpds.add(allFilesInDir[i]); // fpds.add(allFilesInDir[i]);
// } else { // } else {
files.add(allFilesInDir[i]); files.add(allFilesInDir[i]);
// } // }
} else { } else {
recursiveDirectory(files, fpds, allFilesInDir[i], fileFilter); recursiveDirectory(files, fpds, allFilesInDir[i], fileFilter);
} }
@ -306,7 +306,8 @@ public class Mainfest implements ManifestInterface {
// //
// Add farFileName // Add farFileName
// //
ffItem = new FarFileItem(Tools.getRelativePath(fpfFile.getPath(),Workspace.getCurrentWorkspace()), FarMd5.md5(fpfFile)); ffItem = new FarFileItem(Tools.getRelativePath(fpfFile.getPath(), Workspace.getCurrentWorkspace()),
FarMd5.md5(fpfFile));
fpfItem.setFarFile(ffItem); fpfItem.setFarFile(ffItem);
// //
@ -343,16 +344,18 @@ public class Mainfest implements ManifestInterface {
// identification. // identification.
// //
PackageIdentification pkgId = new PackageIdentification(fPkg.getFarFile().getRelativeFilename(), fPkg.getGuidValue(), fPkg.getVersion()); PackageIdentification pkgId = new PackageIdentification(fPkg.getFarFile().getRelativeFilename(),
pkgId.setPath(Workspace.getCurrentWorkspace() + File.separatorChar + fPkg.getDefaultPath() + File.separatorChar + fPkg.getFarFile().getRelativeFilename()); fPkg.getGuidValue(), fPkg.getVersion());
// wsTool.getId( pkgId.setPath(Workspace.getCurrentWorkspace() + File.separatorChar + fPkg.getDefaultPath()
// Workspace.getCurrentWorkspace() + File.separatorChar + File.separatorChar + fPkg.getFarFile().getRelativeFilename());
// + fPkg.getDefaultPath(), OpenFile // wsTool.getId(
// .openFpdFile(Workspace.getCurrentWorkspace() // Workspace.getCurrentWorkspace() + File.separatorChar
// + File.separatorChar // + fPkg.getDefaultPath(), OpenFile
// + fPkg.getDefaultPath() // .openFpdFile(Workspace.getCurrentWorkspace()
// + File.separatorChar // + File.separatorChar
// + fPkg.getFarFile().getRelativeFilename())); // + fPkg.getDefaultPath()
// + File.separatorChar
// + fPkg.getFarFile().getRelativeFilename()));
pkgList.add(pkgId); pkgList.add(pkgId);
} }
return pkgList; return pkgList;
@ -361,8 +364,7 @@ public class Mainfest implements ManifestInterface {
/** /**
* *
*/ */
public List<PlatformIdentification> getPlatformList() throws Exception, public List<PlatformIdentification> getPlatformList() throws Exception, IOException, XmlException {
IOException, XmlException {
// //
// PlatformIdentification set. // PlatformIdentification set.
// //
@ -370,21 +372,21 @@ public class Mainfest implements ManifestInterface {
Iterator plfItem = this.fPlfList.iterator(); Iterator plfItem = this.fPlfList.iterator();
while (plfItem.hasNext()) { while (plfItem.hasNext()) {
FarPlatformItem fpfItem = (FarPlatformItem) plfItem.next(); FarPlatformItem fpfItem = (FarPlatformItem) plfItem.next();
File file = new File(Workspace.getCurrentWorkspace() File file = new File(Workspace.getCurrentWorkspace() + File.separatorChar
+ File.separatorChar + fpfItem.getFarFile().getRelativeFilename());
+ fpfItem.getFarFile().getRelativeFilename());
// //
// Set platformIdentificaiton's path as absolutly path (include // Set platformIdentificaiton's path as absolutly path (include
// workspace and FPD relatively path) // workspace and FPD relatively path)
// //
PlatformIdentification plfId = new PlatformIdentification (fpfItem.getFarFile().getRelativeFilename(), fpfItem.getGuidValue(),fpfItem.getVersion(), PlatformIdentification plfId = new PlatformIdentification(fpfItem.getFarFile().getRelativeFilename(),
file.getPath()); fpfItem.getGuidValue(), fpfItem.getVersion(),
file.getPath());
// (PlatformIdentification) wsTool // (PlatformIdentification) wsTool
// .getId(file.getParent(), OpenFile.openFpdFile(Workspace // .getId(file.getParent(), OpenFile.openFpdFile(Workspace
// .getCurrentWorkspace() // .getCurrentWorkspace()
// + File.separatorChar // + File.separatorChar
// + fpfItem.getFarFile().getRelativeFilename())); // + fpfItem.getFarFile().getRelativeFilename()));
plfList.add(plfId); plfList.add(plfId);
} }
return plfList; return plfList;
@ -401,7 +403,7 @@ public class Mainfest implements ManifestInterface {
farFileItem.setDefaultPath(farFileItem.getRelativeFilename()); farFileItem.setDefaultPath(farFileItem.getRelativeFilename());
farFileItem.setRelativeFilename(Tools.getFileNameOnly(farFileItem.getRelativeFilename())); farFileItem.setRelativeFilename(Tools.getFileNameOnly(farFileItem.getRelativeFilename()));
result.add(farFileItem); result.add(farFileItem);
break ; break;
} }
} }
return result; return result;
@ -424,23 +426,22 @@ public class Mainfest implements ManifestInterface {
// //
// Add all farfiles in <FarPlatformList> to list. // Add all farfiles in <FarPlatformList> to list.
// //
// List<FarPlatformItem> plfList = pkg.getFarPlatformList(); // List<FarPlatformItem> plfList = pkg.getFarPlatformList();
// Iterator plfItem = plfList.iterator(); // Iterator plfItem = plfList.iterator();
// while (plfItem.hasNext()) { // while (plfItem.hasNext()) {
// farFileList.add(((FarPlatformItem) plfItem.next()) // farFileList.add(((FarPlatformItem) plfItem.next())
// .getFarFile()); // .getFarFile());
// } // }
Iterator<FarFileItem> ffIter = farFileList.iterator(); Iterator<FarFileItem> ffIter = farFileList.iterator();
while(ffIter.hasNext()){ while (ffIter.hasNext()) {
FarFileItem ffItem = ffIter.next(); FarFileItem ffItem = ffIter.next();
ffItem.setDefaultPath(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename()); ffItem.setDefaultPath(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename());
} }
break; break;
} }
} }
return farFileList; return farFileList;
} }
@ -449,14 +450,14 @@ public class Mainfest implements ManifestInterface {
* @param pkgId * @param pkgId
* @return String: return string represent jar file entry; * @return String: return string represent jar file entry;
*/ */
public String[] getPackgeSpd(PackageIdentification pkgId){ public String[] getPackgeSpd(PackageIdentification pkgId) {
Iterator pkgItem = this.fPkgList.iterator(); Iterator pkgItem = this.fPkgList.iterator();
String[] entryStr = new String[2]; String[] entryStr = new String[2];
while (pkgItem.hasNext()) { while (pkgItem.hasNext()) {
FarPackage pkg = (FarPackage) pkgItem.next(); FarPackage pkg = (FarPackage) pkgItem.next();
if (pkg.isIdentityPkg(pkgId)) { if (pkg.isIdentityPkg(pkgId)) {
entryStr[0] = pkg.getFarFile().getRelativeFilename(); entryStr[0] = pkg.getFarFile().getRelativeFilename();
entryStr[1] = pkg.getDefaultPath() ; entryStr[1] = pkg.getDefaultPath();
return entryStr; return entryStr;
} }
} }
@ -482,18 +483,16 @@ public class Mainfest implements ManifestInterface {
// //
// Set farFileItem relativeFileName = absolutePath + file Name. // Set farFileItem relativeFileName = absolutePath + file Name.
// //
farFileList.add(new FarFileItem(pkg.getDefaultPath() farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename(),
+ File.separatorChar + ffItem.getRelativeFilename(), ffItem ffItem.getMd5Value()));
.getMd5Value()));
// //
// Add all files in contents to list. // Add all files in contents to list.
// //
Iterator contentsItem = pkg.getContentList().iterator(); Iterator contentsItem = pkg.getContentList().iterator();
while (contentsItem.hasNext()) { while (contentsItem.hasNext()) {
ffItem = (FarFileItem) contentsItem.next(); ffItem = (FarFileItem) contentsItem.next();
farFileList.add(new FarFileItem(pkg.getDefaultPath() farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separator + ffItem.getRelativeFilename(),
+ File.separator + ffItem.getRelativeFilename(), ffItem ffItem.getMd5Value()));
.getMd5Value()));
} }
// //
// Add all farfiles in <FarPlatformList> to list. // Add all farfiles in <FarPlatformList> to list.
@ -502,9 +501,8 @@ public class Mainfest implements ManifestInterface {
Iterator plfItem = plfList.iterator(); Iterator plfItem = plfList.iterator();
while (plfItem.hasNext()) { while (plfItem.hasNext()) {
ffItem = ((FarPlatformItem) plfItem.next()).getFarFile(); ffItem = ((FarPlatformItem) plfItem.next()).getFarFile();
farFileList.add(new FarFileItem(pkg.getDefaultPath() farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separator + ffItem.getRelativeFilename(),
+ File.separator + ffItem.getRelativeFilename(), ffItem ffItem.getMd5Value()));
.getMd5Value()));
} }
} }
return farFileList; return farFileList;
@ -521,27 +519,27 @@ public class Mainfest implements ManifestInterface {
return null; return null;
} }
// public void setPackageInstallPath(PackageIdentification packageId, String path) { // public void setPackageInstallPath(PackageIdentification packageId, String path) {
// Iterator<FarPackage> pkgItr = this.fPkgList.iterator(); // Iterator<FarPackage> pkgItr = this.fPkgList.iterator();
// while (pkgItr.hasNext()) { // while (pkgItr.hasNext()) {
// FarPackage farPackage = pkgItr.next(); // FarPackage farPackage = pkgItr.next();
// if (farPackage.isIdentityPkg(packageId)) { // if (farPackage.isIdentityPkg(packageId)) {
// farPackage.setDefaultPath(path); // farPackage.setDefaultPath(path);
// return ; // return ;
// } // }
// } // }
// } // }
// //
// public void setPlatformInstallPath(PlatformIdentification platformId, String path) { // public void setPlatformInstallPath(PlatformIdentification platformId, String path) {
// Iterator<FarPlatformItem> plfItr = this.fPlfList.iterator(); // Iterator<FarPlatformItem> plfItr = this.fPlfList.iterator();
// while (plfItr.hasNext()) { // while (plfItr.hasNext()) {
// FarPlatformItem farPlatform = plfItr.next(); // FarPlatformItem farPlatform = plfItr.next();
// if (farPlatform.i.isIdentity(platformId)) { // if (farPlatform.i.isIdentity(platformId)) {
// farPackage.setDefaultPath(path); // farPackage.setDefaultPath(path);
// return ; // return ;
// } // }
// } // }
// } // }
public List<FarFileItem> getAllFileItem() { public List<FarFileItem> getAllFileItem() {
// //
@ -556,8 +554,7 @@ public class Mainfest implements ManifestInterface {
// //
// Add far files in <FarPlatformList> to list // Add far files in <FarPlatformList> to list
// //
NodeList elementList = this.mainfestDoc NodeList elementList = this.mainfestDoc.getElementsByTagName(farPlatformList);
.getElementsByTagName(farPlatformList);
for (int i = 0; i < elementList.getLength(); i++) { for (int i = 0; i < elementList.getLength(); i++) {
// //
// Get <farPlatform> node list. // Get <farPlatform> node list.
@ -575,15 +572,13 @@ public class Mainfest implements ManifestInterface {
// //
// Get child node value and set to platformIdentification. // Get child node value and set to platformIdentification.
// //
if (tempNode.getNodeName().equalsIgnoreCase( if (tempNode.getNodeName().equalsIgnoreCase(farPackage_FarfileName)) {
farPackage_FarfileName)) {
NamedNodeMap farAttr = tempNode.getAttributes(); NamedNodeMap farAttr = tempNode.getAttributes();
// //
// Change relative path to absolute one // Change relative path to absolute one
// //
FarFileItem farFile = new FarFileItem(tempNode FarFileItem farFile = new FarFileItem(tempNode.getTextContent(),
.getTextContent(), farAttr.getNamedItem( farAttr.getNamedItem(farFileName_Md5sum).getTextContent());
farFileName_Md5sum).getTextContent());
ffiList.add(farFile); ffiList.add(farFile);
} }
} }
@ -596,8 +591,7 @@ public class Mainfest implements ManifestInterface {
// //
// create mainfest root node // create mainfest root node
// //
Element rootNode = this.mainfestDoc Element rootNode = this.mainfestDoc.createElement("FrameworkArchiveManifest");
.createElement("FrameworkArchiveManifest");
this.mainfestDoc.appendChild(rootNode); this.mainfestDoc.appendChild(rootNode);
// //
@ -675,8 +669,7 @@ public class Mainfest implements ManifestInterface {
// Write the DOM document to the file // Write the DOM document to the file
// //
Transformer xformer = TransformerFactory.newInstance().newTransformer(); Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
"2");
xformer.setOutputProperty(OutputKeys.INDENT, "yes"); xformer.setOutputProperty(OutputKeys.INDENT, "yes");
// //
@ -687,8 +680,7 @@ public class Mainfest implements ManifestInterface {
// Prepare the output file, get the Mainifest file name from <FarHeader> // Prepare the output file, get the Mainifest file name from <FarHeader>
// /<FarName>. // /<FarName>.
// //
this.mfFile = new File(Workspace.getCurrentWorkspace() this.mfFile = new File(Workspace.getCurrentWorkspace() + File.separatorChar + mfFileName);
+ File.separatorChar + mfFileName);
// //
// generate all directory path // generate all directory path
// //
@ -697,8 +689,7 @@ public class Mainfest implements ManifestInterface {
} }
public void pkgToFarPkgNode(Element parentNode, FarPackage pkgItem) { public void pkgToFarPkgNode(Element parentNode, FarPackage pkgItem) {
Element pkgNode = this.mainfestDoc Element pkgNode = this.mainfestDoc.createElement(farPackageList_FarPackage);
.createElement(farPackageList_FarPackage);
// //
// Add <FarFileName> // Add <FarFileName>
// //
@ -714,8 +705,7 @@ public class Mainfest implements ManifestInterface {
// //
// Add <DefaultPath> // Add <DefaultPath>
// //
setStrItemToNode(pkgNode, pkgItem.getDefaultPath(), setStrItemToNode(pkgNode, pkgItem.getDefaultPath(), farPackage_DefaultPath);
farPackage_DefaultPath);
// //
// Add <Contents> // Add <Contents>
@ -730,8 +720,7 @@ public class Mainfest implements ManifestInterface {
} }
public void PlfToPlatformNode(Element parentNode, FarPlatformItem fplItem) { public void PlfToPlatformNode(Element parentNode, FarPlatformItem fplItem) {
Element fplNode = this.mainfestDoc Element fplNode = this.mainfestDoc.createElement(farPlatformList_FarPlatform);
.createElement(farPlatformList_FarPlatform);
// //
// Add <FarFileName> // Add <FarFileName>
// //
@ -752,8 +741,7 @@ public class Mainfest implements ManifestInterface {
} }
public void ffiToFfNode(Element parentNode, FarFileItem ffi) { public void ffiToFfNode(Element parentNode, FarFileItem ffi) {
Element farFileName = this.mainfestDoc Element farFileName = this.mainfestDoc.createElement(farPackage_FarfileName);
.createElement(farPackage_FarfileName);
farFileName.setTextContent(ffi.getRelativeFilename()); farFileName.setTextContent(ffi.getRelativeFilename());
System.out.println(farFileName.getTextContent()); System.out.println(farFileName.getTextContent());
System.out.println(ffi.getRelativeFilename()); System.out.println(ffi.getRelativeFilename());
@ -761,8 +749,7 @@ public class Mainfest implements ManifestInterface {
parentNode.appendChild(farFileName); parentNode.appendChild(farFileName);
} }
public void setStrItemToNode(Element parentNode, String strValue, public void setStrItemToNode(Element parentNode, String strValue, String strName) {
String strName) {
Element node = this.mainfestDoc.createElement(strName); Element node = this.mainfestDoc.createElement(strName);
node.setTextContent(strValue); node.setTextContent(strValue);
parentNode.appendChild(node); parentNode.appendChild(node);
@ -804,13 +791,13 @@ public class Mainfest implements ManifestInterface {
} else { } else {
return; return;
} }
NodeList childList = headerNode.getChildNodes(); NodeList childList = headerNode.getChildNodes();
Node node = null; Node node = null;
String nodeName = null; String nodeName = null;
for (int i = 0; i < childList.getLength(); i++) { for (int i = 0; i < childList.getLength(); i++) {
node = childList.item(i); node = childList.item(i);
nodeName = node.getNodeName(); nodeName = node.getNodeName();
if (nodeName.equalsIgnoreCase(farHeader_FarName)) { if (nodeName.equalsIgnoreCase(farHeader_FarName)) {
String nodeValue = node.getTextContent(); String nodeValue = node.getTextContent();
this.fhInfo.setFarName(nodeValue); this.fhInfo.setFarName(nodeValue);
} else if (nodeName.equalsIgnoreCase(guidValue)) { } else if (nodeName.equalsIgnoreCase(guidValue)) {
@ -844,7 +831,7 @@ public class Mainfest implements ManifestInterface {
} }
NodeList fpnList = farPkgNode.getChildNodes(); NodeList fpnList = farPkgNode.getChildNodes();
for (int i = 0; i < fpnList.getLength(); i++) { for (int i = 0; i < fpnList.getLength(); i++) {
if (fpnList.item(i).getNodeType()== Node.TEXT_NODE){ if (fpnList.item(i).getNodeType() == Node.TEXT_NODE) {
continue; continue;
} }
FarPackage fpItem = new FarPackage(); FarPackage fpItem = new FarPackage();
@ -885,15 +872,14 @@ public class Mainfest implements ManifestInterface {
* @param fpfListNode * @param fpfListNode
* @param plfList * @param plfList
*/ */
public void parseFarPlatformList(Node fpfListNode, public void parseFarPlatformList(Node fpfListNode, List<FarPlatformItem> plfList) {
List<FarPlatformItem> plfList) {
// //
// Get <FarPlatform> list. // Get <FarPlatform> list.
// //
NodeList child = fpfListNode.getChildNodes(); NodeList child = fpfListNode.getChildNodes();
Node farPlfNode; Node farPlfNode;
for (int i = 0; i < child.getLength(); i++) { for (int i = 0; i < child.getLength(); i++) {
if (child.item(i).getNodeType()== Node.TEXT_NODE){ if (child.item(i).getNodeType() == Node.TEXT_NODE) {
continue; continue;
} }
farPlfNode = child.item(i); farPlfNode = child.item(i);
@ -936,7 +922,7 @@ public class Mainfest implements ManifestInterface {
NodeList contentList = contentsNode.getChildNodes(); NodeList contentList = contentsNode.getChildNodes();
Node contentNode; Node contentNode;
for (int i = 0; i < contentList.getLength(); i++) { for (int i = 0; i < contentList.getLength(); i++) {
if (contentList.item(i).getNodeType()== Node.TEXT_NODE){ if (contentList.item(i).getNodeType() == Node.TEXT_NODE) {
continue; continue;
} }
contentNode = contentList.item(i); contentNode = contentList.item(i);
@ -950,21 +936,20 @@ public class Mainfest implements ManifestInterface {
public FarFileItem parseFarFile(Node farFileNode) { public FarFileItem parseFarFile(Node farFileNode) {
String ffName = farFileNode.getTextContent(); String ffName = farFileNode.getTextContent();
NamedNodeMap attr = farFileNode.getAttributes(); NamedNodeMap attr = farFileNode.getAttributes();
FarFileItem ffItem = new FarFileItem(ffName, attr.getNamedItem( FarFileItem ffItem = new FarFileItem(ffName, attr.getNamedItem(farFileName_Md5sum).getTextContent());
farFileName_Md5sum).getTextContent());
return ffItem; return ffItem;
} }
public boolean isFilter(File file, Set<String> fileter) { public boolean isFilter(File file, Set<String> fileter) {
Iterator<String> iter = fileter.iterator(); Iterator<String> iter = fileter.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
Pattern pattern = Pattern.compile(iter.next()); Pattern pattern = Pattern.compile(iter.next());
Matcher matcher = pattern.matcher(file.getName()); Matcher matcher = pattern.matcher(file.getName());
if(matcher.find()) { if (matcher.find()) {
return true; return true;
}
} }
}
return false; return false;
} }

View File

@ -324,6 +324,15 @@ public class InstallStepTwo extends IDialog implements MouseListener {
this.setVisible(false); this.setVisible(false);
this.dispose(); this.dispose();
} else if (e.getSource() == jButtonFinish) { } else if (e.getSource() == jButtonFinish) {
if (jTablePackage.isEditing()) {
jTablePackage.getCellEditor().stopCellEditing();
}
if (jTablePlatform.isEditing()) {
jTablePlatform.getCellEditor().stopCellEditing();
}
List<String> packageList = new ArrayList<String>(); List<String> packageList = new ArrayList<String>();
List<String> platformList = new ArrayList<String>(); List<String> platformList = new ArrayList<String>();
// //
@ -419,11 +428,17 @@ public class InstallStepTwo extends IDialog implements MouseListener {
} }
private boolean isPathContainMutual(File path1, File path2) { private boolean isPathContainMutual(File path1, File path2) {
if (path1.getPath().startsWith(path2.getParent())) { String s1 = Tools.addFileSeparator(path1.getPath());
return true; String s2 = Tools.addFileSeparator(path2.getParent());
}
if (path2.getPath().startsWith(path1.getPath())) { if (s1.length() > s2.length()) {
return true; if (s1.substring(0, s2.length()).equalsIgnoreCase(s2)) {
return true;
}
} else {
if (s2.substring(0, s1.length()).equalsIgnoreCase(s1)) {
return true;
}
} }
return false; return false;
} }

View File

@ -134,7 +134,7 @@ public class UpdateStepOne extends IDialog implements MouseListener {
private JTextField getJTextFieldFarFile() { private JTextField getJTextFieldFarFile() {
if (jTextFieldFarFile == null) { if (jTextFieldFarFile == null) {
jTextFieldFarFile = new JTextField(); jTextFieldFarFile = new JTextField();
jTextFieldFarFile.setBounds(new java.awt.Rectangle(130,80,436,20)); jTextFieldFarFile.setBounds(new java.awt.Rectangle(130, 80, 436, 20));
} }
return jTextFieldFarFile; return jTextFieldFarFile;
} }
@ -179,6 +179,7 @@ public class UpdateStepOne extends IDialog implements MouseListener {
WorkspaceTools wt = new WorkspaceTools(); WorkspaceTools wt = new WorkspaceTools();
farVector = wt.getAllFars(); farVector = wt.getAllFars();
jListFarFromDb.setListData(farVector); jListFarFromDb.setListData(farVector);
jListFarFromDb.setSelectionMode(0);
} }
return jListFarFromDb; return jListFarFromDb;
} }
@ -215,7 +216,7 @@ public class UpdateStepOne extends IDialog implements MouseListener {
jLabel1.setBounds(new java.awt.Rectangle(30, 110, 355, 18)); jLabel1.setBounds(new java.awt.Rectangle(30, 110, 355, 18));
jLabel1.setText("Choose FAR from current framework database"); jLabel1.setText("Choose FAR from current framework database");
jLabel = new JLabel(); jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30,80,97,20)); jLabel.setBounds(new java.awt.Rectangle(30, 80, 97, 20));
jLabel.setText("Choose FAR file: "); jLabel.setText("Choose FAR file: ");
jContentPane = new JPanel(); jContentPane = new JPanel();
jContentPane.setLayout(null); jContentPane.setLayout(null);
@ -231,51 +232,48 @@ public class UpdateStepOne extends IDialog implements MouseListener {
return jContentPane; return jContentPane;
} }
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) { if (e.getSource() == jButtonCancel) {
this.setVisible(false); this.setVisible(false);
} } else if (e.getSource() == jButtonNext) {
else if (e.getSource() == jButtonNext) { //
// // Judge if FAR file is existed
// Judge if FAR file is existed //
// farFile = new File(jTextFieldFarFile.getText());
farFile = new File(jTextFieldFarFile.getText()); if (!farFile.exists() || !farFile.isFile()) {
if ( ! farFile.exists() || ! farFile.isFile()) { Log.err("Please choose a FAR file already exists. ");
Log.err("Please choose a FAR file already exists. "); return;
return ; }
}
// //
// Judge FAR is valid // Judge FAR is valid
// //
try{ try {
JarFile file = new JarFile(farFile); JarFile file = new JarFile(farFile);
this.far = new Far(file); this.far = new Far(file);
} catch (Exception ex){ } catch (Exception ex) {
Log.err(ex.getMessage()); Log.err(ex.getMessage());
} }
//
// Add more logic process here
//
if (jListFarFromDb.getSelectedValue() == null) {
Log.err("Please choose a FAR from framework database. ");
return;
}
// if (stepTwo == null) {
// Add more logic process here
//
if (jListFarFromDb.getSelectedValue() == null) {
Log.err("Please choose a FAR from framework database. ");
return ;
}
if (stepTwo == null) {
stepTwo = new UpdateStepTwo(this, true, this); stepTwo = new UpdateStepTwo(this, true, this);
} }
this.setVisible(false); this.setVisible(false);
stepTwo.prepareTable(); stepTwo.prepareTable();
stepTwo.setVisible(true); stepTwo.setVisible(true);
} } else if (e.getSource() == jButtonBrowser) {
else if (e.getSource() == jButtonBrowser) { JFileChooser fc = new JFileChooser();
JFileChooser fc = new JFileChooser(); fc.setAcceptAllFileFilterUsed(false);
fc.setAcceptAllFileFilterUsed(false); fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));
fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT)); fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));
fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));
int result = fc.showSaveDialog(new JPanel()); int result = fc.showSaveDialog(new JPanel());
if (result == JFileChooser.APPROVE_OPTION) { if (result == JFileChooser.APPROVE_OPTION) {

View File

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