From d6e428d929f687e4815557cc0e087a464ad0947a Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Wed, 4 Jul 2018 13:52:40 +0000 Subject: [PATCH] removed: set_connector_for_childs from ModelConnector changed: model connector is propagated to childs when needed (when update, insert, save, to_text is called or in finder) git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1120 e52654a7-88a9-db11-a3e9-0013d4bc506e --- src/baseexpression.h | 9 +++++---- src/model.cpp | 6 +----- src/model.h | 26 ++++++++------------------ src/modelconnector.cpp | 8 -------- src/modelconnector.h | 5 ----- src/morm_types.h | 1 - 6 files changed, 14 insertions(+), 41 deletions(-) diff --git a/src/baseexpression.h b/src/baseexpression.h index 9ef75bf..5d37c25 100644 --- a/src/baseexpression.h +++ b/src/baseexpression.h @@ -117,7 +117,8 @@ public: } template - void field_list(const wchar_t * field_name, const std::list & field_value, bool insertable, bool updatable, bool is_primary_key, int model_connector_mode) + void field_list(const wchar_t * field_name, const std::list & field_value, bool insertable, bool updatable, bool is_primary_key, + ModelConnector * model_connector, int model_connector_mode) { if( out_stream && can_field_be_generated(insertable, updatable, is_primary_key) ) { @@ -127,7 +128,7 @@ public: { put_field_name(field_name); put_name_value_separator(); - put_field_value_list(field_value, model_connector_mode); + put_field_value_list(field_value, model_connector, model_connector_mode); } field_after(); @@ -251,7 +252,7 @@ protected: template - void put_field_value_list(const std::list & field_value, int model_connector_mode) + void put_field_value_list(const std::list & field_value, ModelConnector * model_connector, int model_connector_mode) { if( out_stream ) { @@ -271,7 +272,7 @@ protected: } //before_field_value(field_value); - // FIX ME what about setting model connector to the m? !!!!!!!!!!!! + m.set_connector(model_connector); m.model_connector_mode = model_connector_mode; generate_from_model(m); m.model_connector_mode = MORM_MODEL_CONNECTOR_MODE_NONE; diff --git a/src/model.cpp b/src/model.cpp index 82e57a4..ef5891f 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -117,14 +117,10 @@ void Model::set_connector(ModelConnector & connector) set_connector(&connector); } + void Model::set_connector(ModelConnector * connector) { model_connector = connector; - - if( model_connector ) - { - model_connector->set_connector_for_childs(*this); - } } diff --git a/src/model.h b/src/model.h index 59ef0a8..7791be1 100644 --- a/src/model.h +++ b/src/model.h @@ -473,7 +473,10 @@ protected: if( flat_expression && !is_empty_field(flat_field_name) ) { - flat_expression->field_list(flat_field_name, field_list, insertable, updatable, is_primary_key, model_connector_mode); + // IMPROVE ME + // what about model_data and save_mode? + // may it should be placed inside some structure? + flat_expression->field_list(flat_field_name, field_list, insertable, updatable, is_primary_key, model_connector, model_connector_mode); } } } @@ -482,21 +485,16 @@ protected: { field_list.clear(); } - - // WILL BE REMOVED - if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_SETTING_CONNECTOR_FOR_CHILDS ) - { - // IMPROVE ME - // it would be better to set the connector when an operation is needed - } } } - template - void field_model(const wchar_t * db_field_name, const wchar_t * flat_field_name, ModelX & field_model, bool insertable, bool updatable, bool is_primary_key) + + void field_model(const wchar_t * db_field_name, const wchar_t * flat_field_name, Model & field_model, bool insertable, bool updatable, bool is_primary_key) { if( model_connector ) { + field_model.set_connector(model_connector); + // IMPLEMENTME what about db? if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING ) { @@ -519,12 +517,6 @@ protected: { field_model.clear(); } - - // WILL BE REMOVED - if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_SETTING_CONNECTOR_FOR_CHILDS ) - { - field_model.set_connector(model_connector); - } } } @@ -599,8 +591,6 @@ protected: template friend class Finder; friend class BaseExpression; - // WILL BE REMOVED when ModelConnector::set_connector_for_childs(Model & model) will be removed - friend class ModelConnector; }; } // namespace diff --git a/src/modelconnector.cpp b/src/modelconnector.cpp index 9a620b1..27229e9 100644 --- a/src/modelconnector.cpp +++ b/src/modelconnector.cpp @@ -164,13 +164,5 @@ std::wstring ModelConnector::get_db_error() -void ModelConnector::set_connector_for_childs(Model & model) -{ - model.model_connector_mode = MORM_MODEL_CONNECTOR_MODE_SETTING_CONNECTOR_FOR_CHILDS; - model.map_fields(); - model.model_connector_mode = MORM_MODEL_CONNECTOR_MODE_NONE; -} - - } diff --git a/src/modelconnector.h b/src/modelconnector.h index 8e4bac6..90e33a9 100644 --- a/src/modelconnector.h +++ b/src/modelconnector.h @@ -79,11 +79,6 @@ public: virtual DbConnector * get_db_connector(); - // WILL BE REMOVED - // model connector for childs will be set when needed - virtual void set_connector_for_childs(Model & model); - - protected: diff --git a/src/morm_types.h b/src/morm_types.h index 67b39f7..89eedd8 100644 --- a/src/morm_types.h +++ b/src/morm_types.h @@ -45,7 +45,6 @@ #define MORM_MODEL_CONNECTOR_MODE_READING_VALUE_FROM_DB_RESULTSET 4 #define MORM_MODEL_CONNECTOR_MODE_CLEARING_VALUE 5 -#define MORM_MODEL_CONNECTOR_MODE_SETTING_CONNECTOR_FOR_CHILDS 6 #define MORM_WORK_MODE_MODEL_FIELDS 1