Exemple #1
0
 public virtual void testGetMimeTypeFromURL()
 {
     Assert.IsNull(JDFFileSpec.getMimeTypeFromURL(null));
     Assert.IsNull(JDFFileSpec.getMimeTypeFromURL("burp"));
     Assert.AreEqual("application/pdf", JDFFileSpec.getMimeTypeFromURL("file://a/b/./testtif.foo.PDF"));
     Assert.AreEqual("image/tiff", JDFFileSpec.getMimeTypeFromURL("http://a/b/./testtif.foo.tiff"));
 }
Exemple #2
0
        ///
        ///	 <summary> * Appends new FileSpec(FinalTargetDevice) element to the end of 'this'
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec newly created child FileSpec(FinalTargetDevice)
        ///	 *         element </returns>
        ///
        public virtual JDFFileSpec appendFinalTargetDevice()
        {
            JDFFileSpec res = appendFileSpec();

            res.setResourceUsage("FinalTargetDevice");
            return(res);
        }
Exemple #3
0
        public virtual void testBuildMimePackageDocJMF()
        {
            JDFDoc docJMF = new JDFDoc("JMF");

            docJMF.setOriginalFileName("JMF.jmf");
            JDFJMF     jmf = docJMF.getJMFRoot();
            JDFCommand com = (JDFCommand)jmf.appendMessageElement(JDFMessage.EnumFamily.Command, JDFMessage.EnumType.SubmitQueueEntry);

            com.appendQueueSubmissionParams().setURL("TheJDF");

            JDFDoc doc = new JDFDoc("JDF");

            doc.setOriginalFileName("JDF.jdf");
            JDFNode n = doc.getJDFRoot();

            n.setType(EnumType.ColorSpaceConversion);
            JDFColorSpaceConversionParams cscp = (JDFColorSpaceConversionParams)n.addResource(ElementName.COLORSPACECONVERSIONPARAMS, null, EnumUsage.Input, null, null, null, null);
            JDFFileSpec fs0 = cscp.appendFinalTargetDevice();

            fs0.setURL(StringUtil.uncToUrl(sm_dirTestData + "test.icc", true));
            JDFRunList rl = (JDFRunList)n.addResource(ElementName.RUNLIST, null, EnumUsage.Input, null, null, null, null);

            rl.addPDF(StringUtil.uncToUrl(sm_dirTestData + "url1.pdf", false), 0, -1);
            for (int i = 0; i < 100; i++)
            {
                rl.addPDF(StringUtil.uncToUrl(sm_dirTestData + "url?.pdf", false), 0, -1);
            }
            AttachmentCollection m = MimeUtil.buildMimePackage(docJMF, doc, true);

            MimeUtil.writeToFile(m, sm_dirTestDataTemp + "testMimePackageDoc.mjm", null);
        }
Exemple #4
0
        public virtual void testBuildMimePackageDoc()
        {
            for (int i = 0; i < 2; i++)
            {
                JDFDoc doc = new JDFDoc("JDF");
                if (i == 1)
                {
                    doc.setOriginalFileName("JDF.jdf");
                }
                JDFNode n = doc.getJDFRoot();
                n.setType(EnumType.ColorSpaceConversion);
                JDFColorSpaceConversionParams cscp = (JDFColorSpaceConversionParams)n.addResource(ElementName.COLORSPACECONVERSIONPARAMS, null, EnumUsage.Input, null, null, null, null);
                JDFFileSpec fs0 = cscp.appendFinalTargetDevice();
                fs0.setURL(StringUtil.uncToUrl(sm_dirTestData + "test.icc", true));
                JDFRunList rl = (JDFRunList)n.addResource(ElementName.RUNLIST, null, EnumUsage.Input, null, null, null, null);
                rl.addPDF(StringUtil.uncToUrl(sm_dirTestData + "url1.pdf", false), 0, -1);
                rl.addPDF(StringUtil.uncToUrl(sm_dirTestData + "url1.pdf", false), 0, -1);
                rl.addPDF(StringUtil.uncToUrl(sm_dirTestData + "url2.pdf", false), 0, -1);
                AttachmentCollection m = MimeUtil.buildMimePackage(null, doc, true);

                string mimeFile = sm_dirTestDataTemp + "testMimePackageDoc" + (i == 0 ? "0" : "") + ".mjm";
                MimeUtil.writeToFile(m, mimeFile, null);

                AttachmentCollection mp = MimeUtil.GetMultiPart(mimeFile);
                Assert.AreEqual(4, mp.Count, "JDF, 2* rl, 1 icc");
            }
        }
