added: field_model() method to Model
git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1103 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
3da8d1f411
commit
98206fdb7a
|
@ -120,6 +120,7 @@ public:
|
|||
{
|
||||
field_before();
|
||||
|
||||
// IMPLEMENTME
|
||||
// if( work_mode == MORM_WORK_MODE_MODEL_FIELDS )
|
||||
// {
|
||||
// put_field_name(field_name);
|
||||
|
@ -141,6 +142,34 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
template<typename ModelClass>
|
||||
void field_model(const wchar_t * field_name, ModelClass & field_model, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
||||
{
|
||||
if( out_stream && can_field_be_generated(insertable, updatable, is_primary_key) )
|
||||
{
|
||||
field_before();
|
||||
|
||||
// IMPLEMENTME
|
||||
// if( work_mode == MORM_WORK_MODE_MODEL_FIELDS )
|
||||
// {
|
||||
// put_field_name(field_name);
|
||||
// }
|
||||
// else
|
||||
// if( work_mode == MORM_WORK_MODE_MODEL_VALUES )
|
||||
// {
|
||||
// put_field_value(field_value);
|
||||
// }
|
||||
// else
|
||||
if( work_mode == MORM_WORK_MODE_MODEL_FIELDS_VALUES )
|
||||
{
|
||||
put_field_name(field_name);
|
||||
put_name_value_separator();
|
||||
generate_from_model(field_model);
|
||||
}
|
||||
|
||||
field_after();
|
||||
}
|
||||
}
|
||||
|
||||
template<typename FieldValue>
|
||||
void field_to_stream(PT::TextStream & stream, const wchar_t * field_name, const FieldValue & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
||||
|
|
|
@ -406,10 +406,8 @@ public:
|
|||
bool get(ModelClass & result)
|
||||
{
|
||||
bool res = false;
|
||||
result.clear(); // here has to be a model connector (it clears all fields)
|
||||
|
||||
// what about setting a model connector for the result?
|
||||
// it can be a different object
|
||||
result.set_connector(model_connector);
|
||||
result.clear();
|
||||
|
||||
if( model_connector && out_stream )
|
||||
{
|
||||
|
|
26
src/model.h
26
src/model.h
|
@ -156,6 +156,20 @@ protected:
|
|||
|
||||
virtual int get_connector_mode();
|
||||
|
||||
// temporarily workaround
|
||||
// these templates will be removed
|
||||
void fieldb(const wchar_t * db_field_name, const wchar_t * flat_field_name, bool & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
||||
{
|
||||
if( model_connector )
|
||||
{
|
||||
model_connector->field(db_field_name, flat_field_name, field_value, insertable, updatable, is_primary_key);
|
||||
}
|
||||
}
|
||||
/////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
template<typename FieldValue>
|
||||
void field(const wchar_t * field_name, FieldValue & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
||||
{
|
||||
|
@ -201,6 +215,18 @@ protected:
|
|||
}
|
||||
}
|
||||
|
||||
template<typename ModelClass>
|
||||
void field_model(const wchar_t * field_name, ModelClass & field_model, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
||||
{
|
||||
if( model_connector )
|
||||
{
|
||||
// is there a possibility for the childs to be connected to different model connectors?
|
||||
field_model.set_connector(model_connector);
|
||||
model_connector->field_model(field_name, field_model, insertable, updatable, is_primary_key);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<typename FieldValue>
|
||||
void get_last_sequence(const wchar_t * sequence_table_name, FieldValue & field_value)
|
||||
{
|
||||
|
|
|
@ -178,6 +178,7 @@ protected:
|
|||
template<typename ModelClass>
|
||||
void field_list(const wchar_t * field_name, std::list<ModelClass> & field_list, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
||||
{
|
||||
// IMPLEMENTME what about db?
|
||||
if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING && flat_connector )
|
||||
{
|
||||
FlatExpression * flat_expression = flat_connector->get_expression();
|
||||
|
@ -187,6 +188,31 @@ protected:
|
|||
flat_expression->field_list(field_name, field_list, insertable, updatable, is_primary_key);
|
||||
}
|
||||
}
|
||||
|
||||
if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_CLEARING_VALUE )
|
||||
{
|
||||
field_list.clear();
|
||||
}
|
||||
}
|
||||
|
||||
template<typename ModelClass>
|
||||
void field_model(const wchar_t * field_name, ModelClass & field_model, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
||||
{
|
||||
// IMPLEMENTME what about db?
|
||||
if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING && flat_connector )
|
||||
{
|
||||
FlatExpression * flat_expression = flat_connector->get_expression();
|
||||
|
||||
if( flat_expression && !is_empty_field(field_name) )
|
||||
{
|
||||
flat_expression->field_model(field_name, field_model, insertable, updatable, is_primary_key);
|
||||
}
|
||||
}
|
||||
|
||||
if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_CLEARING_VALUE )
|
||||
{
|
||||
field_model.clear();
|
||||
}
|
||||
}
|
||||
|
||||
template<typename FieldValue>
|
||||
|
|
Loading…
Reference in New Issue