#include <Text.h>
#include <Zeit.h>
#include "Server.h"
#ifdef WIN32
#include "../../Datenbank/Datenbank.h"
#include "ShopSeite/SSEditor.h"
#include "Beschreibung/BeschreibungEditor.h"
#include "Teams/TeamsEditor.h"
#include "Dateien/DateienEditor.h"
#include "EditorV/ESEditorV.h"
#else
#include "Datenbank.h"
#include "SSEditor.h"
#include "BeschreibungEditor.h"
#include "TeamsEditor.h"
#include "DateienEditor.h"
#include "ESEditorV.h"
#define HINSTANCE        void*
#endif

using namespace Framework;
using namespace Network;

class KarteEditor
{
private:
	int id;
	Text *pfad;
	EdSDatenbank *db;
    SSEditor *shop;
    BeschreibungEditor *beschreibung;
    TeamsEditor *teams;
    DateienEditor *dateien;
	Text fehler;
    InitDatei *ini;
    ESEditorV *editor;
    HINSTANCE editorDll;
	int ref;
    // private
    int findeDateien( char *pf, RCArray< Text > *pfad );

public:
	// Konstruktor
	KarteEditor( int id, EdSDatenbank *datenbank, char *pf, InitDatei *zIni );
	// Destruktor
	~KarteEditor();
	// nicht constant
	bool getAbbildListe( RCArray< Text > *name, RCArray< Zeit > *datum );
    int getDateiUpdateListe( char *p, RCArray< Text > *pfad );
    bool abbildErstellen( char *name );
    bool abbildRemove( char *name );
    bool abbildHerstellen( char *name );
    bool startUpdate();
    bool startShopUpdate();
    bool prozessMessage( SKlient *zKlient );
    void removeError();
	// constant
    bool inUpdate() const;
	bool istOk() const;
	char *getLetzterFehler() const;
    char *getPfad() const;
	// Reference Counting
	KarteEditor *getThis();
	KarteEditor *release();
};