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.ExternsDocument.Externs;\r
import org.tianocore.FilenameDocument.Filename;\r
+import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\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