예제 #1
0
 /*private*/ void EngineModels::loadDefaults() {
     QStringList models = MODELS.split(","); // NOI18N
     QStringList hps = HORSEPOWER.split(","); // NOI18N
     QStringList lengths = ENGINELENGTHS.split(","); // NOI18N
     QStringList types = ENGINETYPES.split(","); // NOI18N
     QStringList weights = ENGINEWEIGHTS.split(","); // NOI18N
     if (models.length() != hps.length() || models.length() != lengths.length() || models.length() != types.length()
         || models.length() != weights.length()) {
      log->error(tr("Defaults do not have the right number of items, ") + "models=" + QString::number(models.length()) + " hps="
                    + QString::number(hps.length()) + " lengths=" + QString::number(lengths.length()) // NOI18N
                    + " types=" + QString::number(types.length())); // NOI18N
         return;
     }

     for (int i = 0; i < models.length(); i++) {
         setModelHorsepower(models[i], hps[i]);
         setModelLength(models[i], lengths[i]);
         setModelType(models[i], types[i]);
         setModelWeight(models[i], weights[i]);
         setModelBunit(models[i], false); // there are no B units in the default files
     }
 }
db::UpdateQueryPtr AuthorQueryFactory::updateValue(Value value) const
{
    if (!isDataValid())
        return nullptr;

    QString strSql;
    db::sql::AuthorSqlFactory sqlFactory;

    switch (value) {
    case Value::NAME:
        strSql = sqlFactory.updateNameStmt();
        break;
    case Value::EMAIL:
        strSql = sqlFactory.updateEmailStmt();
        break;
    case Value::WEBSITE:
        strSql = sqlFactory.updateWebsiteStmt();
        break;
    default:
        return nullptr;
    }

    assert(!strSql.isEmpty());

    db::ContentValues bindValues;
    const AuthorCVFactory cvFactory{m_pAuthor};

    switch (value) {
    case Value::NAME:
        bindValues.put(cvFactory.fieldName());
        break;
    case Value::EMAIL:
        bindValues.put(cvFactory.fieldEmail());
        break;
    case Value::WEBSITE:
        bindValues.put(cvFactory.fieldWebsite());
        break;
    default:
        return nullptr;
    }

    assert(!bindValues.empty());
    bindValues.put(cvFactory.fieldID());

    auto ptrUpdateWork = std14_stl::make_unique<db::UpdateQuery>();

    switch (value) {
    case Value::NAME:
        ptrUpdateWork->setKey(toInt(db::update::authors::NAME));
        break;
    case Value::EMAIL:
        ptrUpdateWork->setKey(toInt(db::update::authors::EMAIL));
        break;
    case Value::WEBSITE:
        ptrUpdateWork->setKey(toInt(db::update::authors::WEBSITE));
        break;
    default:
        return nullptr;
    }

    assert(ptrUpdateWork->key() >= 0);

    auto varExtraKey = QVariant{m_pAuthor->id()};

    ptrUpdateWork->setSql(std::move(strSql));
    ptrUpdateWork->setModelType(db::SQLModelType::AUTHOR);
    ptrUpdateWork->setExtraKey(std::move(varExtraKey));
    ptrUpdateWork->setBindValues(std::move(bindValues));

    return ptrUpdateWork;
}
db::UpdateQueryPtr SnippetQueryFactory::updateValue(Value value) const
{
    if (!isDataValid())
        return nullptr;

    QString strSql;
    db::sql::SnippetSqlFactory sqlFactory;

    switch (value) {
        case Value::NAME:
            strSql = sqlFactory.updateNameStmt();
            break;
        case Value::CONTENT:
            strSql = sqlFactory.updateContentStmt();
            break;
        case Value::VERSION:
            strSql = sqlFactory.updateVersionStmt();
            break;
        case Value::DESCRIPTION:
            strSql = sqlFactory.updateDescriptionStmt();
            break;
        case Value::LANGUAGE_ID:
            strSql = sqlFactory.updateLanguageIDStmt();
            break;
        case Value::CREATED:
            strSql = sqlFactory.updateDTCreatedStmt();
            break;
        case Value::MODIFIED:
            strSql = sqlFactory.updateDTModifiedStmt();
            break;
        default:
            return nullptr;
    }

    assert(!strSql.isEmpty());

    db::ContentValues bindValues;
    const SnippetCVFactory cvFactory{m_pSnippet};

    switch (value) {
        case Value::NAME:
            bindValues.put(cvFactory.fieldName());
            break;
        case Value::CONTENT:
            bindValues.put(cvFactory.fieldContent());
            break;
        case Value::VERSION:
            bindValues.put(cvFactory.fieldVersion());
            break;
        case Value::DESCRIPTION:
            bindValues.put(cvFactory.fieldDescription());
            break;
        case Value::LANGUAGE_ID:
            bindValues.put(cvFactory.fieldLanguageID());
            break;
        case Value::CREATED:
            bindValues.put(cvFactory.fieldDTCreated());
            break;
        case Value::MODIFIED:
            bindValues.put(cvFactory.fieldDTModified());
            break;
        default:
            return nullptr;
    }

    assert(!bindValues.empty());
    bindValues.put(cvFactory.fieldID());

    auto ptrUpdateWork = std14_stl::make_unique<db::UpdateQuery>();

    switch (value) {
        case Value::NAME:
            ptrUpdateWork->setKey(toInt(update::snippets::NAME));
            break;
        case Value::CONTENT:
            ptrUpdateWork->setKey(toInt(update::snippets::CONTENT));
            break;
        case Value::VERSION:
            ptrUpdateWork->setKey(toInt(update::snippets::VERSION));
            break;
        case Value::DESCRIPTION:
            ptrUpdateWork->setKey(toInt(update::snippets::DESCRIPTION));
            break;
        case Value::LANGUAGE_ID:
            ptrUpdateWork->setKey(toInt(update::snippets::LANGUAGE_ID));
            break;
        case Value::CREATED:
            ptrUpdateWork->setKey(toInt(update::snippets::CREATED));
            break;
        case Value::MODIFIED:
            ptrUpdateWork->setKey(toInt(update::snippets::MODIFIED));
            break;
        default:
            return nullptr;
    }

    assert(ptrUpdateWork->key() >= 0);

    auto varExtraKey = QVariant{m_pSnippet->id()};

    ptrUpdateWork->setSql(std::move(strSql));
    ptrUpdateWork->setModelType(db::SQLModelType::SNIPPET);
    ptrUpdateWork->setExtraKey(std::move(varExtraKey));
    ptrUpdateWork->setBindValues(std::move(bindValues));

    return ptrUpdateWork;
}