Replacement* Replacements::addReplacement(string sRegex, string replacement) { Replacement* newReplacementPtr = new Replacement(mDb); newReplacementPtr->setRegex(sRegex); newReplacementPtr->setReplacement(replacement); //newReplacementPtr->setname(mname); stringstream strSql; strSql << "SELECT rowid FROM replacementGroups " << "WHERE name = " << cSqlStrOut(mName) << " AND ownerId = " << mOwnerId; string sRowId; exec(strSql, mDb, onReadFirstField, &sRowId); if (sRowId.length() > 0) { //sqlite_int64 rowId = cSqlInFormated<sqlite_int64>(sRowId); newReplacementPtr->setGroupId(cSqlInFormated<sqlite_int64>(sRowId)); } else { strSql.str(""); //clear strSql << "INSERT INTO replacementGroups " << "(name, ownerId) VALUES (" << cSqlStrOut(mName) << ", " << mOwnerId << ")"; exec(strSql, mDb); newReplacementPtr->setGroupId(sqlite3_last_insert_rowid(mDb)); } newReplacementPtr->save(); mChildren.insert(make_pair(newReplacementPtr->getRowId(), newReplacementPtr)); return newReplacementPtr; }
Replacements::Replacements(sqlite3* db, string name, sqlite_int64 ownerId) : mDb(db), mName(name), mOwnerId(ownerId) { exAssert(db!=NULL); exAssertDesc(ownerId > 0, "ownerId should be greater null"); sqlite_int64 groupId = 0; stringstream strSql; strSql << "SELECT rowid FROM replacementGroups " << "WHERE name = " << cSqlStrOut(mName) << " AND ownerId = " << mOwnerId; string sRowId; exec(strSql, mDb, onReadFirstField, &sRowId); if (sRowId.length() > 0) { groupId = cSqlInFormated<sqlite_int64>(sRowId); } else { strSql.str(""); //clear strSql << "INSERT INTO replacementGroups " << "(name, ownerId) VALUES (" << cSqlStrOut(mName) << ", " << mOwnerId << ")"; exec(strSql, mDb); groupId = sqlite3_last_insert_rowid(mDb); } vector<string> rowids; strSql.str(""); //clear strSql << "SELECT rowid FROM replacements " "WHERE groupId = " << cSqlOutFormated(groupId) ; exec(strSql, db, onAppendFirstColumnToVector, &rowids); for (vector<string>::iterator it = rowids.begin(); it != rowids.end(); it++) { stringstream strRowid(*it); sqlite_int64 rowid; strRowid >> rowid; Replacement* newReplacement = new Replacement(db, rowid); mChildren[newReplacement->getRowId()] = newReplacement; } };