Exemple #5
0
        public virtual void testResolveRelativeUrls()
        {
            // Build MIME package
            string path   = sm_dirTestData + "MISPrepress-ICS-Complex.jdf";
            JDFDoc jdfDoc = new JDFParser().parseFile(path);

            Assert.IsNotNull(jdfDoc, "Could not parse JDF: " + path);
            AttachmentCollection multipart = MimeUtil.buildMimePackage(null, jdfDoc, true);

            Assert.IsNotNull(multipart, "Could not build multipart");
            // Verify contents
            Assert.AreEqual(3, multipart.Count);
            JDFDoc jdfDoc2 = MimeUtil.getJDFDoc(multipart[0]);

            Assert.IsNotNull(jdfDoc2);
            JDFNode jdf = jdfDoc2.getJDFRoot();

            Assert.IsNotNull(jdf);
            VElement fileSpecs = jdf.getChildrenByTagName(ElementName.FILESPEC, null, new JDFAttributeMap(AttributeName.URL, "*"), false, false, 0);

            Assert.AreEqual(3, fileSpecs.Count);
            for (IEnumerator i = fileSpecs.GetEnumerator(); i.MoveNext();)
            {
                JDFFileSpec fileSpec = (JDFFileSpec)i.Current;
                string      cid      = fileSpec.getURL();
                Assert.IsTrue(cid.StartsWith("cid:"));
                Assert.IsNotNull(MimeUtil.GetPartByCID(multipart, cid));
            }
        }
        public virtual JDFFileSpec getSearchPath(int iSkip)
        {
            int iSkipLocal = iSkip;

            JDFFileSpec res = null;
            VElement    v   = getChildElementVector(ElementName.FILESPEC, null, null, true, 0, false);
            int         siz = v.Count;

            for (int i = 0; i < siz; i++)
            {
                res = (JDFFileSpec)v[i];
                if (res.hasAttribute(AttributeName.RESOURCEUSAGE))
                {
                    if (res.getResourceUsage() == "SearchPath")
                    {
                        if (iSkipLocal >= 0)
                        {
                            iSkipLocal--;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }

            return(res);
        }
        public virtual void testDevice()
        {
            JDFDoc  d = new JDFDoc(ElementName.JDF);
            JDFNode n = d.getJDFRoot();

            n.setType("Stitching", true);
            JDFDevice dev = (JDFDevice)n.appendMatchingResource(ElementName.DEVICE, EnumProcessUsage.AnyInput, null);

            dev.setResStatus(EnumResStatus.Available, true);
            dev.setKnownLocalizations(new VString("De", null));
            dev.setSerialNumber("12345");
            dev.setSecureJMFURL("http://fififi");
            JDFModule m = dev.appendModule();

            // m.setModuleIndex(0);
            m.setModelDescription("1234");
            JDFIconList il = dev.appendIconList();

            Assert.IsFalse(il.isValid(EnumValidationLevel.Complete), "empty iconlist");
            Assert.IsTrue(il.isValid(EnumValidationLevel.Incomplete), "empty iconlist");
            JDFIcon ic = il.appendIcon();

            ic.setSize(new JDFXYPair(200, 200));
            ic.setBitDepth(8);
            JDFFileSpec fs = ic.appendFileSpec();

            fs.setURL("file:///this.ico");

            Assert.IsTrue(ic.isValid(EnumValidationLevel.Complete), "icon valid");
            Assert.IsTrue(il.isValid(EnumValidationLevel.Complete), "iconlist valid");
            Assert.IsTrue(m.isValid(EnumValidationLevel.Complete), "mod valid");
            Assert.IsTrue(dev.isValid(EnumValidationLevel.Complete), "dev valid");
            Assert.IsTrue(dev.validClass());
        }
        ///
        ///	 <summary> * Appends new FileSpec(DeviceLinkProfile) element to the end of 'this'
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec newly created child DeviceLinkProfile element </returns>
        ///
        public virtual JDFFileSpec appendDeviceLinkProfile()
        {
            JDFFileSpec res = appendFileSpec();

            res.setResourceUsage("DeviceLinkProfile");

            return(res);
        }
        ///
        ///	 * <exception cref="FormatException"> </exception>
        ///
        private void setUpAutomatedInputRunList()
        {
            JDFRunList run = rl.addRun("file://host/data/test.ppml", 0, -1);

            Assert.AreEqual(JDFFileSpec.getMimeTypeFromURL(".ppml"), run.getLayoutElement().getFileSpec().getMimeType());
            run.setDocs(new JDFIntegerRangeList("0~99"));
            rl.setResStatus(EnumResStatus.Available, true);
        }
        ///
        ///	 <summary> * Appends new FileSpec(AbstractProfile) element to the end of 'this'
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec newly created child AbstractProfile element </returns>
        ///
        public virtual JDFFileSpec appendAbstractProfile()
        {
            JDFFileSpec res = appendFileSpec();

            res.setResourceUsage("AbstractProfile");

            return(res);
        }
        ///
        ///	 <summary> * Appends new FileSpec(WorkingColorSpace) element to the end of 'this'
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec: newly created child WorkingColorSpace element </returns>
        ///
        public virtual JDFFileSpec appendWorkingColorSpace()
        {
            JDFFileSpec res = appendFileSpec();

            res.setResourceUsage("WorkingColorSpace");

            return(res);
        }
        public virtual JDFFileSpec appendSearchPath()
        {
            JDFFileSpec res = appendFileSpec();

            res.setResourceUsage("SearchPath");

            return(res);
        }
Exemple #13
0
        public virtual void testSetMimeURL()
        {
            JDFDoc      d  = new JDFDoc("FileSpec");
            JDFFileSpec fs = (JDFFileSpec)d.getRoot();

            fs.setMimeURL("file:/c/test.pdf");
            Assert.AreEqual("application/pdf", fs.getMimeType());
            Assert.AreEqual("file:/c/test.pdf", fs.getURL());
        }
Exemple #14
0
        ///
        ///	 <summary> * Gets of 'this' child FileSpec(SourceProfile) element, optionally creates
        ///	 * it, if it doesn't exist.
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec the matching SourceProfile element </returns>
        ///
        public virtual JDFFileSpec getCreateSourceProfile()
        {
            JDFFileSpec res = getSourceProfile();

            if (res == null)
            {
                res = appendSourceProfile();
            }
            return(res);
        }
Exemple #15
0
        ///
        ///	 <summary> * Gets of 'this' child FileSpec(AbstractProfile) element, optionally
        ///	 * creates it, if it doesn't exist.
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec the matching AbstractProfile element </returns>
        ///
        public virtual JDFFileSpec getCreateAbstractProfile()
        {
            JDFFileSpec res = getFinalTargetDevice();

            if (res == null)
            {
                res = appendFinalTargetDevice();
            }
            return(res);
        }
Exemple #16
0
        ///
        ///	 <summary> * Gets of 'this' child FileSpec(AbstractProfile) element, optionally
        ///	 * creates it, if it doesn't exist.
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec the matching AbstractProfile element </returns>
        ///
        public virtual JDFFileSpec getCreateAbstractProfile()
        {
            JDFFileSpec res = getAbstractProfile();

            if (res == null)
            {
                res = appendAbstractProfile();
            }
            return(res);
        }
        ///
        ///	 <summary> * Gets of 'this' child FileSpec(WorkingColorSpace) element, optionally
        ///	 * creates it, if it doesn't exist.
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec: the matching WorkingColorSpace element </returns>
        ///
        public virtual JDFFileSpec getCreateWorkingColorSpace()
        {
            JDFFileSpec res = getWorkingColorSpace();

            if (res == null)
            {
                res = appendWorkingColorSpace();
            }

            return(res);
        }
        public virtual JDFFileSpec getCreateSearchPath(int iSkip)
        {
            JDFFileSpec res = getSearchPath(iSkip);

            if (res == null)
            {
                res = appendSearchPath();
            }

            return(res);
        }
        ///
        ///	 <summary> * Gets of 'this' child FileSpec(DeviceLinkProfile) element, optionally
        ///	 * creates it, if it doesn't exist.
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec the matching DeviceLinkProfile element </returns>
        ///
        public virtual JDFFileSpec getCreateDeviceLinkProfile()
        {
            JDFFileSpec res = getDeviceLinkProfile();

            if (res == null)
            {
                res = appendDeviceLinkProfile();
            }

            return(res);
        }
Exemple #20
0
        public virtual void testSetAbsoluteURL()
        {
            JDFDoc      doc = new JDFDoc("JDF");
            JDFNode     n   = doc.getJDFRoot();
            JDFFileSpec fs  = (JDFFileSpec)n.addResource("FileSpec", null, EnumUsage.Input, null, null, null, null);
            JDFFileSpec fs2 = (JDFFileSpec)n.addResource("FileSpec", null, EnumUsage.Input, null, null, null, null);

            fs.setAbsoluteFileURL(new FileInfo("C:\\ist blöd\\fnord is €"), false);
            fs2.setAbsoluteFileURL(new FileInfo("C:\\ist blöd\\fnord is €"), true);
            Assert.AreEqual("file:///C:/ist%20blöd/fnord%20is%20€", fs.getURL());
            Assert.AreEqual("file:///C:/ist%20bl%c3%b6d/fnord%20is%20%e2%82%ac", fs2.getURL());
        }
Exemple #21
0
        public virtual void testReplaceContents()
        {
            JDFDoc doc = new JDFDoc("JDF");

            doc.setOriginalFileName("JDF.jdf");
            JDFNode n = doc.getJDFRoot();

            n.setType(EnumType.ColorSpaceConversion);
            JDFColorSpaceConversionParams cscp = (JDFColorSpaceConversionParams)n.addResource(ElementName.COLORSPACECONVERSIONPARAMS, null, EnumUsage.Input, null, null, null, null);
            JDFFileSpec fs0 = cscp.appendFinalTargetDevice();

            fs0.setURL(StringUtil.uncToUrl(sm_dirTestData + "test.icc", true));
            AttachmentCollection mp = MimeUtil.buildMimePackage(null, doc, true);

            Assert.AreEqual(2, mp.Count, "JDF,  1 icc");

            Attachment bp = mp[1];

            Assert.IsNotNull(bp);
            MimeUtil.SetAttachmentContent(bp, "hello World");

            Attachment bp2 = mp[1];

            Assert.AreEqual("hello World", MimeUtil.GetAttachmentContent(bp2));

            string mimeFile = sm_dirTestDataTemp + "testReplaceContents";

            MimeUtil.writeToFile(mp, mimeFile + ".mjm", null);

            AttachmentCollection mp2  = MimeUtil.GetMultiPart(mimeFile + ".mjm");
            Attachment           bp21 = mp2[1];

            Assert.AreEqual("hello World", MimeUtil.GetAttachmentContent(bp21));

            Attachment bp22 = mp2[1];

            Assert.IsNotNull(bp22);
            MimeUtil.SetAttachmentContent(bp22, "bye World");
            Assert.AreEqual("bye World", MimeUtil.GetAttachmentContent(bp22));
            Attachment bp23 = mp2[1];

            Assert.AreEqual(bp22, bp23);

            MimeUtil.writeToFile(mp2, mimeFile + "_1.mjm", null);
            AttachmentCollection mp3  = MimeUtil.GetMultiPart(mimeFile + "_1.mjm");
            Attachment           bp31 = mp3[1];

            Assert.AreEqual("bye World", MimeUtil.GetAttachmentContent(bp31));
        }
        ///
        ///     <summary> * Get all FileSpec from the current element
        ///     *  </summary>
        ///     * <returns> Collection<JDFFileSpec> </returns>
        ///
        public virtual ICollection <JDFFileSpec> getAllFileSpec()
        {
            List <JDFFileSpec> v = new List <JDFFileSpec>();

            JDFFileSpec kElem = (JDFFileSpec)getFirstChildElement(ElementName.FILESPEC, null);

            while (kElem != null)
            {
                v.Add(kElem);

                kElem = (JDFFileSpec)kElem.getNextSiblingElement(ElementName.FILESPEC, null);
            }

            return(v);
        }
Exemple #23
0
        public virtual void testGetJMFSubmission()
        {
            JDFDoc d1 = new JDFDoc("JMF");

            d1.setOriginalFileName("JMF.jmf");
            JDFJMF jmf = d1.getJMFRoot();

            jmf.setDeviceID("gr?n?");
            JDFCommand com = (JDFCommand)jmf.appendMessageElement(JDFMessage.EnumFamily.Command, JDFMessage.EnumType.SubmitQueueEntry);

            com.appendQueueSubmissionParams().setURL("TheJDF");

            JDFDoc doc = new JDFDoc("JDF");

            doc.setOriginalFileName("JDF.jdf");
            JDFNode n = doc.getJDFRoot();

            n.setType(EnumType.ColorSpaceConversion);
            JDFColorSpaceConversionParams cscp = (JDFColorSpaceConversionParams)n.addResource(ElementName.COLORSPACECONVERSIONPARAMS, null, EnumUsage.Input, null, null, null, null);
            JDFFileSpec fs0 = cscp.appendFinalTargetDevice();

            fs0.setURL(StringUtil.uncToUrl(sm_dirTestData + "test.icc", true));
            JDFRunList rl = (JDFRunList)n.addResource(ElementName.RUNLIST, null, EnumUsage.Input, null, null, null, null);

            rl.addPDF(StringUtil.uncToUrl(sm_dirTestData + "url1.pdf", false), 0, -1);
            for (int i = 0; i < 100; i++)
            {
                rl.addPDF("gr?n?" + i + ".pdf", 0, -1);
            }
            AttachmentCollection m = MimeUtil.buildMimePackage(d1, doc, true);

            JDFDoc[] d2 = MimeUtil.GetJMFSubmission(m);
            Assert.IsNotNull(d2);
            Assert.AreEqual("cid:JDF.jdf", d2[0].getJMFRoot().getCommand(0).getQueueSubmissionParams(0).getURL());
            Assert.AreEqual(EnumType.ColorSpaceConversion, d2[1].getJDFRoot().getEnumType());

            // now serialize to file and reread - should still work
            MimeUtil.writeToFile(m, sm_dirTestDataTemp + "test2.mjm", null);
            AttachmentCollection m2 = MimeUtil.GetMultiPart(sm_dirTestDataTemp + "test2.mjm");

            Assert.IsNotNull(m2);
            d2 = MimeUtil.GetJMFSubmission(m);
            Assert.IsNotNull(d2);
            Assert.AreEqual("cid:JDF.jdf", d2[0].getJMFRoot().getCommand(0).getQueueSubmissionParams(0).getURL());
            Assert.AreEqual(EnumType.ColorSpaceConversion, d2[1].getJDFRoot().getEnumType());
        }
Exemple #24
0
        public void testAmpersand()
        {
            JDFDoc  d = new JDFDoc("JDF");
            JDFNode n = d.getJDFRoot();

            n.setType("Interpreting", true);
            JDFFileSpec fs  = (JDFFileSpec)n.addResource(ElementName.FILESPEC, null, EnumUsage.Input, null, null, null, null);
            string      url = "FileInfo:///a&b.pdf";

            fs.setURL(url);
            string s = d.write2String(2);

            JDFParser p      = new JDFParser();
            JDFDoc    dNew   = p.parseString(s);
            string    newUrl = ((JDFFileSpec)dNew.getJDFRoot().getResourcePool().getElement(ElementName.FILESPEC, null, 0)).getURL();

            Assert.AreEqual(newUrl, url, "url=url");
        }
        ///
        ///	 <summary> * Gets of 'this' an existing child FileSpec(WorkingColorSpace) element
        ///	 *  </summary>
        ///	 * <returns> JDFFileSpec: the matching WorkingColorSpace element </returns>
        ///
        public virtual JDFFileSpec getWorkingColorSpace()
        {
            VElement v   = getChildElementVector(ElementName.FILESPEC, null, null, true, 0, false);
            int      siz = v.Count;

            for (int i = 0; i < siz; i++)
            {
                JDFFileSpec res = (JDFFileSpec)v[i];
                if (res.hasAttribute(AttributeName.RESOURCEUSAGE))
                {
                    if ("WorkingColorSpace".Equals(res.getResourceUsage()))
                    {
                        return(res);
                    }
                }
            }

            return(null);
        }
Exemple #26
0
        public virtual void testGetURLCidStream()
        {
            new MimeUtilTest().testBuildMimePackageDocJMF();
            AttachmentCollection mp = MimeUtil.GetMultiPart(sm_dirTestDataTemp + "testMimePackageDoc.mjm");
            Attachment           bp = MimeUtil.GetPartByCID(mp, "jdf.JDF");
            JDFDoc  d = MimeUtil.getJDFDoc(bp);
            JDFNode n = d.getJDFRoot();
            JDFColorSpaceConversionParams cscp = (JDFColorSpaceConversionParams)n.getMatchingResource(ElementName.COLORSPACECONVERSIONPARAMS, null, null, 0);

            Assert.IsNotNull(cscp);
            JDFFileSpec fs  = cscp.getFinalTargetDevice();
            Stream      @is = fs.getURLInputStream();

            Assert.IsNotNull(@is);
            byte[] b = new byte[100];
            int    i = @is.Read(b, 0, 100);

            Assert.IsTrue(i > 0);
            string s = System.Text.Encoding.Default.GetString(b);

            Assert.IsTrue(s.IndexOf("I C C") >= 0);
        }
        public virtual void testGetMimeURL()
        {
            JDFDoc d1 = new JDFDoc("JMF");

            d1.setOriginalFileName("JMF.jmf");
            JDFJMF     jmf = d1.getJMFRoot();
            JDFCommand com = (JDFCommand)jmf.appendMessageElement(JDFMessage.EnumFamily.Command, JDFMessage.EnumType.SubmitQueueEntry);

            com.appendQueueSubmissionParams().setURL("cid:TheJDF");

            JDFDoc doc = new JDFDoc("JDF");

            doc.setOriginalFileName("JDF.jdf");
            JDFNode n = doc.getJDFRoot();

            n.setType(JDFNode.EnumType.ColorSpaceConversion);
            JDFColorSpaceConversionParams cscp = (JDFColorSpaceConversionParams)n.addResource(ElementName.COLORSPACECONVERSIONPARAMS, null, EnumUsage.Input, null, null, null, null);
            JDFFileSpec fs0 = cscp.appendFinalTargetDevice();

            fs0.setURL(StringUtil.uncToUrl(sm_dirTestData + "test.icc", true));
            JDFRunList rl = (JDFRunList)n.addResource(ElementName.RUNLIST, null, EnumUsage.Input, null, null, null, null);

            rl.addPDF(StringUtil.uncToUrl(sm_dirTestData + "url1.pdf", false), 0, -1);
            System.Net.Mail.AttachmentCollection m = MimeUtil.buildMimePackage(d1, doc, true);

            JDFDoc[] d2 = MimeUtil.GetJMFSubmission(m);
            Assert.IsNotNull(d2);
            JDFQueueSubmissionParams queueSubmissionParams = d2[0].getJMFRoot().getCommand(0).getQueueSubmissionParams(0);

            Assert.AreEqual("cid:JDF.jdf", queueSubmissionParams.getURL());
            Assert.AreEqual(JDFNode.EnumType.ColorSpaceConversion, d2[1].getJDFRoot().getEnumType());
            JDFDoc d3 = queueSubmissionParams.getURLDoc();

            Assert.IsNotNull(d3);
            Assert.AreEqual(JDFNode.EnumType.ColorSpaceConversion, d3.getJDFRoot().getEnumType());
        }
Exemple #28
0
 ///
 ///      <summary> * (31) create inter-resource link to refTarget </summary>
 ///      * <param name="refTarget"> the element that is referenced </param>
 ///
 public virtual void refFileSpec(JDFFileSpec refTarget)
 {
     refElement(refTarget);
 }
Exemple #29
0
        public virtual void testAutomateLayout_PlateSet()
        {
            for (int loop = 0; loop < 3; loop++)
            {
                n.getAuditPool().appendXMLComment("This is a simple example of an automated layout used for conventional prepress\n" + "The structure is aligned as closely as possible with a static Layout", null);

                JDFRunList run = rl.addRun("file://host/data/test.pdf", 0, -1);
                run.setNPage(128);
                rl.setResStatus(EnumResStatus.Available, true);
                rl.setDescriptiveName("This is a RunList specifiying 128 pages each in a pdf file.");

                lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null);
                lo.setResStatus(EnumResStatus.Available, true);

                lo.setMaxOrd(4);
                lo.setAutomated(true);
                const string format = "Sheet%02i";
                lo.setAttribute("NameFormat", format);
                lo.setAttribute("NameTemplate", "SheetNum");
                lo.appendXMLComment("Simple automated Layout with exactly one sheet\n", null);
                JDFLayout sheet = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Sheet");
                sheet.setDescriptiveName("two sided 2 up sheet");
                JDFLayout        sheetFront = (JDFLayout)sheet.addPartition(EnumPartIDKey.Side, EnumSide.Front);
                JDFContentObject co         = sheetFront.appendContentObject();
                co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0));
                co.setOrd(0);
                co.setDescriptiveName("Front 1st, 5th, 9th... Page");

                co = sheetFront.appendContentObject();
                co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0));
                co.setOrd(1);
                co.setDescriptiveName("Front 2nd, 6th, 10th... page");

                JDFLayout sheetBack = (JDFLayout)sheet.addPartition(EnumPartIDKey.Side, EnumSide.Back);
                co = sheetBack.appendContentObject();
                co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0));
                co.setOrd(2);
                co.setDescriptiveName("Back 3rd, 7th, 11th... Page");

                co = sheetBack.appendContentObject();
                co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0));
                co.setOrd(3);
                co.setDescriptiveName("Back 4th, 8th, 12th... page");

                JDFRunList rlSheet = (JDFRunList)n.appendMatchingResource(ElementName.RUNLIST, EnumProcessUsage.AnyOutput, null);
                rlSheet.setDirectory("file://host/out/");
                if (loop == 0) // instantiate individually
                {
                    PrintfFormat fmt = new PrintfFormat(format);
                    for (int i = 0; i < 128; i += 4)
                    {
                        string     sheetName = fmt.tostr(1 + i / 4);
                        JDFRunList rlp       = (JDFRunList)rlSheet.addPartition(EnumPartIDKey.SheetName, sheetName);
                        JDFRunList rlF       = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Front);
                        rlF.appendLayoutElement().setMimeURL(sheetName + "Front.pdf");
                        JDFRunList rlB = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Back);
                        rlB.appendLayoutElement().setMimeURL(sheetName + "Back.pdf");
                    }
                }
                if (loop == 1) // instantiate individually
                {
                    rlSheet.appendLayoutElement().setMimeURL("AllSheets.pdf");
                    PrintfFormat        fmt = new PrintfFormat(format);
                    JDFIntegerRangeList integerRangeList = new JDFIntegerRangeList();
                    for (int i = 0; i < 128; i += 4)
                    {
                        string     sheetName = fmt.tostr(1 + i / 4);
                        JDFRunList rlp       = (JDFRunList)rlSheet.addPartition(EnumPartIDKey.SheetName, sheetName);
                        JDFRunList rlF       = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Front);
                        integerRangeList.Clear();
                        integerRangeList.Append(i / 2);
                        rlF.setPages(integerRangeList);
                        JDFRunList rlB = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Back);
                        integerRangeList.Clear();
                        integerRangeList.Append(1 + i / 2);
                        rlB.setPages(integerRangeList);
                    }
                }
                else
                // instantiate by template
                {
                    JDFFileSpec fs = rlSheet.appendLayoutElement().appendFileSpec();
                    fs.setMimeType("application/pdf");
                    fs.setFileFormat(format + "%s_%s.pdf");
                    fs.setFileTemplate("SheetNum,Surface,Separation");
                }

                doc.write2File(sm_dirTestDataTemp + "AutomatedLayout_Plateset" + loop + ".jdf", 2, false);
                n.getResourceLinkPool().deleteNode();
                n.getResourcePool().deleteNode();
            }
        }