import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
\r
-import org.w3c.dom.Node;\r
-\r
+import org.tianocore.ExternsDocument.Externs.Extern;\r
import org.apache.xmlbeans.XmlObject;\r
import org.apache.xmlbeans.XmlString;\r
-\r
-import org.tianocore.BuildOptionsDocument;\r
-import org.tianocore.CNameType;\r
-import org.tianocore.ExternsDocument;\r
-import org.tianocore.FileNameConvention;\r
-import org.tianocore.FvImagesDocument;\r
-import org.tianocore.GuidDeclarationsDocument;\r
-import org.tianocore.GuidsDocument;\r
-import org.tianocore.LibrariesDocument;\r
-import org.tianocore.LibraryClassDeclarationsDocument;\r
-import org.tianocore.LibraryClassDocument;\r
-import org.tianocore.ModuleDefinitionsDocument;\r
-import org.tianocore.ModuleSADocument;\r
-import org.tianocore.ModuleSaBuildOptionsDocument;\r
-import org.tianocore.ModuleTypeDef;\r
-import org.tianocore.MsaFilesDocument;\r
-import org.tianocore.MsaHeaderDocument;\r
-import org.tianocore.OptionDocument;\r
-import org.tianocore.PPIsDocument;\r
-import org.tianocore.PackageDependenciesDocument;\r
-import org.tianocore.PackageHeadersDocument;\r
-import org.tianocore.PcdCodedDocument;\r
-import org.tianocore.PlatformDefinitionsDocument;\r
-import org.tianocore.PlatformHeaderDocument;\r
-import org.tianocore.PpiDeclarationsDocument;\r
-import org.tianocore.ProtocolDeclarationsDocument;\r
-import org.tianocore.Sentence;\r
-import org.tianocore.SpdHeaderDocument;\r
-import org.tianocore.UserExtensionsDocument;\r
+import org.tianocore.*;\r
import org.tianocore.FilenameDocument.Filename;\r
import org.tianocore.MsaHeaderDocument.MsaHeader;\r
import org.tianocore.ProtocolsDocument.Protocols.Protocol;\r
import org.tianocore.ProtocolsDocument.Protocols.ProtocolNotify;\r
-import org.tianocore.PcdDriverTypes;\r
-\r
-import org.tianocore.common.exception.EdkException;\r
-import org.tianocore.common.logger.EdkLog;\r
+import org.tianocore.build.autogen.CommonDefinition;\r
import org.tianocore.build.id.FpdModuleIdentification;\r
import org.tianocore.build.id.ModuleIdentification;\r
import org.tianocore.build.id.PackageIdentification;\r
import org.tianocore.build.id.PlatformIdentification;\r
import org.tianocore.build.toolchain.ToolChainInfo;\r
-import org.tianocore.build.autogen.CommonDefinition;\r
+import org.tianocore.common.exception.EdkException;\r
+import org.tianocore.common.logger.EdkLog;\r
+import org.w3c.dom.Node;\r
\r
/**\r
* SurfaceAreaQuery class is used to query Surface Area information from msa,\r
return getCNames("Externs", xPath);\r
}\r
\r
+ /**\r
+ * Retrive DriverBinding, ComponentName, DriverConfig,\r
+ * DriverDiag group array\r
+ * \r
+ * @returns DriverBinding group name list if elements are found\r
+ * at the known xpath\r
+ * @returns null if nothing is there\r
+ */\r
+ public String[][] getExternProtocolGroup() {\r
+ String[] xPath = new String[] {"/Extern"};\r
+ Object[] returns = get("Externs",xPath);\r
+\r
+ if (returns == null) {\r
+ return new String[0][4];\r
+ }\r
+ List<Extern> externList = new ArrayList<Extern>();\r
+ for (int i = 0; i < returns.length; i++) {\r
+ org.tianocore.ExternsDocument.Externs.Extern extern = (org.tianocore.ExternsDocument.Externs.Extern)returns[i];\r
+ if (extern.getDriverBinding() != null) {\r
+ externList.add(extern);\r
+ }\r
+ }\r
+\r
+ String[][] externGroup = new String[externList.size()][4];\r
+ for (int i = 0; i < externList.size(); i++) {\r
+ String driverBindingStr = externList.get(i).getDriverBinding();\r
+ if ( driverBindingStr != null){\r
+ externGroup[i][0] = driverBindingStr;\r
+ } else {\r
+ externGroup[i][0] = null;\r
+ }\r
+\r
+ String componentNameStr = externList.get(i).getComponentName();\r
+ if (componentNameStr != null) {\r
+ externGroup[i][1] = componentNameStr;\r
+ } else {\r
+ externGroup[i][1] = null;\r
+ }\r
+\r
+ String driverConfigStr = externList.get(i).getDriverConfig();\r
+ if (driverConfigStr != null) {\r
+ externGroup[i][2] = driverConfigStr;\r
+ } else {\r
+ externGroup[i][2] = null;\r
+ }\r
+\r
+ String driverDiagStr = externList.get(i).getDriverDiag();\r
+ if (driverDiagStr != null) {\r
+ externGroup[i][3] = driverDiagStr;\r
+ } else {\r
+ externGroup[i][3] = null;\r
+ }\r
+ }\r
+ return externGroup;\r
+ }\r
+ \r
/**\r
* Retrive SetVirtualAddressMapCallBack names\r
*\r
//\r
PackageIdentification pkgId = new PackageIdentification(null, pkgGuid, pkgVersion);\r
GlobalData.refreshPackageIdentification(pkgId);\r
+ \r
ModuleIdentification saId = new ModuleIdentification(null, saGuid, saVersion);\r
+ saId.setPackage(pkgId);\r
GlobalData.refreshModuleIdentification(saId);\r
\r
- saId.setPackage(pkgId);\r
+\r
\r
//\r
// Create FpdModule Identification which have class member of module\r
return false;\r
}\r
}\r
+ \r
+ public Node getFpdModuleSequence(String fvName) {\r
+ String[] xPath = new String[] { "/BuildOptions/UserExtensions[@UserID='IMAGES' and @Identifier='1' and ./FvName='" + fvName + "']" };\r
+ Object[] result = get("PlatformSurfaceArea", xPath);\r
+ \r
+ if (result == null || result.length == 0) {\r
+ return null;\r
+ }\r
+ \r
+ UserExtensionsDocument.UserExtensions a = (UserExtensionsDocument.UserExtensions)result[0];\r
+ \r
+ return a.getDomNode();\r
+ }\r
}\r