示例#1
0
文件: database.cpp 项目: gavaza/pacca
int Database::saveSession(Sessions session)
{
    int decoderId = this->userExist(session.getDecoder());
    if(decoderId == 0){
        decoderId = this->insertUser(Users(session.getDecoder()));
        if(decoderId <= 0) return -1;
        this->cacheUserId.insert(session.getDecoder().toString(),decoderId);
    }
    int observerId = this->userExist(session.getObserver());
    if(observerId == 0){
        observerId = this->insertUser(Users(session.getObserver()));
        if(observerId <= 0) return -2;
        this->cacheUserId.insert(session.getObserver().toString(),observerId);
    }
    int specieId = this->specieExist(session.getSpecies());
    if (specieId == 0){
        specieId = this->insertSpecie(Species(session.getSpecies()));
        if (specieId <= 0) return -2;
    }
    int subjectId = this->subjectExist(session.getSubject());
    if (subjectId == 0){
        Subjects s;
        s.setName(session.getSubject());
        subjectId = this->insertSubject(s);
        if (subjectId <= 0) return -2;
    }

    int sessionId = this->insertSession(decoderId, session.getDateDecoding(),
                                        observerId, subjectId, specieId,
                                        session.getDateSession(), session.getDescription());
    if(sessionId <= 0) return -3;
    QList<Actions> sequence = session.getActions();
    for(int s=0; s < sequence.size(); s++){
        Actions action = sequence.at(s);
        int stateId = this->stateExist(action.getStateDescription());
        if(stateId == 0){
            stateId = this->insertState(States(action.getStateDescription()));
            if(stateId <= 0) return -4;
            this->cacheStateId.insert(action.getStateDescription(),stateId);
        }
        int eventId = this->eventExist(action.getEventDescription());
        if(eventId == 0){
            eventId = this->insertEvent(Events(action.getEventDescription()));
            if(eventId <= 0) return -5;
            this->cacheEventId.insert(action.getEventDescription(),eventId);
        }
        if(this->insertAction(action.getTimeAction(), sessionId, stateId, eventId) <= 0) return -6;
    }
//    qDebug() << this->query.lastQuery();
//    qDebug() << this->query.lastError();
//    qDebug() << sessionId;
    return sessionId;
}