/////////////////////////////////////////////////////////////////////////////
// Name: dbrelation.h
// Purpose: Database Objects
// Author: Daniel Horak
// Modified by:
// RCS-ID: $Id: dbrelation.h,v 1.3 2004/01/01 13:56:19 horakdan Exp $
// Copyright: (c) Daniel Horak
// Licence: GPL
/////////////////////////////////////////////////////////////////////////////
#ifndef __DBRELATION_H
#define __DBRELATION_H
#define DBO_RELATION_TYPE_IDENT 0
#define DBO_RELATION_TYPE_NONIDENT 1
#define DBO_RELATION_TYPE_INFORM 2
#define DBO_RELATION_PARCIALITY_MANDATORY 0
#define DBO_RELATION_PARCIALITY_NONMANDATORY 1
#define DBO_RELATION_REFINTEG_NONE 0
#define DBO_RELATION_REFINTEG_RESTRICT 1
#define DBO_RELATION_REFINTEG_CASCADE 2
#define DBO_RELATION_REFINTEG_SETNULL 3
#define DBO_RELATION_REFINTEG_SETDEFAULT 4
#define DBO_RELATION_REFINTEG_MATCH_FULL 0
#define DBO_RELATION_REFINTEG_MATCH_PARTIAL 1
class DBRelationAttributeContainer;
class DBRelationAttributeListCtrl;
class DBModelRelation;
class DBRelation : public DBObject
{
public:
DBRelation(DataDesignerProject *project, DataDesignerContainer *container);
virtual ~DBRelation();
virtual wxTreeItemId AppendItem();
virtual wxDialog *Editor(bool edit);
virtual void LoadXmlNode(wxXmlNode *node);
virtual wxXmlNode *GetXmlNode();
virtual void CreateShape();
bool ParseParciality(const wxString& parc, int& var);
bool ParseRefIntegParent(const wxString& refinteg, int& var);
bool ParseRefIntegChild(const wxString& refinteg, int& var);
void ParcialityToString(int parc, wxString& str);
void RefIntegToString(int refinteg, wxString& str);
void LinkAttributes();
void AddAttributesToKeys(const wxString& attr_parent, const wxString& attr_child);
void AddModelRelation(DBModelRelation *rel);
void DeleteModelRelation(DBModelRelation *rel);
wxString m_parent;
wxString m_child;
int m_type; // identifying/non-identifying/informational
int m_parciality_parent;
int m_parciality_child;
int m_refinteg_parent_update;
int m_refinteg_parent_delete;
int m_refinteg_child_insert;
int m_refinteg_child_update;
int m_refinteg_match;
DBRelationAttributeContainer *m_keys;
DBObjectList m_modelrelations;
};
class DBRelationEditor : public DBObjectEditor
{
public:
DBRelationEditor(DBObject *object, bool edit);
virtual ~DBRelationEditor();
virtual bool TransferDataFromWindow();
virtual bool TransferDataToWindow();
virtual bool Validate();
void OnApply(wxCommandEvent& event);
protected:
wxPanel *m_page_refinteg;
wxPanel *m_page_keys;
DBRelationAttributeListCtrl *m_list_keys;
private:
wxComboBox *c1; // parent
wxComboBox *c2; // child
wxRadioBox *r3; // type
wxRadioBox *r4; // parent parciality
wxRadioBox *r5; // child parciality
wxComboBox *c6; // ref.integrity parent - update
wxComboBox *c7; // ref.integrity parent - delete
wxComboBox *c8; // ref.integrity child - insert
wxComboBox *c9; // ref.integrity child - update
wxRadioBox *r10; // match full/partial
static wxString m_type_str[];
static wxString m_parciality_str[];
static wxString m_refinteg_parent_str[];
static wxString m_refinteg_child_str[];
static wxString m_refinteg_match_str[];
DECLARE_EVENT_TABLE()
};
class DBRelationContainer : public DataDesignerContainer
{
public:
DBRelationContainer(DataDesignerProject *project, const wxTreeItemId& id);
virtual ~DBRelationContainer() { }
virtual DBObject *CreateObject();
virtual void ShowList();
};
class DBRelationListCtrl : public DBObjectListCtrl
{
public:
DBRelationListCtrl(wxWindow *parent, DataDesignerContainer *container);
virtual ~DBRelationListCtrl();
virtual void SetObject(long item, DBObject *object);
};
class DBRelationShape : public wxLineShape
{
public:
DBRelationShape(DBRelation *relation);
private:
wxShape *m_shape_from;
wxShape *m_shape_to;
};
#endif // __DBRELATION_H
syntax highlighted by Code2HTML, v. 0.9.1