Index: /trunk/models/base/base_structure.sql
===================================================================
--- /trunk/models/base/base_structure.sql	(revision 17)
+++ /trunk/models/base/base_structure.sql	(revision 18)
@@ -5,5 +5,5 @@
   `CATALOG_ID` int(11) NOT NULL,
   PRIMARY KEY (`ATTRIBUT_ID`,`CATALOG_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- dmn_catalog --
@@ -17,5 +17,5 @@
   `DESCRIPTION_4` varchar(255) DEFAULT NULL,
   PRIMARY KEY (`CATALOG_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- dmn_layer_attribut --
@@ -25,5 +25,5 @@
   `ATTRIBUT_NAME` varchar(100) DEFAULT NULL,
   PRIMARY KEY (`ATTRIBUT_ID`,`LAYER_INDEX`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- dmn_layer_object --
@@ -44,5 +44,5 @@
   PRIMARY KEY (`OBJECT_ID`),
   KEY `DMN_LAYER_OBJECT_FKIndex2` (`THEMATIC_LAYERS_LAYER_INDEX`,`OBJECT_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- dmn_layer_type --
@@ -51,5 +51,5 @@
   `TYPE_DESCRIPTION` varchar(20) NOT NULL COMMENT 'Layer type description',
   PRIMARY KEY (`TYPE_CD`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 
@@ -65,5 +65,5 @@
   `SHORTCUT_DESC` varchar(255) DEFAULT NULL,
   PRIMARY KEY (`SHORTCUT_CD`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 INSERT INTO dmn_shortcut_key VALUES(1,"F1","");
@@ -88,5 +88,5 @@
   `PERCENT_SKIPPED` double DEFAULT NULL,
   PRIMARY KEY (`LAYER_INDEX`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- generic_aat --
@@ -97,5 +97,5 @@
   KEY `GENERIC_LINES_has_DMN_LAYER_OBJECT_FKIndex1` (`OBJECT_VAL_ID`),
   KEY `GENERIC_LINES_has_DMN_LAYER_OBJECT_FKIndex2` (`OBJECT_GEOM_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- generic_dmn --
@@ -104,5 +104,5 @@
   `DESCRIPTION` varchar(255) DEFAULT NULL COMMENT 'Code description',
   PRIMARY KEY (`CODE`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- generic_frame --
@@ -111,5 +111,5 @@
   `OBJECT_GEOMETRY` linestring NOT NULL COMMENT 'Feature geometry',
   PRIMARY KEY (`OBJECT_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- generic_labels --
@@ -118,5 +118,5 @@
   `OBJECT_GEOMETRY` multipoint NOT NULL,
   PRIMARY KEY (`OBJECT_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- generic_lat --
@@ -127,5 +127,5 @@
   KEY `GENERIC_LABELS_has_DMN_LAYER_OBJECT_FKIndex1` (`OBJECT_VAL_ID`),
   KEY `GENERIC_LABELS_has_DMN_LAYER_OBJECT_FKIndex2` (`OBJECT_GEOM_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- generic_lines --
@@ -134,5 +134,5 @@
   `OBJECT_GEOMETRY` linestring NOT NULL,
   PRIMARY KEY (`OBJECT_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- generic_notes --
@@ -147,5 +147,5 @@
   `ISFIXED` tinyint(1) DEFAULT '0',
   PRIMARY KEY (`OBJECT_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- generic_pat --
@@ -156,5 +156,5 @@
   KEY `GENERIC_POINTS_has_DMN_LAYER_OBJECT_FKIndex1` (`OBJECT_VAL_ID`),
   KEY `GENERIC_POINTS_has_DMN_LAYER_OBJECT_FKIndex2` (`OBJECT_GEOM_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- generic_points --
@@ -163,5 +163,5 @@
   `OBJECT_GEOMETRY` multipoint NOT NULL COMMENT 'Feature geometry',
   PRIMARY KEY (`OBJECT_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- lang_def --
@@ -170,5 +170,5 @@
   `LANG_NAME` varchar(50) DEFAULT NULL,
   PRIMARY KEY (`LANG_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 
@@ -187,5 +187,5 @@
   `QUERIES_CODE` varchar(1000) DEFAULT NULL,
   PRIMARY KEY (`QUERIES_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 INSERT INTO prj_queries VALUES(1,0,"Lines without attribution","SELECT o.OBJECT_ID FROM generic_lines AS o WHERE o.OBJECT_ID NOT IN (SELECT a.OBJECT_GEOM_ID FROM generic_aat AS a)");
@@ -208,8 +208,8 @@
   `PRJ_SNAP_TOLERENCE` int(11) NOT NULL DEFAULT '10',
   PRIMARY KEY (`SETTING_DBK`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
-
-
-INSERT INTO prj_settings VALUES(1,"Meters","No projection","Combioula_complet",224,"/Users/lucien/DATA/PRJ/TOOLMAP2/projects/test_prjaout/export",0,"/Users/lucien/DATA/PRJ/TOOLMAP2/projects/test_prjaout/backups","CREALP",0);
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
+
+
+INSERT INTO prj_settings VALUES(1,"Meters","No projection","Master",224,"",0,"","SWISSTOPO - CREALP", "", 0);
 
 -- prj_snapping --
@@ -218,5 +218,5 @@
   `SNAPPING_TYPE` int(11) NOT NULL,
   PRIMARY KEY (`TOC_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- prj_stats --
@@ -229,5 +229,5 @@
   `DATE_END` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (`STAT_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- prj_toc --
@@ -244,12 +244,12 @@
   PRIMARY KEY (`CONTENT_ID`),
   KEY `PRJ_TOC_FKIndex1` (`TYPE_CD`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
-
-
-INSERT INTO prj_toc VALUES(1,0,"","Lines",1,0,1,0);
-INSERT INTO prj_toc VALUES(2,1,"","Points",1,1,2,0);
-INSERT INTO prj_toc VALUES(3,1,"","Labels",1,2,3,0);
-INSERT INTO prj_toc VALUES(4,1,"","Notes",0,3,4,0);
-INSERT INTO prj_toc VALUES(5,0,"","Frame",1,4,5,0);
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
+
+
+INSERT INTO prj_toc VALUES(1,0,"","Lines",1,0,1,"",0);
+INSERT INTO prj_toc VALUES(2,1,"","Points",1,1,2,"",0);
+INSERT INTO prj_toc VALUES(3,1,"","Labels",1,2,3,"",0);
+INSERT INTO prj_toc VALUES(4,1,"","Notes",0,3,4,"",0);
+INSERT INTO prj_toc VALUES(5,0,"","Frame",1,4,5,"",0);
 
 
@@ -261,5 +261,5 @@
   KEY `SHORTCUT_KEYS_has_DMN_LAYER_OBJECT_FKIndex2` (`OBJECT_ID`),
   KEY `SHORTCUT_LIST_FKIndex2` (`SHORTCUT_CD`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- thematic_layers --
@@ -272,5 +272,5 @@
   PRIMARY KEY (`LAYER_INDEX`),
   KEY `THEMATIC_LAYERS_FKIndex1` (`TYPE_CD`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- zoom_level --
@@ -280,5 +280,5 @@
   `RANK` int(11) DEFAULT NULL,
   PRIMARY KEY (`ZOOM_ID`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 INSERT INTO zoom_level VALUES(1,5000,2);
Index: /trunk/models/combioula/user_structure.sql
===================================================================
--- /trunk/models/combioula/user_structure.sql	(revision 17)
+++ /trunk/models/combioula/user_structure.sql	(revision 18)
@@ -9,5 +9,5 @@
   PRIMARY KEY (`OBJECT_ID`),
   KEY `LAYER_ATX_FKIndex1` (`OBJECT_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- layer_at2 --
@@ -19,5 +19,5 @@
   PRIMARY KEY (`OBJECT_ID`),
   KEY `LAYER_ATX_FKIndex1` (`OBJECT_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- layer_at3 --
@@ -29,5 +29,5 @@
   PRIMARY KEY (`OBJECT_ID`),
   KEY `LAYER_ATX_FKIndex1` (`OBJECT_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- layer_at4 --
@@ -39,5 +39,5 @@
   PRIMARY KEY (`OBJECT_ID`),
   KEY `LAYER_ATX_FKIndex1` (`OBJECT_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- layer_at7 --
@@ -49,5 +49,5 @@
   PRIMARY KEY (`OBJECT_ID`),
   KEY `LAYER_ATX_FKIndex1` (`OBJECT_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- layer_at9 --
@@ -57,4 +57,4 @@
   PRIMARY KEY (`OBJECT_ID`),
   KEY `LAYER_ATX_FKIndex1` (`OBJECT_ID`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
Index: /trunk/tmdmcreator/src/main.cpp
===================================================================
--- /trunk/tmdmcreator/src/main.cpp	(revision 17)
+++ /trunk/tmdmcreator/src/main.cpp	(revision 18)
@@ -83,5 +83,5 @@
     bool bVerbose = parser.Found("verbose");
     bool bToolMap = parser.Found("toolmap");
-    if (parser.Found("overwrite")) {
+    if (parser.Found("overwrite") && wxFileExists(parser.GetParam(3))) {
         wxRemoveFile(parser.GetParam(3));
     }
Index: /trunk/tmdmcreator/src/tmdmcopier.cpp
===================================================================
--- /trunk/tmdmcreator/src/tmdmcopier.cpp	(revision 17)
+++ /trunk/tmdmcreator/src/tmdmcopier.cpp	(revision 18)
@@ -26,4 +26,5 @@
 
 TmDmCopier::~TmDmCopier() {
+    m_File->Flush();
     wxDELETE(m_File);
 }
@@ -49,4 +50,5 @@
 
 bool TmDmCopier::CopyFrom(const wxString & text) {
+    m_File->SeekEnd();
     if (m_File->Write(text) == false) {
         m_Errors.Add(wxString::Format(_("Writing to: %s failed!"), m_File->GetName()));
Index: /trunk/tmdmcreator/src/tmdmcreator.cpp
===================================================================
--- /trunk/tmdmcreator/src/tmdmcreator.cpp	(revision 17)
+++ /trunk/tmdmcreator/src/tmdmcreator.cpp	(revision 18)
@@ -94,15 +94,17 @@
     errorsmsg.Clear();
     // Copy structure
-    TmDmCopier myCopier(m_FileNameOutSQL);
-    if (myCopier.CopyFrom(m_FileNameBaseSQL) == false) {
-        errorsmsg.Add(wxString::Format(_("Copying: %s failed!"), m_FileNameBaseSQL.GetFullPath()));
-        return false;
+    { // needed to destroy the copier before processing layers
+        TmDmCopier myCopier(m_FileNameOutSQL);
+        if (myCopier.CopyFrom(m_FileNameBaseSQL) == false) {
+            errorsmsg.Add(wxString::Format(_("Copying: %s failed!"), m_FileNameBaseSQL.GetFullPath()));
+            return false;
+        }
+        
+        if (myCopier.CopyFrom(m_FileNameUserSQL) == false) {
+            errorsmsg.Add(wxString::Format(_("Copying: %s failed!"), m_FileNameUserSQL.GetFullPath()));
+            return false;
+        }
     }
-    
-    if (myCopier.CopyFrom(m_FileNameUserSQL) == false) {
-        errorsmsg.Add(wxString::Format(_("Copying: %s failed!"), m_FileNameUserSQL.GetFullPath()));
-        return false;
-    }
-    
+
     // Process layers
     TmDmProcessorSimple myLayerProc(m_FileNameUserContent, m_FileNameOutSQL);
@@ -112,5 +114,5 @@
         return false;
     }
-    if (myLayerProc.ProcessBlock(myThematicLayersStart)==false) {
+    if (myLayerProc.ProcessBlock(myThematicLayersStart, _T("thematic_layers"))==false) {
         errorsmsg.Add(wxString::Format(_("Processing 'thematic_layers' failed in %s"), m_FileNameUserContent.GetFullPath()));
         return false;
Index: /trunk/tmdmcreator/src/tmdmprocessor.cpp
===================================================================
--- /trunk/tmdmcreator/src/tmdmprocessor.cpp	(revision 17)
+++ /trunk/tmdmcreator/src/tmdmprocessor.cpp	(revision 18)
@@ -61,7 +61,7 @@
 
 
-bool TmDmProcessorSimple::ProcessBlock(int blockstart) {
-    wxString mySQLCols = wxEmptyString;
-    wxString mySQLTxt = wxEmptyString;
+bool TmDmProcessorSimple::ProcessBlock(int blockstart, const wxString & tablename) {
+    wxArrayString mySQLCols;
+    TmDmCopier myCopier(m_FileDst);
     
     wxFileInputStream input(m_FileSrc.GetFullPath());
@@ -69,4 +69,5 @@
     long myLineIndex = 0;
     while(input.IsOk() && !input.Eof() ){
+        wxString myRow = text.ReadLine();
         if (myLineIndex <= blockstart) {
             myLineIndex++;
@@ -74,17 +75,38 @@
         }
         
-        wxString myRow = text.ReadLine();
+        if (myLineIndex == blockstart+1) {
+            mySQLCols = wxStringTokenize(myRow, _T("\t"), wxTOKEN_RET_EMPTY);
+            myLineIndex++;
+            continue;
+        }
         
-        // HERE !!! 
+        wxArrayString myValues = wxStringTokenize(myRow, _T("\t"), wxTOKEN_RET_EMPTY_ALL);
+        bool bEmpty = true;
+        for (unsigned int i = 0; i< myValues.GetCount(); i++) {
+            if (myValues[i] != wxEmptyString) {
+                bEmpty = false;
+                break;
+            }
+        }
+        if (bEmpty == true) {
+            // ok empty line found
+            return true;
+        }
         
-        
-        
+        // write insert sentence
+        wxString myInsert = wxString::Format(_T("INSERT INTO `%s` ("), tablename);
+        for (unsigned int i = 0; i< mySQLCols.GetCount(); i++) {
+            myInsert.Append(wxString::Format(_T("%s,"), mySQLCols.Item(i)));
+        }
+        myInsert.RemoveLast();
+        myInsert.Append(_T(") VALUES ("));
+        for (unsigned int i = 0; i< mySQLCols.GetCount(); i++) {
+            myInsert.Append(wxString::Format(_T("\"%s\","), myValues.Item(i)));
+        }
+        myInsert.RemoveLast();
+        myInsert.Append(_T(");\n"));
+        myCopier.CopyFrom(myInsert);
         myLineIndex++;
     }
-    return wxNOT_FOUND;
-
-    
-    
-    
     return false;
 }
@@ -104,5 +126,5 @@
 }
 
-bool TmDmProcessorAttributs::ProcessBlock(int blockstart) {
+bool TmDmProcessorAttributs::ProcessBlock(int blockstart, const wxString & tablename) {
     return false;
 }
Index: /trunk/tmdmcreator/src/tmdmprocessor.h
===================================================================
--- /trunk/tmdmcreator/src/tmdmprocessor.h	(revision 17)
+++ /trunk/tmdmcreator/src/tmdmprocessor.h	(revision 18)
@@ -24,4 +24,5 @@
 #include <wx/wfstream.h>
 #include <wx/txtstrm.h>
+#include <wx/tokenzr.h>
 
 
@@ -37,5 +38,5 @@
     
     int FindBlock(const wxString & blockname);
-    virtual bool ProcessBlock(int blockstart) = 0;
+    virtual bool ProcessBlock(int blockstart, const wxString & tablename) = 0;
 };
 
@@ -51,5 +52,5 @@
     virtual ~TmDmProcessorSimple();
     
-    virtual bool ProcessBlock(int blockstart);
+    virtual bool ProcessBlock(int blockstart, const wxString & tablename);
 };
 
@@ -65,5 +66,5 @@
     virtual ~TmDmProcessorAttributs();
     
-    virtual bool ProcessBlock(int blockstart);
+    virtual bool ProcessBlock(int blockstart, const wxString & tablename);
 };
 #endif
