Index: /trunk/tmdmcreator/docs/uml/tmdmcreator/128033.diagram
===================================================================
--- /trunk/tmdmcreator/docs/uml/tmdmcreator/128033.diagram	(revision 18)
+++ /trunk/tmdmcreator/docs/uml/tmdmcreator/128033.diagram	(revision 19)
@@ -3,21 +3,21 @@
 classcanvas 128033 class_ref 128033 // TmDmCreator
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 34 74.4 2000
+  xyz 34.4 74.1 2000
 end
 classcanvas 128161 class_ref 128161 // TmDmCopier
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 400.3 184.9 2000
+  xyz 400.9 184.2 2000
 end
 classcanvas 128417 class_ref 141217 // TmDmProcessor
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 196.5 408 2000
+  xyz 196.3 408.1 2000
 end
 classcanvas 128545 class_ref 141345 // TmDmProcessorSimple
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 363.2 588.3 2000
+  xyz 363.9 588.5 2000
 end
 classcanvas 128801 class_ref 141473 // TmDmProcessorAttributs
   draw_all_relations default hide_attributes default hide_operations default hide_getset_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_context default show_members_multiplicity default show_members_initialization default show_attribute_modifiers default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_relation_modifiers default show_relation_visibility default show_infonote default shadow default show_stereotype_properties default
-  xyz 18.9 694.5 2000
+  xyz 17.9 693.8 2000
 end
 relationcanvas 128673 relation_ref 128033 // <generalisation>
Index: /trunk/tmdmcreator/docs/uml/tmdmcreator/33.session
===================================================================
--- /trunk/tmdmcreator/docs/uml/tmdmcreator/33.session	(revision 18)
+++ /trunk/tmdmcreator/docs/uml/tmdmcreator/33.session	(revision 19)
@@ -5,10 +5,10 @@
 end
 show_stereotypes
-selected operation_ref 136097 // TmDmProcessorSimple
+selected operation_ref 144161 // _ProcessAttributesValues
 open
   class_ref 128161 // TmDmCopier
   operation_ref 136481 // ProcessBlock
   class_ref 141345 // TmDmProcessorSimple
-  class_ref 141473 // TmDmProcessorAttributs
+  operation_ref 136609 // ProcessBlock
   deploymentview_ref 128033 // tmdmdeploy
 end
Index: /trunk/tmdmcreator/docs/uml/tmdmcreator/tmdmcreator.prj
===================================================================
--- /trunk/tmdmcreator/docs/uml/tmdmcreator/tmdmcreator.prj	(revision 18)
+++ /trunk/tmdmcreator/docs/uml/tmdmcreator/tmdmcreator.prj	(revision 19)
@@ -1,5 +1,5 @@
 format 75
 "tmdmcreator"
-  revision 5
+  revision 6
   modified_by 33 "lucien"
 
@@ -525,4 +525,34 @@
       end
 
+      operation 144033 "_ProcessAttributesName"
+	private explicit_return_type "bool"
+	nparams 1
+	  param in name "blockstart" explicit_type "int"
+	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${abstract};
+"
+	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
+  ${body}}
+"
+	
+	
+	
+	
+      end
+
+      operation 144161 "_ProcessAttributesValues"
+	private explicit_return_type "bool"
+	nparams 1
+	  param in name "blockstart" explicit_type "int"
+	cpp_decl "    ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${abstract};
+"
+	cpp_def "${comment}${inline}${type} ${class}::${name}${(}${t0} ${p0}${)}${const}${volatile}${throw}${staticnl}{
+  ${body}}
+"
+	
+	
+	
+	
+      end
+
       operation 135841 "TmDmProcessorAttributs"
 	public explicit_return_type ""
Index: /trunk/tmdmcreator/src/tmdmcreator.cpp
===================================================================
--- /trunk/tmdmcreator/src/tmdmcreator.cpp	(revision 18)
+++ /trunk/tmdmcreator/src/tmdmcreator.cpp	(revision 19)
@@ -108,14 +108,39 @@
 
     // Process layers
-    TmDmProcessorSimple myLayerProc(m_FileNameUserContent, m_FileNameOutSQL);
-    int myThematicLayersStart = myLayerProc.FindBlock(_T("thematic_layers"));
+    TmDmProcessorSimple myProc(m_FileNameUserContent, m_FileNameOutSQL);
+    int myThematicLayersStart = myProc.FindBlock(_T("thematic_layers"));
     if (myThematicLayersStart == wxNOT_FOUND) {
         errorsmsg.Add(wxString::Format(_("'thematic_layers' field not found in %s"), m_FileNameUserContent.GetFullPath()));
         return false;
     }
-    if (myLayerProc.ProcessBlock(myThematicLayersStart, _T("thematic_layers"))==false) {
+    if (myProc.ProcessBlock(myThematicLayersStart, _T("thematic_layers"))==false) {
         errorsmsg.Add(wxString::Format(_("Processing 'thematic_layers' failed in %s"), m_FileNameUserContent.GetFullPath()));
         return false;
     }
+    
+    // Process objects
+    int myObjectStart = myProc.FindBlock(_T("dmn_layer_object"));
+    if (myObjectStart == wxNOT_FOUND) {
+        errorsmsg.Add(wxString::Format(_("'dmn_layer_object' field not found in %s"), m_FileNameUserContent.GetFullPath()));
+        return false;
+    }
+    if (myProc.ProcessBlock(myObjectStart, _T("dmn_layer_object"))==false) {
+        errorsmsg.Add(wxString::Format(_("Processing 'dmn_layer_object' failed in %s"), m_FileNameUserContent.GetFullPath()));
+        return false;
+    }
+    
+    // Process attributs
+    TmDmProcessorAttributs myProcAttributs (m_FileNameUserContent, m_FileNameOutSQL);
+    int myAttributStart = myProcAttributs.FindBlock(_T("attributs"));
+    if (myAttributStart == wxNOT_FOUND) {
+        errorsmsg.Add(wxString::Format(_("'attributs' field not found in %s"), m_FileNameUserContent.GetFullPath()));
+        return false;
+    }
+    if (myProcAttributs.ProcessBlock(myAttributStart, wxEmptyString)==false) {
+        errorsmsg.Add(wxString::Format(_("Processing 'attributs' failed in %s"), m_FileNameUserContent.GetFullPath()));
+        return false;
+    }
+    
+    
     return true;
 }
Index: /trunk/tmdmcreator/src/tmdmprocessor.cpp
===================================================================
--- /trunk/tmdmcreator/src/tmdmprocessor.cpp	(revision 18)
+++ /trunk/tmdmcreator/src/tmdmprocessor.cpp	(revision 19)
@@ -64,4 +64,6 @@
     wxArrayString mySQLCols;
     TmDmCopier myCopier(m_FileDst);
+    myCopier.CopyFrom(wxString::Format(_T("\n-- %s --\n"), tablename));
+
     
     wxFileInputStream input(m_FileSrc.GetFullPath());
@@ -123,9 +125,140 @@
 }
 
+
+
 TmDmProcessorAttributs::~TmDmProcessorAttributs() {
 }
 
