mirror of https://github.com/acidanthera/audk.git
For one library class, list all library instances from all packages in workspace.
Fix the PCD memory database inconsistency problem when changing PCD item type in platform. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1531 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
10e4f9901c
commit
73d9b1c494
|
@ -91,6 +91,11 @@ public class FpdFileContents {
|
|||
|
||||
private HashMap<String, String> defaultPcdValue = new HashMap<String, String>();
|
||||
|
||||
private String itemType (String pcdInfo) {
|
||||
|
||||
return pcdInfo.substring(pcdInfo.lastIndexOf(" ") + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* look through all pcd data in all ModuleSA, create pcd -> ModuleSA mappings.
|
||||
*/
|
||||
|
@ -557,6 +562,9 @@ public class FpdFileContents {
|
|||
do {
|
||||
PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData pcdData = (PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData)cursor.getObject();
|
||||
if (pcdData.getCName().equals(cName) && pcdData.getTokenSpaceGuidCName().equals(tsGuid)) {
|
||||
//
|
||||
// change item type while not updating dynPcdData????
|
||||
//
|
||||
pcdData.setItemType(PcdItemTypes.Enum.forString(itemType));
|
||||
if(pcdData.getDatumType().equals("VOID*")) {
|
||||
pcdData.setMaxDatumSize(new Integer(maxSize));
|
||||
|
@ -1193,8 +1201,8 @@ public class FpdFileContents {
|
|||
// Using existing Pcd type, if this pcd already exists in other ModuleSA
|
||||
//
|
||||
if (pcdConsumer.size() > 0) {
|
||||
String[] valPart = pcdConsumer.get(0).split(" ");
|
||||
itemType = valPart[5];
|
||||
|
||||
itemType = itemType (pcdConsumer.get(0));
|
||||
}
|
||||
String listValue = moduleSa.getModuleGuid() + " " + moduleSa.getModuleVersion()
|
||||
+ " " + moduleSa.getPackageGuid() + " " + moduleSa.getPackageVersion() + " " + listToString(moduleSa.getSupArchList())
|
||||
|
|
|
@ -297,13 +297,13 @@ public class FpdModuleSA extends JDialog implements ActionListener {
|
|||
private ArrayList<String> getInstancesForClass(String cls, PackageIdentification[] depPkgList) throws Exception{
|
||||
ArrayList<String> al = new ArrayList<String>();
|
||||
|
||||
for (int i = 0; i < depPkgList.length; ++i) {
|
||||
// for (int i = 0; i < depPkgList.length; ++i) {
|
||||
Iterator ismi = GlobalData.vModuleList.iterator();
|
||||
while(ismi.hasNext()) {
|
||||
ModuleIdentification mi = (ModuleIdentification)ismi.next();
|
||||
if (!mi.getPackageId().getGuid().equalsIgnoreCase(depPkgList[i].getGuid())) {
|
||||
continue;
|
||||
}
|
||||
// if (!mi.getPackageId().getGuid().equalsIgnoreCase(depPkgList[i].getGuid())) {
|
||||
// continue;
|
||||
// }
|
||||
String[] clsProduced = getClassProduced(mi);
|
||||
|
||||
boolean isPotential = false;
|
||||
|
@ -321,10 +321,10 @@ public class FpdModuleSA extends JDialog implements ActionListener {
|
|||
}
|
||||
if (isPotential) {
|
||||
al.add(mi.getGuid() + " " + mi.getVersion() + " " +
|
||||
depPkgList[i].getGuid() + " " + depPkgList[i].getVersion());
|
||||
mi.getPackageId().getGuid() + " " + mi.getPackageId().getVersion());
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
|
||||
return al;
|
||||
}
|
||||
|
@ -570,13 +570,14 @@ public class FpdModuleSA extends JDialog implements ActionListener {
|
|||
}
|
||||
else{
|
||||
int selectedRow = lsm.getMinSelectionIndex();
|
||||
String cName = jTablePcd.getValueAt(selectedRow, 0)+"";
|
||||
String tsGuid = jTablePcd.getValueAt(selectedRow, 1)+"";
|
||||
String cName = model.getValueAt(selectedRow, 0)+"";
|
||||
String tsGuid = model.getValueAt(selectedRow, 1)+"";
|
||||
String itemType = model.getValueAt(selectedRow, 2)+"";
|
||||
String[] pcdInfo = {"", ""};
|
||||
getPcdInfo(cName, tsGuid, pcdInfo);
|
||||
jTextAreaPcdHelp.setText(pcdInfo[0]);
|
||||
initComboBox(pcdInfo[1]);
|
||||
jComboBoxItemType.setSelectedItem(pcdInfo[1]);
|
||||
jComboBoxItemType.setSelectedItem(itemType);
|
||||
jTextFieldMaxDatumSize.setEnabled(true);
|
||||
jTextFieldMaxDatumSize.setVisible(true);
|
||||
jTextFieldMaxDatumSize.setText(jTablePcd.getValueAt(selectedRow, 4)+"");
|
||||
|
@ -603,9 +604,9 @@ public class FpdModuleSA extends JDialog implements ActionListener {
|
|||
jTextFieldMaxDatumSize.setEnabled(false);
|
||||
}
|
||||
|
||||
if (!jTablePcd.getValueAt(selectedRow, 2).equals("DYNAMIC") && !jTablePcd.getValueAt(selectedRow, 2).equals("DYNAMIC_EX")) {
|
||||
jTextFieldPcdDefault.setText(jTablePcd.getValueAt(selectedRow, 6)+"");
|
||||
if (jTablePcd.getValueAt(selectedRow, 2).equals("FEATURE_FLAG")){
|
||||
if (!model.getValueAt(selectedRow, 2).equals("DYNAMIC") && !model.getValueAt(selectedRow, 2).equals("DYNAMIC_EX")) {
|
||||
jTextFieldPcdDefault.setText(model.getValueAt(selectedRow, 6)+"");
|
||||
if (model.getValueAt(selectedRow, 2).equals("FEATURE_FLAG")){
|
||||
jTextFieldPcdDefault.setVisible(false);
|
||||
jComboBoxFeatureFlagValue.setVisible(true);
|
||||
jComboBoxFeatureFlagValue.setSelectedItem(jTablePcd.getValueAt(selectedRow, 6)+"");
|
||||
|
@ -625,18 +626,6 @@ public class FpdModuleSA extends JDialog implements ActionListener {
|
|||
}
|
||||
});
|
||||
|
||||
jTablePcd.getModel().addTableModelListener(new TableModelListener() {
|
||||
public void tableChanged(TableModelEvent arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
// int row = arg0.getFirstRow();
|
||||
// TableModel m = (TableModel)arg0.getSource();
|
||||
|
||||
if (arg0.getType() == TableModelEvent.UPDATE){
|
||||
//update xml doc here.
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return jTablePcd;
|
||||
}
|
||||
|
@ -1424,6 +1413,7 @@ private JPanel getJPanelPcdFieldsThirdRow() {
|
|||
jPanelPcdFieldsThirdRow.add(jLabelPcdDefaultValue, null);
|
||||
jPanelPcdFieldsThirdRow.add(getJTextFieldPcdDefault(), null);
|
||||
jPanelPcdFieldsThirdRow.add(getJComboBoxFeatureFlagValue(), null);
|
||||
jPanelPcdFieldsThirdRow.add(getJButtonUpdatePcd(), null);
|
||||
}
|
||||
return jPanelPcdFieldsThirdRow;
|
||||
}
|
||||
|
@ -1443,7 +1433,6 @@ private JPanel getJPanelPcdFieldsFirstRow() {
|
|||
jPanelPcdFieldsFirstRow.setLayout(flowLayout1);
|
||||
jPanelPcdFieldsFirstRow.add(jLabelItemType, null);
|
||||
jPanelPcdFieldsFirstRow.add(getJComboBoxItemType(), null);
|
||||
jPanelPcdFieldsFirstRow.add(getJButtonUpdatePcd(), null);
|
||||
}
|
||||
return jPanelPcdFieldsFirstRow;
|
||||
}
|
||||
|
@ -1459,19 +1448,19 @@ private JComboBox getJComboBoxItemType() {
|
|||
jComboBoxItemType.addItemListener(new java.awt.event.ItemListener() {
|
||||
public void itemStateChanged(java.awt.event.ItemEvent e) {
|
||||
int row = jTablePcd.getSelectedRow();
|
||||
if (row < 0 || jTablePcd.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {
|
||||
if (row < 0 || model.getValueAt(row, 2).equals(jComboBoxItemType.getSelectedItem())) {
|
||||
return;
|
||||
}
|
||||
if (jComboBoxItemType.getItemCount() == 3) {
|
||||
if (!jComboBoxItemType.getSelectedItem().equals("DYNAMIC")) {
|
||||
pcdDynamicToNonDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");
|
||||
pcdDynamicToNonDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"");
|
||||
if (jComboBoxItemType.getSelectedItem().equals("FIXED_AT_BUILD")) {
|
||||
jTextFieldPcdDefault.setText("");
|
||||
jTextFieldPcdDefault.setEnabled(true);
|
||||
}
|
||||
}
|
||||
else{
|
||||
pcdNonDynamicToDynamic(jTablePcd.getValueAt(row, 0)+"", jTablePcd.getValueAt(row, 1)+"");
|
||||
pcdNonDynamicToDynamic(model.getValueAt(row, 0)+"", model.getValueAt(row, 1)+"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1495,11 +1484,10 @@ private void pcdDynamicToNonDynamic(String cName, String tsGuid) {
|
|||
|
||||
ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);
|
||||
for (int i = 0; i < al.size(); ++i) {
|
||||
String[] s = al.get(i).split(" ");
|
||||
String mKey = s[0] + s[1] + s[2] + s[3];
|
||||
String mKey = moduleInfo (al.get(i));
|
||||
ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", maxSize, value);
|
||||
s[4] = jComboBoxItemType.getSelectedItem()+"";
|
||||
al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]);
|
||||
String itemType = jComboBoxItemType.getSelectedItem()+"";
|
||||
al.set(i, mKey + " " + itemType);
|
||||
}
|
||||
|
||||
ffc.removeDynamicPcdBuildData(cName, tsGuid);
|
||||
|
@ -1508,11 +1496,10 @@ private void pcdDynamicToNonDynamic(String cName, String tsGuid) {
|
|||
private void pcdNonDynamicToDynamic(String cName, String tsGuid) {
|
||||
ArrayList<String> al = ffc.getDynPcdMapValue(cName + " " + tsGuid);
|
||||
for (int i = 0; i < al.size(); ++i) {
|
||||
String[] s = al.get(i).split(" ");
|
||||
String mKey = s[0] + " " + s[1]+ " " + s[2] + " " + s[3];
|
||||
String mKey = moduleInfo (al.get(i));
|
||||
ffc.updatePcdData(mKey, cName, tsGuid, jComboBoxItemType.getSelectedItem()+"", jTextFieldMaxDatumSize.getText(), jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");
|
||||
s[4] = jComboBoxItemType.getSelectedItem()+"";
|
||||
al.set(i, s[0]+" "+s[1]+" "+s[2]+" "+s[3]+" "+s[4]);
|
||||
String itemType = jComboBoxItemType.getSelectedItem()+"";
|
||||
al.set(i, mKey + " " + itemType);
|
||||
}
|
||||
try{
|
||||
ffc.addDynamicPcdBuildData(cName, jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 3), tsGuid, "DYNAMIC", jTablePcd.getValueAt(jTablePcd.getSelectedRow(), 5)+"", jTextFieldPcdDefault.isVisible() ? jTextFieldPcdDefault.getText() : jComboBoxFeatureFlagValue.getSelectedItem()+"");
|
||||
|
@ -1521,6 +1508,12 @@ private void pcdNonDynamicToDynamic(String cName, String tsGuid) {
|
|||
JOptionPane.showMessageDialog(frame, "PCD value format: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private String moduleInfo (String pcdInfo) {
|
||||
|
||||
return pcdInfo.substring(0, pcdInfo.lastIndexOf(" "));
|
||||
}
|
||||
|
||||
/**
|
||||
* This method initializes jTextFieldMaxDatumSize
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue