1. Support to Create/Update/Delete/Install far file

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@950 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
wuyizhong 2006-07-13 05:37:22 +00:00
parent 3fc9d866c4
commit 5a24e806b0
34 changed files with 6116 additions and 21 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -64,6 +64,10 @@ import org.tianocore.frameworkwizard.common.ui.IDefaultMutableTreeNode;
import org.tianocore.frameworkwizard.common.ui.IDesktopManager;
import org.tianocore.frameworkwizard.common.ui.IFrame;
import org.tianocore.frameworkwizard.common.ui.ITree;
import org.tianocore.frameworkwizard.far.createui.CreateStepOne;
import org.tianocore.frameworkwizard.far.deleteui.DeleteStepOne;
import org.tianocore.frameworkwizard.far.installui.InstallStepOne;
import org.tianocore.frameworkwizard.far.updateui.UpdateStepOne;
import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;
import org.tianocore.frameworkwizard.module.ui.ModuleBootModes;
import org.tianocore.frameworkwizard.module.ui.ModuleDataHubs;
@ -1786,19 +1790,39 @@ public class FrameworkWizardUI extends IFrame implements MouseListener, TreeSele
}
if (arg0.getSource() == jMenuItemProjectCreateFar) {
CreateStepOne cso = new CreateStepOne(this, true);
int result = cso.showDialog();
if (result == DataType.RETURN_TYPE_OK) {
this.closeAll();
}
cso.dispose();
}
if (arg0.getSource() == jMenuItemProjectInstallFar) {
this.closeAll();
InstallStepOne iso = new InstallStepOne(this, true);
int result = iso.showDialog();
if (result == DataType.RETURN_TYPE_OK) {
this.closeAll();
}
iso.dispose();
}
if (arg0.getSource() == jMenuItemProjectRemoveFar) {
this.closeAll();
DeleteStepOne dso = new DeleteStepOne(this, true);
int result = dso.showDialog();
if (result == DataType.RETURN_TYPE_OK) {
this.closeAll();
}
dso.dispose();
}
if (arg0.getSource() == jMenuItemProjectUpdateFar) {
this.closeAll();
UpdateStepOne uso = new UpdateStepOne(this, true);
int result = uso.showDialog();
if (result == DataType.RETURN_TYPE_OK) {
this.closeAll();
}
uso.dispose();
}
if (arg0.getSource() == jMenuItemToolsClone) {

View File

@ -52,6 +52,9 @@ public class DataType {
public static final int RETURN_TYPE_TEXT = 16;
public static final int RETURN_TYPE_FAR_SURFACE_AREA = 17;
//
// Define all used final variables
//
@ -107,6 +110,11 @@ public class DataType {
public static final String TEXT_FILE_EXT_DESCRIPTION = TEXT_FILE + " (*." + TEXT_FILE_EXT + ")";
public static final String FAR_SURFACE_AREA = "Framework Archive";
public static final String FAR_SURFACE_AREA_EXT = "far";
public static final String FAR_SURFACE_AREA_EXT_DESCRIPTION = FAR_SURFACE_AREA + " (*." + FAR_SURFACE_AREA_EXT + ")";
//
// Define file separator for current OS
//

View File

@ -83,6 +83,8 @@ public class IFileFilter extends FileFilter {
return DataType.PLATFORM_SURFACE_AREA_EXT_DESCRIPTION;
if (strExt.equals(DataType.TEXT_FILE_EXT))
return DataType.TEXT_FILE_EXT_DESCRIPTION;
if (strExt.equals(DataType.FAR_SURFACE_AREA_EXT))
return DataType.FAR_SURFACE_AREA_EXT_DESCRIPTION;
return "";
}

View File

@ -46,18 +46,39 @@ public class Identification {
}
public boolean equals(Object obj) {
if (obj instanceof Identification) {
Identification id = (Identification)obj;
if (path.equals(id.path)) {
//if ( name.equals(id.name) && guid.equals(id.guid) && version.equals(id.version)) {
return true;
}
return false;
}
else {
return super.equals(obj);
}
}
if (obj instanceof Identification) {
Identification id = (Identification)obj;
if (path.equals(id.path)) {
//if ( name.equals(id.name) && guid.equals(id.guid) && version.equals(id.version)) {
return true;
}
return false;
}
else {
return super.equals(obj);
}
}
public boolean equalsWithGuid(Object obj) {
if (obj instanceof Identification) {
Identification id = (Identification)obj;
if ( guid.equalsIgnoreCase(id.guid)) {
if (version == null || id.version == null) {
return true;
}
else if (version.trim().equalsIgnoreCase("") || id.version.trim().equalsIgnoreCase("")){
return true;
}
else if (version.equalsIgnoreCase(id.version)) {
return true;
}
}
return false;
}
else {
return super.equals(obj);
}
}
public void setName(String name) {
this.name = name;
@ -90,4 +111,8 @@ public class Identification {
public String getPath() {
return path;
}
public int hashCode(){
return guid.toLowerCase().hashCode();
}
}

View File

@ -304,6 +304,9 @@ public class Tools {
if (type == DataType.RETURN_TYPE_TEXT) {
match = DataType.FILE_EXT_SEPARATOR + DataType.TEXT_FILE_EXT;
}
if (type == DataType.RETURN_TYPE_FAR_SURFACE_AREA) {
match = DataType.FILE_EXT_SEPARATOR + DataType.FAR_SURFACE_AREA_EXT;
}
if (path.length() <= match.length()) {
path = path + match;
return path;

View File

@ -0,0 +1,86 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
public class AggregationOperation {
public static synchronized List<PackageIdentification> union(List<PackageIdentification> list1,
List<PackageIdentification> list2) {
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
result.addAll(list1);
Iterator<PackageIdentification> iter = list2.iterator();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
if (!belongs(item, result)) {
result.add(item);
}
}
return result;
}
public static synchronized List<PackageIdentification> intersection(List<PackageIdentification> list1,
List<PackageIdentification> list2) {
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
Iterator<PackageIdentification> iter = list1.iterator();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
if (belongs(item, list2)) {
result.add(item);
}
}
return result;
}
public static synchronized List<PackageIdentification> minus(List<PackageIdentification> list1,
List<PackageIdentification> list2) {
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
Iterator<PackageIdentification> iter = list1.iterator();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
if (!belongs(item, list2)) {
result.add(item);
}
}
return result;
}
public static synchronized boolean belongs(PackageIdentification o, List<PackageIdentification> list) {
Iterator<PackageIdentification> iter = list.iterator();
while (iter.hasNext()) {
if (iter.next().equalsWithGuid(o)) {
return true;
}
}
return false;
}
public static synchronized List<PackageIdentification> getExistedItems(PackageIdentification o,
List<PackageIdentification> list) {
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
Iterator<PackageIdentification> iter = list.iterator();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
if (item.equalsWithGuid(o)) {
result.add(item);
}
}
return result;
}
}

View File

@ -0,0 +1,99 @@
/** @file
The file is used to distribute Far
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
public class DistributeRule {
static PackageQuery pkgQ = new PackageQuery();
static WorkspaceTools wsTools = new WorkspaceTools();
static List<PackageIdentification> farPkgList = new ArrayList<PackageIdentification>();
public static List<PackageIdentification> installFarCheck(Far far) {
Far myFar = far;
List<PackageIdentification> pkgDepList = new ArrayList<PackageIdentification>();
List<PackageIdentification> dbPkgList = new ArrayList<PackageIdentification>();
List<PackageIdentification> depResultList = new ArrayList<PackageIdentification>();
//
// Get Far packages list;
//
try {
farPkgList = myFar.mainfest.getPackageList();
Iterator pkgItems = farPkgList.iterator();
while (pkgItems.hasNext()) {
PackageIdentification id = (PackageIdentification) pkgItems.next();
pkgDepList = myFar.getPackageDependencies(id);
depResultList = AggregationOperation.union(depResultList, pkgDepList);
}
dbPkgList = vectorToList(wsTools.getAllPackages());
} catch (Exception e) {
System.out.println(e.getMessage());
}
//
// Check does the dependence meet the requirement.
//
List<PackageIdentification> resultList = AggregationOperation.minus(depResultList,
AggregationOperation.union(farPkgList,
dbPkgList));
//
// If dependencies don't meet, print the error message and return.
//
// if (resultList != null || resultList.size()> 0){
// Iterator resItem = resultList.iterator();
// while (resItem.hasNext()){
// System.out.println("Missing package:" + resItem.next().toString() + " !");
// }
// }
return resultList;
}
// public void installPackgCheck (PackageIdentification pkgId, String pkgPath){
// List<PackageIdentification> dbPkgList = new ArrayList<PackageIdentification>();
// dbPkgList = vectorToList(wsTools.getAllPackages());
// //
// // Install far's package one by one.
// //
// if ((AggregationOperation.getExistItems(pkgId, dbPkgList))){
//
// }
// }
public void UpdatCheck(String orgFar, String destFar) {
}
public static List<PackageIdentification> vectorToList(Vector vec) {
List<PackageIdentification> set = new ArrayList<PackageIdentification>();
Iterator vecItem = vec.iterator();
while (vecItem.hasNext()) {
set.add((PackageIdentification) vecItem.next());
}
return set;
}
}

View File

@ -0,0 +1,259 @@
/** @file
The file is used to create far file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
import org.tianocore.frameworkwizard.workspace.Workspace;
public class Far {
//
// Class member Mainfest
//
public Mainfest mainfest = null;
//
// Jar file
//
private JarFile jf = null;
private File jarFile = null;
//
// Jar outputStream.
//
static public JarOutputStream jos = null;
public Far(File jarFile) {
this.jarFile = jarFile;
}
//
// For install/updat jar
//
public Far(JarFile farFile) throws Exception {
jf = farFile;
this.mainfest = new Mainfest(getMainfestFile());
}
public void creatFar(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,
Set<String> fileFilter, FarHeader fHeader) throws Exception {
jos = new JarOutputStream(new FileOutputStream(jarFile));
//
// Generate Manifest and get file lists
//
this.mainfest = new Mainfest();
this.mainfest.setFarHeader(fHeader);
this.mainfest.createManifest(pkgList, plfList, fileFilter);
this.mainfest.hibernateToFile();
//
// Write Mainifest file to JAR.
//
if (this.mainfest.mfFile != null) {
writeToJar(this.mainfest.mfFile, jos);
}
//
// Write all files to JAR
//
Set<File> files = this.mainfest.files;
Iterator<File> iter = files.iterator();
while (iter.hasNext()) {
writeToJar(iter.next(), jos);
}
jos.close();
}
private void writeToJar(File file, JarOutputStream jos) throws Exception {
byte[] buffer = new byte[(int) file.length()];
FileInputStream fInput = new FileInputStream(file);
JarEntry entry = new JarEntry(
Tools
.convertPathToUnixType(Tools
.getRelativePath(file.getPath(),
Workspace.getCurrentWorkspace())));
jos.putNextEntry(entry);
fInput.read(buffer);
jos.write(buffer);
fInput.close();
}
public void InstallFar(String dir) throws Exception {
List<FarFileItem> allFile = mainfest.getAllFileItem();
extract(allFile, dir);
}
public void InstallFar(Map<PlatformIdentification, File> plfMap, Map<PackageIdentification, File> pkgMap)
throws Exception {
Set<PlatformIdentification> plfKeys = plfMap.keySet();
Iterator<PlatformIdentification> plfIter = plfKeys.iterator();
while (plfIter.hasNext()) {
PlatformIdentification item = plfIter.next();
extract(this.mainfest.getPlatformContents(item), plfMap.get(item).getPath());
}
Set<PackageIdentification> pkgKeys = pkgMap.keySet();
Iterator<PackageIdentification> pkgIter = pkgKeys.iterator();
while (pkgIter.hasNext()) {
PackageIdentification item = pkgIter.next();
installPackage(item, pkgMap.get(item));
}
jf.close();
}
public void installPackage(PackageIdentification packageId, File installPath) throws Exception {
List<FarFileItem> contents = this.mainfest.getPackageContents(packageId);
extract(contents, installPath.getPath());
}
public InputStream getMainfestFile() throws Exception {
JarEntry je = null;
for (Enumeration e = jf.entries(); e.hasMoreElements();) {
je = (JarEntry) e.nextElement();
if (je.getName().equalsIgnoreCase(Mainfest.mfFileName))
return jf.getInputStream(je);
}
return null;
}
public void createFar() {
}
public boolean hibernateToFile() {
return true;
}
public void extract(List<FarFileItem> allFile, String dir) throws Exception {
Iterator filesItem = allFile.iterator();
FarFileItem ffItem;
JarEntry je;
new File(dir).mkdirs();
dir += File.separatorChar;
while (filesItem.hasNext()) {
try {
ffItem = (FarFileItem) filesItem.next();
// Enumeration<JarEntry> a = jf.entries();
// while (a.hasMoreElements()) {
// System.out.println("##" + a.nextElement().getName());
// }
je = jf.getJarEntry(Tools.convertPathToUnixType(ffItem.getDefaultPath()));
InputStream entryStream = jf.getInputStream(je);
File file = new File(dir + ffItem.getRelativeFilename());
file.getParentFile().mkdirs();
try {
//
// Create the output file (clobbering the file if it
// exists).
//
FileOutputStream outputStream = new FileOutputStream(file);
try {
//
// Read the entry data and write it to the output
// file.
//
int size = entryStream.available();
byte[] buffer = new byte[size];
outputStream.write(buffer);
// if (!(FarMd5.md5(buffer)).equalsIgnoreCase(ffItem.getMd5Value())){
// throw new Exception (je.getName() + " Md5 is invalided!");
// }
// System.out.println(je.getName() + " extracted.");
} finally {
outputStream.close();
}
} finally {
entryStream.close();
}
} finally {
//jf.close();
}
}
}
// public void installFarPackage (PackageIdentification pkgId, String dir) throws Exception{
// String pkgDir = null;
// List<FarFileItem> farFileList = new ArrayList<FarFileItem>();
// farFileList = this.mainfest.getPackageContents(pkgId);
// if (dir == null){
// pkgDir = this.mainfest.getPackageDefaultPath(pkgId);
// }else {
// pkgDir = dir;
// }
// extract(farFileList,pkgDir);
// }
public void addFileToFar(File file, JarOutputStream farOuputStream, String workDir) {
}
/**
*
* @param pkgId
* @return
*/
public List<PackageIdentification> getPackageDependencies(PackageIdentification pkgId) {
String[] entry = new String[2];
PackageQuery pkgQ = new PackageQuery();
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
entry = this.mainfest.getPackgeSpd(pkgId);
if (entry[0] != null) {
try {
JarEntry je;
je = jf.getJarEntry(Tools.convertPathToUnixType(entry[1] + File.separatorChar + entry[0]));
List<String> masList = pkgQ.getPackageMsaList(jf.getInputStream(je));
Iterator item = masList.iterator();
while (item.hasNext()) {
je = jf.getJarEntry(Tools.convertPathToUnixType(entry[1] + File.separatorChar + item.next()));
List<PackageIdentification> pkgIdList = pkgQ.getModuleDependencies(jf.getInputStream(je));
Iterator pkgItem = pkgIdList.iterator();
while (pkgItem.hasNext()) {
PackageIdentification id = (PackageIdentification) pkgItem.next();
if (!AggregationOperation.belongs(id, result)) {
result.add(id);
}
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
return result;
}
}

View File

@ -0,0 +1,54 @@
/** @file
The file is used to save information of <FarFile> item.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
public class FarFileItem {
private String relativeFilename;
private String md5Value;
private String defaultPath;
public FarFileItem(String relativeFilename, String md5Value) {
this.relativeFilename = relativeFilename;
this.md5Value = md5Value;
}
public String getMd5Value() {
return md5Value;
}
public String getRelativeFilename() {
return relativeFilename;
}
public void setMd5Value(String md5Value) {
this.md5Value = md5Value;
}
public void setRelativeFilename(String relativeFilename) {
this.relativeFilename = relativeFilename;
}
public String getDefaultPath() {
return defaultPath;
}
public void setDefaultPath(String defaultPath) {
this.defaultPath = defaultPath;
}
}

View File

@ -0,0 +1,100 @@
/** @file
The file is used to save <farPackage> information.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
public class FarHeader {
//
// class member
//
private String farName;
private String guidValue;
private String version;
private String abstractStr;
private String description;
private String copyright;
private String license;
private String specification;
public String getAbstractStr() {
return abstractStr;
}
public void setAbstractStr(String abstractStr) {
this.abstractStr = abstractStr;
}
public String getCopyright() {
return copyright;
}
public void setCopyright(String copyright) {
this.copyright = copyright;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getFarName() {
return farName;
}
public void setFarName(String farName) {
this.farName = farName;
}
public String getGuidValue() {
return guidValue;
}
public void setGuidValue(String guidValue) {
this.guidValue = guidValue;
}
public String getLicense() {
return license;
}
public void setLicense(String license) {
this.license = license;
}
public String getSpecification() {
return specification;
}
public void setSpecification(String specification) {
this.specification = specification;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}

View File

@ -0,0 +1,44 @@
package org.tianocore.frameworkwizard.far;
public class FarIdentification {
private String guid;
private String md5Value;
private String path;
public FarIdentification(String guid, String md5Value, String path) {
this.guid = guid;
this.md5Value = md5Value;
this.path = path;
}
public String getGuid() {
return guid;
}
public void setGuid(String guid) {
this.guid = guid;
}
public String getMd5Value() {
return md5Value;
}
public void setMd5Value(String md5Value) {
this.md5Value = md5Value;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String toString() {
return path + " [" + guid + "]";
}
}

View File

@ -0,0 +1,21 @@
package org.tianocore.frameworkwizard.far;
import java.io.Reader;
import java.util.Map;
import java.util.Set;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
public interface FarInterface {
public Reader getManifestFile();
public void hibernateToFile();
public boolean extract(Map<PackageIdentification, String> packagePathes,
Map<PlatformIdentification, String> platformPathes);
public Set<PackageIdentification> getPackageDependencies(PackageIdentification packageId);
}

View File

@ -0,0 +1,40 @@
/** @file
The file is used to caculate file MD5 value.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.io.FileInputStream;
import java.security.MessageDigest;
public class FarMd5 {
static public String md5(File file) throws Exception {
byte[] buffer = new byte[(int) file.length()];
FileInputStream fInput = new FileInputStream(file);
fInput.read(buffer);
fInput.close();
return md5(buffer);
}
static public String md5(byte[] buffer) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5 = md.digest(buffer);
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],
md5[5], md5[6], md5[7], md5[8], md5[9], md5[10], md5[11], md5[12], md5[13],
md5[14], md5[15]));
}
}

View File

@ -0,0 +1,94 @@
/** @file
The file is used to save <farPackage> information.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.util.List;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
public class FarPackage {
//
// Class member
//
private FarFileItem farFile;
private String guidValue;
private String version;
private String defaultPath;
private List<FarPlatformItem> farPlatformList;
private List<FarFileItem> contentList;
public String getDefaultPath() {
return defaultPath;
}
public void setDefaultPath(String defaultPath) {
this.defaultPath = defaultPath;
}
public FarFileItem getFarFile() {
return farFile;
}
public void setFarFile(FarFileItem farFile) {
this.farFile = farFile;
}
public List<FarPlatformItem> getFarPlatformList() {
return farPlatformList;
}
public void setFarPlatformList(List<FarPlatformItem> farPlatformList) {
this.farPlatformList = farPlatformList;
}
public String getGuidValue() {
return guidValue;
}
public void setGuidValue(String guidValue) {
this.guidValue = guidValue;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public List<FarFileItem> getContentList() {
return this.contentList;
}
public void setContentList(List<FarFileItem> contentList) {
this.contentList = contentList;
}
public boolean isIdentityPkg(PackageIdentification pkgId) {
File file = new File(farFile.getRelativeFilename());
if (pkgId.getName() == file.getName() && pkgId.getGuid() == guidValue && pkgId.getVersion() == version) {
return true;
}
return false;
}
}

View File

@ -0,0 +1,60 @@
/** @file
The file is used to save <farPlatform> information.
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
public class FarPlatformItem {
//
// class member
//
private FarFileItem farFile;
private String guidValue;
private String version;
public FarFileItem getFarFile() {
return farFile;
}
public void setFarFile(FarFileItem farFile) {
this.farFile = farFile;
}
public String getGuidValue() {
return guidValue;
}
public void setGuidValue(String guidValue) {
this.guidValue = guidValue;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public boolean isIdentityPlf(PlatformIdentification plfId) {
if (plfId.getGuid() == guidValue && plfId.getVersion() == version) {
return true;
}
return false;
}
}

View File

@ -0,0 +1,955 @@
/** @file
The file is used to create Far's mainfest file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.xmlbeans.XmlException;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
import org.tianocore.frameworkwizard.workspace.Workspace;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Mainfest implements ManifestInterface {
// /
// / mainfest document
// /
Document mainfestDoc = null;
// /
// / Mainfest file element name
// /
final static String mfFileName = "FarMainfest.MF";
//
// Header
//
final static String farHeader = "FarHeader";
final static String farHeader_FarName = "FarName";
final static String farHeader_Abstract = "Abstract";
final static String farHeader_Description = "Description";
final static String farHeader_CopyRight = "CopyRight";
final static String farHeader_License = "Licese";
final static String farHeader_Specification = "Specification";
//
// Package list
//
final static String farPackageList = "FarPackageList";
final static String farPlatformList = "FarPlatformList";
final static String contents = "Contents";
final static String userExtensions = "UserExtensions";
//
// Common node name
//
final static String guidValue = "GuidValue";
final static String version = "Version";
//
// FarPackage node name
//
final static String farPackageList_FarPackage = "FarPackage";
final static String farPackage_FarfileName = "FarFileName";
final static String farPackage_DefaultPath = "DefaultPath";
final static String farPlatformList_FarPlatform = "FarPlatform";
final static String farFileName_FarGuid = "FarGuid";
final static String farFileName_Md5sum = "Md5sum";
//
// mainfest header information.
//
FarHeader fhInfo = new FarHeader();
//
// FarPackage list
//
List<FarPackage> fPkgList = new ArrayList<FarPackage>();
//
// FarPlatform list
//
List<FarPlatformItem> fPlfList = new ArrayList<FarPlatformItem>();
Set<File> files = new LinkedHashSet<File>();
//
// Mainfest file
//
File mfFile = null;
public FarHeader getHeader() {
return fhInfo;
}
public Mainfest() throws Exception {
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
Document document = dombuilder.newDocument();
this.mainfestDoc = document;
}
public Mainfest(InputStream mainfestInputStream) throws Exception {
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
try {
if (mainfestInputStream != null) {
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
this.mainfestDoc = dombuilder.parse(mainfestInputStream);
parseMainfest();
}
} catch (Exception e) {
//
// Will change to throw Wizader exception.
//
throw new Exception(e.getMessage());
}
}
public void setFarHeader(FarHeader fHeader) {
this.fhInfo = fHeader;
}
public void createManifest(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,
Set<String> fileFilter) throws Exception {
//
// Add Package and it's contents to FarPackageList.
//
Iterator<PackageIdentification> pkgItem = pkgList.iterator();
while (pkgItem.hasNext()) {
PackageIdentification pkgId = pkgItem.next();
//
// Add package and it's contents to <FarPackageList>.
//
addPkgToPkgList(pkgId, fileFilter);
}
//
// Add FarPlatform to this.farPlatformList.
//
Iterator<PlatformIdentification> plfItem = plfList.iterator();
while (plfItem.hasNext()) {
PlatformIdentification plfId = plfItem.next();
//
// Add platform to Mainifest.
//
addPlatformIdToFarPlatformItemList(plfId);
}
}
public void setManifestFile(File mainfestFile) throws Exception {
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
InputStream is = new FileInputStream(mainfestFile);
this.mainfestDoc = dombuilder.parse(is);
}
public void addPkgToPkgList(PackageIdentification packageId, Set<String> fileFilter) throws Exception {
files.add(packageId.getSpdFile());
FarPackage farPackage = new FarPackage();
//
// Add SPD file to FarPackage
//
File spdFile = new File(packageId.getPath());
FarFileItem ffItem = new FarFileItem(spdFile.getName(), FarMd5.md5(spdFile));
farPackage.setFarFile(ffItem);
//
// Add package guid value.
//
farPackage.setGuidValue(packageId.getGuid());
//
// Add package version
//
farPackage.setVersion(packageId.getVersion());
//
// Add DefaultPat: Package absoulte path - Workspace absolut
// path.
//
String pkgDir = Tools.getFilePathOnly(packageId.getPath());
File rootDir = new File(pkgDir);
farPackage.setDefaultPath(Tools.getRelativePath(rootDir.getPath(), Workspace.getCurrentWorkspace()));
//
// Get package root dir contains.
//
Set<File> fileSet = new LinkedHashSet<File>();
Set<File> fpdFileSet = new LinkedHashSet<File>();
//
// Get all files and fpd files
//
recursiveDirectory(fileSet, fpdFileSet, rootDir, fileFilter);
//
// Remove current package's SPD file
//
fileSet.remove(packageId.getSpdFile());
files.addAll(fileSet);
Iterator<File> iter = fileSet.iterator();
List<FarFileItem> contents = new ArrayList<FarFileItem>();
while (iter.hasNext()) {
File normalFile = iter.next();
String fileRelativePath = Tools.getRelativePath(normalFile.getPath(), pkgDir);
ffItem = new FarFileItem(fileRelativePath, FarMd5.md5(normalFile));
contents.add(ffItem);
}
farPackage.setContentList(contents);
// List<FarPlatformItem> fpfList = new ArrayList<FarPlatformItem>();
//
// iter = fpdFileSet.iterator();
//
// while (iter.hasNext()) {
// File fpdFile = iter.next();
// PlatformIdentification platformId = new PlatformIdentification(wsTool
// .getId(fpdFile.getPath(), OpenFile.openFpdFile(fpdFile
// .getPath())));
// addPlatformIdToFarPlatformItemList(fpfList, platformId);
// }
// farPackage.setFarPlatformList(fpfList);
fPkgList.add(farPackage);
}
private void recursiveDirectory(Set<File> files, Set<File> fpds, File dir, Set<String> fileFilter) {
if (isFilter(dir, fileFilter)) {
return;
}
File[] allFilesInDir = dir.listFiles();
for (int i = 0; i < allFilesInDir.length; i++) {
if (allFilesInDir[i].isFile()) {
if (isFilter(allFilesInDir[i], fileFilter)) {
continue;
}
// if (allFilesInDir[i].getPath().toLowerCase().endsWith(".fpd")) {
// fpds.add(allFilesInDir[i]);
// } else {
files.add(allFilesInDir[i]);
// }
} else {
recursiveDirectory(files, fpds, allFilesInDir[i], fileFilter);
}
}
}
public void addPlatformIdToFarPlatformItemList(PlatformIdentification platformId) throws Exception {
files.add(platformId.getFpdFile());
FarPlatformItem fpfItem = new FarPlatformItem();
FarFileItem ffItem;
String fpfPath = platformId.getPath();
File fpfFile = new File(fpfPath);
//
// Add farFileName
//
ffItem = new FarFileItem(Tools.getRelativePath(fpfFile.getPath(), Workspace.getCurrentWorkspace()),
FarMd5.md5(fpfFile));
fpfItem.setFarFile(ffItem);
//
// Add guid value
//
fpfItem.setGuidValue(platformId.getGuid());
//
// Add version
//
fpfItem.setVersion(platformId.getVersion());
fPlfList.add(fpfItem);
}
/**
*
* @param
* @return Set<PackageIdentification> list of PackageIdentification.
*/
public List<PackageIdentification> getPackageList() throws Exception {
//
// PackageIdentification set.
//
List<PackageIdentification> pkgList = new ArrayList<PackageIdentification>();
//
//
//
Iterator pkgItem = this.fPkgList.iterator();
while (pkgItem.hasNext()) {
FarPackage fPkg = (FarPackage) pkgItem.next();
//
// Get package information from SPD file and create a package
// identification.
//
PackageIdentification pkgId = new PackageIdentification(fPkg.getFarFile().getRelativeFilename(),
fPkg.getGuidValue(), fPkg.getVersion());
pkgId.setPath(Workspace.getCurrentWorkspace() + File.separatorChar + fPkg.getDefaultPath()
+ File.separatorChar + fPkg.getFarFile().getRelativeFilename());
// wsTool.getId(
// Workspace.getCurrentWorkspace() + File.separatorChar
// + fPkg.getDefaultPath(), OpenFile
// .openFpdFile(Workspace.getCurrentWorkspace()
// + File.separatorChar
// + fPkg.getDefaultPath()
// + File.separatorChar
// + fPkg.getFarFile().getRelativeFilename()));
pkgList.add(pkgId);
}
return pkgList;
}
/**
*
*/
public List<PlatformIdentification> getPlatformList() throws Exception, IOException, XmlException {
//
// PlatformIdentification set.
//
List<PlatformIdentification> plfList = new ArrayList<PlatformIdentification>();
Iterator plfItem = this.fPlfList.iterator();
while (plfItem.hasNext()) {
FarPlatformItem fpfItem = (FarPlatformItem) plfItem.next();
File file = new File(Workspace.getCurrentWorkspace() + File.separatorChar
+ fpfItem.getFarFile().getRelativeFilename());
//
// Set platformIdentificaiton's path as absolutly path (include
// workspace and FPD relatively path)
//
PlatformIdentification plfId = new PlatformIdentification(fpfItem.getFarFile().getRelativeFilename(),
fpfItem.getGuidValue(), fpfItem.getVersion(),
file.getPath());
// (PlatformIdentification) wsTool
// .getId(file.getParent(), OpenFile.openFpdFile(Workspace
// .getCurrentWorkspace()
// + File.separatorChar
// + fpfItem.getFarFile().getRelativeFilename()));
plfList.add(plfId);
}
return plfList;
}
public List<FarFileItem> getPlatformContents(PlatformIdentification platformId) {
List<FarFileItem> result = new ArrayList<FarFileItem>();
Iterator<FarPlatformItem> iter = this.fPlfList.iterator();
while (iter.hasNext()) {
FarPlatformItem item = iter.next();
if (item.isIdentityPlf(platformId)) {
FarFileItem farFileItem = item.getFarFile();
farFileItem.setDefaultPath(farFileItem.getRelativeFilename());
result.add(farFileItem);
break;
}
}
return result;
}
public List<FarFileItem> getPackageContents(PackageIdentification packageId) {
List<FarFileItem> farFileList = new ArrayList<FarFileItem>();
Iterator pkgItem = this.fPkgList.iterator();
while (pkgItem.hasNext()) {
FarPackage pkg = (FarPackage) pkgItem.next();
if (pkg.isIdentityPkg(packageId)) {
//
// Add spd far file to list.
//
farFileList.add(pkg.getFarFile());
//
// Add all files in contents to list.
//
farFileList.addAll(pkg.getContentList());
//
// Add all farfiles in <FarPlatformList> to list.
//
// List<FarPlatformItem> plfList = pkg.getFarPlatformList();
// Iterator plfItem = plfList.iterator();
// while (plfItem.hasNext()) {
// farFileList.add(((FarPlatformItem) plfItem.next())
// .getFarFile());
// }
Iterator<FarFileItem> ffIter = farFileList.iterator();
while (ffIter.hasNext()) {
FarFileItem ffItem = ffIter.next();
ffItem.setDefaultPath(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename());
}
break;
}
}
return farFileList;
}
/**
*
* @param pkgId
* @return String: return string represent jar file entry;
*/
public String[] getPackgeSpd(PackageIdentification pkgId) {
Iterator pkgItem = this.fPkgList.iterator();
String[] entryStr = new String[2];
while (pkgItem.hasNext()) {
FarPackage pkg = (FarPackage) pkgItem.next();
if (pkg.isIdentityPkg(pkgId)) {
entryStr[0] = pkg.getFarFile().getRelativeFilename();
entryStr[1] = pkg.getDefaultPath();
return entryStr;
}
}
return null;
}
public List<FarFileItem> getPackageContents() {
//
// In this farFilelist,all FarFileItem's relativeFileName should be
// set as absolutely path.
//
List<FarFileItem> farFileList = new ArrayList<FarFileItem>();
Iterator pkgItem = this.fPkgList.iterator();
FarFileItem ffItem = null;
while (pkgItem.hasNext()) {
FarPackage pkg = (FarPackage) pkgItem.next();
//
// Add spd far file to list.
//
ffItem = pkg.getFarFile();
//
// Set farFileItem relativeFileName = absolutePath + file Name.
//
farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separatorChar + ffItem.getRelativeFilename(),
ffItem.getMd5Value()));
//
// Add all files in contents to list.
//
Iterator contentsItem = pkg.getContentList().iterator();
while (contentsItem.hasNext()) {
ffItem = (FarFileItem) contentsItem.next();
farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separator + ffItem.getRelativeFilename(),
ffItem.getMd5Value()));
}
//
// Add all farfiles in <FarPlatformList> to list.
//
List<FarPlatformItem> plfList = pkg.getFarPlatformList();
Iterator plfItem = plfList.iterator();
while (plfItem.hasNext()) {
ffItem = ((FarPlatformItem) plfItem.next()).getFarFile();
farFileList.add(new FarFileItem(pkg.getDefaultPath() + File.separator + ffItem.getRelativeFilename(),
ffItem.getMd5Value()));
}
}
return farFileList;
}
public String getPackageDefaultPath(PackageIdentification packageId) {
Iterator pkgItr = this.fPkgList.iterator();
while (pkgItr.hasNext()) {
FarPackage farPackage = (FarPackage) pkgItr.next();
if (farPackage.isIdentityPkg(packageId)) {
return farPackage.getDefaultPath();
}
}
return null;
}
// public void setPackageInstallPath(PackageIdentification packageId, String path) {
// Iterator<FarPackage> pkgItr = this.fPkgList.iterator();
// while (pkgItr.hasNext()) {
// FarPackage farPackage = pkgItr.next();
// if (farPackage.isIdentityPkg(packageId)) {
// farPackage.setDefaultPath(path);
// return ;
// }
// }
// }
//
// public void setPlatformInstallPath(PlatformIdentification platformId, String path) {
// Iterator<FarPlatformItem> plfItr = this.fPlfList.iterator();
// while (plfItr.hasNext()) {
// FarPlatformItem farPlatform = plfItr.next();
// if (farPlatform.i.isIdentity(platformId)) {
// farPackage.setDefaultPath(path);
// return ;
// }
// }
// }
public List<FarFileItem> getAllFileItem() {
//
// The farFileName in this list are all abosulte path.
//
List<FarFileItem> ffiList = new ArrayList<FarFileItem>();
//
// Add far files in <FarPackageList> to list.
//
ffiList = this.getPackageContents();
//
// Add far files in <FarPlatformList> to list
//
NodeList elementList = this.mainfestDoc.getElementsByTagName(farPlatformList);
for (int i = 0; i < elementList.getLength(); i++) {
//
// Get <farPlatform> node list.
//
Node item = elementList.item(i);
NodeList plfElements = item.getChildNodes();
for (int j = 0; j < plfElements.getLength(); j++) {
//
// Get each <FarPlatform> content.
//
NodeList plfChildNode = plfElements.item(i).getChildNodes();
Node tempNode = null;
for (int t = 0; t < plfChildNode.getLength(); t++) {
tempNode = plfChildNode.item(t);
//
// Get child node value and set to platformIdentification.
//
if (tempNode.getNodeName().equalsIgnoreCase(farPackage_FarfileName)) {
NamedNodeMap farAttr = tempNode.getAttributes();
//
// Change relative path to absolute one
//
FarFileItem farFile = new FarFileItem(tempNode.getTextContent(),
farAttr.getNamedItem(farFileName_Md5sum).getTextContent());
ffiList.add(farFile);
}
}
}
}
return ffiList;
}
public void hibernateToFile() throws Exception {
//
// create mainfest root node
//
Element rootNode = this.mainfestDoc.createElement("FrameworkArchiveManifest");
this.mainfestDoc.appendChild(rootNode);
//
// create mainfest header node
//
Element headerNode = this.mainfestDoc.createElement(farHeader);
rootNode.appendChild(headerNode);
//
// Add FarHeader to headerNode.
//
Element farName = this.mainfestDoc.createElement(farHeader_FarName);
farName.setTextContent(this.fhInfo.getFarName());
headerNode.appendChild(farName);
Element gv = this.mainfestDoc.createElement(guidValue);
gv.setTextContent(this.fhInfo.getGuidValue());
headerNode.appendChild(gv);
Element ver = this.mainfestDoc.createElement(version);
ver.setTextContent(this.fhInfo.getVersion());
headerNode.appendChild(ver);
Element abstra = this.mainfestDoc.createElement(farHeader_Abstract);
abstra.setTextContent(this.fhInfo.getAbstractStr());
headerNode.appendChild(abstra);
Element descr = this.mainfestDoc.createElement(farHeader_Description);
descr.setTextContent(this.fhInfo.getDescription());
headerNode.appendChild(descr);
Element copyright = this.mainfestDoc.createElement(farHeader_CopyRight);
copyright.setTextContent(this.fhInfo.getCopyright());
headerNode.appendChild(copyright);
Element license = this.mainfestDoc.createElement(farHeader_License);
license.setTextContent(this.fhInfo.getLicense());
headerNode.appendChild(license);
Element spec = this.mainfestDoc.createElement(farHeader_Specification);
spec.setTextContent(this.fhInfo.getSpecification());
System.out.println(this.fhInfo.getSpecification());
headerNode.appendChild(spec);
//
// create mainfest FarPackageList node
//
Element pkgListNode = this.mainfestDoc.createElement(farPackageList);
rootNode.appendChild(pkgListNode);
//
// Save each item in farPackage list to <FarPackage>.
//
Iterator pkgItem = this.fPkgList.iterator();
while (pkgItem.hasNext()) {
pkgToFarPkgNode(pkgListNode, (FarPackage) pkgItem.next());
}
//
// create mainfest FarPlatformList node
//
Element plfListNode = this.mainfestDoc.createElement(farPlatformList);
rootNode.appendChild(plfListNode);
//
// Save farPakcage list info to <FarPackageList> node
//
Iterator plfItem = this.fPlfList.iterator();
while (plfItem.hasNext()) {
FarPlatformItem plfIterator = (FarPlatformItem) plfItem.next();
PlfToPlatformNode(plfListNode, plfIterator);
}
//
// Write the DOM document to the file
//
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
//
// Prepare the DOM document for writing
//
Source source = new DOMSource(this.mainfestDoc);
//
// Prepare the output file, get the Mainifest file name from <FarHeader>
// /<FarName>.
//
this.mfFile = new File(Workspace.getCurrentWorkspace() + File.separatorChar + mfFileName);
//
// generate all directory path
//
Result result = new StreamResult(this.mfFile);
xformer.transform(source, result);
}
public void pkgToFarPkgNode(Element parentNode, FarPackage pkgItem) {
Element pkgNode = this.mainfestDoc.createElement(farPackageList_FarPackage);
//
// Add <FarFileName>
//
ffiToFfNode(pkgNode, pkgItem.getFarFile());
//
// Add <GuidValue>
//
setStrItemToNode(pkgNode, pkgItem.getGuidValue(), guidValue);
//
// Add <Version>
//
setStrItemToNode(pkgNode, pkgItem.getVersion(), version);
//
// Add <DefaultPath>
//
setStrItemToNode(pkgNode, pkgItem.getDefaultPath(), farPackage_DefaultPath);
//
// Add <Contents>
//
Element contentNode = this.mainfestDoc.createElement(contents);
Iterator iterator = pkgItem.getContentList().iterator();
while (iterator.hasNext()) {
ffiToFfNode(contentNode, (FarFileItem) iterator.next());
}
pkgNode.appendChild(contentNode);
parentNode.appendChild(pkgNode);
}
public void PlfToPlatformNode(Element parentNode, FarPlatformItem fplItem) {
Element fplNode = this.mainfestDoc.createElement(farPlatformList_FarPlatform);
//
// Add <FarFileName>
//
ffiToFfNode(fplNode, fplItem.getFarFile());
//
// Add <GuidValue>
//
setStrItemToNode(fplNode, fplItem.getGuidValue(), guidValue);
//
// Add <Version>
//
setStrItemToNode(fplNode, fplItem.getVersion(), version);
//
// Add to <PlatformList>
//
parentNode.appendChild(fplNode);
}
public void ffiToFfNode(Element parentNode, FarFileItem ffi) {
Element farFileName = this.mainfestDoc.createElement(farPackage_FarfileName);
farFileName.setTextContent(ffi.getRelativeFilename());
System.out.println(farFileName.getTextContent());
System.out.println(ffi.getRelativeFilename());
farFileName.setAttribute(farFileName_Md5sum, ffi.getMd5Value());
parentNode.appendChild(farFileName);
}
public void setStrItemToNode(Element parentNode, String strValue, String strName) {
Element node = this.mainfestDoc.createElement(strName);
node.setTextContent(strValue);
parentNode.appendChild(node);
}
private void parseMainfest() {
//
// Parse header
//
parseMfHeader();
//
// parse <farPackageList>
//
parseHeaderFarPackageList();
//
// parse <farPlatformList>
//
NodeList ele = this.mainfestDoc.getElementsByTagName(farPlatformList);
Node plfNode;
if (ele.getLength() > 0) {
//
// Only have one <FarPlatformList> node under mainfest root node.
//
plfNode = ele.item(0);
parseFarPlatformList(plfNode, this.fPlfList);
}
}
private void parseMfHeader() {
Node headerNode;
NodeList ele = this.mainfestDoc.getElementsByTagName(farHeader);
if (ele.getLength() > 0) {
//
// For mainfest file only have one <FarHeader>
//
headerNode = ele.item(0);
} else {
return;
}
NodeList childList = headerNode.getChildNodes();
Node node = null;
String nodeName = null;
for (int i = 0; i < childList.getLength(); i++) {
node = childList.item(i);
nodeName = node.getNodeName();
if (nodeName.equalsIgnoreCase(farHeader_FarName)) {
String nodeValue = node.getTextContent();
this.fhInfo.setFarName(nodeValue);
} else if (nodeName.equalsIgnoreCase(guidValue)) {
this.fhInfo.setGuidValue(node.getTextContent());
} else if (nodeName.equalsIgnoreCase(version)) {
this.fhInfo.setVersion(node.getTextContent());
} else if (nodeName.equalsIgnoreCase(farHeader_Abstract)) {
this.fhInfo.setAbstractStr(node.getTextContent());
} else if (nodeName.equalsIgnoreCase(farHeader_Description)) {
this.fhInfo.setDescription(node.getTextContent());
} else if (nodeName.equalsIgnoreCase(farHeader_CopyRight)) {
this.fhInfo.setCopyright(node.getTextContent());
} else if (nodeName.equalsIgnoreCase(farHeader_License)) {
this.fhInfo.setLicense(node.getTextContent());
} else if (nodeName.equalsIgnoreCase(farHeader_Specification)) {
this.fhInfo.setSpecification(node.getTextContent());
}
}
}
public void parseHeaderFarPackageList() {
Node farPkgNode;
NodeList ele = this.mainfestDoc.getElementsByTagName(farPackageList);
if (ele.getLength() > 0) {
//
// For mainfest file only have one <FarHeader>
//
farPkgNode = ele.item(0);
} else {
return;
}
NodeList fpnList = farPkgNode.getChildNodes();
for (int i = 0; i < fpnList.getLength(); i++) {
if (fpnList.item(i).getNodeType() == Node.TEXT_NODE) {
continue;
}
FarPackage fpItem = new FarPackage();
parseFarPackage(fpnList.item(i), fpItem);
this.fPkgList.add(fpItem);
}
}
public void parseFarPackage(Node farPkgNode, FarPackage fpItem) {
NodeList childList = farPkgNode.getChildNodes();
Node childNode;
String childName;
for (int i = 0; i < childList.getLength(); i++) {
childNode = childList.item(i);
childName = childNode.getNodeName();
if (childName.equalsIgnoreCase(farPackage_FarfileName)) {
fpItem.setFarFile(parseFarFile(childNode));
} else if (childName.equalsIgnoreCase(guidValue)) {
fpItem.setGuidValue(childNode.getTextContent());
} else if (childName.equalsIgnoreCase(version)) {
fpItem.setVersion(childNode.getTextContent());
} else if (childName.equalsIgnoreCase(farPackage_DefaultPath)) {
fpItem.setDefaultPath(childNode.getTextContent());
} else if (childName.equalsIgnoreCase(farPlatformList)) {
List<FarPlatformItem> plfList = new ArrayList<FarPlatformItem>();
parseFarPlatformList(childNode, plfList);
fpItem.setFarPlatformList(plfList);
} else if (childName.equalsIgnoreCase(contents)) {
List<FarFileItem> ffList = new ArrayList<FarFileItem>();
parseContents(childNode, ffList);
fpItem.setContentList(ffList);
}
}
}
/**
*
* @param fpfListNode
* @param plfList
*/
public void parseFarPlatformList(Node fpfListNode, List<FarPlatformItem> plfList) {
//
// Get <FarPlatform> list.
//
NodeList child = fpfListNode.getChildNodes();
Node farPlfNode;
for (int i = 0; i < child.getLength(); i++) {
if (child.item(i).getNodeType() == Node.TEXT_NODE) {
continue;
}
farPlfNode = child.item(i);
plfList.add(parseFarPlatform(farPlfNode));
}
}
/**
*
* @param fpfNode
* @return
*/
public FarPlatformItem parseFarPlatform(Node fpfNode) {
//
// New FarPlatformItem.
//
FarPlatformItem fplItem = new FarPlatformItem();
//
// Get <FarPlatform> elements;
//
NodeList childList = fpfNode.getChildNodes();
Node child;
String nodeName;
for (int i = 0; i < childList.getLength(); i++) {
child = childList.item(i);
nodeName = child.getNodeName();
if (nodeName.equalsIgnoreCase(farPackage_FarfileName)) {
fplItem.setFarFile(parseFarFile(child));
} else if (nodeName.equalsIgnoreCase(guidValue)) {
fplItem.setGuidValue(child.getTextContent());
} else if (nodeName.equalsIgnoreCase(version)) {
fplItem.setVersion(child.getTextContent());
}
}
return fplItem;
}
public void parseContents(Node contentsNode, List<FarFileItem> ffList) {
NodeList contentList = contentsNode.getChildNodes();
Node contentNode;
for (int i = 0; i < contentList.getLength(); i++) {
if (contentList.item(i).getNodeType() == Node.TEXT_NODE) {
continue;
}
contentNode = contentList.item(i);
//
// Parse each <FarFileName>.
//
ffList.add(parseFarFile(contentNode));
}
}
public FarFileItem parseFarFile(Node farFileNode) {
String ffName = farFileNode.getTextContent();
NamedNodeMap attr = farFileNode.getAttributes();
FarFileItem ffItem = new FarFileItem(ffName, attr.getNamedItem(farFileName_Md5sum).getTextContent());
return ffItem;
}
public boolean isFilter(File file, Set<String> fileter) {
Iterator<String> iter = fileter.iterator();
while (iter.hasNext()) {
Pattern pattern = Pattern.compile(iter.next());
Matcher matcher = pattern.matcher(file.getName());
if (matcher.find()) {
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,40 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import org.apache.xmlbeans.XmlException;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
public interface ManifestInterface {
public void createManifest(List<PackageIdentification> pkgList, List<PlatformIdentification> plfList,
Set<String> fileFilter) throws Exception;
public void setManifestFile(File manifestFile) throws Exception;
public List<PackageIdentification> getPackageList() throws Exception;
public List<PlatformIdentification> getPlatformList() throws Exception, IOException, XmlException;
public List<FarFileItem> getPackageContents(PackageIdentification packageId);
public String getPackageDefaultPath(PackageIdentification packageId);
}

View File

@ -0,0 +1,127 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.apache.xmlbeans.XmlObject;
import org.tianocore.ModuleSurfaceAreaDocument;
import org.tianocore.PackageDependenciesDocument;
import org.tianocore.PackageSurfaceAreaDocument;
import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;
import org.tianocore.frameworkwizard.common.Identifications.OpenFile;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
public class PackageQuery implements PackageQueryInterface {
public PackageIdentification getPackageIdentification(File spdFile) {
PackageIdentification packageId = null;
try {
String path = spdFile.getPath();
WorkspaceTools wt = new WorkspaceTools();
packageId = new PackageIdentification(wt.getId(path, OpenFile.openSpdFile(path)));
} catch (Exception e) {
e.printStackTrace();
}
return packageId;
}
public List<String> getPackageMsaList(InputStream spdInput) {
List<String> result = new ArrayList<String>();
try {
PackageSurfaceAreaDocument spd = (PackageSurfaceAreaDocument) XmlObject.Factory.parse(spdInput);
result = spd.getPackageSurfaceArea().getMsaFiles().getFilenameList();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public List<PackageIdentification> getModuleDependencies(InputStream msaInput) {
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
try {
ModuleSurfaceAreaDocument msa = (ModuleSurfaceAreaDocument) XmlObject.Factory.parse(msaInput);
ModuleSurfaceAreaDocument.ModuleSurfaceArea sa = msa.getModuleSurfaceArea();
if (sa == null) {
return result;
}
PackageDependenciesDocument.PackageDependencies pkgDep = sa.getPackageDependencies();
if (pkgDep == null) {
return result;
}
List<PackageDependenciesDocument.PackageDependencies.Package> list = pkgDep.getPackageList();
Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = list.iterator();
while (iter.hasNext()) {
PackageDependenciesDocument.PackageDependencies.Package item = iter.next();
PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),
item.getPackageVersion());
result.add(packageId);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public List<File> getPackageMsaList(File spdFile) {
List<File> result = new Vector<File>();
WorkspaceTools wt = new WorkspaceTools();
List<String> v = wt.getAllModulesOfPackage(spdFile.getPath());
Iterator<String> iter = v.iterator();
while (iter.hasNext()) {
result.add(new File(iter.next()));
}
return result;
}
public List<PackageIdentification> getPackageDependencies(File spdFile) {
List<File> msaFiles = getPackageMsaList(spdFile);
return getPackageDependencies(msaFiles);
}
public List<PackageIdentification> getPackageDependencies(List<File> msaFiles) {
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
Iterator<File> iter = msaFiles.iterator();
while (iter.hasNext()) {
result = AggregationOperation.union(result, getModuleDependencies(iter.next()));
}
return result;
}
public List<PackageIdentification> getModuleDependencies(File msaFile) {
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
try {
ModuleSurfaceArea msa = OpenFile.openMsaFile(msaFile.getPath());
List<PackageDependenciesDocument.PackageDependencies.Package> p = msa.getPackageDependencies()
.getPackageList();
Iterator<PackageDependenciesDocument.PackageDependencies.Package> iter = p.iterator();
while (iter.hasNext()) {
PackageDependenciesDocument.PackageDependencies.Package item = iter.next();
PackageIdentification packageId = new PackageIdentification(null, item.getPackageGuid(),
item.getPackageVersion());
if (!AggregationOperation.belongs(packageId, result)) {
result.add(packageId);
}
}
} catch (Exception e) {
}
return result;
}
}

View File

@ -0,0 +1,38 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far;
import java.io.File;
import java.io.InputStream;
import java.util.List;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
public interface PackageQueryInterface {
public PackageIdentification getPackageIdentification(File spdFile);
public List<File> getPackageMsaList(File spdFile);
public List<String> getPackageMsaList(InputStream spdInput);
public List<PackageIdentification> getPackageDependencies(File spdFile);
public List<PackageIdentification> getPackageDependencies(List<File> msaFiles);
public List<PackageIdentification> getModuleDependencies(InputStream msaInput);
public List<PackageIdentification> getModuleDependencies(File msaFile);
}

View File

@ -0,0 +1,367 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.createui;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import org.tianocore.frameworkwizard.common.DataType;
import org.tianocore.frameworkwizard.common.IFileFilter;
import org.tianocore.frameworkwizard.common.Log;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.far.AggregationOperation;
import org.tianocore.frameworkwizard.far.Far;
import org.tianocore.frameworkwizard.far.PackageQuery;
import org.tianocore.frameworkwizard.far.PackageQueryInterface;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.workspace.Workspace;
public class CreateStepFour extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = -7397213364965470902L;
private JPanel jContentPane = null;
private JTextArea jTextAreaInstruction = null;
private JLabel jLabel = null;
private JLabel jLabel2 = null;
private JTextField jTextFieldSaveToFile = null;
private JButton jButtonBrowser = null;
// private JScrollPane jScrollPane = null;
private JButton jButtonCancel = null;
private JButton jButtonFinish = null;
private JButton jButtonPrevious = null;
private PartialTableModel model = null;
private CreateStepThree stepThree = null;
// private JTable jTable = null;
public CreateStepFour(IDialog iDialog, boolean modal, CreateStepThree stepThree) {
this(iDialog, modal);
this.stepThree = stepThree;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextAreaInstruction == null) {
jTextAreaInstruction = new JTextArea();
jTextAreaInstruction.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextAreaInstruction.setText("Step 4: Choose a file \n");
jTextAreaInstruction.setEditable(false);
}
return jTextAreaInstruction;
}
/**
* This method initializes jTextField1
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField1() {
if (jTextFieldSaveToFile == null) {
jTextFieldSaveToFile = new JTextField();
jTextFieldSaveToFile.setBounds(new java.awt.Rectangle(139, 70, 400, 20));
}
return jTextFieldSaveToFile;
}
/**
* This method initializes jButtonBrowser
*
* @return javax.swing.JButton
*/
private JButton getJButtonBrower() {
if (jButtonBrowser == null) {
jButtonBrowser = new JButton();
jButtonBrowser.setBounds(new java.awt.Rectangle(542, 70, 97, 20));
jButtonBrowser.setText("Browser...");
jButtonBrowser.addMouseListener(this);
}
return jButtonBrowser;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
// private JScrollPane getJScrollPane() {
// if (jScrollPane == null) {
// jScrollPane = new JScrollPane();
// jScrollPane.setBounds(new java.awt.Rectangle(139,85,500,100));
// jScrollPane.setViewportView(getJTable());
// }
// return jScrollPane;
// }
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonFinish
*
* @return javax.swing.JButton
*/
private JButton getJButtonFinish() {
if (jButtonFinish == null) {
jButtonFinish = new JButton();
jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonFinish.setText("Finish");
jButtonFinish.addMouseListener(this);
}
return jButtonFinish;
}
/**
* This method initializes jButtonPrevious
*
* @return javax.swing.JButton
*/
private JButton getJButtonPrevious() {
if (jButtonPrevious == null) {
jButtonPrevious = new JButton();
jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));
jButtonPrevious.setText("Previous");
jButtonPrevious.addMouseListener(this);
}
return jButtonPrevious;
}
/**
* This is the default constructor
*/
public CreateStepFour(IDialog iDialog, boolean modal) {
super(iDialog, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Create Framework Archive(FAR) - Step 4: Summary");
this.centerWindow();
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel2 = new JLabel();
jLabel2.setBounds(new java.awt.Rectangle(30, 70, 220, 18));
jLabel2.setText("Select File to Save: ");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 64, 320, 20));
jLabel.setText("This FAR will depend on following packages: ");
jLabel.setVisible(false);
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(jLabel, null);
// jContentPane.add(getJScrollPane(), null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonFinish(), null);
jContentPane.add(getJButtonPrevious(), null);
jContentPane.add(jLabel2, null);
jContentPane.add(getJTextField1(), null);
jContentPane.add(getJButtonBrower(), null);
}
return jContentPane;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
} else if (e.getSource() == jButtonFinish) {
//
// Add some logic process here
// Guid Check, File Check etc.
//
if (this.jTextFieldSaveToFile.getText() == null) {
Log.err("Please input the Far name!");
}
try {
//
// Create an output stream for JAR
//
Far far = new Far(new File(this.jTextFieldSaveToFile.getText()));
far.creatFar(this.getPreviousStep().getPreviousStep().getSelectedPackages(),
this.getPreviousStep().getPreviousStep().getSelectedPlatforms(), this.getPreviousStep()
.getFileFilter(),
this.getPreviousStep().getPreviousStep().getPreviousStep().getFarHeader());
} catch (Exception exp) {
Log.err("Create error! ");
return;
}
getPreviousStep().getPreviousStep().getPreviousStep().returnType = DataType.RETURN_TYPE_OK;
getPreviousStep().getPreviousStep().dispose();
getPreviousStep().dispose();
this.setVisible(false);
this.dispose();
} else if (e.getSource() == jButtonPrevious) {
this.setVisible(false);
stepThree.setVisible(true);
} else if (e.getSource() == jButtonBrowser) {
JFileChooser fc = new JFileChooser();
fc.setAcceptAllFileFilterUsed(false);
fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));
fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));
int result = fc.showSaveDialog(new JPanel());
if (result == JFileChooser.APPROVE_OPTION) {
this.jTextFieldSaveToFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),
DataType.RETURN_TYPE_FAR_SURFACE_AREA));
}
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public CreateStepThree getPreviousStep() {
return stepThree;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
// private JTable getJTable() {
// if (jTable == null) {
// jTable = new JTable();
// model = new PartialTableModel();
// jTable = new JTable(model);
// jTable.setRowHeight(20);
// jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
// model.addColumn("GUID");
// model.addColumn("Version");
// model.addColumn("Name");
//
// jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// }
// if (this.stepThree != null) {
// prepareTable();
// }
// return jTable;
// }
public void prepareTable() {
model.setRowCount(0);
List<PackageIdentification> packageList = new ArrayList<PackageIdentification>();
//
// Change here to get packages and platforms from FAR
//
List<PackageIdentification> selectedPackages = getPreviousStep().getPreviousStep().getSelectedPackages();
PackageQueryInterface pq = new PackageQuery();
Iterator<PackageIdentification> iter = selectedPackages.iterator();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
List<PackageIdentification> list = pq.getPackageDependencies(item.getSpdFile());
packageList = AggregationOperation.union(list, packageList);
}
packageList = AggregationOperation.minus(packageList, selectedPackages);
iter = packageList.iterator();
while (iter.hasNext()) {
String[] str = new String[3];
PackageIdentification item = iter.next();
str[2] = item.getName();
str[1] = item.getVersion();
str[0] = item.getGuid();
model.addRow(str);
}
}
}
class PartialTableModel extends DefaultTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int col) {
switch (col) {
default:
return false;
}
}
}

