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
This commit is contained in:
parent
08cd621d41
commit
d6e428d929
|
@ -117,7 +117,8 @@ public:
|
|||
}
|
||||
|
||||
template<typename ModelClass>
|
||||
void field_list(const wchar_t * field_name, const std::list<ModelClass> & 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<ModelClass> & 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<typename ModelClass>
|
||||
void put_field_value_list(const std::list<ModelClass> & field_value, int model_connector_mode)
|
||||
void put_field_value_list(const std::list<ModelClass> & 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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
26
src/model.h
26
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<typename ModelX>
|
||||
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<typename ModelClass> friend class Finder;
|
||||
friend class BaseExpression;
|
||||
|
||||
// WILL BE REMOVED when ModelConnector::set_connector_for_childs(Model & model) will be removed
|
||||
friend class ModelConnector;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue