private void CheckListItemField(SPWeb web, SPList list, SPListItem listItem, Guid fieldId, JChemMetaFieldCollector metaData, WebStructureOutput webZipOutput) { try { JChemContextInfo ctx = new JChemContextInfo( SPSecurity.AuthenticationMode != System.Web.Configuration.AuthenticationMode.Windows, web.CurrentUser.LoginName, Convert.ToBase64String(web.CurrentUser.UserToken.BinaryToken), Guid.NewGuid(), web.Site.ID, web.ID, web.Locale, web.Locale, Guid.NewGuid()); StructureServiceClient client = new StructureServiceClient(ctx, SPServiceContext.GetContext(web.Site)); var fieldContent = listItem[fieldId] as string; if (!string.IsNullOrEmpty(fieldContent)) { var fieldContentDocument = new HtmlDocument(); fieldContentDocument.LoadHtml(fieldContent); HtmlNodeCollection structureHtmlNodesWithIdOrURL = fieldContentDocument.DocumentNode.SelectNodes("//img[contains(@src,'/_vti_bin/JChem/CxnWebGet.svc/GetStructureImageFromSession')]"); if (structureHtmlNodesWithIdOrURL != null) { ConsoleEx.WriteLine(ConsoleColor.DarkRed, "\tEmpty structure found in '{0}/{1}/{2}'", web.Title, list.Title, listItem.Name); foreach (var entry in metaData) { var structures = JChemMetaFieldDataProvider.GetStructures(entry.Value[FieldPropertyCollector.SructuresProperty]); foreach (var structure in structures) { if (!structure.StructureString.StartsWith("error", StringComparison.InvariantCultureIgnoreCase)) { try { var image = client.GetStructureImage(structure.StructureString, structure.Format.ToString(), 200, 200, false); using (var imageStream = new MemoryStream()) { image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Png); imageStream.Position = 0; webZipOutput.AddStructure(list.Title, listItem.Name, listItem.ID, structure.Id.ToString(), imageStream.ToArray()); } } catch (Exception ex) { ConsoleEx.WriteLine(ConsoleColor.Red, "\tCannot render structure: {0}", ex.Message); Environment.Exit(1); } } } } } } } catch (Exception ex) { ConsoleEx.WriteLine("\tCannot determine content of column '{0}'. Reason: {1}", list.Fields[fieldId].Title, ex.Message); } }
private static void RunOptionsAndReturnExitCode(Options opts) { try { using (var site = new SPSite(opts.Url)) { using (var web = site.OpenWeb()) { var assembly = Assembly.GetAssembly(typeof(ExportManager)); var type = assembly.GetType("ChemAxon.JChemSharePoint.Services.Model.SP.Data.JChemAppContext"); var createContext = type.GetMethod("CreateContext", new Type[] { typeof(JChemContextInfo) }); JChemContextInfo ctxInfo = new JChemContextInfo(true, Environment.UserName, Convert.ToBase64String(web.CurrentUser.UserToken.BinaryToken), Guid.NewGuid(), site.ID, web.ID, web.Locale, web.Locale, Guid.NewGuid()); using (DataContext ctx = (DataContext)createContext.Invoke(null, new object[] { ctxInfo })) { var list = web.GetListFromUrl(opts.Url); var outputFile = string.IsNullOrWhiteSpace(opts.Output) ? list.Title : Path.GetFileNameWithoutExtension(opts.Output); var fileFormat = string.IsNullOrWhiteSpace(opts.Format) ? "mrv" : opts.Format; ExportManager exportManager = new ExportManager(ctx); var exportOptions = new ExportOptions() { FileEncoding = "UTF-8", FileName = outputFile, IncludeNoStructures = false, OutputFormat = fileFormat, ListId = list.ID, Columns = new List <ExportColumn> { new ExportColumn() { ColumnName = opts.ColumnName, IsMainStructureColumn = true, IsStructureColumn = true, IsSelectedForSaving = true } } }; using (var stream = exportManager.ExportList(exportOptions)) { using (var fs = new FileStream(string.Format("{0}.{1}", outputFile, fileFormat), FileMode.Create)) { stream.CopyTo(fs); } } } } } } catch (Exception ex) { Console.WriteLine("Error while exporting: ", ex.Message); Console.WriteLine("Stack: ", ex.StackTrace); } }