View File

@ -0,0 +1,624 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.createui;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.tianocore.frameworkwizard.common.DataValidation;
import org.tianocore.frameworkwizard.common.Log;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.common.ui.IFrame;
import org.tianocore.frameworkwizard.common.ui.StarLabel;
import org.tianocore.frameworkwizard.far.FarHeader;
public class CreateStepOne extends IDialog implements MouseListener {
// /
// / Define class Serial Version UID
// /
private static final long serialVersionUID = -8152099582923006900L;
//
// Define class members
//
private JPanel jContentPane = null;
private JLabel jLabelBaseName = null;
private JTextField jTextFieldBaseName = null;
private JLabel jLabelGuid = null;
private JTextField jTextFieldGuid = null;
private JLabel jLabelVersion = null;
private JTextField jTextFieldVersion = null;
private JButton jButtonGenerateGuid = null;
private JLabel jLabelLicense = null;
private JTextArea jTextAreaLicense = null;
private JLabel jLabelCopyright = null;
private JLabel jLabelDescription = null;
private JTextArea jTextAreaDescription = null;
private JLabel jLabelSpecification = null;
private JTextField jTextFieldSpecification = null;
private JButton jButtonOk = null;
private JScrollPane jScrollPaneLicense = null;
private JScrollPane jScrollPaneDescription = null;
private JLabel jLabelAbstract = null;
private JTextField jTextFieldAbstract = null;
private StarLabel jStarLabel1 = null;
private StarLabel jStarLabel4 = null;
private StarLabel jStarLabel5 = null;
private StarLabel jStarLabel6 = null;
private StarLabel jStarLabel7 = null;
private StarLabel jStarLabel8 = null;
private StarLabel jStarLabel10 = null;
private StarLabel jStarLabel12 = null;
private JTextField jTextFieldCopyright = null;
private JLabel jLabelURL = null;
private JTextField jTextFieldURL = null;
private JScrollPane jScrollPane = null;
private CreateStepTwo stepTwo = null;
private JButton jButtonCancel = null;
private JButton jButtonNext = null;
private FarHeader farHeader = new FarHeader();
/**
* This method initializes jTextFieldBaseName
*
* @return javax.swing.JTextField jTextFieldBaseName
*
*/
private JTextField getJTextFieldBaseName() {
if (jTextFieldBaseName == null) {
jTextFieldBaseName = new JTextField();
jTextFieldBaseName.setBounds(new java.awt.Rectangle(160, 10, 260, 20));
jTextFieldBaseName.setToolTipText("An brief Identifier, such as USB I/O Library, of the module");
}
return jTextFieldBaseName;
}
/**
* This method initializes jTextFieldGuid
*
* @return javax.swing.JTextField jTextFieldGuid
*
*/
private JTextField getJTextFieldGuid() {
if (jTextFieldGuid == null) {
jTextFieldGuid = new JTextField();
jTextFieldGuid.setBounds(new java.awt.Rectangle(160, 35, 260, 20));
jTextFieldGuid.setToolTipText("Guaranteed Unique Identification Number (8-4-4-4-12)");
}
return jTextFieldGuid;
}
/**
* This method initializes jTextFieldVersion
*
* @return javax.swing.JTextField jTextFieldVersion
*
*/
private JTextField getJTextFieldVersion() {
if (jTextFieldVersion == null) {
jTextFieldVersion = new JTextField();
jTextFieldVersion.setBounds(new java.awt.Rectangle(160, 60, 260, 20));
jTextFieldVersion.setToolTipText("A Version Number, 1.0, 1, 1.01");
}
return jTextFieldVersion;
}
/**
* This method initializes jButtonGenerateGuid
*
* @return javax.swing.JButton jButtonGenerateGuid
*
*/
private JButton getJButtonGenerateGuid() {
if (jButtonGenerateGuid == null) {
jButtonGenerateGuid = new JButton();
jButtonGenerateGuid.setBounds(new java.awt.Rectangle(440, 35, 90, 20));
jButtonGenerateGuid.setText("Generate");
jButtonGenerateGuid.addMouseListener(this);
}
return jButtonGenerateGuid;
}
/**
* This method initializes jTextAreaLicense
*
* @return javax.swing.JTextArea jTextAreaLicense
*
*/
private JTextArea getJTextAreaLicense() {
if (jTextAreaLicense == null) {
jTextAreaLicense = new JTextArea();
jTextAreaLicense.setText("");
jTextAreaLicense.setLineWrap(true);
jTextAreaLicense.setToolTipText("The License for this file");
}
return jTextAreaLicense;
}
/**
* This method initializes jTextAreaDescription
*
* @return javax.swing.JTextArea jTextAreaDescription
*
*/
private JTextArea getJTextAreaDescription() {
if (jTextAreaDescription == null) {
jTextAreaDescription = new JTextArea();
jTextAreaDescription.setLineWrap(true);
jTextAreaDescription.setToolTipText("A verbose description of the module");
}
return jTextAreaDescription;
}
/**
* This method initializes jTextFieldSpecification
*
* @return javax.swing.JTextField jTextFieldSpecification
*
*/
private JTextField getJTextFieldSpecification() {
if (jTextFieldSpecification == null) {
jTextFieldSpecification = new JTextField();
jTextFieldSpecification.setText("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052");
jTextFieldSpecification.setBounds(new java.awt.Rectangle(160, 290, 420, 20));
jTextFieldSpecification.setEditable(false);
}
return jTextFieldSpecification;
}
/**
* This method initializes jScrollPaneLicense
*
* @return javax.swing.JScrollPane jScrollPaneLicense
*
*/
private JScrollPane getJScrollPaneLicense() {
if (jScrollPaneLicense == null) {
jScrollPaneLicense = new JScrollPane();
jScrollPaneLicense.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPaneLicense.setBounds(new java.awt.Rectangle(160, 200, 420, 60));
jScrollPaneLicense.setViewportView(getJTextAreaLicense());
}
return jScrollPaneLicense;
}
/**
* This method initializes jScrollPaneDescription
*
* @return javax.swing.JScrollPane jScrollPaneDescription
*
*/
private JScrollPane getJScrollPaneDescription() {
if (jScrollPaneDescription == null) {
jScrollPaneDescription = new JScrollPane();
jScrollPaneDescription.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPaneDescription.setBounds(new java.awt.Rectangle(160, 110, 420, 60));
jScrollPaneDescription.setViewportView(getJTextAreaDescription());
}
return jScrollPaneDescription;
}
/**
* This method initializes jTextFieldAbstract
*
* @return javax.swing.JTextField jTextFieldAbstract
*
*/
private JTextField getJTextFieldAbstract() {
if (jTextFieldAbstract == null) {
jTextFieldAbstract = new JTextField();
jTextFieldAbstract.setBounds(new java.awt.Rectangle(160, 85, 420, 20));
jTextFieldAbstract.setToolTipText("A one sentence description of this module");
}
return jTextFieldAbstract;
}
/**
* This method initializes jTextFieldCopyright
*
* @return javax.swing.JTextField jTextFieldCopyright
*
*/
private JTextField getJTextFieldCopyright() {
if (jTextFieldCopyright == null) {
jTextFieldCopyright = new JTextField();
jTextFieldCopyright.setBounds(new java.awt.Rectangle(160, 175, 420, 20));
jTextFieldCopyright.setToolTipText("One or more copyright lines");
}
return jTextFieldCopyright;
}
/**
* This method initializes jTextFieldURL
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldURL() {
if (jTextFieldURL == null) {
jTextFieldURL = new JTextField();
jTextFieldURL.setBounds(new java.awt.Rectangle(160, 265, 420, 20));
jTextFieldURL.setToolTipText("A URL for the latest version of the license");
}
return jTextFieldURL;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setViewportView(getJContentPane());
}
return jScrollPane;
}
/**
* This method initializes jButtonCancel1
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonNext
*
* @return javax.swing.JButton
*/
private JButton getJButtonNext() {
if (jButtonNext == null) {
jButtonNext = new JButton();
jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonNext.setText("Next");
jButtonNext.addMouseListener(this);
}
return jButtonNext;
}
public static void main(String[] args) {
CreateStepOne c = new CreateStepOne(new IFrame(), true);
c.setVisible(true);
}
/**
* This is the default constructor
*
*/
public CreateStepOne(IFrame iFrame, boolean modal) {
super(iFrame, modal);
initialize();
}
/**
* Disable all components when the mode is view
*
* @param isView
* true - The view mode; false - The non-view mode
*
*/
public void setViewMode(boolean isView) {
if (isView) {
this.jTextFieldBaseName.setEnabled(!isView);
this.jTextFieldGuid.setEnabled(!isView);
this.jTextFieldVersion.setEnabled(!isView);
this.jTextAreaLicense.setEnabled(!isView);
this.jTextFieldCopyright.setEnabled(!isView);
this.jTextAreaDescription.setEnabled(!isView);
this.jTextFieldSpecification.setEnabled(!isView);
this.jTextFieldAbstract.setEnabled(!isView);
this.jButtonGenerateGuid.setEnabled(!isView);
this.jButtonOk.setEnabled(!isView);
}
}
/**
* This method initializes this
*
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJScrollPane());
this.setTitle("Create Framework Archive(FAR) - Step 1: Set FAR's baseic information");
this.centerWindow();
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel jContentPane
*
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabelURL = new JLabel();
jLabelURL.setText("License URL");
jLabelURL.setBounds(new java.awt.Rectangle(35, 265, 140, 20));
jLabelBaseName = new JLabel();
jLabelBaseName.setText("FAR Name");
jLabelBaseName.setBounds(new java.awt.Rectangle(35, 10, 140, 20));
jLabelGuid = new JLabel();
jLabelGuid.setText("Guid Value");
jLabelGuid.setBounds(new java.awt.Rectangle(35, 35, 140, 20));
jLabelVersion = new JLabel();
jLabelVersion.setText("Version");
jLabelVersion.setBounds(new java.awt.Rectangle(35, 60, 140, 20));
jLabelAbstract = new JLabel();
jLabelAbstract.setText("Abstract");
jLabelAbstract.setBounds(new java.awt.Rectangle(35, 85, 140, 20));
jLabelDescription = new JLabel();
jLabelDescription.setText("Description");
jLabelDescription.setBounds(new java.awt.Rectangle(35, 110, 140, 20));
jLabelCopyright = new JLabel();
jLabelCopyright.setText("Copyright");
jLabelCopyright.setBounds(new java.awt.Rectangle(35, 175, 140, 20));
jLabelLicense = new JLabel();
jLabelLicense.setText("License");
jLabelLicense.setBounds(new java.awt.Rectangle(35, 200, 140, 20));
jLabelSpecification = new JLabel();
jLabelSpecification.setText("Specification");
jLabelSpecification.setBounds(new java.awt.Rectangle(35, 290, 140, 20));
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(jLabelBaseName, null);
jContentPane.add(getJTextFieldBaseName(), null);
jContentPane.add(jLabelGuid, null);
jContentPane.add(getJTextFieldGuid(), null);
jContentPane.add(jLabelVersion, null);
jContentPane.add(getJTextFieldVersion(), null);
jContentPane.add(getJButtonGenerateGuid(), null);
jContentPane.add(jLabelLicense, null);
jContentPane.add(jLabelCopyright, null);
jContentPane.add(jLabelDescription, null);
jContentPane.add(jLabelSpecification, null);
jContentPane.add(getJTextFieldSpecification(), null);
jContentPane.add(getJScrollPaneLicense(), null);
jContentPane.add(getJScrollPaneDescription(), null);
jContentPane.add(jLabelAbstract, null);
jContentPane.add(getJTextFieldAbstract(), null);
jContentPane.add(jLabelURL, null);
jContentPane.add(getJTextFieldURL(), null);
jContentPane.add(getJTextFieldCopyright(), null);
jStarLabel1 = new StarLabel();
jStarLabel1.setLocation(new java.awt.Point(20, 10));
jStarLabel4 = new StarLabel();
jStarLabel4.setLocation(new java.awt.Point(20, 35));
jStarLabel5 = new StarLabel();
jStarLabel5.setLocation(new java.awt.Point(20, 60));
jStarLabel6 = new StarLabel();
jStarLabel6.setLocation(new java.awt.Point(20, 110));
jStarLabel7 = new StarLabel();
jStarLabel7.setLocation(new java.awt.Point(20, 175));
jStarLabel8 = new StarLabel();
jStarLabel8.setLocation(new java.awt.Point(20, 200));
jStarLabel10 = new StarLabel();
jStarLabel10.setLocation(new java.awt.Point(20, 85));
jStarLabel12 = new StarLabel();
jStarLabel12.setLocation(new java.awt.Point(20, 290));
jContentPane.add(jStarLabel1, null);
jContentPane.add(jStarLabel4, null);
jContentPane.add(jStarLabel5, null);
jContentPane.add(jStarLabel6, null);
jContentPane.add(jStarLabel7, null);
jContentPane.add(jStarLabel8, null);
jContentPane.add(jStarLabel10, null);
jContentPane.add(jStarLabel12, null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonNext(), null);
}
return jContentPane;
}
public boolean valid() {
//
// Check BaseName
//
if (isEmpty(this.jTextFieldBaseName.getText())) {
Log.err("Base Name couldn't be empty");
return false;
}
if (!DataValidation.isBaseName(this.jTextFieldBaseName.getText())) {
Log.err("Incorrect data type for Base Name");
return false;
}
farHeader.setFarName(this.jTextFieldBaseName.getText());
//
// Check Guid
//
if (isEmpty(this.jTextFieldGuid.getText())) {
Log.err("Guid Value couldn't be empty");
return false;
}
if (!DataValidation.isGuid((this.jTextFieldGuid).getText())) {
Log.err("Incorrect data type for Guid");
return false;
}
farHeader.setGuidValue(this.jTextFieldGuid.getText());
//
// Check Version
//
if (isEmpty(this.jTextFieldVersion.getText())) {
Log.err("Version couldn't be empty");
return false;
}
if (!DataValidation.isVersion(this.jTextFieldVersion.getText())) {
Log.err("Incorrect data type for Version");
return false;
}
farHeader.setVersion(this.jTextFieldVersion.getText());
//
// Check Abstact
//
if (isEmpty(this.jTextFieldAbstract.getText())) {
Log.err("Abstract couldn't be empty");
return false;
}
if (!DataValidation.isAbstract(this.jTextFieldAbstract.getText())) {
Log.err("Incorrect data type for Abstract");
return false;
}
farHeader.setAbstractStr(this.jTextFieldAbstract.getText());
//
// Check Description
//
if (isEmpty(this.jTextAreaDescription.getText())) {
Log.err("Description couldn't be empty");
return false;
}
farHeader.setDescription(this.jTextAreaDescription.getText());
//
// Check Copyright
//
if (isEmpty(this.jTextFieldCopyright.getText())) {
Log.err("Copyright couldn't be empty");
return false;
}
farHeader.setCopyright(this.jTextFieldCopyright.getText());
//
// Check License
//
if (isEmpty(this.jTextAreaLicense.getText())) {
Log.err("License couldn't be empty");
return false;
}
farHeader.setLicense(this.jTextAreaLicense.getText());
farHeader.setSpecification(this.jTextFieldSpecification.getText());
return true;
}
/**
* Check the input data is empty or not
*
* @param strValue
* The input data which need be checked
*
* @retval true - The input data is empty
* @retval fals - The input data is not empty
*
*/
public boolean isEmpty(String strValue) {
if (strValue.length() > 0) {
return false;
}
return true;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
} else if (e.getSource() == jButtonNext) {
//
// Add some logic process here
//
if (!valid()) {
return;
}
if (stepTwo == null) {
stepTwo = new CreateStepTwo(this, true, this);
}
this.setVisible(false);
stepTwo.setVisible(true);
} else if (e.getSource() == jButtonGenerateGuid) {
this.jTextFieldGuid.setText(Tools.generateUuidString());
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public FarHeader getFarHeader() {
return farHeader;
}
}

View File

@ -0,0 +1,294 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.createui;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JLabel;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class CreateStepThree extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = 7559888600474043337L;
private JPanel jContentPane = null;
private JTextArea jTextArea = null;
private JButton jButtonNext = null;
private JButton jButtonCancel = null;
private JButton jButtonPrevious = null;
private JLabel jLabel = null;
private ICheckBoxList jComboBoxFileFilter = null;
private JScrollPane jScrollPane = null;
private JLabel jLabel1 = null;
private JTextField jTextField = null;
Vector<String> v = new Vector<String>();
private CreateStepTwo stepTwo = null;
private CreateStepFour stepFour = null;
public CreateStepThree(IDialog iDialog, boolean modal, CreateStepTwo stepTwo) {
this(iDialog, modal);
this.stepTwo = stepTwo;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextArea.setText("Step 2: Set File Filter\n");
jTextArea.append("Add more file filter regular expressions in text field separated with space. \n");
jTextArea.append("Note that regular expressions please reference PERL language. ");
jTextArea.setEditable(false);
}
return jTextArea;
}
/**
* This method initializes jButtonNext
*
* @return javax.swing.JButton
*/
private JButton getJButtonNext() {
if (jButtonNext == null) {
jButtonNext = new JButton();
jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonNext.setText("Next");
jButtonNext.addMouseListener(this);
}
return jButtonNext;
}
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonPrevious
*
* @return javax.swing.JButton
*/
private JButton getJButtonPrevious() {
if (jButtonPrevious == null) {
jButtonPrevious = new JButton();
jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));
jButtonPrevious.setText("Previous");
jButtonPrevious.addMouseListener(this);
}
return jButtonPrevious;
}
/**
* This method initializes jComboBox
*
* @return javax.swing.JComboBox
*/
private ICheckBoxList getJComboBoxFileFilter() {
if (jComboBoxFileFilter == null) {
jComboBoxFileFilter = new ICheckBoxList();
v.addElement(".svn");
v.addElement("CVS");
jComboBoxFileFilter.setAllItems(v);
jComboBoxFileFilter.initCheckedItem(true, v);
}
return jComboBoxFileFilter;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(139, 85, 500, 130));
jScrollPane.setViewportView(getJComboBoxFileFilter());
}
return jScrollPane;
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new java.awt.Rectangle(139, 250, 500, 20));
}
return jTextField;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/**
* This is the default constructor
*/
public CreateStepThree(IDialog iDialog, boolean modal) {
super(iDialog, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Create Framework Archive(FAR) - Step 3: Set File Filter");
this.centerWindow();
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel1 = new JLabel();
jLabel1.setBounds(new java.awt.Rectangle(30, 220, 260, 20));
jLabel1.setText("Input File Filter Pattern (Ref to ...)");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 64, 160, 20));
jLabel.setText("File Filter Pattern: ");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(getJButtonNext(), null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonPrevious(), null);
jContentPane.add(jLabel, null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJTextField(), null);
}
return jContentPane;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
} else if (e.getSource() == jButtonNext) {
//
// Add some logic process here
//
if (stepFour == null) {
stepFour = new CreateStepFour(this, true, this);
stepFour.setVisible(true);
} else {
stepFour.setVisible(true);
}
this.setVisible(false);
} else if (e.getSource() == jButtonPrevious) {
this.setVisible(false);
stepTwo.setVisible(true);
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public Set<String> getFileFilter() {
Set<String> result = new LinkedHashSet<String>();
Vector<Integer> selected = jComboBoxFileFilter.getAllCheckedItemsIndex();
Iterator<Integer> iter = selected.iterator();
while (iter.hasNext()) {
result.add(v.get(iter.next().intValue()));
}
String[] userdefined = jTextField.getText().split(" ");
for (int i = 0; i < userdefined.length; i++) {
if (!userdefined[i].trim().equalsIgnoreCase("")) {
result.add(userdefined[i]);
}
}
return result;
}
public CreateStepTwo getPreviousStep() {
return stepTwo;
}
}

