+ private boolean versionEqual (String v1, String v2) {\r
+ \r
+ if ((v1 == null || v1.length() == 0 || v1.equalsIgnoreCase("null")) \r
+ && (v2 == null || v2.length() == 0 || v2.equalsIgnoreCase("null"))) {\r
+ return true;\r
+ }\r
+ \r
+ if (v1 != null && v1.equals(v2)) {\r
+ return true;\r
+ }\r
+ \r
+ return false;\r
+ }\r
+ \r
+ public boolean moduleInBuildOptionsUserExtensions (String fvName, String moduleGuid, String moduleVersion, String packageGuid, String packageVersion, String arch) {\r
+ boolean inList = false;\r
+ if (getUserExtsIncModCount(fvName) > 0) {\r
+ \r
+ XmlCursor cursor = getfpdBuildOpts().newCursor();\r
+ QName elementUserExts = new QName (xmlNs, "UserExtensions");\r
+ QName attribUserId = new QName ("UserID");\r
+ QName elementFvName = new QName (xmlNs, "FvName");\r
+ QName elementIncludeModules = new QName(xmlNs, "IncludeModules");\r
+ QName attribModuleGuid = new QName("ModuleGuid");\r
+ QName attribModuleVersion = new QName("ModuleVersion");\r
+ QName attribPackageGuid = new QName("PackageGuid");\r
+ QName attribPackageVersion = new QName("PackageVersion");\r
+ QName attribArch = new QName("Arch");\r
+ \r
+ if (cursor.toChild(elementUserExts)) {\r
+ do {\r
+ cursor.push();\r
+ if (cursor.getAttributeText(attribUserId).equals("IMAGES")) {\r
+ cursor.toChild(elementFvName);\r
+ String elementName = cursor.getTextValue();\r
+ if (elementName.equals(fvName)) {\r
+ cursor.toNextSibling(elementIncludeModules);\r
+ if (cursor.toFirstChild()) {\r
+ \r
+ do {\r
+ String mg = cursor.getAttributeText(attribModuleGuid);\r
+ String mv = cursor.getAttributeText(attribModuleVersion);\r
+ String pg = cursor.getAttributeText(attribPackageGuid);\r
+ String pv = cursor.getAttributeText(attribPackageVersion);\r
+ String ar = cursor.getAttributeText(attribArch);\r
+ if (!moduleGuid.equalsIgnoreCase(mg)) {\r
+ continue;\r
+ }\r
+ if (!packageGuid.equalsIgnoreCase(pg)) {\r
+ continue;\r
+ }\r
+ if (!arch.equalsIgnoreCase(ar)) {\r
+ continue;\r
+ }\r
+ if (!versionEqual(moduleVersion, mv)) {\r
+ continue;\r
+ }\r
+ if (!versionEqual(packageVersion, pv)) {\r
+ continue;\r
+ }\r
+ inList = true;\r
+ break;\r
+ }while (cursor.toNextSibling());\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ cursor.pop();\r
+ }while (cursor.toNextSibling(elementUserExts));\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ return inList;\r
+ }\r
+ \r
+ public void removeModuleInBuildOptionsUserExtensions (String fvName, String moduleGuid, String moduleVersion, String packageGuid, String packageVersion, String arch) {\r
+ if (getUserExtsIncModCount(fvName) > 0) {\r
+ \r
+ XmlCursor cursor = getfpdBuildOpts().newCursor();\r
+ QName elementUserExts = new QName (xmlNs, "UserExtensions");\r
+ QName attribUserId = new QName ("UserID");\r
+ QName elementFvName = new QName (xmlNs, "FvName");\r
+ QName elementIncludeModules = new QName(xmlNs, "IncludeModules");\r
+ QName attribModuleGuid = new QName("ModuleGuid");\r
+ QName attribModuleVersion = new QName("ModuleVersion");\r
+ QName attribPackageGuid = new QName("PackageGuid");\r
+ QName attribPackageVersion = new QName("PackageVersion");\r
+ QName attribArch = new QName("Arch");\r
+ \r
+ if (cursor.toChild(elementUserExts)) {\r
+ do {\r
+ cursor.push();\r
+ if (cursor.getAttributeText(attribUserId).equals("IMAGES")) {\r
+ cursor.toChild(elementFvName);\r
+ String elementName = cursor.getTextValue();\r
+ if (elementName.equals(fvName)) {\r
+ cursor.toNextSibling(elementIncludeModules);\r
+ if (cursor.toFirstChild()) {\r
+ \r
+ do {\r
+ String mg = cursor.getAttributeText(attribModuleGuid);\r
+ String mv = cursor.getAttributeText(attribModuleVersion);\r
+ String pg = cursor.getAttributeText(attribPackageGuid);\r
+ String pv = cursor.getAttributeText(attribPackageVersion);\r
+ String ar = cursor.getAttributeText(attribArch);\r
+ if (!moduleGuid.equalsIgnoreCase(mg)) {\r
+ continue;\r
+ }\r
+ if (!packageGuid.equalsIgnoreCase(pg)) {\r
+ continue;\r
+ }\r
+ if (!arch.equalsIgnoreCase(ar)) {\r
+ continue;\r
+ }\r
+ if (!versionEqual(moduleVersion, mv)) {\r
+ continue;\r
+ }\r
+ if (!versionEqual(packageVersion, pv)) {\r
+ continue;\r
+ }\r
+ cursor.removeXml();\r
+ }while (cursor.toNextSibling());\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ cursor.pop();\r
+ }while (cursor.toNextSibling(elementUserExts));\r
+ }\r
+ cursor.dispose();\r
+ }\r
+ }\r