/// <summary> /// Evaluates a directory to gather the image gallery contents to XML. /// </summary> /// <param name="iterDoc">XML Document</param> /// <param name="iterArticleContent">Xml Document Node</param> /// <param name="doc">SE4 related information</param> /// <param name="attributeList">List of attributes to work with</param> /// <param name="documentPath">Target resource directory</param> private void CreateOutputArticleContentDocImageGalleryToXml(XmlDocument iterDoc, XmlElement iterArticleContent, IterwebMapInfo doc, List<SE4Attribute> attributeList, string documentPath) { if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocImageGalleryToXml Start"); if (galleryImgList.Count > 0) { XmlElement item = null; XmlElement itemChild = null; string contentText = ""; XmlCDataSection cdata = null; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(imageGalleryTitle); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; foreach (var it in galleryImgList) { item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", DocumentImageDir + it.Name); item.AppendChild(itemChild); itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = it.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } galleryImgList.Clear(); } if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocImageGalleryToXml End"); }
/// <summary> /// Appends document content if output is new Article XML format. /// </summary> /// <param name="documentPath">Target resource directory</param> /// <param name="iterDoc">XML Document</param> /// <param name="iterArticleContent">Xml Document Node</param> /// <param name="doc">SE4 related information</param> /// <param name="attributeList">List of attributes to work with</param> private void CreateOutputArticleContentDocToXml(string documentPath, XmlDocument iterDoc, XmlElement iterArticleContent, IterwebMapInfo doc, List<SE4Attribute> attributeList) { if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml start (SE4 Doc processing)"); XmlCDataSection cdata = null; XmlElement item = null; XmlElement itemChild = null; string contentText = ""; string name = ""; string targetType = ""; string targetIndexType = ""; ValidMapField vf = null; List<ValidMapField> documentValidFields = se4TemplateFieldMapping[doc.Layout]; string mediaCutLine = ""; string mediaRelatedImageCutLine = ""; string mediaImageName = ""; string mediaRelatedImageName = ""; string textData = ""; bool isInfographicSet = (doc.IsInfographic == 1); bool docHasZoomImage = false; // The logic behind inserting the idBrightCove value consists to prepare this value in database and // ask here for layout value and then if it is not null then create the componet to XML // NOTE: Fields in layout with names 'videoPrincipal', and 'videoGaleria' cannot be loaded herein, that // is, they must be set to false in 'BuildSE4TemplateMapping()'. if (doc.Layout == "creacion_video" || doc.Layout == "creacion_notaInterior100" || doc.Layout == "creacion_minutoaminuto" || doc.Layout == "creacion_notaInterior100M") { if (doc.IdBrightCove != null) { item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Multimedia_Brightcove"); item.SetAttribute("index", "0"); iterArticleContent.AppendChild(item); cdata = iterDoc.CreateCDataSection(doc.IdBrightCove); item.InnerXml = cdata.OuterXml; } } if (doc.Layout == "creacion_galeria") { // Document has been completed processed at this step. CreateOutputArticleContentDocImageGalleryToXml(iterDoc, iterArticleContent, doc, attributeList, documentPath); return; } // Exception to general loop next to this one. That is, that loop assumes all fields are exported one by one. // Special evaluation for fields. foreach (var it in attributeList) { if (doc.Layout == "creacion_notaInteriorEditorial") { ; } else { // At this place the 'CuerpoPrimerParrafo' is concatenated to 'EDITORHTML', 'cuerpo', ..., fields. if (it.ElementName == "cuerpoPrimerParrafo" || it.ElementName == "EDITORHTML" || it.ElementName == "EditorHtml" || it.ElementName == "editorhtml" || it.ElementName == "cuerpo" ) { contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); textData += contentText; } } if (it.ElementName == "medio") { switch (it.AttributeName) { case "imagen": if (mediaImageName == "") { mediaImageName = ExtractMediaName(it, doc, documentPath); } break; case "media_img_imagen": if (mediaImageName == "") { mediaImageName = ExtractMediaName(it, doc, documentPath); } break; case "image_ampliacion": if (mediaImageName == "") { mediaImageName = ExtractMediaName(it, doc, documentPath); } break; case "media_img_ampliacion": if (mediaImageName == "") { mediaImageName = ExtractMediaName(it, doc, documentPath); } break; case "descripcion_ampliacion": contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); if (mediaCutLine == "") { mediaCutLine += contentText; } else { mediaCutLine += " |" + contentText; } break; case "descripcionImagenNota": contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); if (mediaCutLine == "") { mediaCutLine += contentText; } else { mediaCutLine += " |" + contentText; } break; case "credito": contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); if (mediaCutLine == "") { mediaCutLine += contentText; } else { mediaCutLine += " | " + contentText; } break; } } if (isInfographicSet) { if (it.ElementName == "fotoRelacionada" && it.AttributeName == "ampliarimagen") { contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); if (contentText != "") { docHasZoomImage = true; } } if (it.ElementName == "fotoRelacionada" && docHasZoomImage) { switch (it.AttributeName) { case "image_ampliacion": if (mediaRelatedImageName == "") { mediaRelatedImageName = ExtractMediaName(it, doc, documentPath); } break; case "media_img_ampliacion": if (mediaRelatedImageName == "") { mediaRelatedImageName = ExtractMediaName(it, doc, documentPath); } break; case "descripcion_ampliacion": contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); if (mediaRelatedImageCutLine == "") { mediaRelatedImageCutLine += contentText; } else { mediaRelatedImageCutLine += " |" + contentText; } break; case "creditoFotoRelacionada": contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); if (mediaRelatedImageCutLine == "") { mediaRelatedImageCutLine += contentText; } else { mediaRelatedImageCutLine += " |" + contentText; } break; } } } } if (mediaImageName != "") { item = iterDoc.CreateElement("component"); if (doc.Layout == "creacion_infografias") { item.SetAttribute("name", GlobalConstants.IMAGE_NAME_INPHOGRAFIC); } else { item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); } iterArticleContent.AppendChild(item); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", mediaImageName); item.AppendChild(itemChild); if (mediaCutLine != "") { itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = mediaCutLine; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } if (mediaRelatedImageName != "") { item = iterDoc.CreateElement("component"); if (docHasZoomImage) { item.SetAttribute("name", GlobalConstants.IMAGE_NAME_INPHOGRAFIC); } else { item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); } iterArticleContent.AppendChild(item); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", mediaRelatedImageName); item.AppendChild(itemChild); if (mediaRelatedImageCutLine != "") { itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = mediaRelatedImageCutLine; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } if (doc.Layout == "creacion_video") { // Invalidates 'document content (text)' gathered so far // Special case. When we are in 'creacion_video' we put 'entradilla' (lead) concatenated to 'content' (text). var filteredSE4AttrList = (from a in attributeList where a.ElementName == "entradilla" select a ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>(); if (filteredSE4AttrList != null) { contentText = (filteredSE4AttrList.HugeContentCode != -1 ? filteredSE4AttrList.HugeText : filteredSE4AttrList.Text); contentText = RemoveInvalidXmlChars(contentText); // First lead then text to final text textData = contentText + " " + textData; if (textData != "") { textData = textData.Trim(); } } } if (doc.Layout == "creacion_notaInteriorEditorial") { // Invalidates 'document content (text)' gathered so far var firstParagraphField = (from a in attributeList where a.ElementName == "cuerpoPrimerParrafo" select a ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>(); var txtField = (from a in attributeList where a.ElementName == "EDITORHTML" select a ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>(); var contextFieldList = (from a in attributeList where a.ElementName == "contexto" select a ).ToList<SE4Attribute>(); contentText = textData = ""; var txtFirstP = (firstParagraphField.HugeContentCode != -1 ? firstParagraphField.HugeText : firstParagraphField.Text); txtFirstP = RemoveInvalidXmlChars(contentText); contentText = (txtField.HugeContentCode != -1 ? txtField.HugeText : txtField.Text); contentText += txtFirstP; contentText = RemoveInvalidXmlChars(contentText); textData += "<div class='detalle_editorial'>" + contentText + "</div>"; contentText = "<p><b>Contraposición</b></p>"; foreach (var attr in contextFieldList) { if (attr.AttributeName == "tituloAyuda" || attr.AttributeName == "EDITORHTML") { contentText += (attr.HugeContentCode != -1 ? attr.HugeText : attr.Text); } } contentText = RemoveInvalidXmlChars(contentText); textData += "<div class='detalle_contraposicion'>" + contentText + "</div>"; } if (doc.Layout == "NotaInteriorNavidad") { // Invalidates 'document content (text)' gathered so far var txtField = (from a in attributeList where a.ElementName == "EDITORHTML" select a ).ToList<SE4Attribute>().FirstOrDefault<SE4Attribute>(); var helpFieldList = (from a in attributeList where a.ElementName == "Ayuda" select a ).ToList<SE4Attribute>(); contentText = textData = ""; contentText = (txtField.HugeContentCode != -1 ? txtField.HugeText : txtField.Text); foreach (var attr in helpFieldList) { contentText += "<p>" + (attr.HugeContentCode != -1 ? attr.HugeText : attr.Text) + "</p>"; } contentText = RemoveInvalidXmlChars(contentText); textData = contentText; } if (textData != "") { item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); cdata = iterDoc.CreateCDataSection(textData); item.InnerXml = cdata.OuterXml; } // Now other fields foreach (var it in attributeList) { // Discard already processed elements. if (it.ElementName == "medio" || it.ElementName == "cuerpoPrimerParrafo" || it.ElementName == "EDITORHTML" || it.ElementName == "EditorHtml" || it.ElementName == "editorhtml" || it.ElementName == "cuerpo" || it.ElementName == "nombreGaleria" || it.ElementName == "anteTituloEditorial" || it.ElementName == "contexto" || it.ElementName == "fotoRelacionada" || it.ElementName == "Ayuda" ) { continue; } vf = documentValidFields.Find(e => e.Source == it.ElementName && e.Use); if (vf.Attributes != null) { ValidMapFieldAttributes attr = vf.Attributes.Find(e => e.SourceAttribute == it.AttributeName); if (attr != null) { name = attr.Target; targetType = attr.TargetType; targetIndexType = attr.TargetIndexType; } else { name = vf.Target; targetType = vf.TargetType; targetIndexType = vf.TargetIndexType; } } else { name = vf.Target; targetType = vf.TargetType; targetIndexType = vf.TargetIndexType; } if (it.MultimediaAttribute == GlobalConstants.SE4ATTR_MULTIMEDIA_NONE) { contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); if (contentText != "") { item = iterDoc.CreateElement("component"); item.SetAttribute("name", name); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; } } } if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml end (SE4 Doc processing)"); }
/// <summary> /// Before trying to generate document to XML it is checked if content is to be generated. /// </summary> /// <param name="it">Document to process</param> /// <returns>TRUE if document can be written to XML</returns> private bool IsValidOldDocument(Doc docInfo, IterwebMapInfo it) { Boolean rslt = true; if (it.OldDocTemplateType == TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_003) { // Bypass check as content is already valid. return rslt; } else { switch (it.OldDocTemplateType) { case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_002: if (docInfo.NewsGrouper.Count == 0 && docInfo.DocumentText.Content == "") { rslt = false; } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_005: if (docInfo.PhotoGallery.Count == 0 && docInfo.DocumentText.Content == "") { rslt = false; } break; default: if (docInfo.DocumentText.Content == "") { rslt = false; } break; } } if (!rslt) { it.Processed = 17; } return rslt; }
/// <summary> /// Before attempting to generate the document to XML it is checked if image gallery is actually set. /// </summary> /// <param name="doc">Properties to doc to check</param> /// <param name="documentPath">ZIP path</param> /// <returns>True if valid.</returns> private bool IsValidImageGallery(IterwebMapInfo doc, string documentPath) { bool rslt = true; if (log.IsDebugEnabled) log.Debug("IsValidImageGallery Start"); // Retrieve Document Attributes and filter to use those enabled to do so. List<SE4Attribute> docSE4AttrList = LoadSE4DocItems(doc.IdObjetoSE, doc.Layout); var node = (from a in docSE4AttrList where a.ElementName == "nombreGaleria" select a ).FirstOrDefault<SE4Attribute>(); if (node != null) { string contextText = (node.HugeContentCode != -1 ? node.HugeText : node.Text); if (contextText == "") { string msg = "Doc idSitemap=[" + doc.IdSitemap + "] has not a gallery directory set appropriately, document not exported"; if (log.IsFatalEnabled) { log.Fatal(msg); } Console.WriteLine(msg); doc.Processed = 12; rslt = false; } else { string imageGalleryFolder = _se4MediaImageGallerySourceFolder; imageGalleryFolder += @"\" + contextText; if (Directory.Exists(imageGalleryFolder)) { string pubInfoFileName = imageGalleryFolder + @"\Pubinfo.txt"; if (File.Exists(pubInfoFileName)) { // First store in list all found images imageGalleryTitle = ""; galleryImgList = new List<ImageOnly>(); string[] lines = File.ReadAllLines(pubInfoFileName); // Grab Title var imageGalleryHeadLine = lines[0].Split('|'); if (imageGalleryHeadLine.Length > 0) { imageGalleryTitle = imageGalleryHeadLine[1]; } for (int i = 1; i < lines.Length; i++) { var elements = lines[i].Split('|'); string fileName = elements[0]; fileName = HttpUtility.HtmlDecode(fileName) + ".jpg"; fileName = CopyImageToZip(imageGalleryFolder, documentPath, fileName, doc, false); if (fileName != "") { ImageOnly imgInfo = new ImageOnly(); imgInfo.Name = fileName; imgInfo.Content = elements[1] + " - " + elements[2]; galleryImgList.Add(imgInfo); } } if (galleryImgList.Count == 0) { doc.Processed = 11; rslt = false; if (log.IsErrorEnabled) { log.Error("Doc idSitemap=[" + doc.IdSitemap + "] does not contain any images SET to processed = 11"); } } } else { if (log.IsErrorEnabled) { log.Error("Doc idSitemap=[" + doc.IdSitemap + "] does not contain 'PubInfo.txt' file SET to processed = 10"); } doc.Processed = 10; rslt = false; } } else { if (log.IsErrorEnabled) { log.Error("Doc idSitemap=[" + doc.IdSitemap + "] does not contain 'PubInfo.txt' file SET to processed = 10"); } doc.Processed = 10; rslt = false; } } } else { // Document was not actually found in DB. rslt = false; } if (log.IsDebugEnabled) log.Debug("IsValidImageGallery End"); return rslt; }
/// <summary> /// Appends document content if output is new Article XML format. /// </summary> /// <param name="documentPath">Resource target directory</param> /// <param name="iterDoc">XML Document</param> /// <param name="iterArticleContent">Xml Document Node</param> /// <param name="doc">Database object being processed</param> /// <param name="info">Doc under examination</param> /// <param name="articleNum">Num article being processed</param> private void CreateOutputArticleContentDocToXml(string documentPath, XmlDocument iterDoc, XmlElement iterArticleContent, IterwebMapInfo doc, Doc info, long articleNum) { if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml start (Old Doc processing)"); XmlElement item = null; XmlElement itemChild = null; XmlCDataSection cdata = null; string contentText = ""; string docGlobalRef = "/bin/"; string fileName = ""; switch (info.TemplateType) { case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_001: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; if (info.Bullet.Count != 0) { contentText = ""; contentText += "<ul>"; foreach (var bulletItem in info.Bullet) { contentText += "<li>" + bulletItem.Content + "</li>"; } contentText += "</ul>"; } contentText += info.DocumentText.Content + "<br><br>"; foreach (var rh in info.ReaderHelp) { contentText += "<b>" + rh.NameTitleContent + "</b><br>"; contentText += rh.NameTextContent + "<br>"; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; foreach (var pr in info.PhotoRelated) { fileName = ExtractImageNamePart(pr.ImageSrc); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { // An image file reference. item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = pr.Footer; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_002: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; // Process the NewsGrouper only list. contentText = ""; foreach (var ng in info.NewsGrouper) { contentText += "<p>" + ng.TitleContent + "</p>"; contentText += "<p>" + ng.TextContent + "</p><hr>"; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_003: // Process the CartoonGrouper only list. foreach (var cg in info.CartoonGrouper) { item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = cg.TitleContent; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; fileName = ExtractImageNamePart(cg.TextContent); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { // An image file reference. item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_TOON); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = cg.AuthorContent; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_004: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = ""; contentText = info.DocumentText.Content + "<br><br>"; foreach (var rh in info.ReaderHelp) { contentText += "<b>" + rh.NameTitleContent + "<b>"; contentText += rh.NameTextContent + "<br>"; } contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Byline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.AuthorText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "City"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.CityText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; if (info.Bullet.Count != 0) { contentText = "<ul>"; foreach (var bulletItem in info.Bullet) { contentText += "<li>" + bulletItem.Content + "</li>"; } contentText += "</ul>"; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Lead"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; } foreach (var pr in info.PhotoRelated) { // An image file reference. if (pr.ImageSrc != "") { fileName = ExtractImageNamePart(pr.ImageSrc); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = pr.Footer; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_005: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; foreach (var pg in info.PhotoGallery) { fileName = ExtractImageNamePart(pg.PhotoBigContent); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { // An image file reference. item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); contentText = ""; contentText += pg.PhotoCreditContent; if (pg.PhotoFooterContent != "") { contentText += " - " + pg.PhotoFooterContent; } if (contentText != "") { itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_006: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; contentText = ""; if (info.Bullet.Count != 0) { contentText += "<ul>"; foreach (var it in info.Bullet) { contentText += "<li>" + it.Content + "</li>"; } contentText += "</ul>"; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText += info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_007: // COQ: Jul.01/2014 - All records discarded, not processed. break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_008: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; contentText = ""; if (info.Bullet.Count != 0) { contentText += "<ul>"; foreach (var bulletItem in info.Bullet) { contentText += "<li>" + bulletItem.Content + "</li>"; } contentText += "</ul>"; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText += info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; foreach (var pr in info.PhotoRelated) { fileName = ExtractImageNamePart(pr.ImageSrc); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { // An image file reference. item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = pr.Footer; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_009: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; contentText = ""; if (info.Bullet.Count != 0) { contentText += "<ul>"; foreach (var bulletItem in info.Bullet) { contentText += "<li>" + bulletItem.Content + "</li>"; } contentText += "<ul>"; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText += info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Byline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.AuthorText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "City"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.CityText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_010: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; if (info.PhotoRelated.Count != 0) { // An image file reference. foreach (var pr in info.PhotoRelated) { fileName = ExtractImageNamePart(pr.ImageSrc); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = pr.Footer; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } } if (info.ImageOnlySet.Content != "" && info.PhotoRelated.Count == 0) { fileName = ExtractImageNamePart(info.ImageOnlySet.Content); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); } } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_011: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Byline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.AuthorText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "City"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.CityText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_012: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_013: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Byline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.AuthorText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "City"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.CityText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; // An image file reference. fileName = ExtractImageNamePart(info.ImageOnlySet.Content); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); } break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_014: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Byline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.AuthorText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "City"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.CreditText.CityText; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; break; case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_015: contentText = ""; foreach (var tit in info.Title) { contentText += tit.Content; } item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Headline"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; item = iterDoc.CreateElement("component"); item.SetAttribute("name", "Text"); item.SetAttribute("index", "1"); iterArticleContent.AppendChild(item); contentText = info.DocumentText.Content; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); item.InnerXml = cdata.OuterXml; foreach (var pr in info.PhotoFooterGallery.PhotoList) { fileName = ExtractImageNamePart(pr.ImageSrc); fileName = CopyImageToZip(_se4MediaSourceFolder, documentPath, fileName, doc); if (fileName != "") { // An image file reference. item = iterDoc.CreateElement("component"); item.SetAttribute("name", GlobalConstants.IMAGE_NAME_GENERAL); iterArticleContent.AppendChild(item); contentText = docGlobalRef + fileName; contentText = RemoveInvalidXmlChars(contentText); itemChild = iterDoc.CreateElement("file"); itemChild.SetAttribute("path", contentText); item.AppendChild(itemChild); itemChild = iterDoc.CreateElement("component"); itemChild.SetAttribute("name", "Cutline"); contentText = ""; contentText += info.PhotoFooterGallery.FoooterTitle + " - " + info.PhotoFooterGallery.Footer; contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemChild.InnerXml = cdata.OuterXml; item.AppendChild(itemChild); } } break; } if (log.IsDebugEnabled) log.Debug("CreateOutputArticleContentDocToXml end (Old Doc processing)"); }
/// <summary> /// Before trying to generate document to XML it is checked if content is to be generated. /// </summary> /// <param name="it">Document to process</param> /// <param name="docContent">Filled with the whole content being analyzed</param> /// <param name="threshold">How many characters to allow for document text. If it is set to -1 do not use it.</param> /// <returns>TRUE if document can be written to XML</returns> private bool IsValidDocument(IterwebMapInfo it, ref String docContent, int threshold = -1) { if (it.Layout == "creacion_video") { return true; } Boolean rslt = false; string textData = ""; // Retrieve Document Attributes and filter to use those enabled to do so. List<SE4Attribute> docSE4AttrList = LoadSE4DocItems(it.IdObjetoSE, it.Layout); var filteredSE4AttrList = (from a in docSE4AttrList where a.ElementName == "cuerpoPrimerParrafo" || a.ElementName == "EDITORHTML" || a.ElementName == "EditorHtml" || a.ElementName == "editorhtml" || a.ElementName == "cuerpo" select a ).ToList<SE4Attribute>(); foreach (var attr in filteredSE4AttrList) { if (attr != null) { textData += (attr.HugeContentCode != -1 ? attr.HugeText : attr.Text); } } docContent = textData; rslt = true; // Assume it can be written to XML. if (textData == "") { rslt = false; } else { if (threshold != -1) { if (textData.Length <= threshold) { rslt = false; } } } return rslt; }
/// <summary> /// If output structure is 2, it creates all of the xml elements to document. /// </summary> /// <param name="isOldDoc">OldDoc or SE4 doc</param> /// <param name="documentPath">Target directory for resources</param> /// <param name="iterDoc">XML main node</param> /// <param name="iterArticles">XML node to articles</param> /// <param name="it">Record info</param> /// <param name="title">Document title</param> /// <param name="examinedDoc">Old Doc under examination. Optional</param> /// <param name="articleNum">Number or article being processed. Optional.</param> private void CreateOutputArticleDocToXml(bool isOldDoc, string documentPath, XmlDocument iterDoc, XmlElement iterArticles, IterwebMapInfo it, string title, Doc examinedDoc = null, long articleNum = 0) { if (log.IsDebugEnabled) log.Debug("CreateOutputArticleDocToXml start"); XmlElement iterArticle = iterDoc.CreateElement("article"); XmlElement iterArticleMetadata = iterDoc.CreateElement("metadata"); XmlElement iterArticleContent = iterDoc.CreateElement("content"); XmlElement properties = iterDoc.CreateElement("properties"); properties.SetAttribute("indexable", "1"); properties.SetAttribute("urltitle", RemoveInvalidXmlChars(it.UrlPath.ExtractUrlTitle())); properties.SetAttribute("legacyurl", RemoveInvalidXmlChars(it.UrlPath)); properties.SetAttribute("title", RemoveInvalidXmlChars(title)); properties.SetAttribute("createdate", String.Format("{0:yyyy/MM/dd HH:mm:ss}", it.DisplayDate)); properties.SetAttribute("modifieddate", String.Format("{0:yyyy/MM/dd HH:mm:ss}", it.UpdateDate)); iterArticleMetadata.AppendChild(properties); iterArticle.AppendChild(iterArticleMetadata); iterArticle.AppendChild(iterArticleContent); if (isOldDoc) { iterArticle.SetAttribute("articleid", it.IDOldDoc); } else { iterArticle.SetAttribute("articleid", it.IDSE4ArticleId); } string filter = ""; string filterEx = ""; filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL; if (isOldDoc) { switch (examinedDoc.TemplateType) { case TemplateTypeCode.OLD_DOC_TEMPLATE_TYPE_003: filter = GlobalConstants.ARTICLE_HISTORICAL_TOON_GALLERY; break; default: break; } } else { if (it.Layout == "creacion_infografias") { filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL; } if (it.Layout == "creacion_galeria") { filter = GlobalConstants.ARTICLE_HISTORICAL_IMAGE_GALLERY; } if (it.IdBrightCove != null) { if (it.Layout == "creacion_video") { filter = GlobalConstants.ARTICLE_HISTORICAL_VIDEO_GALLERY; } else { if (it.Layout == "creacion_notaInterior100" || it.Layout == "creacion_notaInterior100M") { filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL; filterEx = GlobalConstants.ARTICLE_HISTORICAL_VIDEO_GALLERY; } } } if (it.IsInfographic == 1) { filterEx = GlobalConstants.ARTICLE_HISTORICAL_INFOGRAPHIC_GALLERY; filter = GlobalConstants.ARTICLE_HISTORICAL_GENERAL; } } CreateOutputArticleSectionsDocToXml(iterDoc, iterArticleMetadata, it.DisplayDate, filter, filterEx); if (isOldDoc) { CreateOutputArticleContentDocToXml(documentPath, iterDoc, iterArticleContent, it, examinedDoc, articleNum); } else { CreateOutputArticleCategoriesDocToXml(iterDoc, iterArticleMetadata, it.IdObjetoSE); // Retrieve Document Attributes and filter to use those enabled to do so. List<SE4Attribute> docSE4AttrList = LoadSE4DocItems(it.IdObjetoSE, it.Layout); CreateOutputArticleContentDocToXml(documentPath, iterDoc, iterArticleContent, it, docSE4AttrList); } iterArticles.AppendChild(iterArticle); if (log.IsDebugEnabled) log.Debug("CreateOutputArticleDocToXml end"); }
/// <summary> /// Locates first CartoonGrouper file and extracts its modified date and sets it as the new CreateDate/ModifiedDate for /// record. /// </summary> /// <remarks>Be specially cautious as the 'it' create/modify date is not persisted back to database.</remarks> /// <param name="it">Record to update</param> /// <param name="examinedDoc">Json Converted data.</param> private void UpdateOldDocToonCreateDate(IterwebMapInfo it, Doc examinedDoc) { if (log.IsDebugEnabled) { log.Debug("UpdateOldDocToonCreateDate Start"); } //Se4MediaSourceFolder string fileNamePath = ""; foreach (var cg in examinedDoc.CartoonGrouper) { fileNamePath = _se4MediaSourceFolder + "\\" + ExtractImageNamePart(cg.TextContent); DateTime dt = new DateTime(1900, 01, 01); // If file does not exist, sets this date. Used for OLD docs scanning. if (File.Exists(fileNamePath)) { dt = File.GetLastWriteTime(fileNamePath); } it.DisplayDate = it.UpdateDate = dt; } if (log.IsDebugEnabled) { log.Debug("UpdateOldDocToonCreateDate End"); } }
/// <summary> /// This actually copies the image from source directory to target directory. /// </summary> /// <param name="srcDir">Image source folder to gather</param> /// <param name="targetDir">Image target folder to copy to</param> /// <param name="fileName">File name of image.</param> /// <param name="info">Info of document being processed</param> /// <param name="printToLog">True to print to log</param> /// <returns>If 'fileName' has been changed due to non-ascii characters in it, it is returned like so, /// otherwise, it is returned as such.</returns> private string CopyImageToZip(string srcDir, string targetDir, string fileName, IterwebMapInfo info, bool printToLog = true) { string line = ""; string rslt = ""; var sourceFile = srcDir + @"\" + fileName; rslt = fileName; if (log.IsDebugEnabled) { log.Debug("CopyImageToZip(string srcDir, string targetDir, string fileName, IterwebMapInfo info) Start"); } line = "Using parameters srcDir=[" + srcDir + "], targetDir=[" + targetDir + "], fileName=[" + fileName + "], info idsitemap=[" + info.IdSitemap + "]"; if (log.IsDebugEnabled) { log.Debug(line); } if (!File.Exists(sourceFile)) { if (printToLog && log.IsWarnEnabled) { log.Warn("Document image for idSitemap=[" + info.IdSitemap + "], sourceFile=[" + sourceFile + "] does not exist"); } rslt = ""; } else { rslt = ConfigureImageName(fileName, targetDir, srcDir); } if (log.IsDebugEnabled) { log.Debug("CopyImageToZip(string srcDir, string targetDir, string fileName, IterwebMapInfo info) End"); } return rslt; }
/// <summary> /// Inspects if there is an image in attr. /// </summary> /// <param name="attr">Data to work with</param> /// <param name="info">Info of document being processed</param> /// <param name="documentPath">Target resource directory</param> /// <returns>Filenane part</returns> private string ExtractMediaName(SE4Attribute attr, IterwebMapInfo info, string documentPath) { string s = ""; if (log.IsDebugEnabled) log.Debug("Extracting mediaName Start ATTR"); if (attr.Text != "") { s = attr.Text; var isJpg = s.Contains(".jpg") || s.Contains(".JPG"); if (!isJpg) { s += ".jpg"; } s = ExtractImageNamePart(s); attr.Text = s = s.Supress('/').Supress('\\'); s = CopyImageToZip(_se4MediaSourceFolder, documentPath, s, info); if (s != "") { s = attr.Text = DocumentImageDir + s; if (log.IsDebugEnabled) log.Debug("Media name found, set to [" + attr.Text + "]"); } } if (log.IsDebugEnabled) log.Debug("Extracting mediaName End ATTR"); return s; }
/// <summary> /// Retrieves document attributes and saves to disk /// </summary> /// <param name="contentPath">File System path to create the docuemnt</param> /// <param name="documentPath">File System path to create images</param> /// <param name="doc">Document info</param> /// <param name="attributeList">meta data elements associated with document</param> private void CreateDocumentAttributesToXml(string contentPath, string documentPath, IterwebMapInfo doc, List<SE4Attribute> attributeList) { if (log.IsDebugEnabled) log.Debug("CreateDocumentAttributesToXml start"); XmlCDataSection cdata = null; XmlDocument iterDoc = null; XmlElement item = null; int i = 1; string name = ""; string targetType = ""; string targetIndexType = ""; ValidMapField vf = null; List<ValidMapField> documentValidFields = se4TemplateFieldMapping[doc.Layout]; iterDoc = new XmlDocument(); XmlDeclaration iterDocDeclaration = iterDoc.CreateXmlDeclaration("1.0", "UTF-8", null); XmlElement rootIter = iterDoc.CreateElement("root"); iterDoc.PreserveWhitespace = false; iterDoc.AppendChild(rootIter); iterDoc.InsertBefore(iterDocDeclaration, rootIter); foreach (var it in attributeList) { vf = documentValidFields.Find(e => e.Source == it.ElementName && e.Use); if (vf.Attributes != null) { ValidMapFieldAttributes attr = vf.Attributes.Find(e => e.SourceAttribute == it.AttributeName); if (attr != null) { name = attr.Target; targetType = attr.TargetType; targetIndexType = attr.TargetIndexType; } else { name = vf.Target; targetType = vf.TargetType; targetIndexType = vf.TargetIndexType; } } else { name = vf.Target; targetType = vf.TargetType; targetIndexType = vf.TargetIndexType; } if (it.MultimediaAttribute == GlobalConstants.SE4ATTR_MULTIMEDIA_NONE) { item = iterDoc.CreateElement("dynamic-element"); item.SetAttribute("instance-id", "ec" + (i++)); item.SetAttribute("name", name); item.SetAttribute("type", targetType); item.SetAttribute("index-type", targetIndexType); rootIter.AppendChild(item); XmlElement itemContent = iterDoc.CreateElement("dynamic-content"); string contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemContent.InnerXml = cdata.OuterXml; item.AppendChild(itemContent); } else { switch (it.MultimediaAttribute) { case GlobalConstants.SE4ATTR_MULTIMEDIA_IMAGE: item = iterDoc.CreateElement("dynamic-element"); item.SetAttribute("instance-id", "ec" + (i++)); item.SetAttribute("name", name); item.SetAttribute("type", targetType); item.SetAttribute("index-type", targetIndexType); rootIter.AppendChild(item); var itemChild = iterDoc.CreateElement("dynamic-element"); itemChild.SetAttribute("instance-id", "ec" + (i++)); itemChild.SetAttribute("name", "High"); itemChild.SetAttribute("type", "document_library"); itemChild.SetAttribute("index-type", ""); item.AppendChild(itemChild); XmlElement itemContent = iterDoc.CreateElement("dynamic-content"); string contentText = (it.HugeContentCode != -1 ? it.HugeText : it.Text); contentText = RemoveInvalidXmlChars(contentText); cdata = iterDoc.CreateCDataSection(contentText); itemContent.InnerXml = cdata.OuterXml; itemChild.AppendChild(itemContent); itemChild = iterDoc.CreateElement("dynamic-element"); itemChild.SetAttribute("instance-id", "ec" + (i++)); itemChild.SetAttribute("name", "Medium"); itemChild.SetAttribute("type", "document_library"); itemChild.SetAttribute("index-type", ""); item.AppendChild(itemChild); itemContent = iterDoc.CreateElement("dynamic-content"); cdata = iterDoc.CreateCDataSection(contentText); itemContent.InnerXml = cdata.OuterXml; itemChild.AppendChild(itemContent); itemChild = iterDoc.CreateElement("dynamic-element"); itemChild.SetAttribute("instance-id", "ec" + (i++)); itemChild.SetAttribute("name", "Low"); itemChild.SetAttribute("type", "document_library"); itemChild.SetAttribute("index-type", ""); item.AppendChild(itemChild); itemContent = iterDoc.CreateElement("dynamic-content"); cdata = iterDoc.CreateCDataSection(contentText); itemContent.InnerXml = cdata.OuterXml; itemChild.AppendChild(itemContent); break; case GlobalConstants.SE4ATTR_MULTIMEDIA_VIDEO: break; case GlobalConstants.SE4ATTR_MULTIMEDIA_AUDIO: default: break; } } } SaveXmlDocument(contentPath + @"\" + doc.IdObjetoSE + ".xml", iterDoc); if (log.IsDebugEnabled) log.Debug("CreateDocumentAttributesToXml end"); }