View File

@ -0,0 +1,322 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.createui;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import org.tianocore.frameworkwizard.common.Log;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
public class CreateStepTwo extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = 3003841865197005528L;
private JPanel jContentPane = null;
private JTextArea jTextArea = null;
private JLabel jLabel = null;
private JLabel jLabel1 = null;
private ICheckBoxList jComboBoxPackage = null;
private ICheckBoxList jComboBoxPlatform = null;
private JButton jButtonNext = null;
private JButton jButtonCancel = null;
private JScrollPane jScrollPanePackage = null;
private JScrollPane jScrollPanePlatform = null;
private CreateStepThree stepThree = null;
private Vector<PlatformIdentification> platformVector = null;
private Vector<PackageIdentification> packageVector = null;
private CreateStepOne stepOne = null;
private JButton jButtonPrevious = null;
public CreateStepTwo(IDialog iDialog, boolean modal, CreateStepOne stepOne) {
this(iDialog, modal);
this.stepOne = stepOne;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextArea.setText("Step 1: Choose Packages and Platforms\n");
jTextArea.append("Choose at least one package or platform. ");
jTextArea.setEditable(false);
}
return jTextArea;
}
/**
* This method initializes jComboBox
*
* @return javax.swing.JComboBox
*/
private ICheckBoxList getJComboBoxPackage() {
if (jComboBoxPackage == null) {
jComboBoxPackage = new ICheckBoxList();
WorkspaceTools wt = new WorkspaceTools();
Vector<String> v = new Vector<String>();
packageVector = wt.getAllPackages();
Iterator<PackageIdentification> iter = packageVector.iterator();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
String str = item.getName() + " " + item.getVersion() + " [" + item.getPath() + "]";
v.addElement(str);
}
jComboBoxPackage.setAllItems(v);
}
return jComboBoxPackage;
}
/**
* This method initializes jComboBox1
*
* @return javax.swing.JComboBox
*/
private ICheckBoxList getJComboBoxPlatform() {
if (jComboBoxPlatform == null) {
jComboBoxPlatform = new ICheckBoxList();
WorkspaceTools wt = new WorkspaceTools();
Vector<String> v = new Vector<String>();
platformVector = wt.getAllPlatforms();
Iterator<PlatformIdentification> iter = platformVector.iterator();
while (iter.hasNext()) {
PlatformIdentification item = iter.next();
String str = item.getName() + " " + item.getVersion() + " [" + item.getPath() + "]";
v.addElement(str);
}
jComboBoxPlatform.setAllItems(v);
}
return jComboBoxPlatform;
}
/**
* This method initializes jButtonNext
*
* @return javax.swing.JButton
*/
private JButton getJButtonNext() {
if (jButtonNext == null) {
jButtonNext = new JButton();
jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonNext.setText("Next");
jButtonNext.addMouseListener(this);
}
return jButtonNext;
}
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPanePackage() {
if (jScrollPanePackage == null) {
jScrollPanePackage = new JScrollPane();
jScrollPanePackage.setBounds(new java.awt.Rectangle(139, 64, 500, 130));
jScrollPanePackage.setViewportView(getJComboBoxPackage());
}
return jScrollPanePackage;
}
/**
* This method initializes jScrollPane1
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPanePlatform() {
if (jScrollPanePlatform == null) {
jScrollPanePlatform = new JScrollPane();
jScrollPanePlatform.setBounds(new java.awt.Rectangle(139, 200, 500, 100));
jScrollPanePlatform.setViewportView(getJComboBoxPlatform());
}
return jScrollPanePlatform;
}
/**
* This is the default constructor
*/
public CreateStepTwo(IDialog iDialog, boolean modal) {
super(iDialog, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Create Framework Archive(FAR) - Step 2: Choose Packages and Platform");
this.centerWindow();
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel1 = new JLabel();
jLabel1.setBounds(new java.awt.Rectangle(30, 200, 100, 20));
jLabel1.setText("Platforms: ");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 64, 100, 20));
jLabel.setText("Packages:");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(jLabel, null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJButtonNext(), null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJScrollPanePackage(), null);
jContentPane.add(getJScrollPanePlatform(), null);
jContentPane.add(getJButtonPrevious(), null);
}
return jContentPane;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
} else if (e.getSource() == jButtonPrevious) {
this.setVisible(false);
stepOne.setVisible(true);
} else if (e.getSource() == jButtonNext) {
//
// Add some logic process here
//
if (jComboBoxPlatform.getAllCheckedItemsIndex().size() == 0
&& jComboBoxPackage.getAllCheckedItemsIndex().size() == 0) {
Log.err("At least choose one of packages and platforms. ");
return;
}
if (stepThree == null) {
stepThree = new CreateStepThree(this, true, this);
}
this.setVisible(false);
stepThree.setVisible(true);
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
/**
* This method initializes jButtonPrevious
*
* @return javax.swing.JButton
*/
private JButton getJButtonPrevious() {
if (jButtonPrevious == null) {
jButtonPrevious = new JButton();
jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));
jButtonPrevious.setText("Previous");
jButtonPrevious.addMouseListener(this);
}
return jButtonPrevious;
}
public List<PackageIdentification> getSelectedPackages() {
Vector<Integer> v = jComboBoxPackage.getAllCheckedItemsIndex();
List<PackageIdentification> result = new ArrayList<PackageIdentification>();
for (int i = 0; i < v.size(); i++) {
result.add(packageVector.get(v.get(i).intValue()));
}
return result;
}
public List<PlatformIdentification> getSelectedPlatforms() {
Vector<Integer> v = jComboBoxPlatform.getAllCheckedItemsIndex();
List<PlatformIdentification> result = new ArrayList<PlatformIdentification>();
for (int i = 0; i < v.size(); i++) {
result.add(platformVector.get(v.get(i).intValue()));
}
return result;
}
public CreateStepOne getPreviousStep() {
return stepOne;
}
}

