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