[Liblas-commits] hg-main-tree: fix up schema override support

liblas-commits at liblas.org liblas-commits at liblas.org
Tue Apr 26 13:01:12 EDT 2011


details:   http://hg.libpc.orghg-main-tree/rev/2ffec9578e78
changeset: 657:2ffec9578e78
user:      Howard Butler <hobu.inc at gmail.com>
date:      Tue Apr 26 12:01:05 2011 -0500
description:
fix up schema override support

diffstat:

 src/drivers/oci/Writer.cpp |  37 +++++++++++++++++++++++++++++++++++--
 src/drivers/oci/common.cpp |   2 +-
 2 files changed, 36 insertions(+), 3 deletions(-)

diffs (70 lines):

diff -r 021e7b867c27 -r 2ffec9578e78 src/drivers/oci/Writer.cpp
--- a/src/drivers/oci/Writer.cpp	Tue Apr 26 11:33:26 2011 -0500
+++ b/src/drivers/oci/Writer.cpp	Tue Apr 26 12:01:05 2011 -0500
@@ -40,10 +40,41 @@
 
 #include <libpc/exceptions.hpp>
 
+#include <fstream>
 
 namespace libpc { namespace drivers { namespace oci {
 
 
+
+std::string ReadFile(std::string filename)
+{
+
+    std::istream* infile = Utils::openFile(filename, true);
+    std::ifstream::pos_type size;
+    // char* data;
+    std::vector<char> data;
+    if (infile->good()){
+        infile->seekg(0, std::ios::end);
+        size = infile->tellg();
+        data.resize(static_cast<std::vector<char>::size_type>(size));
+        // data = new char [size];
+        infile->seekg (0, std::ios::beg);
+        infile->read (&data.front(), size);
+        // infile->close();
+
+        // delete[] data;
+        delete infile;
+        return std::string(&data[0], data.size());
+        // return data; 
+    } 
+    else 
+    {   
+        throw libpc_error("unable to open file!");
+        // return data;
+    }
+    
+}
+
 Writer::Writer(Stage& prevStage, Options& options)
     : libpc::Writer(prevStage)
     , m_stage(prevStage)
@@ -607,8 +638,10 @@
 
     if (bHaveSchemaOverride)
     {
-        char* schema = (char*) malloc(point_schema_override.size() * sizeof(char));
-        strncpy(schema, point_schema_override.c_str(), point_schema_override.size());
+        std::string schema_data = ReadFile(point_schema_override);
+        char* schema = (char*) malloc(schema_data.size() * sizeof(char) + 1);
+        strncpy(schema, schema_data.c_str(), schema_data.size());
+        schema[schema_data.size()] = '\0';
         statement->WriteCLob( &schema_locator, schema ); 
         statement->Bind(&schema_locator);
     }
diff -r 021e7b867c27 -r 2ffec9578e78 src/drivers/oci/common.cpp
--- a/src/drivers/oci/common.cpp	Tue Apr 26 11:33:26 2011 -0500
+++ b/src/drivers/oci/common.cpp	Tue Apr 26 12:01:05 2011 -0500
@@ -59,7 +59,7 @@
     tree.put("capacity", 8000);
     tree.put("precision", 8);
     tree.put("cloud_id", -1);
-    tree.put("dimensions", 5);
+    tree.put("dimensions", 8);
     tree.put("connection", std::string(""));
     tree.put("block_table_name", std::string("output"));
     tree.put("block_table_partition_column", std::string(""));


More information about the Liblas-commits mailing list