View File

@ -0,0 +1,396 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.deleteui;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.common.ui.IFrame;
import org.tianocore.frameworkwizard.far.AggregationOperation;
import org.tianocore.frameworkwizard.far.FarIdentification;
import org.tianocore.frameworkwizard.far.PackageQuery;
import org.tianocore.frameworkwizard.far.PackageQueryInterface;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class DeleteStepOne extends IDialog implements ListSelectionListener, MouseListener {
/**
*
*/
private static final long serialVersionUID = 636773964435618476L;
private JPanel jContentPane = null;
private JButton jButtonCancel = null;
private JButton jButtonNext = null;
private JTextArea jTextAreaInstruction = null;
private JLabel jLabel = null;
private JScrollPane jScrollPane = null;
private JLabel jLabel2 = null;
private JLabel jLabel3 = null;
private JScrollPane jScrollPane1 = null;
private JScrollPane jScrollPane2 = null;
private JList jListPlatform = null;
private JList jListPackage = null;
private JLabel jLabel4 = null;
private JButton jButtonDetail = null;
private JList jListFar = null;
private JLabel jLabelImage = null;
private Vector<FarIdentification> farVector = null;
Vector<PackageIdentification> removePackages = null;
Vector<PlatformIdentification> removePlatforms = null;
private DeleteStepTwo stepTwo = null;
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonFinish
*
* @return javax.swing.JButton
*/
private JButton getJButtonNext() {
if (jButtonNext == null) {
jButtonNext = new JButton();
jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonNext.setText("Next");
jButtonNext.setEnabled(false);
}
return jButtonNext;
}
/**
* This method initializes jTextArea1
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea1() {
if (jTextAreaInstruction == null) {
jTextAreaInstruction = new JTextArea();
jTextAreaInstruction.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextAreaInstruction.setText("Step 1: Choose FAR from framework database. \n");
jTextAreaInstruction.setCaretColor(Color.RED);
jTextAreaInstruction
.append("After choose FAR, the packages and platforms which belong to the FAR will display. \n");
jTextAreaInstruction.append("Picture \"Okay\" or \"No\" indicates whether FAR can be removed or not. ");
jTextAreaInstruction.setEditable(false);
}
return jTextAreaInstruction;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(139, 64, 500, 104));
jScrollPane.setViewportView(getJListFar());
}
return jScrollPane;
}
/**
* This method initializes jScrollPane1
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane1() {
if (jScrollPane1 == null) {
jScrollPane1 = new JScrollPane();
jScrollPane1.setBounds(new java.awt.Rectangle(40, 195, 300, 115));
jScrollPane1.setViewportView(getJListPackage());
}
return jScrollPane1;
}
/**
* This method initializes jScrollPane2
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane2() {
if (jScrollPane2 == null) {
jScrollPane2 = new JScrollPane();
jScrollPane2.setBounds(new java.awt.Rectangle(360, 195, 300, 115));
jScrollPane2.setViewportView(getJListPlatform());
}
return jScrollPane2;
}
/**
* This method initializes jList
*
* @return javax.swing.JList
*/
private JList getJListPlatform() {
if (jListPlatform == null) {
jListPlatform = new JList();
jListPlatform.setEnabled(false);
}
return jListPlatform;
}
/**
* This method initializes jList1
*
* @return javax.swing.JList
*/
private JList getJListPackage() {
if (jListPackage == null) {
jListPackage = new JList();
jListPackage.setEnabled(false);
}
return jListPackage;
}
/**
* This method initializes jButtonDetail
*
* @return javax.swing.JButton
*/
private JButton getJButtonDetail() {
if (jButtonDetail == null) {
jButtonDetail = new JButton();
jButtonDetail.setBounds(new java.awt.Rectangle(367, 325, 69, 20));
jButtonDetail.setText("Detail");
jButtonDetail.setVisible(false);
jButtonDetail.addMouseListener(this);
}
return jButtonDetail;
}
/**
* This method initializes jListFar
*
* @return javax.swing.JList
*/
private JList getJListFar() {
if (jListFar == null) {
jListFar = new JList();
WorkspaceTools wt = new WorkspaceTools();
farVector = wt.getAllFars();
jListFar.setListData(farVector);
jListFar.addListSelectionListener(this);
}
return jListFar;
}
/**
* This is the default constructor
*/
public DeleteStepOne(IFrame iFrame, boolean modal) {
super(iFrame, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Delete Framework Archive(FAR) - Step 1: Choose FAR from framework database");
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabelImage = new JLabel();
jLabelImage.setBounds(new java.awt.Rectangle(30, 319, 36, 36));
jLabel4 = new JLabel();
jLabel4.setBounds(new java.awt.Rectangle(71, 325, 289, 20));
jLabel3 = new JLabel();
jLabel3.setBounds(new java.awt.Rectangle(360, 170, 113, 20));
jLabel3.setText("FAR's Platforms");
jLabel2 = new JLabel();
jLabel2.setBounds(new java.awt.Rectangle(40, 170, 113, 20));
jLabel2.setText("FAR's Packages");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 64, 100, 20));
jLabel.setText("Select one FAR: ");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonNext(), null);
jContentPane.add(getJTextArea1(), null);
jContentPane.add(jLabel, null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(jLabel2, null);
jContentPane.add(jLabel3, null);
jContentPane.add(getJScrollPane1(), null);
jContentPane.add(getJScrollPane2(), null);
jContentPane.add(jLabel4, null);
jContentPane.add(getJButtonDetail(), null);
jContentPane.add(jLabelImage, null);
}
return jContentPane;
}
public void valueChanged(ListSelectionEvent e) {
//
// Add logic for FAR list value changed
//
if (e.getSource() == jListFar) {
boolean flag = true;
FarIdentification far = (FarIdentification) jListFar.getSelectedValue();
WorkspaceTools wt = new WorkspaceTools();
removePackages = wt.getPackagesByFar(far);
jListPackage.setListData(removePackages);
removePlatforms = wt.getPlatformsByFar(far);
jListPlatform.setListData(removePlatforms);
//
// Get Dependencies Info for current FAR
//
List<PackageIdentification> allPackages = wt.getAllPackages();
//
// Remain packages
//
allPackages.removeAll(removePackages);
Iterator<PackageIdentification> iter = allPackages.iterator();
PackageQueryInterface pq = new PackageQuery();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
List<PackageIdentification> list = pq.getPackageDependencies(item.getSpdFile());
List<PackageIdentification> result = AggregationOperation.minus(list, allPackages);
if (result.size() > 0) {
if (AggregationOperation.intersection(result, removePackages).size() > 0) {
flag = false;
break;
}
}
}
if (flag) {
jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/Yes.JPG")));
jLabel4.setText("Without any remain packages depend on this FAR. ");
jButtonDetail.setVisible(false);
jButtonNext.setEnabled(true);
jButtonNext.addMouseListener(this);
} else {
jLabelImage.setIcon(new ImageIcon(getClass().getResource("/resources/images/No.JPG")));
jLabel4.setText("Some remain packages still depend on this FAR. ");
// jButtonDetail.setVisible(true);
jButtonNext.setEnabled(false);
jButtonNext.removeMouseListener(this);
}
}
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
} else if (e.getSource() == jButtonNext) {
//
// Add some logic process here
//
if (stepTwo == null) {
stepTwo = new DeleteStepTwo(this, true, this);
}
this.setVisible(false);
stepTwo.setVisible(true);
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public FarIdentification getSelecedFar() {
return (FarIdentification) jListFar.getSelectedValue();
}
}

