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:
@@ -120,6 +120,7 @@ public:
|
|||||||
{
|
{
|
||||||
field_before();
|
field_before();
|
||||||
|
|
||||||
|
// IMPLEMENTME
|
||||||
// if( work_mode == MORM_WORK_MODE_MODEL_FIELDS )
|
// if( work_mode == MORM_WORK_MODE_MODEL_FIELDS )
|
||||||
// {
|
// {
|
||||||
// put_field_name(field_name);
|
// 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>
|
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)
|
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 get(ModelClass & result)
|
||||||
{
|
{
|
||||||
bool res = false;
|
bool res = false;
|
||||||
result.clear(); // here has to be a model connector (it clears all fields)
|
result.set_connector(model_connector);
|
||||||
|
result.clear();
|
||||||
// what about setting a model connector for the result?
|
|
||||||
// it can be a different object
|
|
||||||
|
|
||||||
if( model_connector && out_stream )
|
if( model_connector && out_stream )
|
||||||
{
|
{
|
||||||
|
26
src/model.h
26
src/model.h
@@ -156,6 +156,20 @@ protected:
|
|||||||
|
|
||||||
virtual int get_connector_mode();
|
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>
|
template<typename FieldValue>
|
||||||
void field(const wchar_t * field_name, FieldValue & field_value, bool insertable = true, bool updatable = true, bool is_primary_key = false)
|
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>
|
template<typename FieldValue>
|
||||||
void get_last_sequence(const wchar_t * sequence_table_name, FieldValue & field_value)
|
void get_last_sequence(const wchar_t * sequence_table_name, FieldValue & field_value)
|
||||||
{
|
{
|
||||||
|
@@ -178,6 +178,7 @@ protected:
|
|||||||
template<typename ModelClass>
|
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)
|
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 )
|
if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_GENERATING_FLAT_STRING && flat_connector )
|
||||||
{
|
{
|
||||||
FlatExpression * flat_expression = flat_connector->get_expression();
|
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);
|
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>
|
template<typename FieldValue>
|
||||||
|
Reference in New Issue
Block a user