#pragma once

#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <vector>
using namespace sql;
using namespace std;

class MySQLConnector
{
public:
    Connection *con;
    Connection* datacon( void);
    MySQLConnector(); //string uri, string user, string passwort,string database,CDC* pDC
    ~MySQLConnector( void);
    void holePixel( CDC* pDC, int filterIndex, int bundesland);
    void holeErgebnisLayer(
            CDC* pDC,
            int filterIndex,
            int konfigurationsString);
    void holeGewinnLayer(
            CDC* pDC,
            int filterIndex,
            CString konfigurationsString,
            int massnahmenID);
    void holeGewinnLayer(
            CDC* pDC,
            int filterIndex,
            CString konfigurationsString);
    void holeArtenLayer(
            CDC* pDC,
            int filterIndex,
            int konfigurationsString,
            int konfIndex,
            int artenIndex);
    void holeArtenGruenlandLayer(
            CDC* pDC,
            int filterIndex,
            CString konfigurationsString,
            int massnahmenID);
    void holeArtenQualitaetLayer(
            CDC* pDC,
            int filterIndex,
            CString konfigurationsString,
            int massnahmenID);
    void holeArtenQualitaetLayer(
            CDC* pDC,
            int filterIndex,
            CString konfigurationsString);
    void holeArten( CDC* pDC, int filterIndex);
    void holeArtenZwi( CDC* pDC);
    void holeBlandZwi( int& bland);
    vector< CString> holeMassnahmen( int konfigurationsString);
    void holeMassnahmenzw( vector< CString>& mstring, int massID, bool einzeln);
    CString holeMassnahme( int massnahmenID);
    void holeMassnahmenZwi();
    void holeUmriss( CDC* pDC, int bundesland);
    void plotKoordinaten( CDC* pDC);
    void holeKonfigurationen();
    void closeConnection();

    int HOCHLAND_FILTER;
    int WALD_FILTER;
    //int ENTWAESSERT_FILTER;
    int SIELDUNG_FILTER;
    int GRUENLANDZAHL_FILTER;
    int KOSTEN_FILTER;
    int QUALITAET_FILTER;
    int ART_FILTER;
    int GEWINN_FILTER;
    int BEARBEITUNG_FILTER;
    int GRUENLAND_FILTER;
    COLORREF ArtenFarben[ 1000];
    CString ArtenNamen[ 1000][ 1000];
    CString artennamen[ 100];
    int XLegende, XLegende2;
    int YLegende, YLegende2;

    int artenAnzahl[ 1000];
    int artenanzahl;
    int arten[ 1000][ 1000];
    int artID[ 1000];
    struct konfig
    {
        int ID;
        CString name;
        int bundeslandID;
    };
    vector< konfig> konfigurationen;
    int massnahmenfilter[ 100];
    int massnahmenanzahl;
    int konfigurationenAnzahl;
private:
    //allgemeine Filter
    COLORREF filterHochland( int hoehenlage);
    COLORREF filterGruenland( int gruenlandzahl);
    COLORREF filterTrocken( double trocken);
    COLORREF filterFeucht( double feucht);
    COLORREF filterMittel( int mittel);
    //COLORREF filterEntwaessert(int entwaessert);
    COLORREF filterPraedatorendruck( int praedatorendruck);
    COLORREF filterWald( int wald);
    COLORREF filterSiedlung( int sieldung);
    COLORREF filterWassermarin( int wassermarin);
    COLORREF filterWasserbinnen( int wassernbinnen);
    //Ergebnis-Filter
    COLORREF filterKosten( int kosten);
    COLORREF filterQualitaet( double qualitaet);
    COLORREF filterArten( int art);
    COLORREF filterGewinn( int gewinn);
    COLORREF filterBearbeitung( int bearbeitung);
    COLORREF filterGruenlandID( int gruenlandID);
private:
    string DBHOST, USER, PASSWORD, DATABASE;
};

