void AddLink::displayComp(vector<Computer>& computer) { ui->table_linking->setSortingEnabled(false); ui->table_linking->clearContents(); ui->table_linking->setColumnCount(5); ui->table_linking->setRowCount(computer.size()); ui->table_linking->setHorizontalHeaderItem(0,new QTableWidgetItem(QString("id"))); ui->table_linking->setHorizontalHeaderItem(1,new QTableWidgetItem(QString("Name"))); ui->table_linking->setHorizontalHeaderItem(2,new QTableWidgetItem(QString("Year"))); ui->table_linking->setHorizontalHeaderItem(3,new QTableWidgetItem(QString("Type"))); ui->table_linking->setHorizontalHeaderItem(4,new QTableWidgetItem(QString("Built"))); for(size_t i = 0; i < computer.size(); i++) { Computer temp = computer[i]; QTableWidgetItem* id = new QTableWidgetItem; id->setData(Qt::DisplayRole,temp.getID()); ui->table_linking->setItem(i,0, id); ui->table_linking->setItem(i,1, new QTableWidgetItem(QString::fromStdString(temp.getName()))); ui->table_linking->setItem(i,2, new QTableWidgetItem(QString::number(temp.getYear()))); ui->table_linking->setItem(i,3, new QTableWidgetItem(QString::fromStdString(temp.getType()))); ui->table_linking->setItem(i,4, new QTableWidgetItem(QString::number(temp.getBuilt()))); } ui->table_linking->setSortingEnabled(true); }
void ComputerRepository::remove(Computer &comp) { auto query = SQLConnection::getInstance()->getQuery(); query->prepare("DELETE FROM computers WHERE id = ?"); query->addBindValue(comp.getID()); if(!query->exec()) throw std::runtime_error(query->lastError().text().toStdString()); query->clear(); // Also clean all relations to other computers query->prepare("DELETE FROM scientist_computer WHERE computer_id = ?"); query->addBindValue(comp.getID()); if(!query->exec()) throw std::runtime_error(query->lastError().text().toStdString()); }
void ComputerRepository::unlink(Computer &c, Scientist &s) { auto query = SQLConnection::getInstance()->getQuery(); query->prepare("DELETE FROM scientist_computer WHERE scientist_id = ? AND computer_id = ?"); query->addBindValue(s.getID()); query->addBindValue(c.getID()); if(!query->exec()) throw std::runtime_error(query->lastError().text().toStdString()); }
void ComputerRepository::link(Computer &c, Scientist &s) { auto query = SQLConnection::getInstance()->getQuery(); query->prepare("INSERT INTO scientist_computer (scientist_id, computer_id) VALUES (?,?)"); query->addBindValue(s.getID()); query->addBindValue(c.getID()); if(!query->exec()) throw std::runtime_error(query->lastError().text().toStdString()); }
void ComputerRepository::update(Computer &comp, Computer &replace) { auto query = SQLConnection::getInstance()->getQuery(); query->prepare("UPDATE computers SET name = ?, type = ?, build_year = ?, built = ? WHERE id = ?"); query->addBindValue(QString::fromStdString(replace.getName())); query->addBindValue(QString::fromStdString(replace.getType())); query->addBindValue(replace.getBuildYear()); query->addBindValue(replace.getBuilt()); query->addBindValue(comp.getID()); if(!query->exec()) throw std::runtime_error(query->lastError().text().toStdString()); }
void addComToSci::displayComputers() { ui->table_computers->clearContents(); ui->table_computers->setRowCount(computers.size()); for(unsigned int i = 0; i < computers.size(); i++){ Computer current = computers[i]; QString name = QString::fromStdString(current.getName()); QString buildYear = QString::number(current.getBuildYear()); QString type = QString::fromStdString(current.getType()); QString made = QString::fromStdString(current.getMade()); QString Id = QString::number(current.getID()); ui->table_computers->setItem(i, 0, new QTableWidgetItem(name)); ui->table_computers->setItem(i, 1, new QTableWidgetItem(buildYear)); ui->table_computers->setItem(i, 2, new QTableWidgetItem(type)); ui->table_computers->setItem(i, 3, new QTableWidgetItem(made)); ui->table_computers->setItem(i, 4, new QTableWidgetItem(Id)); ui->table_computers->setColumnHidden(4, true); } }