+
+
+bool TmDmProcessorAttributs::_ProcessAttributesName(int blockstart) {
+    wxArrayString mySQLCols;
+    TmDmCopier myCopier(m_FileDst);
+    myCopier.CopyFrom(wxString::Format(_T("\n-- %s --\n"), _T("dmn_layer_attribut")));
+    int NUM_COLS = 3;
+    wxArrayString myPreviousRow;
+    
+    wxFileInputStream input(m_FileSrc.GetFullPath());
+    wxTextInputStream text(input);
+    long myLineIndex = 0;
+    while(input.IsOk() && !input.Eof() ){
+        wxString myRow = text.ReadLine();
+        if (myLineIndex <= blockstart) {
+            myLineIndex++;
+            continue;
+        }
+        
+        if (myLineIndex == blockstart+1) {
+            mySQLCols = wxStringTokenize(myRow, _T("\t"), wxTOKEN_RET_EMPTY);
+            myLineIndex++;
+            continue;
+        }
+        
+        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;
+        }
+        
+        // check that this row differs from previous
+        wxArrayString myAttributRow;
+        for (unsigned int i = 0; i< NUM_COLS; i++) {
+            myAttributRow.Add(myValues.Item(i));
+        }
+        if (myAttributRow == myPreviousRow) {
+            continue;
+        }
+        myPreviousRow = myAttributRow;
+        
+        
+        wxString myInsert = _T("INSERT INTO `dmn_layer_attribut` VALUES (");
+        for (unsigned int i = 0; i< myAttributRow.GetCount(); i++) {
+            myInsert.Append(wxString::Format(_T("\"%s\","), myAttributRow.Item(i)));
+        }
+        myInsert.RemoveLast();
+        myInsert.Append(_T(");\n"));
+        myCopier.CopyFrom(myInsert);
+        myLineIndex++;
+    }
+    return true;
+}
+
+
+
+bool TmDmProcessorAttributs::_ProcessAttributesValues(int blockstart) {
+    wxArrayString mySQLCols;
+    TmDmCopier myCopier(m_FileDst);
+    myCopier.CopyFrom(wxString::Format(_T("\n-- %s --\n"), _T("attribut values")));
+    int START_COL = 3;
+    
+    wxFileInputStream input(m_FileSrc.GetFullPath());
+    wxTextInputStream text(input);
+    long myLineIndex = 0;
+    while(input.IsOk() && !input.Eof() ){
+        wxString myRow = text.ReadLine();
+        if (myLineIndex <= blockstart) {
+            myLineIndex++;
+            continue;
+        }
+        
+        if (myLineIndex == blockstart+1) {
+            mySQLCols = wxStringTokenize(myRow, _T("\t"), wxTOKEN_RET_EMPTY);
+            myLineIndex++;
+            continue;
+        }
+        
+        
+        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;
+        }
+        
+        // query to dmn_catalog
+        wxString myInsert = _T("INSERT INTO `dmn_catalog` VALUES (");
+        for (unsigned int i = START_COL; i< mySQLCols.GetCount(); i++) {
+            myInsert.Append(wxString::Format(_T("\"%s\","), myValues.Item(i)));
+        }
+        myInsert.RemoveLast();
+        myInsert.Append(_T(");\n"));
+        
+        
+        // query to dmn_attribut_value
+        myInsert.Append(wxString::Format(_T("INSERT INTO `dmn_attribut_value` VALUES (%s, %s);\n"),
+                                         myValues.Item(0), myValues.Item(START_COL)));
+        
+        myCopier.CopyFrom(myInsert);
+        myLineIndex++;
+    }
+    return true;
+}
+
+
+
 bool TmDmProcessorAttributs::ProcessBlock(int blockstart, const wxString & tablename) {
-    return false;
-}
-
+    if (_ProcessAttributesName(blockstart) == false) {
+        return false;
+    }
+    
+    if (_ProcessAttributesValues(blockstart) == false) {
+        return false;
+    }
+    return true;
+}
+
+
+
Index: /trunk/tmdmcreator/src/tmdmprocessor.h
===================================================================
--- /trunk/tmdmcreator/src/tmdmprocessor.h	(revision 18)
+++ /trunk/tmdmcreator/src/tmdmprocessor.h	(revision 19)
@@ -62,4 +62,8 @@
 
 class TmDmProcessorAttributs : public TmDmProcessor {
+private:
+    bool _ProcessAttributesName(int blockstart);
+    bool _ProcessAttributesValues(int blockstart);
+    
 public:
     TmDmProcessorAttributs(const wxFileName & src, const wxFileName & dest);
