Ejemplo n.º 1
0
        /// <summary>
        /// Copy constructor.
        /// </summary>
        /// <param name="source"></param>
        public Ticket(Ticket source) {
            ParameterCheck.ParameterRequired(source, "source");

            if (source.Root != null) {
                Add(new XElement(source.Root));
            }
        }
        /// <summary>
        /// Given an IDictionary of mappings between old and new URLs, converts the URL
        /// in every Preview in the JdfTree to the appropriate new URL.
        /// </summary>
        /// <param name="ticket">The Ticket to process</param>
        /// <param name="urlMapping">A IDictionary keyed by existing URLs mapping to new System.Uri</param>
        /// <param name="mustMapCIDs">If <i>true</i> throws an exception if an existing URL starts with CID and
        /// no mapping has been provided for that CID.</param>
        /// <exception cref="JdfException">Thrown if mustMapCIDs is true and no mapping was supplied for a CID-based URL.</exception>
        public static void MapPreviewUrls(Ticket ticket, IDictionary<string, string> urlMapping, bool mustMapCIDs) {

            var previews = ticket.Root.SelectJDFDescendants(Element.Preview);

            foreach (var preview in previews) {
                var urlValue = preview.GetAttributeValueOrNull("URL");
                if (urlValue != null) {
                    string newUrl = urlMapping.FirstOrDefault(item => item.Key.Equals(urlValue, StringComparison.OrdinalIgnoreCase)).Value;
                    if (newUrl != null) {
                        preview.AddOrReplaceAttribute(new XAttribute("URL", (new Uri(newUrl)).AbsoluteUri));
                    }
                    else {
                        if (urlValue.StartsWith("cid:", StringComparison.OrdinalIgnoreCase) && mustMapCIDs) {
                            throw new JdfException(string.Format(FluentJdf.Resources.Messages.MustMapCIDsIsTrueAndNoMappingSuppliedForURL, urlValue));
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Creates a transmission part based on a Ticket.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="ticket"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public ITransmissionPart CreateTransmissionPart(string name, Ticket ticket, string id = null) {
            var transmissionPart = ConstructConfiguredTransmissionPart(MimeTypeHelper.JdfMimeType);
            if (transmissionPart is ITicketTransmissionPart) {
                ((ITicketTransmissionPart)transmissionPart).InitalizeProperties(ticket, name, id);
            }
            else {
                var tempStream = new TempFileStream();
                ticket.Save(tempStream);
                transmissionPart.Initialize(name, tempStream, MimeTypeHelper.JdfMimeType, id);
            }

            return transmissionPart;
        }
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="ticket"></param>
 /// <param name="elements"></param>
 public TicketProcess(Ticket ticket, IEnumerable<XElement> elements) {
     ParameterCheck.ParameterRequired(ticket, "ticket");
     ParameterCheck.ParameterRequired(elements, "elements");
     _ticket = ticket;
     _elements = elements;
 }
        /// <summary>
        /// Construct a part from a ticket
        /// </summary>
        /// <param name="ticket"></param>
        /// <param name="name"></param>
        /// <param name="id"></param>
        public TicketTransmissionPart(Ticket ticket, string name, string id = null) {
            ParameterCheck.ParameterRequired(ticket, "ticket");
            ParameterCheck.StringRequiredAndNotWhitespace(name, "name");

            InitalizeProperties(ticket, name, id);
        }
        /// <summary>
        /// Initialize the properties.
        /// </summary>
        /// <param name="ticket"></param>
        /// <param name="name"></param>
        /// <param name="id"></param>
        public void InitalizeProperties(Ticket ticket, string name, string id) {
            if (string.IsNullOrWhiteSpace(id)) {
                id = string.Format("P_{0}", UniqueGenerator.MakeUnique());
            }

            Name = name;
            MimeType = ticket.MimeType();
            Id = id;
            Ticket = ticket;
        }
        /// <summary>
        /// Create a ticket from a document.
        /// </summary>
        /// <param name="document"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentException">If the document has
        /// a root element that is not a JDF element.</exception>
        public static Ticket ToTicket(this XDocument document) {
            ParameterCheck.ParameterRequired(document, "document");
            if (document.Root != null) {
                document.Root.ThrowExceptionIfNotJdfElement();
            }

            var ticket = new Ticket();
            if (document.Root != null) {
                ticket.Add(document.Root);
            }

            return ticket;
        }