/// /// <summary> * get the minimum availability /// * </summary> /// * <param name="vModuleRefs"> /// * the list of module ids that are evaluated </param> /// * <returns> the minimum availability, null in case of an error, for instance /// * if no modulerefs are specified </returns> /// public virtual EnumAvailability getMinAvailability(VString vModuleRefs) { IDictionary m = getModuleMap(); if (vModuleRefs == null || m == null || vModuleRefs.Count == 0) { return(null); // error exit } JDFDeviceCap.EnumAvailability minAvail = JDFDeviceCap.EnumAvailability.Installed; for (int i = 0; i < vModuleRefs.Count; i++) { JDFModuleCap mc = (JDFModuleCap)m[vModuleRefs.stringAt(i)]; if (mc == null) { return(null); } EnumAvailability a = mc.getAvailability(); if (a == null || EnumAvailability.Module.Equals(a)) // module is not // valid // recursively { return(null); } if (minAvail.CompareTo(a) > 0) { minAvail = a; } } return(minAvail); }
/// /// <summary> * Gets typesafe enumerated attribute Availability /// * </summary> /// * <returns> EnumAvailability: the enumeration value of the attribute </returns> /// public virtual EnumAvailability getAvailability() { EnumAvailability avail = EnumAvailability.getEnum(getAttribute(AttributeName.AVAILABILITY, null, null)); if (avail == null) { JDFDevCap par = getParentDevCap(); if (par != null) { avail = par.getAvailability(); } } return(avail == null ? EnumAvailability.Installed : avail); }
/// /// <summary> * get the module availability based on modulerefs and availability /// * </summary> /// * <param name="caps"> /// * either A State, devcap or devcaps /// * @return </param> /// public static EnumAvailability getModuleAvailability(ICapabilityElement caps) { EnumAvailability a = caps.getAvailability(); if (!EnumAvailability.Module.Equals(a)) { return(a); } JDFModulePool mp = caps.getModulePool(); if (mp == null) { return(null); } return(mp.getMinAvailability(caps.getModuleRefs())); }
public virtual void testGetMinAvailability() { JDFDoc d = new JDFDoc(ElementName.MODULEPOOL); JDFModulePool mp = (JDFModulePool)d.getRoot(); for (int i = 0; i < 4; i++) { JDFModuleCap mc = mp.appendModuleCap(); mc.setID("I" + i); mc.setAvailability(EnumAvailability.getEnum(i)); } VString s = new VString(); for (int i = 3; i >= 0; i--) { s.Add("I" + i); Assert.AreEqual(EnumAvailability.getEnum(i), mp.getMinAvailability(s)); } }
// // * // Attribute Getter / Setter // /// /// <summary> * Sets attribute Availability /// * </summary> /// * <param name="value"> /// * the value to set the attribute to </param> /// public virtual void setAvailability(EnumAvailability @value) { setAttribute(AttributeName.AVAILABILITY, @value.getName(), null); }
static JDFAbstractState() { atrInfoTable[0] = new AtrInfoTable(AttributeName.AVAILABILITY, 0x33333311, AttributeInfo.EnumAttributeType.enumeration, EnumAvailability.getEnum(0), null); atrInfoTable[1] = new AtrInfoTable(AttributeName.ACTIONREFS, 0x33333311, AttributeInfo.EnumAttributeType.IDREFS, null, null); atrInfoTable[2] = new AtrInfoTable(AttributeName.DEPENDENTMACROREF, 0x33333311, AttributeInfo.EnumAttributeType.IDREF, null, null); atrInfoTable[3] = new AtrInfoTable(AttributeName.DEVNS, 0x33333331, AttributeInfo.EnumAttributeType.URI, null, JDFConstants.JDFNAMESPACE); atrInfoTable[4] = new AtrInfoTable(AttributeName.EDITABLE, 0x33333311, AttributeInfo.EnumAttributeType.boolean_, null, JDFConstants.TRUE); atrInfoTable[5] = new AtrInfoTable(AttributeName.HASDEFAULT, 0x33333331, AttributeInfo.EnumAttributeType.boolean_, null, JDFConstants.TRUE); atrInfoTable[6] = new AtrInfoTable(AttributeName.ID, 0x33333311, AttributeInfo.EnumAttributeType.ID, null, null); atrInfoTable[7] = new AtrInfoTable(AttributeName.LISTTYPE, 0x33333311, AttributeInfo.EnumAttributeType.enumeration, EnumListType.getEnum(0), EnumListType.SingleValue.getName()); atrInfoTable[8] = new AtrInfoTable(AttributeName.MACROREFS, 0x33333311, AttributeInfo.EnumAttributeType.IDREFS, null, null); atrInfoTable[9] = new AtrInfoTable(AttributeName.MAXOCCURS, 0x33333311, AttributeInfo.EnumAttributeType.unbounded, null, "1"); atrInfoTable[10] = new AtrInfoTable(AttributeName.MINOCCURS, 0x33333311, AttributeInfo.EnumAttributeType.integer, null, "1"); atrInfoTable[11] = new AtrInfoTable(AttributeName.MODULEREFS, 0x33333111, AttributeInfo.EnumAttributeType.IDREFS, null, null); atrInfoTable[12] = new AtrInfoTable(AttributeName.NAME, 0x33333331, AttributeInfo.EnumAttributeType.NMTOKEN, null, null); atrInfoTable[13] = new AtrInfoTable(AttributeName.REQUIRED, 0x33333311, AttributeInfo.EnumAttributeType.boolean_, null, null); atrInfoTable[14] = new AtrInfoTable(AttributeName.SPAN, 0x44444431, AttributeInfo.EnumAttributeType.boolean_, null, null); atrInfoTable[15] = new AtrInfoTable(AttributeName.USERDISPLAY, 0x33333311, AttributeInfo.EnumAttributeType.enumeration, EnumUserDisplay.getEnum(0), EnumUserDisplay.Display.getName()); elemInfoTable[0] = new ElemInfoTable(ElementName.LOC, 0x33333311); }
/// /// * <param name="testRoot"> </param> /// * <param name="testlists"> </param> /// * <param name="level"> </param> /// * <param name="mrp"> </param> /// * <param name="irp"> </param> /// * <param name="resLinkPool"> </param> /// * <param name="goodElems"> </param> /// * <param name="badElems"> </param> /// * <param name="devCaps"> /// * @return </param> /// public virtual void analyzeDevCaps(KElement testRoot, EnumFitsValue testlists, EnumValidationLevel level, KElement mrp, KElement irp, SupportClass.HashSetSupport goodElems, Hashtable badElems, bool ignoreExtensions) { EnumAvailability av = getModuleAvailability(); KElement xpathRoot = testRoot; VElement vElemResources = null; if (testRoot is JDFNode) { JDFNode jdfNode = (JDFNode)testRoot; vElemResources = getMatchingElementsFromNode(jdfNode); xpathRoot = jdfNode.getResourceLinkPool(); if (xpathRoot == null) { xpathRoot = testRoot; } } else { vElemResources = getMatchingElementsFromJMF((JDFMessage)testRoot); } int svElemResources = vElemResources == null ? 0 : vElemResources.Count; EnumContext context = getContext(); KElement r = null; if (EnumValidationLevel.isRequired(level) && svElemResources < getMinOccurs() && EnumAvailability.Installed.Equals(av)) { if (EnumContext.Element.Equals(context) || EnumContext.JMF.Equals(context)) { r = mrp.appendElement("MissingElement"); r.setAttribute("XPath", xpathRoot.buildXPath(null, 1) + "/" + getName()); } else { EnumUsage linkUsage = getLinkUsage(); string procUsage = getProcessUsage(); r = mrp.appendElement("MissingResourceLink"); if (linkUsage != null) { r.setAttribute("Usage", linkUsage.getName()); } if (procUsage != null && procUsage.Length > 0) { r.setAttribute("ProcessUsage", procUsage); } r.setAttribute("XPath", xpathRoot.buildXPath(null, 1) + "/" + getName()); } r.setAttribute("Name", getName()); r.setAttribute("CapXPath", getName()); r.setAttribute("Occurrences", svElemResources, null); r.setAttribute("MinOccurs", getMinOccurs(), null); } else if (svElemResources > getMaxOccurs() || !EnumAvailability.Installed.Equals(av)) { if (context.Equals(EnumContext.Element) || context.Equals(EnumContext.JMF)) { r = irp.appendElement("ManyElement"); r.setAttribute("XPath", testRoot.buildXPath(null, 1) + "/" + getName()); } else { EnumUsage linkUsage = getLinkUsage(); string procUsage = getProcessUsage(); r = irp.appendElement("ManyResourceLink"); if (linkUsage != null) { r.setAttribute("Usage", linkUsage.getName()); } if (procUsage != null && procUsage.Length > 0) { r.setAttribute("ProcessUsage", procUsage); } r.setAttribute("XPath", xpathRoot.buildXPath(null, 1) + "/" + getName()); } r.setAttribute("Name", getName()); r.setAttribute("CapXPath", getName()); r.setAttribute("Occurrences", svElemResources, null); r.setAttribute("MaxOccurs", getMaxOccurs(), null); r.setAttribute("Availability", av == null ? "None" : av.getName()); } if (vElemResources != null) { for (int j = 0; j < svElemResources; j++) { KElement elem = vElemResources.item(j); if (!goodElems.Contains(elem)) { KElement report = devCapReport(elem, testlists, level, ignoreExtensions, irp); // InvalidResources if (report == null) { goodElems.Add(elem); KElement badReport = (KElement)badElems[elem]; if (badReport != null) { badReport.deleteNode(); } } else { badElems.Add(elem, report); } } } } }