예제 #1
0
        ///
        ///	 <summary> * get a specific layout element
        ///	 *  </summary>
        ///	 * <param name="layout"> </param>
        ///	 * <param name="elementName"> </param>
        ///	 * <param name="partitionKeyName"> </param>
        ///	 * <param name="iSkip"> the index of the element, negative values count backwards from the end </param>
        ///	 * <returns> JDFLayout: the element </returns>
        ///
        protected internal static JDFLayout getLayoutElement(JDFResource layout, string elementName, string partitionKeyName, int iSkip)
        {
            int iSkipLocal = iSkip;

            JDFLayout s = null;

            if (JDFLayout.isNewLayout(layout))
            {
                VElement v  = layout.getLeaves(true);
                VElement v2 = new VElement();
                for (int i = 0; i < v.Count; i++)
                {
                    if (v[i].hasAttribute_KElement(partitionKeyName, null, false))
                    {
                        v2.Add(v[i]);
                    }
                }
                v = v2;
                if (iSkipLocal < 0)
                {
                    iSkipLocal = v.Count + iSkipLocal;
                }

                if (iSkipLocal >= 0 && v.Count > iSkipLocal)
                {
                    s = (JDFLayout)v[iSkipLocal];
                }
            }
            else
            {
                s = (JDFLayout)layout.getElement(elementName, null, iSkipLocal);
            }
            return(s);
        }
예제 #2
0
 ///
 ///	 <summary> * get a vector of specific layout elements
 ///	 *  </summary>
 ///	 * <param name="layout"> </param>
 ///	 * <param name="elementName"> </param>
 ///	 * <param name="partitionKeyName"> </param>
 ///	 * <returns> VElement: the vector of elements </returns>
 ///
 protected internal static VElement getLayoutElementVector(JDFResource layout, string elementName, string partitionKeyName)
 {
     if (JDFLayout.isNewLayout(layout))
     {
         return(layout.getChildElementVector_JDFElement(ElementName.LAYOUT, null, new JDFAttributeMap(partitionKeyName, (string)null), true, 0, true));
     }
     return(layout.getChildElementVector_JDFElement(elementName, null, null, true, 0, true));
 }
예제 #3
0
        public virtual void testBinderySignature()
        {
            JDFDoc      d  = new JDFDoc(ElementName.JDF);
            JDFNode     n  = d.getJDFRoot();
            JDFResource bs = n.addResource(ElementName.BINDERYSIGNATURE, null, null, null, null, null, null);

            Assert.AreEqual(EnumResourceClass.Parameter, bs.getResourceClass(), "bs class");
            bs = n.addResource(ElementName.BINDERYSIGNATURE, JDFResource.EnumResourceClass.Parameter, null, null, n, null, null);
            Assert.AreEqual(EnumResourceClass.Parameter, bs.getResourceClass(), "bs class old style");
            Assert.IsTrue(bs.validClass());
        }
예제 #4
0
        ///
        ///	 <summary> * get a specific layout element by name
        ///	 *  </summary>
        ///	 * <param name="layout"> </param>
        ///	 * <param name="elementName"> </param>
        ///	 * <param name="partitionKeyName"> </param>
        ///	 * <param name="objectName">  </param>
        ///	 * <returns> JDFLayout: the element </returns>
        ///
        protected internal static JDFLayout getLayoutElement(JDFResource layout, string elementName, string partitionKeyName, string objectName)
        {
            JDFLayout s = null;

            if (JDFLayout.isNewLayout(layout))
            {
                s = (JDFLayout)layout.getPartition(new JDFAttributeMap(partitionKeyName, objectName), null);
            }
            else
            {
                s = (JDFLayout)layout.getChildWithAttribute(elementName, AttributeName.NAME, null, objectName, 0, true);
            }
            return(s);
        }
예제 #5
0
        ///
        ///	 <summary> * appends a signature in both old and new Layouts if old: a <code>< Signature></code> element if new: a
        ///	 * SignatureName partition leaf </summary>
        ///	 * <param name="layout">  </param>
        ///	 * <param name="elementName">  </param>
        ///	 * <param name="partitionKeyName">
        ///	 *  </param>
        ///	 * <returns> JDFLayout </returns>
        ///	 * <exception cref="JDFException">  </exception>
        ///
        protected internal static JDFLayout appendLayoutElement(JDFResource layout, string elementName, string partitionKeyName)
        {
            JDFLayout s = null;

            if (JDFLayout.isNewLayout(layout))
            {
                int n = 1 + numLayoutElements(layout, elementName, partitionKeyName);
                s = (JDFLayout)layout.addPartition(EnumPartIDKey.getEnum(partitionKeyName), partitionKeyName + Convert.ToString(n));
            }
            else
            {
                s = (JDFLayout)layout.appendElement(elementName);
            }
            return(s);
        }
