: mFileName(filename)
{
mDB = new CppSQLite3DB;
+ mIsAdding=false;
GimmickMessage(1,"SQLite version : "
<<std::string(mDB->SQLiteVersion())<< std::endl);
}
}
//=====================================================================
-
//=====================================================================
int SQLiteTreeHandler::AddBranch( const AttributeMapType& attr )
{
+ mIsAdding=true;
tree::Node* parent = DBGetParent(attr);
DBGraftToParent(parent,attr);
+ mIsAdding=false;
return (parent->GetLevel()+1);
+
}
//=====================================================================
// 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);
}
}
<< i->GetGroup() << ","
<< i->GetElement() << ","
<< i->GetFlags() << ");";
-
UPDATEDB(insert.str());
}
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;
int nbloaded = 0;
// If children loaded we do not have to do it but we need to recurse
// in order to load the children's children if necessary, and so on...
- if (node->GetChildrenLoaded())
+ if (node->GetChildrenLoaded()||mIsAdding)
{
// Iterate the children
+
tree::Node::ChildrenListType::iterator i;
for (i = node->GetChildrenList().begin();
i!= node->GetChildrenList().end();
{
nbloaded += DBLoadChildren(*i,numberoflevels-1);
}
+ node->SetChildrenLoaded(true);
return nbloaded;
+
}
-
+ else
+ {
/// If children not loaded : do it and recurse
// Query DB
CppSQLite3Query q;
QUERYDB(query,q);
+ int p=0;
while (!q.eof())
{
nbloaded++;
}
node->SetChildrenLoaded(true);
+
// msw[2].Pause();
return nbloaded;
+ }
}
//=====================================================================
{
// Create Node
tree::Node* child = new tree::Node(parent,attr);
-
+ std::cout<<"Number of children "<<parent->GetNumberOfChildren()<<std::endl;
// Set PARENT_ID if necessary
if ( parent->GetLevel()>0 )
child->SetAttribute("PARENT_ID",parent->GetAttribute("ID"));
}
}
- //=====================================================================
-
//=====================================================================
unsigned int SQLiteTreeHandler::GetNumberOfChildren(tree::Node* n)
{