View File

@ -0,0 +1,350 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.deleteui;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import org.tianocore.frameworkwizard.common.DataType;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.far.FarIdentification;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
public class DeleteStepTwo extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = -1333748185798962746L;
private JPanel jContentPane = null;
private JButton jButtonCancel = null;
private JButton jButtonFinish = null;
private JButton jButtonPrevious = null;
private JTextArea jTextArea = null;
private JLabel jLabel = null;
private JRadioButton jRadioButton = null;
private JRadioButton jRadioButton1 = null;
private DeleteStepOne stepOne = null;
public DeleteStepTwo(IDialog iDialog, boolean modal, DeleteStepOne stepOne) {
this(iDialog, modal);
this.stepOne = stepOne;
}
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonFinish
*
* @return javax.swing.JButton
*/
private JButton getJButtonFinish() {
if (jButtonFinish == null) {
jButtonFinish = new JButton();
jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonFinish.setText("Finish");
jButtonFinish.addMouseListener(this);
}
return jButtonFinish;
}
/**
* This method initializes jButtonPrevious
*
* @return javax.swing.JButton
*/
private JButton getJButtonPrevious() {
if (jButtonPrevious == null) {
jButtonPrevious = new JButton();
jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));
jButtonPrevious.setText("Previous");
jButtonPrevious.addMouseListener(this);
}
return jButtonPrevious;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextArea.setText("Step 2: Choose Delete Mode. \n");
jTextArea.append("Mode 1 only remove register information from framework database. \n");
jTextArea.append("Mode 2 also delete all files from file system. ");
jTextArea.setEditable(false);
}
return jTextArea;
}
/**
* This method initializes jRadioButton
*
* @return javax.swing.JRadioButton
*/
private JRadioButton getJRadioButton() {
if (jRadioButton == null) {
jRadioButton = new JRadioButton();
jRadioButton.setBounds(new java.awt.Rectangle(100, 100, 340, 20));
jRadioButton.setSelected(true);
jRadioButton.setText("Mode 1: Only remove from framework database");
}
return jRadioButton;
}
/**
* This method initializes jRadioButton1
*
* @return javax.swing.JRadioButton
*/
private JRadioButton getJRadioButton1() {
if (jRadioButton1 == null) {
jRadioButton1 = new JRadioButton();
jRadioButton1.setBounds(new java.awt.Rectangle(100, 140, 358, 20));
jRadioButton1.setText("Mode 2: Delete all related files from workspace");
}
return jRadioButton1;
}
/**
* This is the default constructor
*/
public DeleteStepTwo(IDialog iDialog, boolean modal) {
super(iDialog, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Delete Framework Archive(FAR) - Step 2: Choose Delete Mode");
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 70, 200, 20));
jLabel.setText("Select delete mode: ");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonFinish(), null);
jContentPane.add(getJButtonPrevious(), null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(jLabel, null);
ButtonGroup group = new ButtonGroup();
group.add(getJRadioButton());
group.add(getJRadioButton1());
jContentPane.add(getJRadioButton(), null);
jContentPane.add(getJRadioButton1(), null);
}
return jContentPane;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
this.dispose();
} else if (e.getSource() == jButtonFinish) {
FarIdentification far = stepOne.getSelecedFar();
WorkspaceTools wt = new WorkspaceTools();
//
// If remove all source files
//
if (jRadioButton1.isSelected()) {
Vector<PackageIdentification> removePackages = wt.getPackagesByFar(far);
Vector<PlatformIdentification> removePlatforms = wt.getPlatformsByFar(far);
Vector<PlatformIdentification> allPlatforms = wt.getAllPlatforms();
Set<File> allPlatformFiles = new LinkedHashSet<File>();
Iterator<PlatformIdentification> iter = allPlatforms.iterator();
while (iter.hasNext()) {
allPlatformFiles.add(iter.next().getFpdFile());
}
//
// For all platforms, only remove its FPD file
//
Iterator<PlatformIdentification> platfomrIter = removePlatforms.iterator();
while (platfomrIter.hasNext()) {
PlatformIdentification item = platfomrIter.next();
allPlatformFiles.remove(item.getFpdFile());
File parentDir = item.getFpdFile().getParentFile();
item.getFpdFile().delete();
//
// Remove all empty parent dir
//
while (parentDir.listFiles().length == 0) {
File tempFile = parentDir;
parentDir = parentDir.getParentFile();
tempFile.delete();
}
}
//
// For all packages, remove all files.
// Exception FPD file still in DB
//
Iterator<PackageIdentification> packageIter = removePackages.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();
}
}
}
//
// Update DB file
//
wt.removeFarFromDb(far);
this.setVisible(false);
this.stepOne.returnType = DataType.RETURN_TYPE_OK;
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 mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
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]);
}
}
}
}
private void deleteFiles(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
deleteFiles(files[i]);
}
}
file.delete();
}
private boolean isContain(File dir, Set<File> platformFiles) {
Iterator<File> iter = platformFiles.iterator();
while (iter.hasNext()) {
File file = iter.next();
if (file.getPath().startsWith(dir.getPath())) {
//
// continue this FPD file
//
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,361 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.installui;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.List;
import java.util.jar.JarFile;
import java.util.Iterator;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import org.tianocore.frameworkwizard.common.DataType;
import org.tianocore.frameworkwizard.common.IFileFilter;
import org.tianocore.frameworkwizard.common.Log;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.common.ui.IFrame;
import org.tianocore.frameworkwizard.far.DistributeRule;
import org.tianocore.frameworkwizard.far.Far;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.workspace.Workspace;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class InstallStepOne extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = -8821906198791949544L;
private JPanel jContentPane = null;
private JButton jButtonCancel = null;
private JButton jButtonNext = null;
private JTextArea jTextArea = null;
private JLabel jLabel = null;
private JTextField jTextFieldFarFile = null;
private JButton jButtonBrowser = null;
private InstallStepTwo stepTwo = null;
Far far = null;
private JLabel jLabelWarning = null;
private JScrollPane jScrollPane = null;
private JTable jTable = null;
private PartialTableModel model = null;
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonNext
*
* @return javax.swing.JButton
*/
private JButton getJButtonNext() {
if (jButtonNext == null) {
jButtonNext = new JButton();
jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonNext.setText("Next");
jButtonNext.addMouseListener(this);
}
return jButtonNext;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextArea.setText("Step 1: Choose a framework archive(FAR) file. \n");
jTextArea.setEditable(false);
}
return jTextArea;
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldFarFile() {
if (jTextFieldFarFile == null) {
jTextFieldFarFile = new JTextField();
jTextFieldFarFile.setBounds(new java.awt.Rectangle(139, 100, 400, 20));
}
return jTextFieldFarFile;
}
/**
* This method initializes jButtonBrowser
*
* @return javax.swing.JButton
*/
private JButton getJButtonBrowser() {
if (jButtonBrowser == null) {
jButtonBrowser = new JButton();
jButtonBrowser.setBounds(new java.awt.Rectangle(542, 100, 97, 20));
jButtonBrowser.setText("Browser...");
jButtonBrowser.addMouseListener(this);
}
return jButtonBrowser;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(27, 166, 511, 143));
jScrollPane.setViewportView(getJTable());
}
jScrollPane.setVisible(false);
return jScrollPane;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTable() {
if (jTable == null) {
jTable = new JTable();
model = new PartialTableModel();
jTable = new JTable(model);
jTable.setRowHeight(20);
jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
model.addColumn("Name");
model.addColumn("Version");
model.addColumn("GUID");
jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
jTable.setVisible(false);
return jTable;
}
public void prepareTable(List<PackageIdentification> packageList) {
model.setRowCount(0);
//
// Change here to get packages and platforms from FAR
//
Iterator<PackageIdentification> iter = packageList.iterator();
while (iter.hasNext()) {
String[] str = new String[3];
PackageIdentification item = iter.next();
str[0] = item.getName();
str[1] = item.getVersion();
str[2] = item.getGuid();
model.addRow(str);
}
}
/**
* This is the default constructor
*/
public InstallStepOne(IFrame iFrame, boolean modal) {
super(iFrame, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Install Framework Archive(FAR) - Step 1: Choose FAR file");
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabelWarning = new JLabel();
jLabelWarning.setBounds(new java.awt.Rectangle(29, 134, 410, 20));
jLabelWarning.setText("Can't install this FAR, lack following packages in current workspace");
jLabelWarning.setVisible(false);
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 80, 220, 20));
jLabel.setText("Choose FAR file: ");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonNext(), null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(jLabel, null);
jContentPane.add(getJTextFieldFarFile(), null);
jContentPane.add(getJButtonBrowser(), null);
jContentPane.add(jLabelWarning, null);
jContentPane.add(getJScrollPane(), null);
}
return jContentPane;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
} else if (e.getSource() == jButtonNext) {
//
// Add some logic process here
//
File farFile = new File(jTextFieldFarFile.getText());
if (!farFile.exists() || !farFile.isFile()) {
Log.err("Please choose a FAR file already exists. ");
return;
}
//
// Verify Far
//
JarFile jarFar;
try {
jarFar = new JarFile(farFile);
far = new Far(jarFar);
//
// Far dependency check
//
List<PackageIdentification> pkgIdList = DistributeRule.installFarCheck(far);
if (pkgIdList.size() > 0) {
prepareTable(pkgIdList);
jLabelWarning.setVisible(true);
jTable.setVisible(true);
jScrollPane.setVisible(true);
return;
}
} catch (Exception exp) {
exp.printStackTrace();
Log.err("Far file invaild! The error message as follow:" + exp.getMessage());
}
if (stepTwo == null) {
stepTwo = new InstallStepTwo(this, true, this);
}
this.setVisible(false);
//
// Refresh table
//
stepTwo.preparePackageTable();
stepTwo.preparePlatformTable();
stepTwo.setVisible(true);
} else if (e.getSource() == jButtonBrowser) {
JFileChooser fc = new JFileChooser();
fc.setAcceptAllFileFilterUsed(false);
fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));
fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));
int result = fc.showSaveDialog(new JPanel());
if (result == JFileChooser.APPROVE_OPTION) {
jLabelWarning.setVisible(false);
jTable.setVisible(false);
jScrollPane.setVisible(false);
this.jTextFieldFarFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),
DataType.RETURN_TYPE_FAR_SURFACE_AREA));
}
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public Far getFar() {
return far;
}
}
class PartialTableModel extends DefaultTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int col) {
switch (col) {
default:
return false;
}
}
}

