QStringList OtamaGenerator::generateViews(const QString &dstDir) const
{
    QStringList files;

    if (primaryKeyIndex < 0) {
        qWarning("Primary key not found. [view name: %s]", qPrintable(viewName));
        return files;
    }

    QDir dir(dstDir);
    FileWriter fw;
    QString output;
    QString caption = enumNameToCaption(viewName);
    QString varName = enumNameToVariableName(viewName);
    const QPair<QString, QVariant::Type> &pkFld = fieldList[primaryKeyIndex];

    // Generates index.html
    QString th ,td, indexOtm, showColumn, showOtm, entryColumn, editColumn, entryOtm, editOtm;
    for (int i = 0; i < fieldList.count(); ++i) {
        const QPair<QString, QVariant::Type> &p = fieldList[i];
        QString cap = fieldNameToCaption(p.first);
        QString var = fieldNameToVariableName(p.first);
        QString mrk = p.first.toLower();
        QString readonly;

        if (!excludedColumn.contains(var, Qt::CaseInsensitive)) {
            th += "    <th>";
            th += cap;
            th += "</th>\n";

            td += "    <td data-tf=\"@";
            td += mrk;
            td += "\"></td>\n";

            indexOtm += QString("@%1 ~= i.%2()\n\n").arg(mrk, var);

            if (i != autoValueIndex) {  // case of not auto-value field
                entryColumn += QString("  <p>\n    <label>%1<br /><input data-tf=\"@%2\" /></label>\n  </p>\n").arg(cap, mrk);
                entryOtm += QString("@%1 |== inputTextTag(\"%2[%3]\", %2[\"%3\"].toString())\n\n").arg(mrk, varName, var);
            }

            editColumn += QString("  <p>\n    <label>%1<br /><input data-tf=\"@%2\" /></label>\n  </p>\n").arg(cap, mrk);
            if  (p.first == pkFld.first) {
                readonly = QLatin1String(", a(\"readonly\", \"readonly\")");
            }
            editOtm += QString("@%1 |== inputTextTag(\"%2[%3]\", %2[\"%3\"].toString()%4);\n\n").arg(mrk, varName, var, readonly);
        }
        showColumn += QString("<dt>%1</dt><dd data-tf=\"@%2\">(%3)</dd><br />\n").arg(cap, mrk, var);
        showOtm += QString("@%1 ~= %2.%3()\n\n").arg(mrk, varName, var);
    }

    output = QString(INDEX_HTML_TEMPLATE).arg(caption, th, td);
    fw.setFilePath(dir.filePath("index.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates index.otm
    QString pkVarName = fieldNameToVariableName(pkFld.first);
    output = QString(INDEX_OTM_TEMPLATE).arg(varName.toLower(), viewName, varName, indexOtm, pkVarName);
    fw.setFilePath(dir.filePath("index.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates show.html
    output = QString(SHOW_HTML_TEMPLATE).arg(caption, showColumn);
    fw.setFilePath(dir.filePath("show.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates show.otm
    output = QString(SHOW_OTM_TEMPLATE).arg(varName.toLower(), viewName, varName, showOtm, pkVarName);
    fw.setFilePath(dir.filePath("show.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates entry.html
    output = QString(ENTRY_HTML_TEMPLATE).arg(caption, entryColumn);
    fw.setFilePath(dir.filePath("entry.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates entry.otm
    output = QString(ENTRY_OTM_TEMPLATE).arg(varName.toLower(), varName, entryOtm);
    fw.setFilePath(dir.filePath("entry.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates edit.html
    output = QString(EDIT_HTML_TEMPLATE).arg(caption, editColumn);
    fw.setFilePath(dir.filePath("edit.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates edit.otm
    output = QString(EDIT_OTM_TEMPLATE).arg(varName.toLower(), varName, pkVarName, editOtm);
    fw.setFilePath(dir.filePath("edit.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    return files;
}
Example #2
0
QStringList ViewGenerator::generateViews() const
{
    QStringList files;
    TableSchema ts(tableName);
    if (ts.primaryKeyIndex() < 0) {
        qWarning("Primary key not found. [table name: %s]", qPrintable(ts.tableName()));
        return files;
    }
    
    FileWriter fw;
    QString output;
    QString caption = fieldNameToCaption(tableName);
    QString className = fieldNameToEnumName(tableName);
    QString varName = fieldNameToVariableName(tableName);
    QPair<QString, QString> pkFld = ts.getPrimaryKeyField();

    // Generates index.html
    QString th ,td, indexOtm, showColumn, showOtm, entryColumn, editColumn, editOtm;
    QList<QPair<QString, QString> > fields = ts.getFieldList();
    for (QListIterator<QPair<QString, QString> > i(fields); i.hasNext(); ) {
        const QPair<QString, QString> &p = i.next();
        QString cap = fieldNameToCaption(p.first);
        QString var = fieldNameToVariableName(p.first);
        QString readonly;

        if (!excludedColumn()->contains(p.first)) {
            th += "    <th>";
            th += cap;
            th += "</th>\n";
            td += "    <td data-tf=\"#";
            td += var;
            td += "\"></td>\n";
            indexOtm += QString("#%1 ~= i.%1()\n\n").arg(var);
            entryColumn += QString("  <p>\n    <label for=\"%1_%2\">%3</label><br />\n    <input id=\"%1_%2\" name=\"%1[%2]\" />\n  </p>\n").arg(varName, var, cap);
            if  (p.first == pkFld.first) {
                readonly = QLatin1String("readonly ");
            }
            editColumn += QString("  <p>\n    <label for=\"%1_%2\">%3</label><br />\n    <input id=\"%1_%2\" %4data-tf=\"#%2\" />\n  </p>\n").arg(varName, var, cap, readonly);
            editOtm += QString("#%1 |== inputTextTag(\"%2[%1]\", %2.%1());\n\n").arg(var, varName);
        }
        showColumn += QString("<p>\n  <b>%1:</b>\n  <span data-tf=\"#%2\">(%2)</span>\n</p>\n").arg(cap, var);
        showOtm += QString("#%1 := %2.%1()\n\n").arg(var, varName);
    }
    
    output = QString(INDEX_HTML_TEMPLATE).arg(caption, th, td);
    fw.setFileName(dstDir.filePath("index.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates index.otm
    QString pkVarName = fieldNameToVariableName(pkFld.first);
    output = QString(INDEX_OTM_TEMPLATE).arg(varName.toLower(), className, varName, indexOtm, pkVarName);
    fw.setFileName(dstDir.filePath("index.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates show.html
    output = QString(SHOW_HTML_TEMPLATE).arg(showColumn);
    fw.setFileName(dstDir.filePath("show.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates show.otm
    output = QString(SHOW_OTM_TEMPLATE).arg(varName.toLower(), className, varName, showOtm, pkVarName);
    fw.setFileName(dstDir.filePath("show.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates entry.html
    output = QString(ENTRY_HTML_TEMPLATE).arg(caption, entryColumn);
    fw.setFileName(dstDir.filePath("entry.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates entry.otm
    output = QString(ENTRY_OTM_TEMPLATE).arg(varName.toLower());
    fw.setFileName(dstDir.filePath("entry.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates edit.html
    output = QString(EDIT_HTML_TEMPLATE).arg(caption, editColumn);
    fw.setFileName(dstDir.filePath("edit.html"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    // Generates edit.otm
    output = QString(EDIT_OTM_TEMPLATE).arg(varName.toLower(), className, varName, pkVarName, editOtm);
    fw.setFileName(dstDir.filePath("edit.otm"));
    if (fw.write(output, false)) {
        files << fw.fileName();
    }

    return files;
}