示例#1
0
        ///
        ///	 <summary> * sets all relevant parameters of this to the values specified in resourceLink or its linked resource or JDF node
        ///	 *  </summary>
        ///	 * <param name="resourceLink"> the resourceLink to extract the information from </param>
        ///	 * <param name="rqp"> parameters </param>
        ///
        public virtual void setLink(JDFResourceLink resourceLink, JDFResourceQuParams rqp)
        {
            if (resourceLink == null)
            {
                return;
            }
            JDFAmountPool ap = resourceLink.getAmountPool();

            if (ap != null)
            {
                copyElement(ap, null);
            }
            else
            {
                if (resourceLink.hasAttribute(AttributeName.ACTUALAMOUNT))
                {
                    setActualAmount(resourceLink.getActualAmount(null));
                }
                if (resourceLink.hasAttribute(AttributeName.AMOUNT))
                {
                    setAmount(resourceLink.getAmount(null));
                }
            }
            setProcessUsage(resourceLink.getEnumProcessUsage());

            JDFResource r = resourceLink.getTarget();

            if (r == null && rqp != null)
            {
                rqp.setExact(false);
            }

            bool bExact = rqp == null ? false : rqp.getExact();

            if (!bExact || r == null) // if we do not have a resource let's limp
            // along and provide as much as we have
            {
                setResourceName(resourceLink.getLinkedResourceName());
                setAttribute(AttributeName.RESOURCEID, resourceLink.getrRef());
                EnumUsage usage = resourceLink.getUsage();
                if (usage != null)
                {
                    setAttribute(AttributeName.USAGE, usage.getName());
                }
                if (r != null && r.hasAttribute(AttributeName.PRODUCTID))
                {
                    setProductID(r.getProductID());
                }
            }
            else
            {
                // create a copy of the resource in the original jdf
                JDFResource rr = (JDFResource)r.getParentNode_KElement().copyElement(r, null);
                rr.inlineRefElements(null, null, true);
                // move resource copy from the original node into this document
                moveElement(rr, null);
            }
        }
示例#2
0
            ///
            ///		 * <param name="node"> </param>
            ///		 * <param name="resCmd"> </param>
            ///		 * <returns> the new resource </returns>
            ///
            private JDFResource createNewResource(JDFNode node, JDFResource resCmd)
            {
                JDFResource resTarget = null;
                EnumUsage   u         = enclosingInstance.getUsage();

                if (u != null)
                {
                    resTarget = (JDFResource)node.getCreateResourcePool().copyElement(resCmd, null);
                    JDFResourceLink rl = node.linkResource(resTarget, u, null);
                    rl.copyAttribute(AttributeName.PROCESSUSAGE, enclosingInstance); //JDFResourceCmdParams.this);
                    resTarget = getTargetResource(node);
                }
                return(resTarget);
            }
示例#3
0
        ///
        ///	 <summary> * emulate execution of a runlist by making it available </summary>
        ///
        private void executeRunList(EnumUsage usage)
        {
            JDFRunList rl = (JDFRunList)theExpandedNode.getResource(ElementName.RUNLIST, usage, 0);

            if (rl == null)
            {
                return;
            }
            if (!rl.hasChildElement(ElementName.LAYOUTELEMENT, null))
            {
                rl.addPDF("./folder/Thedoc.pdf", 0, -1);
            }
            if (EnumUsage.Output.Equals(usage))
            {
                rl.setResStatus(EnumResStatus.Available, true);
            }
        }
示例#4
0
        ///
        ///	 <summary> *  </summary>
        ///
        private void executeMarksRunList(EnumUsage usage)
        {
            JDFRunList rl = (JDFRunList)theExpandedNode.getResource(ElementName.RUNLIST, usage, 0);

            if (!"Marks".Equals(theExpandedNode.getLink(rl, usage).getProcessUsage()))
            {
                rl = (JDFRunList)theExpandedNode.getResource(ElementName.RUNLIST, usage, 1);
            }
            if (!"Marks".Equals(theExpandedNode.getLink(rl, usage).getProcessUsage()))
            {
                rl = null;
            }

            if (rl != null && !rl.hasChildElement(ElementName.LAYOUTELEMENT, null))
            {
                rl.addPDF("./folder/TheMarks.pdf", 0, -1);
            }
        }
