public override Stream GetSnapshot(string id, string contentType) { Logging.LogInfo("GetSnapshot for " + id); var tmpFileName = ConfigurationReader.Configuration.HashValueStorageLocation + Path.DirectorySeparatorChar + Guid.NewGuid(); Logging.LogInfo("Writing to file " + tmpFileName); try { using (var fs = new FileStream(tmpFileName, FileMode.Create)) { var sb = new StringBuilder(); foreach (var definition in _publishingDefinitions) { foreach (var generationDefinition in definition.FragmentGenerationDefinitions) { try { using (var connection = new OdbcConnection(_dataSourceConnectionString)) { connection.Open(); var odbcCommand = new OdbcCommand(generationDefinition.SnapshotQuery) { Connection = connection, CommandTimeout = 0 }; var dr = odbcCommand.ExecuteReader(); var schema = dr.GetSchemaTable(); var columnNames = (from DataRow row in schema.Rows select row[0].ToString().ToLower()).ToList(); var flushCount = 0; var drAdaptor = new DbReaderDataRow(dr, columnNames); while (dr.Read()) { try { flushCount++; foreach (var line in generationDefinition.RdfTemplateLines) { var pattern = new NTripleLinePattern(line); pattern.GenerateNTriples(sb, drAdaptor, generationDefinition.GenericTemplateExcludeColumns, false); } } catch (Exception dataex) { Logging.LogError(1, "Error Processing Data Line in " + generationDefinition.SnapshotQuery + " : " + dataex.Message); } if (flushCount >= 1000) { try { var sw = new StreamWriter(fs); sw.Write(sb.ToString()); sw.Flush(); sb = new StringBuilder(); } catch (Exception ex) { var msg = ex.Message; Logging.LogError(1, "Error exporting triples " + msg + " " + ex.StackTrace); } } } if (flushCount >= 0) { try { var sw = new StreamWriter(fs); sw.Write(sb.ToString()); sw.Flush(); sb = new StringBuilder(); } catch (Exception ex) { var msg = ex.Message; Logging.LogError(1, "Error exporting triples " + msg + " " + ex.StackTrace); } } dr.Close(); connection.Close(); } } catch (Exception ext) { Logging.LogError(1, "Error processing definition {0} {1} {2} {3}", ext.Message, generationDefinition.SnapshotQuery, _dataSourceConnectionString, ext.StackTrace); } } } } } catch (Exception ex) { Logging.LogError(1, "Exception getting snapshot " + ex.Message + " " + ex.StackTrace); } return new FileStream(tmpFileName, FileMode.Open); }
public override Stream GetSnapshot(string id, string contentType) { Logging.LogInfo("GetSnapshot for " + id); var tmpFileName = ConfigurationReader.Configuration.HashValueStorageLocation + Path.DirectorySeparatorChar + Guid.NewGuid(); Logging.LogInfo("Writing to file " + tmpFileName); try { using (var fs = new FileStream(tmpFileName, FileMode.Create)) { var sb = new StringBuilder(); foreach (var definition in _publishingDefinitions) { foreach (var generationDefinition in definition.FragmentGenerationDefinitions) { try { using (var connection = new OdbcConnection(_dataSourceConnectionString)) { connection.Open(); var odbcCommand = new OdbcCommand(generationDefinition.SnapshotQuery) { Connection = connection, CommandTimeout = 0 }; var dr = odbcCommand.ExecuteReader(); var schema = dr.GetSchemaTable(); var columnNames = (from DataRow row in schema.Rows select row[0].ToString().ToLower()).ToList(); var flushCount = 0; var drAdaptor = new DbReaderDataRow(dr, columnNames); while (dr.Read()) { try { flushCount++; foreach (var line in generationDefinition.RdfTemplateLines) { var pattern = new NTripleLinePattern(line); pattern.GenerateNTriples(sb, drAdaptor, generationDefinition.GenericTemplateExcludeColumns, false); } } catch (Exception dataex) { Logging.LogError(1, "Error Processing Data Line in " + generationDefinition.SnapshotQuery + " : " + dataex.Message); } if (flushCount >= 1000) { try { var sw = new StreamWriter(fs); sw.Write(sb.ToString()); sw.Flush(); sb = new StringBuilder(); } catch (Exception ex) { var msg = ex.Message; Logging.LogError(1, "Error exporting triples " + msg + " " + ex.StackTrace); } } } if (flushCount >= 0) { try { var sw = new StreamWriter(fs); sw.Write(sb.ToString()); sw.Flush(); sb = new StringBuilder(); } catch (Exception ex) { var msg = ex.Message; Logging.LogError(1, "Error exporting triples " + msg + " " + ex.StackTrace); } } dr.Close(); connection.Close(); } } catch (Exception ext) { Logging.LogError(1, "Error processing definition {0} {1} {2} {3}", ext.Message, generationDefinition.SnapshotQuery, _dataSourceConnectionString, ext.StackTrace); } } } } } catch (Exception ex) { Logging.LogError(1, "Exception getting snapshot " + ex.Message + " " + ex.StackTrace); } return(new FileStream(tmpFileName, FileMode.Open)); }