예제 #1
0
void NoteCollection::addNote( Note& note )
{
	if( note.hasDate() )
	{
		const Glib::DateTime& date = note.getDate();

		if( m_vecNotes.empty() ||
				date.compare( m_vecNotes.back()->getDate() ) >= 0 )
		{
			m_vecNotes.push_back( &note );
			return;
		}
		else if( date.compare( m_vecNotes.front()->getDate() ) <= 0 )
		{
			m_vecNotes.insert( m_vecNotes.begin(), &note );
			return;
		}

		unsigned int left = 0;
		unsigned int right = m_vecNotes.size() - 1;

		while( right - left > 1 )
		{
			unsigned int mid = ( right + left ) / 2;
			int diffMid = date.compare( m_vecNotes[ mid ]->getDate() );
			if( diffMid > 0 )
			{
				left = mid;
			}
			else
			{
				right = mid;
			}
		}

		m_vecNotes.insert( m_vecNotes.begin() + right, &note );
	}
	else
	{
		m_vecGeneralNotes.push_back( &note );
	}
}
예제 #2
0
bool DbNote::updateRow(Note & note)
{
    sqlite3_stmt *statement;
    string stmnt =
        "update NoteTable SET date=?,NoteText=?,NoteTitle=?,NoteRef=?,KatKey=? where NoteKey=?;";
    if (!openDB())
    {
        throw SQLError("Can't open the DB-Connection");
        return false;
    }
    int req = sqlite3_prepare_v2(db, stmnt.c_str(), -1, &statement, 0);
    if (req != SQLITE_OK)
    {
        throw SQLError("Preparing Update-Statement failed");
        return false;
    }
    req = sqlite3_bind_text(statement, 1,
                            (note.getDate().getDateString()).c_str(),
                            (note.getDate().getDateString()).length(), SQLITE_TRANSIENT);

    if (req != SQLITE_OK)
    {
        throw SQLError("Binding Date into update statement failed");
        return false;
    }
    req = sqlite3_bind_text(statement, 2, (note.getNoteText()).c_str(),
                            (note.getNoteText()).length(), SQLITE_TRANSIENT);
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding note text into update statement failed");
        return false;
    }
    req = sqlite3_bind_text(statement, 3, (note.getNotetitle()).c_str(),
                            (note.getNotetitle()).length(), SQLITE_TRANSIENT);
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding note title into update statement failed");
        return false;
    }
    req = sqlite3_bind_int(statement, 4, note.getNoteRef());
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding note ref into update statement failed");
        return false;
    }
    req = sqlite3_bind_int(statement, 5, note.getKatKey());
    if (req != SQLITE_OK)
    {
        throw SQLError(
            "Binding note category key into update statement failed");
        return false;
    }
    req = sqlite3_bind_int(statement, 6, note.getNoteKey());
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding note key into update statement failed");
        return false;
    }
    req = sqlite3_step(statement);
    if (req != SQLITE_DONE)
    {
        throw SQLError("execute of insert statement failed");
        return false;
    }
    sqlite3_finalize(statement);
    sqlite3_close(db);
    return true;
}
예제 #3
0
bool DbNote::insertTable(Note & note)
{
    sqlite3_stmt *statement;
    string stmnt =
        "insert into NoteTable (date,NoteText,NoteTitle,NoteRef,KatKey) values (?,?,?,?,?)";

    if (!openDB())
    {
        throw SQLError("Can't open the DB-Connection");
        return false;
    }
    int req = sqlite3_prepare_v2(db, stmnt.c_str(), stmnt.length(), &statement,
                                 0);
    if (req != SQLITE_OK)
    {
        throw SQLError("Preparing Insert-Statement failed");
        return false;
    }
    req = sqlite3_bind_text(statement, 1,
                            (note.getDate().getDateString()).c_str(),
                            (note.getDate().getDateString()).length(), SQLITE_TRANSIENT);
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding Date into insert statement failed");
        return false;
    }
    req = sqlite3_bind_text(statement, 2, (note.getNoteText()).c_str(),
                            (note.getNoteText()).length(), SQLITE_TRANSIENT);
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding note text into insert statement failed");
        return false;
    }
    req = sqlite3_bind_text(statement, 3, (note.getNotetitle()).c_str(),
                            (note.getNotetitle()).length(), SQLITE_TRANSIENT);
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding note title into insert statement failed");
        return false;
    }
    req = sqlite3_bind_int(statement, 4, note.getNoteRef());
    if (req != SQLITE_OK)
    {
        throw SQLError("Binding note ref into insert statement failed");
        return false;
    }
    req = sqlite3_bind_int(statement, 5, note.getKatKey());
    if (req != SQLITE_OK)
    {
        throw SQLError(
            "Binding note category key into insert statement failed");
        return false;
    }
    req = sqlite3_step(statement);
    if (req != SQLITE_DONE)
    {
        throw SQLError("execute of insert statement failed");
        return false;
    }
    sqlite3_finalize(statement);
    sqlite3_close(db);
    return true;
}