示例#5
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);
        }
示例#6
0
 //         ---------------------------------------------------------------------
 //        Methods for Attribute Usage
 //        ---------------------------------------------------------------------
 ///
 ///          <summary> * (5) set attribute Usage </summary>
 ///          * <param name="enumVar">: the enumVar to set the attribute to </param>
 ///
 public virtual void setUsage(JDFResourceLink.EnumUsage enumVar)
 {
     setAttribute(AttributeName.USAGE, enumVar == null ? null : enumVar.getName(), null);
 }
示例#7
0
        ///
        ///	 <summary> * append elements to the node that match this DevCap, if they do not exist
        ///	 * yet
        ///	 *  </summary>
        ///	 * <param name="node">
        ///	 *            the node to append the elements to </param>
        ///	 * <param name="bAll">
        ///	 *            if false, only add if minOccurs>=1 and required=true or a
        ///	 *            default exists
        ///	 *  </param>
        ///	 * <returns> KElement - the last element that was appended </returns>
        ///
        public virtual KElement appendMatchingElementsToNode(JDFNode node, bool bAll, org.cip4.jdflib.util.VectorMap <int, JDFResource> indexResMap, bool bLink)
        {
            KElement e = null;

            EnumContext context = getContext();

            if (!bLink && EnumContext.Link.Equals(context))
            {
                return(null);
            }

            if (bLink && !EnumContext.Link.Equals(context))
            {
                return(null);
            }

            JDFDevCap devCap = getDevCap();

            if (devCap == null)
            {
                return(null);
            }

            int minOcc = devCap.getMinOccurs();

            if (minOcc == 0 && bAll)
            {
                minOcc = 1;
            }

            string nam = getName();

            for (int i = 0; i < minOcc; i++)
            {
                if (context.Equals(EnumContext.Element))
                { // vElem - for a common return type in all cases
                    if (nam.Equals(ElementName.JDF))
                    {
                        // nop - should actually never get here
                    }
                    else
                    {
                        e = node.getCreateElement(nam, getDevNS(), i);
                    }
                }
                else if (context.Equals(EnumContext.Resource) || context.Equals(EnumContext.Link))
                {
                    EnumUsage        linkUsage = getLinkUsage();
                    string           procUsage = getProcessUsage();
                    JDFAttributeMap  map       = new JDFAttributeMap();
                    EnumProcessUsage pu        = null;

                    if (procUsage != null && procUsage.Length > 0)
                    {
                        map.put(AttributeName.PROCESSUSAGE, procUsage);
                        pu = EnumProcessUsage.getEnum(procUsage);
                    }

                    if (linkUsage != null)
                    {
                        map.put(AttributeName.USAGE, linkUsage.getName());
                    }

                    VElement links = node.getResourceLinks(nam, map, null);
                    // now look for the correct combinedprocessindex - remove all
                    // non-matching
                    JDFIntegerRangeList tocNum  = getTypeOccurrenceNum();
                    JDFIntegerList      tocNum2 = tocNum == null ? null : tocNum.getIntegerList();
                    if (links != null && tocNum != null)
                    {
                        for (int ll = links.Count - 1; ll >= 0; ll--)
                        {
                            JDFResourceLink rl = (JDFResourceLink)links[ll];
                            JDFIntegerList  il = rl.getCombinedProcessIndex();
                            if (il == null || !il.Contains(tocNum2))
                            {
                                links.RemoveAt(ll);
                            }
                        }
                    }

                    if (links == null || links.Count <= i)
                    {
                        JDFResource r = null;
                        // get a link hook for the matching combinedprocessindex
                        if (bLink)
                        {
                            int kk = (tocNum2 == null || tocNum2.Count == 0) ? -1 : tocNum2.getInt(0);
                            if (EnumUsage.Input.Equals(linkUsage))
                            {
                                kk--;
                            }
                            List <JDFResource> v = null;
                            indexResMap.TryGetValue(kk, out v);
                            if (v != null)
                            {
                                int sv = v.Count;
                                for (int kkk = 0; kkk < sv; kkk++)
                                {
                                    JDFResource rr = v[kkk];
                                    if (rr.LocalName.Equals(nam))
                                    {
                                        r = rr;
                                        break;
                                    }
                                }
                            }
                        }

                        // we found no matching existing res - make a new one
                        if (r == null)
                        {
                            r = node.addResource(nam, null, linkUsage, pu, null, getDevNS(), null);
                            string id = devCap.getAttribute(AttributeName.ID, null, null);
                            if (id != null)
                            {
                                JDFResourceLink rl = node.getLink(r, linkUsage);

                                r.setID(id);
                                if (rl != null)
                                {
                                    rl.setrRef(id);
                                }
                            }

                            if (tocNum2 == null || tocNum2.Count == 0)
                            {
                                indexResMap.putOne(-1, r); //(new int(-1), r);
                            }
                            else
                            {
                                indexResMap.putOne((int)tocNum2.elementAt(0), r); // only
                            }
                            // support
                            // 1
                            // now
                        }
                        else
                        // preexisting resource - just link it
                        {
                            e = node.linkResource(r, linkUsage, pu);
                        }

                        e = node.getLink(r, linkUsage);
                        if (e != null)
                        {
                            JDFResourceLink rl = (JDFResourceLink)e;
                            rl.setCombinedProcessIndex(tocNum2);
                        }

                        // update partititons
                        JDFEnumerationState pidKeys = devCap.getEnumerationState(AttributeName.PARTIDKEYS);
                        if (pidKeys != null)
                        {
                            VString keys = pidKeys.getAllowedValueList();
                            if (keys != null && keys.Count > 0)
                            {
                                JDFAttributeMap keyMap = new JDFAttributeMap();
                                for (int k = 0; k < keys.Count; k++)
                                {
                                    string sk  = "PartKey" + k;
                                    string key = keys.stringAt(k);
                                    if (key.Equals("RunIndex"))
                                    {
                                        sk = "0~-1";
                                    }
                                    keyMap.put(key, sk);
                                }

                                r.getCreatePartition(keyMap, keys);
                            }
                        }
                    }
                }
                else if (context.Equals(EnumContext.JMF))
                {
                    // TODO __Lena__ ...
                }
            }

            return(e);
        }