View File

@ -0,0 +1,467 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.installui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTable;
import org.tianocore.frameworkwizard.common.DataType;
import org.tianocore.frameworkwizard.common.Log;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.far.Far;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
import org.tianocore.frameworkwizard.workspace.Workspace;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
public class InstallStepTwo extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = 4583090421587036969L;
private JPanel jContentPane = null;
private JTextArea jTextArea = null;
private PartialEditableTableModel packageModel = null;
private PartialEditableTableModel platformModel = null;
private InstallStepOne stepOne = null;
private JButton jButtonCancel = null;
private JButton jButtonFinish = null;
private JButton jButtonPrevious = null;
private JLabel jLabel = null;
private JScrollPane jScrollPane = null;
private JTable jTablePackage = null;
private JLabel jLabel1 = null;
private JScrollPane jScrollPane1 = null;
private JTable jTablePlatform = null;
List<PlatformIdentification> platformVector = null;
List<PackageIdentification> packageVector = null;
public InstallStepTwo(IDialog iDialog, boolean modal, InstallStepOne stepOne) {
this(iDialog, modal);
this.stepOne = stepOne;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextArea.setText("Step 2: Set Path for Packages and Platforms. \n");
jTextArea.setCaretColor(Color.RED);
jTextArea.append("Note that path is relative to WORKSPACE. ");
jTextArea.setEditable(false);
}
return jTextArea;
}
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonFinish
*
* @return javax.swing.JButton
*/
private JButton getJButtonFinish() {
if (jButtonFinish == null) {
jButtonFinish = new JButton();
jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonFinish.setText("Finish");
jButtonFinish.addMouseListener(this);
}
return jButtonFinish;
}
/**
* This method initializes jButtonPrevious
*
* @return javax.swing.JButton
*/
private JButton getJButtonPrevious() {
if (jButtonPrevious == null) {
jButtonPrevious = new JButton();
jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));
jButtonPrevious.setText("Previous");
jButtonPrevious.addMouseListener(this);
}
return jButtonPrevious;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(35, 81, 600, 113));
jScrollPane.setViewportView(getJTablePackage());
}
return jScrollPane;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JTable getJTablePackage() {
if (jTablePackage == null) {
jTablePackage = new JTable();
packageModel = new PartialEditableTableModel();
jTablePackage = new JTable(packageModel);
jTablePackage.setRowHeight(20);
jTablePackage.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
packageModel.addColumn("Name");
packageModel.addColumn("Version");
packageModel.addColumn("Default Path");
packageModel.addColumn("Install To");
jTablePackage.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
return jTablePackage;
}
public void preparePackageTable() {
packageModel.setRowCount(0);
//
// Change here to get packages and platforms from FAR
//
try {
Far far = stepOne.getFar();
packageVector = far.mainfest.getPackageList();
Iterator<PackageIdentification> iter = packageVector.iterator();
while (iter.hasNext()) {
String[] str = new String[4];
PackageIdentification item = iter.next();
str[0] = item.getName();
str[1] = item.getVersion();
str[2] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));
str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));
packageModel.addRow(str);
}
} catch (Exception e) {
}
}
/**
* This method initializes jScrollPane1
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane1() {
if (jScrollPane1 == null) {
jScrollPane1 = new JScrollPane();
jScrollPane1.setBounds(new java.awt.Rectangle(35, 214, 596, 112));
jScrollPane1.setViewportView(getJTablePlatform());
}
return jScrollPane1;
}
/**
* This method initializes jTablePlatform
*
* @return javax.swing.JTable
*/
private JTable getJTablePlatform() {
if (jTablePlatform == null) {
jTablePlatform = new JTable();
platformModel = new PartialEditableTableModel();
jTablePlatform = new JTable(platformModel);
jTablePlatform.setRowHeight(20);
jTablePlatform.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
platformModel.addColumn("Name");
platformModel.addColumn("Version");
platformModel.addColumn("Default Path");
platformModel.addColumn("Install To");
jTablePlatform.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
preparePlatformTable();
}
return jTablePlatform;
}
public void preparePlatformTable() {
platformModel.setRowCount(0);
//
// Change here to get packages and platforms from FAR
//
try {
Far far = stepOne.getFar();
platformVector = far.mainfest.getPlatformList();
Iterator<PlatformIdentification> iter = platformVector.iterator();
while (iter.hasNext()) {
String[] str = new String[4];
PlatformIdentification item = iter.next();
str[0] = item.getName();
str[1] = item.getVersion();
str[2] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));
str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));
platformModel.addRow(str);
}
} catch (Exception e) {
}
}
/**
* This is the default constructor
*/
public InstallStepTwo(IDialog iDialog, boolean modal) {
super(iDialog, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Install Framework Archive(FAR) - Step 2: Set Path for Packages and Platforms");
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel1 = new JLabel();
jLabel1.setBounds(new java.awt.Rectangle(30, 195, 348, 18));
jLabel1.setText("Edit pathes for platforms: ");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(29, 60, 366, 20));
jLabel.setText("Edit pathes for packages");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonFinish(), null);
jContentPane.add(getJButtonPrevious(), null);
jContentPane.add(jLabel, null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJScrollPane1(), null);
}
return jContentPane;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
this.dispose();
} else if (e.getSource() == jButtonFinish) {
List<String> packageList = new ArrayList<String>();
List<String> platformList = new ArrayList<String>();
//
// Add some logic process here
// Guid Check, File Check etc.
//
Set<File> allNewPath = new LinkedHashSet<File>();
Map<PackageIdentification, File> packageMap = new LinkedHashMap<PackageIdentification, File>();
for (int i = 0; i < packageModel.getRowCount(); i++) {
File toFile = new File(Workspace.getCurrentWorkspace() + File.separatorChar
+ packageModel.getValueAt(i, 3));
if (!isPackagePathValid(toFile)) {
Log.err(packageVector.get(i) + " path already has package now. ");
return;
}
if (allNewPath.contains(toFile)) {
Log.err("Path " + packageModel.getValueAt(i, 3) + " is specified by twice. ");
return;
}
allNewPath.add(toFile);
File spdFile = new File((String) packageModel.getValueAt(i, 3) + File.separatorChar
+ packageVector.get(i).getSpdFile().getName());
packageList.add(spdFile.getPath());
packageMap.put(packageVector.get(i), toFile);
}
Map<PlatformIdentification, File> platformMap = new LinkedHashMap<PlatformIdentification, File>();
for (int i = 0; i < platformModel.getRowCount(); i++) {
File toFile = new File(Workspace.getCurrentWorkspace() + File.separatorChar
+ platformModel.getValueAt(i, 3));
if (!isPlatformPathValid(toFile)) {
Log.err(platformVector.get(i) + " path already has platform now. ");
return;
}
File fpdFile = new File((String) platformModel.getValueAt(i, 3) + File.separatorChar
+ platformVector.get(i).getFpdFile().getName());
platformList.add(fpdFile.getPath());
platformMap.put(platformVector.get(i), toFile);
}
//
//
//
Far far = stepOne.getFar();
try {
far.InstallFar(platformMap, packageMap);
//
// Add to database
//
WorkspaceTools wt = new WorkspaceTools();
wt.addFarToDb(packageList, platformList, far.mainfest.getHeader());
} catch (Exception ex) {
ex.printStackTrace();
Log.err("Install error. ");
return;
}
this.setVisible(false);
this.stepOne.returnType = DataType.RETURN_TYPE_OK;
this.dispose();
} else if (e.getSource() == jButtonPrevious) {
this.setVisible(false);
stepOne.setVisible(true);
}
}
private boolean isPackagePathValid(File spdFile) {
WorkspaceTools wt = new WorkspaceTools();
List<PackageIdentification> allPackages = wt.getAllPackages();
Iterator<PackageIdentification> iter = allPackages.iterator();
while (iter.hasNext()) {
PackageIdentification item = iter.next();
if (isPathContainMutual(spdFile, item.getSpdFile())) {
return false;
}
}
return true;
}
private boolean isPlatformPathValid(File fpdFile) {
WorkspaceTools wt = new WorkspaceTools();
List<PlatformIdentification> allPlatforms = wt.getAllPlatforms();
Iterator<PlatformIdentification> iter = allPlatforms.iterator();
while (iter.hasNext()) {
PlatformIdentification item = iter.next();
if (isPathContainMutual(fpdFile, item.getFpdFile())) {
return false;
}
}
return true;
}
private boolean isPathContainMutual(File path1, File path2) {
if (path1.getPath().startsWith(path2.getParent())) {
return true;
}
if (path2.getPath().startsWith(path1.getPath())) {
return true;
}
return false;
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
class PartialEditableTableModel extends DefaultTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int col) {
switch (col) {
case 3:
return true;
default:
return false;
}
}
}

