- @param moduleName Parameter of this action class.\r
- @param isEmulatedPCDDriver Parameter of this action class.\r
- **/\r
- public PCDAutoGenAction(String moduleName, \r
- String moduleGuidString, \r
- String packageName,\r
- String packageGuidString,\r
- String arch,\r
- String version,\r
- boolean isBuildUsedLibrary,\r
- String[] pcdNameArray) \r
- throws BuildActionException {\r
- dbManager = null;\r
- hAutoGenString = "";\r
- cAutoGenString = "";\r
- try {\r
- setModuleName(moduleName);\r
- setModuleGuid(translateSchemaStringToUUID(moduleGuidString));\r
- setPackageName(packageName);\r
- setPackageGuid(translateSchemaStringToUUID(packageGuidString));\r
- setPcdNameArray(pcdNameArray);\r
- setArch(arch);\r
- setVersion(version);\r
- setIsBuildUsedLibrary(isBuildUsedLibrary);\r
- } catch (EntityException e){\r
- throw new BuildActionException(e.getMessage());\r
- }\r
- }\r
-\r
- /**\r
- Translate the schema string to UUID instance.\r
- \r
- In schema, the string of UUID is defined as following two types string:\r
- 1) GuidArrayType: pattern = 0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},(\r
- )*0x[a-fA-F0-9]{1,4}(,( )*\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\})?\r
- \r
- 2) GuidNamingConvention: pattern =\r
- [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\r
- \r
- This function will convert string and create uuid instance.\r
- \r
- @param uuidString UUID string in XML file\r
- \r
- @return UUID UUID instance\r
-**/\r
-private UUID translateSchemaStringToUUID(String uuidString) \r
- throws EntityException {\r
- String temp;\r
- String[] splitStringArray;\r
- int index;\r
- int chIndex;\r
- int chLen;\r
-\r
- if (uuidString == null) {\r
- return null;\r
- }\r
-\r
- if (uuidString.length() == 0) {\r
- return null;\r
- }\r
-\r
- if (uuidString.equals("0") ||\r
- uuidString.equalsIgnoreCase("0x0")) {\r
- return new UUID(0, 0);\r
- }\r
-\r
- uuidString = uuidString.replaceAll("\\{", "");\r
- uuidString = uuidString.replaceAll("\\}", "");\r
-\r
- //\r
- // If the UUID schema string is GuidArrayType type then need translate \r
- // to GuidNamingConvention type at first.\r
- // \r
- if ((uuidString.charAt(0) == '0') && ((uuidString.charAt(1) == 'x') || (uuidString.charAt(1) == 'X'))) {\r
- splitStringArray = uuidString.split("," );\r
- if (splitStringArray.length != 11) {\r
- throw new EntityException ("[FPD file error] Wrong format for UUID string: " + uuidString);\r
- }\r
-\r
- //\r
- // Remove blank space from these string and remove header string "0x"\r
- // \r
- for (index = 0; index < 11; index ++) {\r
- splitStringArray[index] = splitStringArray[index].trim();\r
- splitStringArray[index] = splitStringArray[index].substring(2, splitStringArray[index].length());\r
- }\r
-\r
- //\r
- // Add heading '0' to normalize the string length\r
- // \r
- for (index = 3; index < 11; index ++) {\r
- chLen = splitStringArray[index].length();\r
- for (chIndex = 0; chIndex < 2 - chLen; chIndex ++) {\r
- splitStringArray[index] = "0" + splitStringArray[index];\r
- }\r
- }\r
-\r
- //\r
- // construct the final GuidNamingConvention string\r
- // \r
- temp = String.format("%s-%s-%s-%s%s-%s%s%s%s%s%s",\r
- splitStringArray[0],\r
- splitStringArray[1],\r
- splitStringArray[2],\r
- splitStringArray[3],\r
- splitStringArray[4],\r
- splitStringArray[5],\r
- splitStringArray[6],\r
- splitStringArray[7],\r
- splitStringArray[8],\r
- splitStringArray[9],\r
- splitStringArray[10]);\r
- uuidString = temp;\r
- }\r
-\r
- return UUID.fromString(uuidString);\r
- }\r
- \r