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);
        }
示例#2
0
        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));
        }