View File

@ -0,0 +1,305 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.updateui;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.Vector;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import org.tianocore.frameworkwizard.common.DataType;
import org.tianocore.frameworkwizard.common.IFileFilter;
import org.tianocore.frameworkwizard.common.Log;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.common.ui.IFrame;
import org.tianocore.frameworkwizard.far.Far;
import org.tianocore.frameworkwizard.far.FarIdentification;
import org.tianocore.frameworkwizard.workspace.Workspace;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
import javax.swing.JScrollPane;
import javax.swing.JList;
public class UpdateStepOne extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = 735554907464539931L;
private JPanel jContentPane = null;
private JTextArea jTextArea = null;
private JButton jButtonCancel = null;
private JButton jButtonNext = null;
private JLabel jLabel = null;
private JTextField jTextFieldFarFile = null;
private JButton jButtonBrowser = null;
private UpdateStepTwo stepTwo = null;
private Far far = null;
private Vector<FarIdentification> farVector = null;
private JLabel jLabel1 = null;
private JScrollPane jScrollPane = null;
private JList jListFarFromDb = null;
private File farFile = null;
public File getFarFile() {
return farFile;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextArea.setText("Step 1: Choose framework archive (FAR) file. \n");
jTextArea.setEditable(false);
}
return jTextArea;
}
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonNext
*
* @return javax.swing.JButton
*/
private JButton getJButtonNext() {
if (jButtonNext == null) {
jButtonNext = new JButton();
jButtonNext.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonNext.setText("Next");
jButtonNext.addMouseListener(this);
}
return jButtonNext;
}
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextFieldFarFile() {
if (jTextFieldFarFile == null) {
jTextFieldFarFile = new JTextField();
jTextFieldFarFile.setBounds(new java.awt.Rectangle(130, 100, 400, 20));
}
return jTextFieldFarFile;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButtonBrowser() {
if (jButtonBrowser == null) {
jButtonBrowser = new JButton();
jButtonBrowser.setBounds(new java.awt.Rectangle(542, 100, 97, 20));
jButtonBrowser.setText("Browser...");
jButtonBrowser.addMouseListener(this);
}
return jButtonBrowser;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(130, 164, 500, 160));
jScrollPane.setViewportView(getJListFarFromDb());
}
return jScrollPane;
}
/**
* This method initializes jListFarFromDb
*
* @return javax.swing.JList
*/
private JList getJListFarFromDb() {
if (jListFarFromDb == null) {
jListFarFromDb = new JList();
WorkspaceTools wt = new WorkspaceTools();
farVector = wt.getAllFars();
jListFarFromDb.setListData(farVector);
}
return jListFarFromDb;
}
/**
* This is the default constructor
*/
public UpdateStepOne(IFrame iFrame, boolean modal) {
super(iFrame, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Update Framework Archive(FAR) - Step 1: Choose FAR File");
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel1 = new JLabel();
jLabel1.setBounds(new java.awt.Rectangle(30, 138, 355, 18));
jLabel1.setText("Choose FAR from current framework database");
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 80, 220, 20));
jLabel.setText("Choose FAR file: ");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonNext(), null);
jContentPane.add(jLabel, null);
jContentPane.add(getJTextFieldFarFile(), null);
jContentPane.add(getJButtonBrowser(), null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJScrollPane(), null);
}
return jContentPane;
}
public void mouseClicked(MouseEvent e) {
if (e.getSource() == jButtonCancel) {
this.setVisible(false);
} else if (e.getSource() == jButtonNext) {
//
// Judge if FAR file is existed
//
farFile = new File(jTextFieldFarFile.getText());
if (!farFile.exists() || !farFile.isFile()) {
Log.err("Please choose a FAR file already exists. ");
return;
}
//
// Judge FAR is valid
//
//
// 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);
}
this.setVisible(false);
stepTwo.prepareTable();
stepTwo.setVisible(true);
} else if (e.getSource() == jButtonBrowser) {
JFileChooser fc = new JFileChooser();
fc.setAcceptAllFileFilterUsed(false);
fc.addChoosableFileFilter(new IFileFilter(DataType.FAR_SURFACE_AREA_EXT));
fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));
int result = fc.showSaveDialog(new JPanel());
if (result == JFileChooser.APPROVE_OPTION) {
this.jTextFieldFarFile.setText(Tools.addPathExt(fc.getSelectedFile().getPath(),
DataType.RETURN_TYPE_FAR_SURFACE_AREA));
}
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public FarIdentification getSelecedDbFar() {
return (FarIdentification) jListFarFromDb.getSelectedValue();
}
public Far getFar() {
return far;
}
}

