Seafood/Fishes.cpp
changeset 3 e6d1a78b6db9
child 7 7ee47a65f1ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Seafood/Fishes.cpp	Wed Mar 24 14:05:38 2010 -0700
@@ -0,0 +1,106 @@
+
+#include <QDesktopServices>
+#include <QMessageBox>
+#include <QtGlobal>
+#include <QtSql>
+#include "Fishes.h"
+
+Fishes::Fishes(QObject *parent) : QObject(parent)
+{
+    QSqlDatabase db;
+
+    // Find QSLite driver
+    db = QSqlDatabase::addDatabase("QSQLITE");
+
+    QString dbFile = QDesktopServices::storageLocation(QDesktopServices::DataLocation)
+                     + '/'  // Qt Universal file separator
+                     + "seafood.db";
+    QFile f(dbFile);
+    std::string errString(dbFile.toStdString());
+    if (!f.exists()) {
+        qWarning("db not found ");
+    } else {
+        qWarning("found db ");
+        qWarning(dbFile.toStdString().c_str());
+    }
+    db.setDatabaseName(dbFile);
+
+    // Open databasee
+    if(!db.open())
+    {
+        std::string errCode =  db.lastError().databaseText().toStdString();
+
+        qWarning("DB: failed to open.");
+
+        this->bestFish << "Abalone (farmed)" << "Anchovy, European" << "Barramundi U.S."
+            << "Capelin, smelt roe (Iceland)" << "Catfish (U.S.)" << "Clam, softshell"
+            << "Clams (farmed)" << "Cod, AK (longline)" << "Crab, Dungeness"
+            << "Crab, stone" << "Mussels" << "Oysters (farmed)"
+            << "Sablefish/ Black Cod (Alaska, Canada)" << "Salmon, wild (Alaska)"
+            << "Sardines, Pacific (U.S.)" << "Shrimp, pink (Oregon)"
+            << "Trout, rainbow (farmed)" << "Tuna, albacore (U.S., Canada)";
+        this->okFish << "Clams (wild)" << "Cod, Pacific (trawl)" << "Crab, Snow"
+            << "Flounder/sole (Pacific)" << "Lobster, American/Maine" << "Scallops, sea (U.S., Canada)"
+            << "Shrimp (U.S. wild)" << "Squid" << "Tilapia (Latin America)"
+            << "Tuna, canned light";
+        this->worstFish << "Chilean sea bass" << "Grouper" << "Orange roughy"
+            << "Rockfish (trawl)" << "Salmon, farmed or Atlantic" << "Shark"
+            << "Swordfish (imported)" << "Tilefish (Gulf of Mexico/South Atlantic)"
+            << "Tuna, bigeye/yellowfin" << "Tuna, bluefin";
+    } else {
+        this->populate(EPresentBest);
+        this->populate(EPresentOK);
+        this->populate(EPresentWorst);
+    }
+}
+
+void Fishes::populate(TCATEGORIES cat)
+{
+    QSqlQuery query;
+
+    query.prepare("SELECT name FROM fish where category = :category ");
+    query.bindValue(":category",cat);
+
+    if (!query.exec())
+    {
+        QString errCode =  "failed to populate " + query.lastError().text();
+        qWarning(errCode.toStdString().c_str());
+        //qFatal("Failed to add fish.");
+    }
+
+    while (query.next()){
+        switch (cat)
+        {
+        case  EPresentBest:
+            this->bestFish << query.value(0).toString();
+            break;
+        case EPresentWorst:
+            this->worstFish << query.value(0).toString();
+            break;
+        case EPresentOK:
+            this->okFish << query.value(0).toString();
+            break;
+        default:
+            qWarning("this can't happen.");
+            break;
+        }
+    }
+
+}
+
+
+const QStringList Fishes::GetBest()
+{
+
+    return bestFish;
+}
+
+const QStringList Fishes::GetOK()
+{
+    return okFish;
+}
+
+const QStringList Fishes::GetWorst()
+{
+    return worstFish;
+}