some work in branches/join_models
- added FinderHelper class - used as a global object for the whole model tree in Finder (some fields moved from ModelData) - added CursorHelper class - used as a global object for the whole model tree in Cursor (some fields moved from ModelData) git-svn-id: svn://ttmath.org/publicrep/morm/branches/join_models@1192 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
48
src/cursor.h
48
src/cursor.h
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2018, Tomasz Sowa
|
||||
* Copyright (c) 2018-2019, Tomasz Sowa
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -51,7 +51,8 @@ public:
|
||||
|
||||
Cursor()
|
||||
{
|
||||
set_default_values();
|
||||
query_result = nullptr;
|
||||
clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -59,6 +60,7 @@ public:
|
||||
{
|
||||
model_connector = c.model_connector;
|
||||
model_data = c.model_data;
|
||||
has_autogenerated_select = c.has_autogenerated_select;
|
||||
query_result = c.query_result;
|
||||
select_status = c.select_status;
|
||||
|
||||
@@ -66,6 +68,9 @@ public:
|
||||
{
|
||||
query_result->references_count += 1;
|
||||
}
|
||||
|
||||
// helper doesn't have to be copied
|
||||
cursor_helper.clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +96,13 @@ public:
|
||||
delete query_result;
|
||||
}
|
||||
|
||||
set_default_values();
|
||||
model_connector = nullptr;
|
||||
model_data = nullptr;
|
||||
has_autogenerated_select = false;
|
||||
cursor_helper.clear();
|
||||
query_result = nullptr;
|
||||
select_status = false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -119,6 +130,12 @@ public:
|
||||
}
|
||||
|
||||
|
||||
virtual void set_has_autogenerated_select(bool has_autogenerated_select)
|
||||
{
|
||||
this->has_autogenerated_select = has_autogenerated_select;
|
||||
}
|
||||
|
||||
|
||||
virtual QueryResult * get_query_result()
|
||||
{
|
||||
return query_result;
|
||||
@@ -144,7 +161,7 @@ public:
|
||||
result.set_connector(model_connector);
|
||||
result.clear();
|
||||
|
||||
if( model_connector && query_result && query_result->has_db_result() && model_data )
|
||||
if( model_connector && query_result && query_result->has_db_result() )
|
||||
{
|
||||
DbConnector * db_connector = model_connector->get_db_connector();
|
||||
|
||||
@@ -152,11 +169,13 @@ public:
|
||||
{
|
||||
ModelEnv model_env_local;
|
||||
result.model_env = &model_env_local;
|
||||
result.model_env->cursor_helper = &cursor_helper;
|
||||
|
||||
try
|
||||
{
|
||||
model_data->current_column = 0;
|
||||
model_data->query_result = query_result;
|
||||
cursor_helper.clear();
|
||||
cursor_helper.query_result = query_result;
|
||||
cursor_helper.has_autogenerated_select = has_autogenerated_select;
|
||||
|
||||
result.model_env->model_data = model_data;
|
||||
result.before_select();
|
||||
@@ -214,7 +233,7 @@ public:
|
||||
result.clear();
|
||||
}
|
||||
|
||||
if( model_connector && query_result && query_result->has_db_result() && model_data )
|
||||
if( model_connector && query_result && query_result->has_db_result() )
|
||||
{
|
||||
DbConnector * db_connector = model_connector->get_db_connector();
|
||||
|
||||
@@ -264,17 +283,12 @@ protected:
|
||||
|
||||
ModelConnector * model_connector;
|
||||
ModelData * model_data;
|
||||
bool has_autogenerated_select;
|
||||
CursorHelper cursor_helper;
|
||||
QueryResult * query_result;
|
||||
bool select_status;
|
||||
|
||||
|
||||
virtual void set_default_values()
|
||||
{
|
||||
model_connector = nullptr;
|
||||
model_data = nullptr;
|
||||
query_result = nullptr;
|
||||
select_status = false;
|
||||
}
|
||||
|
||||
|
||||
template<typename ContainerType>
|
||||
@@ -289,11 +303,13 @@ protected:
|
||||
|
||||
ModelEnv model_env_local;
|
||||
added_model.model_env = &model_env_local;
|
||||
added_model.model_env->cursor_helper = &cursor_helper;
|
||||
|
||||
try
|
||||
{
|
||||
model_data->current_column = 0;
|
||||
model_data->query_result = query_result;
|
||||
cursor_helper.clear();
|
||||
cursor_helper.query_result = query_result;
|
||||
cursor_helper.has_autogenerated_select = has_autogenerated_select;
|
||||
|
||||
added_model.set_connector(model_connector);
|
||||
added_model.clear();
|
||||
|
Reference in New Issue
Block a user