View File

@ -0,0 +1,298 @@
/** @file
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
package org.tianocore.frameworkwizard.far.updateui;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Iterator;
import java.util.List;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.ui.IDialog;
import org.tianocore.frameworkwizard.far.AggregationOperation;
import org.tianocore.frameworkwizard.far.Far;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.workspace.Workspace;
import org.tianocore.frameworkwizard.workspace.WorkspaceTools;
public class UpdateStepTwo extends IDialog implements MouseListener {
/**
*
*/
private static final long serialVersionUID = -4400145363721213110L;
private JPanel jContentPane = null;
private JTextArea jTextArea = null;
private UpdateStepOne stepOne = null;
private JButton jButtonCancel = null;
private JButton jButtonFinish = null;
private JButton jButtonPrevious = null;
private JScrollPane jScrollPane = null;
private JLabel jLabel = null;
private JTable jTablePackage = null;
private PartialTableModel model = null;
public UpdateStepTwo(IDialog iDialog, boolean modal, UpdateStepOne stepOne) {
this(iDialog, modal);
this.stepOne = stepOne;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
jTextArea.setBounds(new java.awt.Rectangle(30, 7, 642, 50));
jTextArea.setText("Step 2: Summary. \n");
jTextArea.setEditable(false);
}
return jTextArea;
}
/**
* This method initializes jButtonCancel
*
* @return javax.swing.JButton
*/
private JButton getJButtonCancel() {
if (jButtonCancel == null) {
jButtonCancel = new JButton();
jButtonCancel.setBounds(new java.awt.Rectangle(570, 330, 90, 20));
jButtonCancel.setText("Cancel");
jButtonCancel.addMouseListener(this);
}
return jButtonCancel;
}
/**
* This method initializes jButtonFinish
*
* @return javax.swing.JButton
*/
private JButton getJButtonFinish() {
if (jButtonFinish == null) {
jButtonFinish = new JButton();
jButtonFinish.setBounds(new java.awt.Rectangle(470, 330, 90, 20));
jButtonFinish.setText("Finish");
jButtonFinish.addMouseListener(this);
}
return jButtonFinish;
}
/**
* This method initializes jButtonPrevious
*
* @return javax.swing.JButton
*/
private JButton getJButtonPrevious() {
if (jButtonPrevious == null) {
jButtonPrevious = new JButton();
jButtonPrevious.setBounds(new java.awt.Rectangle(370, 330, 90, 20));
jButtonPrevious.setText("Previous");
jButtonPrevious.addMouseListener(this);
}
return jButtonPrevious;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new java.awt.Rectangle(30, 98, 570, 170));
jScrollPane.setViewportView(getJTablePackage());
}
return jScrollPane;
}
/**
* This method initializes jTablePackage
*
* @return javax.swing.JTable
*/
private JTable getJTablePackage() {
if (jTablePackage == null) {
jTablePackage = new JTable();
model = new PartialTableModel();
jTablePackage = new JTable(model);
jTablePackage.setRowHeight(20);
jTablePackage.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
model.addColumn("Name");
model.addColumn("Version");
model.addColumn("Guid");
model.addColumn("Path");
jTablePackage.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
return jTablePackage;
}
public void prepareTable() {
model.setRowCount(0);
try {
Far far = stepOne.getFar();
List<PackageIdentification> packagesInFar = far.mainfest.getPackageList();
WorkspaceTools wt = new WorkspaceTools();
List<PackageIdentification> packagesInDb = wt.getAllPackages();
List<PackageIdentification> result = AggregationOperation.intersection(packagesInDb, packagesInFar);
//
// Change here to get packages and platforms from FAR
//
Iterator<PackageIdentification> iter = result.iterator();//packageList.iterator();
while (iter.hasNext()) {
String[] str = new String[4];
PackageIdentification item = iter.next();
str[0] = item.getName();
str[1] = item.getVersion();
str[2] = item.getGuid();
str[3] = Tools.getFilePathOnly(Tools.getRelativePath(item.getPath(), Workspace.getCurrentWorkspace()));
model.addRow(str);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* This is the default constructor
*/
public UpdateStepTwo(IDialog iDialog, boolean modal) {
super(iDialog, modal);
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 400);
this.setContentPane(getJContentPane());
this.setTitle("Update Framework Archive(FAR) - Step 2: Summary");
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - this.getSize().width) / 2, (d.height - this.getSize().height) / 2);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabel = new JLabel();
jLabel.setBounds(new java.awt.Rectangle(30, 70, 281, 20));
jLabel.setText("Following packages will be updated: ");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextArea(), null);
jContentPane.add(getJButtonCancel(), null);
jContentPane.add(getJButtonFinish(), null);
jContentPane.add(getJButtonPrevious(), null);
jContentPane.add(getJScrollPane(), 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 ?
//
//
// Remove all update packages
//
//
// Install all update packages
//
this.setVisible(false);
} else if (e.getSource() == jButtonPrevious) {
this.setVisible(false);
stepOne.setVisible(true);
}
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
class PartialTableModel extends DefaultTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;
public boolean isCellEditable(int row, int col) {
switch (col) {
case 3:
return false;
default:
return false;
}
}
}

View File

@ -15,7 +15,11 @@
package org.tianocore.frameworkwizard.packaging;
import java.io.File;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.Identifications.Identification;
import org.tianocore.frameworkwizard.workspace.Workspace;
public class PackageIdentification extends Identification{
@ -30,4 +34,13 @@ public class PackageIdentification extends Identification{
public PackageIdentification(Identification id){
super(id.getName(), id.getGuid(), id.getVersion(), id.getPath());
}
public File getSpdFile(){
File spdFile = new File(this.getPath());
return spdFile;
}
public String toString() {
return getName() + " " + getVersion() + " [" + Tools.getRelativePath(getSpdFile().getPath(), Workspace.getCurrentWorkspace()) + "]";
}
}

View File

@ -15,10 +15,16 @@
package org.tianocore.frameworkwizard.platform;
import java.io.File;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.Identifications.Identification;
import org.tianocore.frameworkwizard.workspace.Workspace;
public class PlatformIdentification extends Identification{
public PlatformIdentification(String name, String guid, String version, String path){
super(name, guid, version, path);
}
@ -26,4 +32,13 @@ public class PlatformIdentification extends Identification{
public PlatformIdentification(Identification id){
super(id.getName(), id.getGuid(), id.getVersion(), id.getPath());
}
public File getFpdFile(){
File fpdFile = new File(this.getPath());
return fpdFile;
}
public String toString() {
return getName() + " " + getVersion() + " [" + Tools.getRelativePath(getFpdFile().getPath(), Workspace.getCurrentWorkspace()) + "]";
}
}

View File

@ -14,12 +14,15 @@
**/
package org.tianocore.frameworkwizard.workspace;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Vector;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.tianocore.DbPathAndFilename;
import org.tianocore.FrameworkDatabaseDocument;
import org.tianocore.FrameworkDatabaseDocument.FrameworkDatabase;
import org.tianocore.IndustryStdIncludesDocument.IndustryStdIncludes;
import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;
import org.tianocore.MsaFilesDocument.MsaFiles;
@ -35,6 +38,8 @@ import org.tianocore.frameworkwizard.common.SaveFile;
import org.tianocore.frameworkwizard.common.Tools;
import org.tianocore.frameworkwizard.common.Identifications.Identification;
import org.tianocore.frameworkwizard.common.Identifications.OpenFile;
import org.tianocore.frameworkwizard.far.FarHeader;
import org.tianocore.frameworkwizard.far.FarIdentification;
import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;
import org.tianocore.frameworkwizard.packaging.PackageIdentification;
import org.tianocore.frameworkwizard.platform.PlatformIdentification;
@ -43,7 +48,7 @@ public class WorkspaceTools {
//
// Define class members
//
private FrameworkDatabaseDocument.FrameworkDatabase fdb = null;
private FrameworkDatabase fdb = null;
private Vector<ModuleIdentification> vModuleList = new Vector<ModuleIdentification>();
@ -56,20 +61,147 @@ public class WorkspaceTools {
Open Framework Database file
*/
private void openFrameworkDb() {
private FrameworkDatabase openFrameworkDb() {
String strFrameworkDbFilePath = Workspace.getCurrentWorkspace() + Workspace.getStrWorkspaceDatabaseFile();
strFrameworkDbFilePath = Tools.convertPathToCurrentOsType(strFrameworkDbFilePath);
try {
fdb = OpenFile.openFrameworkDb(strFrameworkDbFilePath);
} catch (XmlException e) {
Log.err("Open Framework Database " + strFrameworkDbFilePath, e.getMessage());
return;
return null;
} catch (Exception e) {
Log.err("Open Framework Database " + strFrameworkDbFilePath, "Invalid file type");
return;
return null;
}
return fdb;
}
public void addFarToDb(List<String> packageList, List<String> platformList, FarHeader far) {
FrameworkDatabase fdb = openFrameworkDb();
for (int i = 0; i < packageList.size(); i++) {
DbPathAndFilename item = DbPathAndFilename.Factory.newInstance();
item.setFarGuid(far.getGuidValue());
item.setStringValue(packageList.get(i));
fdb.getPackageList().getFilenameList().add(item);
}
for (int i = 0; i < platformList.size(); i++) {
DbPathAndFilename item = DbPathAndFilename.Factory.newInstance();
item.setFarGuid(far.getGuidValue());
item.setStringValue(platformList.get(i));
fdb.getPlatformList().getFilenameList().add(item);
}
DbPathAndFilename farItem = DbPathAndFilename.Factory.newInstance();
farItem.setFarGuid(far.getGuidValue());
farItem.setStringValue(far.getFarName());
fdb.getFarList().getFilenameList().add(farItem);
String strFrameworkDbFilePath = Workspace.getCurrentWorkspace() + Workspace.getStrWorkspaceDatabaseFile();
strFrameworkDbFilePath = Tools.convertPathToCurrentOsType(strFrameworkDbFilePath);
try {
SaveFile.saveDbFile(strFrameworkDbFilePath, fdb);
}
catch (Exception e) {
e.printStackTrace();
}
}
public void removeFarFromDb(FarIdentification far) {
FrameworkDatabase fdb = openFrameworkDb();
//
// Remove Packages
//
XmlCursor cursor = fdb.getPackageList().newCursor();
cursor.toFirstChild();
do {
DbPathAndFilename item = (DbPathAndFilename)cursor.getObject();
if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {
cursor.removeXml();
}
} while (cursor.toNextSibling());
cursor.dispose();
//
// Remove Platforms
//
cursor = fdb.getPlatformList().newCursor();
cursor.toFirstChild();
do {
DbPathAndFilename item = (DbPathAndFilename)cursor.getObject();
if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {
cursor.removeXml();
}
} while (cursor.toNextSibling());
//
// Remove Far
//
cursor = fdb.getFarList().newCursor();
cursor.toFirstChild();
do {
DbPathAndFilename item = (DbPathAndFilename)cursor.getObject();
if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {
cursor.removeXml();
}
} while (cursor.toNextSibling());
cursor.dispose();
String strFrameworkDbFilePath = Workspace.getCurrentWorkspace() + Workspace.getStrWorkspaceDatabaseFile();
strFrameworkDbFilePath = Tools.convertPathToCurrentOsType(strFrameworkDbFilePath);
try {
SaveFile.saveDbFile(strFrameworkDbFilePath, fdb);
}
catch (Exception e) {
e.printStackTrace();
}
}
public String getPackageFarGuid(PackageIdentification packageId) {
openFrameworkDb();
for (int index = 0; index < fdb.getPackageList().getFilenameList().size(); index++) {
DbPathAndFilename item = fdb.getPackageList().getFilenameArray(index);
String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR
+ item.getStringValue();
File tempFile = new File(path);
if (tempFile.getPath().equalsIgnoreCase(packageId.getSpdFile().getPath())) {
return fdb.getPackageList().getFilenameArray(index).getFarGuid();
}
}
return null;
}
public String getPlatformFarGuid(PlatformIdentification platformId) {
openFrameworkDb();
for (int index = 0; index < fdb.getPlatformList().getFilenameList().size(); index++) {
DbPathAndFilename item = fdb.getPlatformList().getFilenameArray(index);
String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR
+ item.getStringValue();
File tempFile = new File(path);
if (tempFile.getPath().equalsIgnoreCase(platformId.getFpdFile().getPath())) {
return fdb.getPlatformList().getFilenameArray(index).getFarGuid();
}
}
return null;
}
public String getModuleFarGuid(ModuleIdentification moduleId) {
PackageIdentification packageId = getPackageIdByModuleId(moduleId);
if (packageId != null) {
return getPackageFarGuid(packageId);
}
else {
return null;
}
}
/**
Get all modules' paths from one package
@ -159,7 +291,79 @@ public class WorkspaceTools {
Tools.sortPackages(vPackageList, DataType.SORT_TYPE_ASCENDING);
return vPackageList;
}
public Vector<FarIdentification> getAllFars() {
openFrameworkDb();
Vector<FarIdentification> v = new Vector<FarIdentification>();
for (int index = 0; index < fdb.getFarList().getFilenameList().size(); index++) {
DbPathAndFilename item = fdb.getFarList().getFilenameList().get(index);
FarIdentification far = new FarIdentification(item.getFarGuid(), item.getMd5Sum(), item.getStringValue());
v.addElement(far);
}
return v;
}
public Vector<PackageIdentification> getPackagesByFar(FarIdentification far) {
Identification id = null;
openFrameworkDb();
Vector<PackageIdentification> v = new Vector<PackageIdentification>();
for (int index = 0; index < fdb.getPackageList().getFilenameList().size(); index++) {
DbPathAndFilename item = fdb.getPackageList().getFilenameArray(index);
String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR
+ item.getStringValue();
path = Tools.convertPathToCurrentOsType(path);
if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {
try {
id = getId(path, OpenFile.openSpdFile(path));
v.addElement(new PackageIdentification(id));
} catch (IOException e) {
Log.err("Open Package Surface Area " + path, e.getMessage());
e.printStackTrace();
} catch (XmlException e) {
Log.err("Open Package Surface Area " + path, e.getMessage());
e.printStackTrace();
} catch (Exception e) {
Log.err("Open Package Surface Area " + path, "Invalid file type");
e.printStackTrace();
}
}
}
return v;
}
public Vector<PlatformIdentification> getPlatformsByFar(FarIdentification far) {
Identification id = null;
openFrameworkDb();
Vector<PlatformIdentification> v = new Vector<PlatformIdentification>();
for (int index = 0; index < fdb.getPlatformList().getFilenameList().size(); index++) {
DbPathAndFilename item = fdb.getPlatformList().getFilenameArray(index);
String path = Workspace.getCurrentWorkspace() + DataType.FILE_SEPARATOR
+ item.getStringValue();
path = Tools.convertPathToCurrentOsType(path);
if (item.getFarGuid() != null && item.getFarGuid().equalsIgnoreCase(far.getGuid())) {
try {
id = getId(path, OpenFile.openFpdFile(path));
v.addElement(new PlatformIdentification(id));
} catch (IOException e) {
Log.err("Open Platform Surface Area " + path, e.getMessage());
e.printStackTrace();
} catch (XmlException e) {
Log.err("Open Platform Surface Area " + path, e.getMessage());
e.printStackTrace();
} catch (Exception e) {
Log.err("Open Platform Surface Area " + path, "Invalid file type");
e.printStackTrace();
}
}
}
return v;
}
/**
Get all module basic information from a package