예제 #6
0
        public virtual void testGetLink()
        {
            JDFDoc          doc = new JDFDoc("JDF");
            JDFNode         n   = doc.getJDFRoot();
            JDFResource     r   = n.addResource("www.foo", EnumResourceClass.Parameter, EnumUsage.Input, null, null, "www.www.com", null);
            JDFResourceLink rl  = n.getLink(r, null);
            VElement        vRL = new VElement();

            vRL.Add(rl);

            JDFAuditPool ap = n.getCreateAuditPool();
            JDFPhaseTime pt = ap.addPhaseTime(EnumNodeStatus.InProgress, null, null);

            pt.appendComment().setText("foo");
            pt.setLinks(vRL);
            pt.setStart(new JDFDate());
            Assert.AreEqual(rl.ToString(), pt.getLink(0).ToString());
        }
예제 #7
0
        ///
        ///	 <summary> * get a specific layout element by name, creates it if it does not exist
        ///	 *  </summary>
        ///	 * <param name="layout"> </param>
        ///	 * <param name="elementName"> </param>
        ///	 * <param name="partitionKeyName"> </param>
        ///	 * <param name="objectName">  </param>
        ///	 * <returns> JDFLayout: the element </returns>
        ///	 * <exception cref="JDFException"> if the location of a newly created element is not well defined  </exception>
        ///
        protected internal static JDFLayout getCreateLayoutElement(JDFResource layout, string elementName, string partitionKeyName, string objectName)
        {
            JDFLayout s = getLayoutElement(layout, elementName, partitionKeyName, objectName);

            if (s != null)
            {
                return(s);
            }
            if (JDFLayout.isNewLayout(layout))
            {
                s = (JDFLayout)layout.addPartition(EnumPartIDKey.getEnum(partitionKeyName), objectName);
            }
            else
            {
                s = (JDFLayout)layout.appendElement(elementName);
                s.setName(objectName);
            }
            return(s);
        }
예제 #8
0
        ///
        ///	 <summary> * add a link to one of the resources
        ///	 *  </summary>
        ///	 * <param name="bNew"> true - new link, false - original link </param>
        ///	 * <param name="r"> the resource that was valid before modification </param>
        ///	 * <param name="usage"> usage of the resource </param>
        ///	 * <returns> the ResourceLink object in the ResourceAudit that points to r </returns>
        ///

        public virtual JDFResourceLink addNewOldLink(bool bNew, JDFResource r, EnumUsage usage)
        {
            VElement v    = getChildElementVector(null, null, null, true, 0, false);
            int      iNew = bNew ? 0 : 1;

            for (int i = v.Count - 1; i >= 0; i--)
            {
                if (!(v[i] is JDFResourceLink))
                {
                    v.RemoveAt(i);
                }
            }

            if (v.Count != iNew)
            {
                throw new JDFException("JDFResourceLink::AddNewOldLink invalid  ResourceAudit");
            }
            JDFResourceLink l = (JDFResourceLink)appendElement(r.getLinkString(), JDFConstants.EMPTYSTRING);

            l.setTarget(r);
            l.setUsage(usage);
            return(l);
        }
예제 #9
0
 public virtual JDFResourceLink addNewOldLink(bool bNew, JDFResource r, bool bInput)
 {
     return(addNewOldLink(bNew, r, bInput ? EnumUsage.Input : EnumUsage.Output));
 }
예제 #10
0
 public virtual JDFResourceLink addOldLink(JDFResource r, bool bInput)
 {
     return(addNewOldLink(false, r, bInput));
 }
예제 #11
0
        ///
        ///	 <summary> * get the number of layout elements
        ///	 *  </summary>
        ///	 * <param name="layout"> </param>
        ///	 * <param name="elementName"> </param>
        ///	 * <param name="partitionKeyName"> </param>
        ///	 * <returns> int: number of layout elements </returns>
        ///
        protected internal static int numLayoutElements(JDFResource layout, string elementName, string partitionKeyName)
        {
            VElement v = getLayoutElementVector(layout, elementName, partitionKeyName);

            return(v == null ? 0 : v.Count);
        }