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; }