示例#8
0
        ///
        ///	 <summary> * gets the matching elements in node that match this devcap
        ///	 *  </summary>
        ///	 * <param name="node">
        ///	 *            the node to search in </param>
        ///	 * <returns> VElement - the element vector of matching elements,
        ///	 *         <code>null</code> if none were found </returns>
        ///
        private VElement getMatchingElementsFromNode(JDFNode node)
        {
            VElement vElem = new VElement();

            string              nam         = getName();
            EnumContext         context     = getContext();
            JDFResourceLinkPool resLinkPool = node.getResourceLinkPool();

            if (context.Equals(EnumContext.Element))
            { // vElem - for a common return type in all cases
                if (nam.Equals(ElementName.JDF))
                {
                    vElem.Add(node);
                }
                else
                {
                    vElem = node.getChildElementVector(nam, null, null, true, 0, false);
                }
            }
            else if (context.Equals(EnumContext.Link) || context.Equals(EnumContext.Resource))
            {
                if (resLinkPool != null)
                {
                    EnumUsage linkUsage  = getLinkUsage();
                    string    procUsage  = getProcessUsage();
                    bool      bLink      = context.Equals(EnumContext.Link);
                    VElement  vElemLinks = resLinkPool.getInOutLinks(linkUsage, true, nam, null);
                    if (vElemLinks != null)
                    {
                        int linkSize = vElemLinks.Count - 1;
                        for (int j = linkSize; j >= 0; j--)
                        {
                            JDFResourceLink rl             = (JDFResourceLink)vElemLinks[j];
                            string          rlProcessUsage = rl.getProcessUsage();
                            if (!rlProcessUsage.Equals(procUsage))
                            {
                                vElemLinks.RemoveAt(j);
                            }
                        }
                    }

                    if (!bLink)
                    {
                        vElem = JDFResourceLinkPool.resourceVector(vElemLinks, null);
                    }
                    else
                    {
                        vElem = vElemLinks;
                    }
                }
            }
            else if (context.Equals(EnumContext.JMF))
            {
                // TODO __Lena__ ...
            }
            else
            { // Context_Unknown
                throw new JDFException("JDFDevCaps wrong attribute Context value");
            }

            if (vElem != null && vElem.Count == 0)
            {
                vElem = null;
            }

            return(vElem);
        }
