//#include <icons/close.xpm>
#include <creaWx.h>
-#include <creaMessageManager.h>
using namespace crea;
#include <boost/filesystem.hpp>
{
return false;
}
- //=====================================================================
-
- //=====================================================================
- unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n)
- {
- return 0;
- }
+
//=====================================================================
//=====================================================================
//=====================================================================
- bool SQLiteTreeHandler::Remove(tree::Node*)
+ bool SQLiteTreeHandler::Remove(tree::Node* node)
{
- return false;
+ DBRecursiveRemoveNode(node);
+
+ // std::cout << "DELETE"<<std::endl;
+ if (node->GetParent())
+ {
+ node->GetParent()->RemoveChildrenFromList(node);
+ }
+ delete node;
+ // std::cout << "DELETE OK"<<std::endl;
+ return true;
}
+
+ //========================================================================
+
+
+
//=====================================================================
//=====================================================================
// Add Attribute 'ID' to Description
- GetTree().GetLevelDescriptor(l).Add
+ GetTree().GetDescriptor().Add
(AttributeDescriptor( "ID",
"Database Identifier",
0,0,
AttributeDescriptor::PRIVATE
- ));
+ ),l);
if (l>1)
{
// Add Attribute 'PARENT_ID' to Description
- GetTree().GetLevelDescriptor(l).Add
+ GetTree().GetDescriptor().Add
(AttributeDescriptor( "PARENT_ID",
"Database Parent Identifier",
0,0,
AttributeDescriptor::PRIVATE
- ));
+ ),l);
}
}
tree::Descriptor& desc = GetTree().GetDescriptor();
// clears the existing one
- desc.GetLevelDescriptorList().clear();
+ desc.Clear();
int nblevel = 0;
std::string query = "SELECT * FROM LEVELS";
{
std::string name = q.getStringField(0);
GimmickMessage(2," * Importing level '"<<name<<"'"<<std::endl);
- desc.GetLevelDescriptorList().push_back(LevelDescriptor(name));
+ desc.Add(LevelDescriptor(name));
nblevel++;
q.nextRow();
}
std::string name(q.getStringField(1));
GimmickMessage(2," - Importing attribute '"<<key<<"' '"<<name
<<"'"<<std::endl);
- desc.GetLevelDescriptor(level).Add
+ desc.Add
(AttributeDescriptor( key, // Key
name, // Name
q.getIntField(2), // Group
q.getIntField(3), // Element
q.getIntField(4) // Flags
- ));
+ ),level);
if ( key == "ID" )
{
ID_found = true;
// Query DB
int level = node->GetLevel();
std::string query = "SELECT * FROM ";
+
query += GetTree().GetLevelDescriptor(level+1).GetName();
if (level>0)
{
std::string insert("INSERT INTO ");
insert += GetTree().GetLevelDescriptor(n->GetLevel()).GetName();
insert += " " + val + ";";
+
UPDATEDB(insert);
// Store DB id of newly created node;
}
//=====================================================================
+
+ //=====================================================================
+ void SQLiteTreeHandler::DBRecursiveRemoveNode(Node* node)
+ {
+
+ std::string query = "DELETE FROM ";
+
+ query += GetTree().GetLevelDescriptor(node->GetLevel()).GetName();
+ query += " WHERE ID='"+ node->GetAttribute("ID") + "';";
+
+ UPDATEDB(query);
+ GimmickDebugMessage(2,
+ " Deleting '"
+ <<node->GetLabel()<<"' with ID '"
+ <<node->GetAttribute("ID")
+ <<"' in level "<< GetTree().GetLevelDescriptor(node->GetLevel()).GetName()
+ <<std::endl);
+
+ Node::ChildrenListType::iterator i;
+ for (i = node->GetChildrenList().begin();
+ i != node->GetChildrenList().end();
+ i++)
+ {
+ DBRecursiveRemoveNode((*i));
+ }
+ }
+
+ //=====================================================================
+
+ //=====================================================================
+ unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n)
+ {
+ // Query DB
+ int nb=0;
+ int level = n->GetLevel();
+ if(GetTree().GetNumberOfLevels()!=(level+1))
+ {
+ std::string query = "SELECT * FROM ";
+ query += GetTree().GetLevelDescriptor(level+1).GetName();
+ if (level>0)
+ {
+ query += " WHERE PARENT_ID='" + n->UnsafeGetAttribute("ID")
+ + "'";
+ }
+
+ CppSQLite3Query q;
+ QUERYDB(query,q);
+
+
+ while (!q.eof())
+ {
+ nb++;
+ q.nextRow();
+ }
+ }
+ return nb;
+ }
+
/*
//=====================================================================
bool SQLiteTreeHandler::DBInsert(Node* alien_node,
// std::cout << " ** Node = "<<i->second<<std::endl;
return i->second;
}
+
//=====================================================================
//=====================================================================
bool SQLiteTreeHandler::Remove(Node* node)
{
- DBRecursiveRemoveNode(node);
+
+ //DBRecursiveRemoveNode(node);
// std::cout << "DELETE"<<std::endl;
if (node->GetParent())
// std::cout << "DELETE OK"<<std::endl;
return true;
}
+
+
//========================================================================
//=====================================================================
DBRecursiveRemoveNode((*i));
}
}
+
//=====================================================================
//=====================================================================