示例#9
0
        ///
        ///	 * <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);
                        }
                    }
                }
            }
        }
示例#10
0
        ///
        ///	 * <param name="icsLevel"> </param>
        ///
        protected internal virtual void initPlateXM(EnumUsage usage)
        {
            JDFResourceLink rl = null;

            if (thePreviousNode != null) // either input (for cp, or output for
            // plateset)
            {
                rl = theNode.linkResource(thePreviousNode.getResource(ElementName.EXPOSEDMEDIA, null, 0), usage, null);
            }

            if (rl == null && theParentNode != null)
            {
                rl = theNode.ensureLink(theParentNode.getResource(ElementName.EXPOSEDMEDIA, null, 0), usage, null);
            }

            JDFExposedMedia xm = (JDFExposedMedia)theNode.getCreateResource(ElementName.EXPOSEDMEDIA, usage, 0);

            xm.setPartUsage(EnumPartUsage.Explicit);
            rl = theNode.getLink(xm, null);

            JDFMedia m = ((JDFExposedMedia)xm.getLeaves(false)[0]).getMedia();

            if (m == null)
            {
                m = initPlateMedia();
            }
            else
            {
                m = (JDFMedia)m.getResourceRoot();
                if (theParentNode != null)
                {
                    theNode.ensureLink(theParentNode.getResource("Media", EnumUsage.Input, 0), EnumUsage.Input, null);
                }
            }
            xm.setResStatus(EnumResStatus.Unavailable, false);
            if (!bPartitionedPlateMedia && xm.getMedia() == null)
            {
                xm.refElement(m);
            }
            if (EnumUsage.Input.Equals(usage))
            {
                rl.setProcessUsage(EnumProcessUsage.Plate);
                JDFResourceLink link = theNode.getLink(m, null);
                if (link != null)
                {
                    link.deleteNode();
                }
            }

            if (vParts != null)
            {
                for (int i = 0; i < vParts.Count; i++)
                {
                    JDFAttributeMap part  = new JDFAttributeMap(vParts[i]);
                    JDFResource     xmp   = xm.getCreatePartition(part, partIDKeys);
                    int             ncols = "Front".Equals(part.get("Side")) ? nCols[0] : nCols[1];

                    for (int j = 0; j < ncols; j++)
                    {
                        part.put(EnumPartIDKey.Separation, cols.stringAt(j));
                        xmp.getCreatePartition(part, partIDKeys);
                    }
                }
                if (bPartitionedPlateMedia)
                {
                    VJDFAttributeMap vSheets = getReducedMap(new VString("Side Separation PartVersion", null));
                    for (int i = 0; i < vSheets.Count; i++)
                    {
                        JDFAttributeMap part = new JDFAttributeMap(vSheets[i]);
                        JDFExposedMedia xmp  = (JDFExposedMedia)xm.getCreatePartition(part, partIDKeys);
                        if (xmp.getMedia() == null)
                        {
                            xmp.refMedia((JDFMedia)m.getCreatePartition(part, null));
                        }
                    }
                }
            }
        }