From 6663c6c183975ca82b83ca4356694dc29a10e212 Mon Sep 17 00:00:00 2001 From: nmset Date: Wed, 25 Apr 2018 20:44:46 +0200 Subject: [PATCH] Add files via upload --- L7Test/L7Test.cpp | 489 ++++++++++++++++++ L7Test/L7Test.h | 142 +++++ L7Test/Makefile | 128 +++++ L7Test/nbproject/Makefile-Debug.mk | 89 ++++ L7Test/nbproject/Makefile-Release.mk | 89 ++++ L7Test/nbproject/Makefile-impl.mk | 133 +++++ L7Test/nbproject/Makefile-variables.mk | 35 ++ L7Test/nbproject/Package-Debug.bash | 76 +++ L7Test/nbproject/Package-Release.bash | 76 +++ L7Test/nbproject/configurations.xml | 149 ++++++ .../nbproject/private/Makefile-variables.mk | 7 + .../private/c_standard_headers_indexer.c | 75 +++ L7Test/nbproject/private/configurations.xml | 74 +++ .../private/cpp_standard_headers_indexer.cpp | 135 +++++ L7Test/nbproject/private/launcher.properties | 40 ++ L7Test/nbproject/private/private.xml | 14 + L7Test/nbproject/project.xml | 33 ++ L7Test/sql/postgresql.sql | 338 ++++++++++++ L7Test/sql/sqlite.sql | 35 ++ 19 files changed, 2157 insertions(+) create mode 100644 L7Test/L7Test.cpp create mode 100644 L7Test/L7Test.h create mode 100644 L7Test/Makefile create mode 100644 L7Test/nbproject/Makefile-Debug.mk create mode 100644 L7Test/nbproject/Makefile-Release.mk create mode 100644 L7Test/nbproject/Makefile-impl.mk create mode 100644 L7Test/nbproject/Makefile-variables.mk create mode 100644 L7Test/nbproject/Package-Debug.bash create mode 100644 L7Test/nbproject/Package-Release.bash create mode 100644 L7Test/nbproject/configurations.xml create mode 100644 L7Test/nbproject/private/Makefile-variables.mk create mode 100644 L7Test/nbproject/private/c_standard_headers_indexer.c create mode 100644 L7Test/nbproject/private/configurations.xml create mode 100644 L7Test/nbproject/private/cpp_standard_headers_indexer.cpp create mode 100644 L7Test/nbproject/private/launcher.properties create mode 100644 L7Test/nbproject/private/private.xml create mode 100644 L7Test/nbproject/project.xml create mode 100644 L7Test/sql/postgresql.sql create mode 100644 L7Test/sql/sqlite.sql diff --git a/L7Test/L7Test.cpp b/L7Test/L7Test.cpp new file mode 100644 index 0000000..11a9ba2 --- /dev/null +++ b/L7Test/L7Test.cpp @@ -0,0 +1,489 @@ +/* + * File: L7Test.cpp + * Author: Saleem EDAH-TALLY - nmset@netcourrier.com + * Copyright Saleem EDAH-TALLY - © 2014 + * + * Created on 4 juin 2014, 20:42 + */ + +#include "L7Test.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +IMPLEMENT_APP( L7Test ) + +L7Test::L7Test() +{ +} + +L7Test::~L7Test() +{ +} + +bool L7Test::OnInit() { + L7Frame * main = new L7Frame(NULL, wxID_ANY, _T("L7 Test")); + SetAppName(_T("L7Test")); + SetTopWindow(main); + main->Show(); + return true; +} +int L7Test::OnExit() { + return wxApp::OnExit(); +} + +/////////////////////////////////////////////////////////////////////////////// + +L7Frame::L7Frame(wxWindow* parent, wxWindowID id, const wxString& title) + : wxFrame(parent, id, title) +{ + m_conn = NULL; + m_rsTbl1 = NULL; + rsTbl2 = NULL; + colsCreated = false; + wxBoxSizer* szMain = new wxBoxSizer(wxVERTICAL); + SetSizer(szMain); + + wxPanel * panConn = new wxPanel(this, wxID_ANY); + szMain->Add(panConn, 0 , wxEXPAND, 0); + wxBoxSizer * szConn = new wxBoxSizer(wxVERTICAL); + panConn->SetSizer(szConn); + const wxString b[3]{_T("Choose"), _T("PostgreSQL"), _T("SQLite")}; + rdBE = new wxRadioBox(panConn, wxID_ANY, _T("Backend"), wxDefaultPosition, wxDefaultSize, 3, b); + szConn->Add(rdBE, 0, wxALIGN_CENTER_HORIZONTAL, 0); + wxBoxSizer * szDoConn = new wxBoxSizer(wxHORIZONTAL); + szConn->Add(szDoConn, 0 , wxEXPAND); + m_txtConnInfo = new wxTextCtrl(panConn, wxID_ANY); + szDoConn->Add(m_txtConnInfo, 1, wxALIGN_CENTRE_VERTICAL); + wxButton * btnConn = new wxButton(panConn, wxID_ANY, _("Connect")); + szDoConn->Add(btnConn, 0, wxALIGN_CENTRE_VERTICAL); + wxButton * btnNewFrame = new wxButton(panConn, wxID_ANY, _T("+"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT); + btnNewFrame->SetToolTip(_("New window")); + szDoConn->Add(btnNewFrame, 0, wxALIGN_CENTER_VERTICAL); + rdBE->Bind(wxEVT_RADIOBOX, &L7Frame::OnRadioConnClick, this); + btnConn->Bind(wxEVT_BUTTON, &L7Frame::OnButtonConnectClick, this); + btnNewFrame->Bind(wxEVT_BUTTON, &L7Frame::OnButtonNewFrameClick, this); + + wxPanel * panTbl1 = new wxPanel(this, wxID_ANY); + szMain->Add(panTbl1, 0, wxEXPAND, 0); + wxBoxSizer * szTbl1 = new wxBoxSizer(wxVERTICAL); + panTbl1->SetSizer(szTbl1); + wxFlexGridSizer * flxszTbl1 = new wxFlexGridSizer(0, 2, 0, 0); + flxszTbl1->AddGrowableCol(0, 1); + flxszTbl1->AddGrowableCol(1, 3); + szTbl1->Add(flxszTbl1, 0, wxEXPAND, 0); + wxStaticText * lbl = new wxStaticText(panTbl1, wxID_ANY, _T("pk1")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Pk1 = new LBoundTextCtrl(panTbl1, wxID_ANY); + Pk1->SetSQLQuote(wxEmptyString); + flxszTbl1->Add(Pk1, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 0); + Pk1->SetEditable(false); + lbl = new wxStaticText(panTbl1, wxID_ANY, _T("text1")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Text1 = new LBoundTextCtrl(panTbl1, wxID_ANY); + flxszTbl1->Add(Text1, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 0); + lbl = new wxStaticText(panTbl1, wxID_ANY, _T("check1d")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Check1d = new LBoundCheckBox(panTbl1, wxID_ANY, wxCHK_2STATE); + Check1d->SetLabel(wxEmptyString); + flxszTbl1->Add(Check1d, 0, wxALIGN_CENTER_VERTICAL, 0); + lbl = new wxStaticText(panTbl1, wxID_ANY, _T("check1t")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Check1t = new LBoundCheckBox(panTbl1, wxID_ANY, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER); + Check1t->SetLabel(wxEmptyString); + flxszTbl1->Add(Check1t, 0, wxALIGN_CENTER_VERTICAL, 0); + lbl = new wxStaticText(panTbl1, wxID_ANY, _T("combo1t")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Combo1t = new LBoundComboBox(panTbl1, wxID_ANY); + flxszTbl1->Add(Combo1t, 0, wxALIGN_CENTER_VERTICAL, 0); + lbl = new wxStaticText(panTbl1, wxID_ANY, _T("combo1x")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Combo1x = new LBoundComboBox(panTbl1, wxID_ANY); + Combo1x->SetSQLQuote(_T("'")); + flxszTbl1->Add(Combo1x, 0, wxALIGN_CENTER_VERTICAL, 0); + lbl = new wxStaticText(panTbl1, wxID_ANY, _T("date1")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Date1 = new LBoundDatePickerCtrl(panTbl1, wxID_ANY); + flxszTbl1->Add(Date1, 0, wxALIGN_CENTER_VERTICAL, 0); + lbl = new wxStaticText(panTbl1, wxID_ANY, _T("spin1")); + flxszTbl1->Add(lbl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); + Spin1 = new LBoundSpinCtrl(panTbl1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS | wxALIGN_RIGHT, -10, 25, 3); + flxszTbl1->Add(Spin1, 0, wxALIGN_CENTER_VERTICAL, 0); + navTbl1 = new LNavigator(panTbl1, wxID_ANY); + szTbl1->Add(navTbl1, 0, wxEXPAND, 0); + + grid = new LBoundGrid(this, wxID_ANY); + szMain->Add(grid, 1, wxEXPAND, 0); + grid->SetGridFormEventHandler(new GridEVH(this)); + + txtMessages = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); + //szMain->Add(txtMessages, 1, wxEXPAND|wxALIGN_BOTTOM, 0); + szMain->Add(txtMessages, 1, wxEXPAND, 0); + SetSize(800, 600); +} +L7Frame::~L7Frame() { + delete m_txtConnInfo; + delete txtMessages; + delete rdBE; + delete Pk1; + delete Text1; + delete Check1d; + delete Check1t; + delete Combo1t; + delete Combo1x; + delete Date1; + delete Spin1; + delete navTbl1; // Has deleted and unregistered it's own event handler. + if (m_rsTbl1) { + for (unsigned int i = 0; i < m_rsTbl1->GetEventHandlers().Count(); i++) { + delete static_cast (m_rsTbl1->GetEventHandlers().Item(i)); + } + delete m_rsTbl1; + } + if (rsTbl2) { + for (unsigned int i = 0; i < rsTbl2->GetEventHandlers().Count(); i++) { + delete static_cast (rsTbl2->GetEventHandlers().Item(i)); + } + delete rsTbl2; + } + if (m_conn) { + m_conn->Close(); + for (unsigned int i = 0; i < m_conn->GetEventHandlers().Count(); i++) { + delete static_cast (m_conn->GetEventHandlers().Item(i)); + } + delete m_conn; + } + delete grid->GetGridFormEventHandler(); +} + +void L7Frame::AppendMsg(const wxString& msg) { + static int n =0; + txtMessages->AppendText(wxAny(n).As() + _T(". ") + msg + _T("\n")); + n++; +} +void L7Frame::MsgBox(const wxString& msg) { + wxMessageBox(msg, wxApp::GetInstance()->GetAppName(), wxOK|wxCENTRE, this); +} +void L7Frame::OnRadioConnClick(wxCommandEvent& evt) { + wxString connInfo; + if (evt.GetInt() == 1) { + connInfo = _T("host=localhost port=5424 dbname=l7 user=l7 password=L7"); + } else if (evt.GetInt() == 2) { + connInfo = wxStandardPaths::Get().GetUserDataDir() + + wxFileName::GetPathSeparator() + + _T("L7.db"); + } + m_txtConnInfo->SetValue(connInfo); + rdBE->Enable(false); +} +void L7Frame::OnButtonConnectClick(wxCommandEvent& evt) { + if (rdBE->GetSelection() == 0) return; + if (!m_conn) { + if (rdBE->GetSelection() == 1) { + m_conn = new PQ::LPQConnection(m_txtConnInfo->GetValue()); + ConnectionEVH * connEVH = new ConnectionEVH(this); + m_conn->RegisterEventHandler(connEVH); + if (m_conn->Connect()) { + m_rsTbl1 = new PQ::LPQResultSet(m_conn); + rsTbl2 = new PQ::LPQResultSet(m_conn); + } + } else if (rdBE->GetSelection() == 2) { + m_conn = new SQ::LSQConnection(m_txtConnInfo->GetValue()); + ConnectionEVH * connEVH = new ConnectionEVH(this); + m_conn->RegisterEventHandler(connEVH); + if (wxFileName::Exists(m_conn->GetInfo())) { + if (m_conn->Connect()) { + m_rsTbl1 = new SQ::LSQResultSet(m_conn); + rsTbl2 = new SQ::LSQResultSet(m_conn); + } + } + } + if (m_conn->IsValid()) { + Pk1->SetColumnName(_T("pk1")); Pk1->SetResultSet(m_rsTbl1); + Text1->SetColumnName(_T("text1")); Text1->SetResultSet(m_rsTbl1); + Check1d->SetColumnName(_T("check1d")); Check1d->SetResultSet(m_rsTbl1); + Check1t->SetColumnName(_T("check1t")); Check1t->SetResultSet(m_rsTbl1); + Combo1t->SetColumnName(_T("combo1t")); Combo1t->SetResultSet(m_rsTbl1); + Combo1x->SetColumnName(_T("combo1x")); Combo1x->SetResultSet(m_rsTbl1); + Date1->SetColumnName(_T("date1")); Date1->SetResultSet(m_rsTbl1); + Spin1->SetColumnName(_T("spin1")); Spin1->SetResultSet(m_rsTbl1); + Pk1->SetSQLQuote(wxEmptyString); + FillComboBox(Combo1t, _T("SELECT id_list1, item FROM list1 ORDER BY id_list1")); + FillComboBox(Combo1x, _T("SELECT item FROM list1 ORDER BY id_list1")); + navTbl1->SetResultSet(m_rsTbl1); + m_rsTbl1->SetTableName(_T("tbl1")); + m_rsTbl1->SetPKColumnName(_T("pk1")); + m_rsTbl1->RegisterEventHandler(new ResultSetTbl1EVH(this)); + const wxString sql = _T("SELECT * FROM tbl1 ORDER BY text1"); + m_rsTbl1->SetSQL(sql); // Must be last, calls LResultSet::Display() + rsTbl2->SetTableName(_T("tbl2")); + rsTbl2->SetPKColumnName(_T("PK2")); + rsTbl2->SetMasterColumnNames(_T("pk1;rand1")); + rsTbl2->SetChildColumnNames(_T("pk1;rand1")); + rsTbl2->SetMasterResultSet(m_rsTbl1); + grid->SetResultSet(rsTbl2); + rsTbl2->RegisterEventHandler(new ResultSetTbl2EVH(this)); + FilterGrid(); + } + } + const wxAny status = m_conn->IsValid(); + AppendMsg(_("Connection status : ") + status.As()); + if (!m_conn->IsValid()) { + wxDELETE(m_rsTbl1); + wxDELETE(m_conn); + } +} +void L7Frame::OnButtonNewFrameClick(wxCommandEvent& evt) { + L7Frame * newFrame = new L7Frame(NULL, wxID_ANY, GetTitle()); + newFrame->Show(); +} + +void L7Frame::FillComboBox(LBoundComboBox* cmb, const wxString& sql) { + if (!m_conn || !cmb) return; + LLightResultSet * rs; + if (rdBE->GetSelection() == 1) { + rs = new PQ::LLightPQResultSet(m_conn); + } else if (rdBE->GetSelection() == 2) { + rs = new SQ::LLightSQResultSet(m_conn); + } else { + return; + } + rs->SetSQL(sql); + if (rs->HasData()) { + cmb->Clear(); + if (rs->GetColumnCount() > 1) { + cmb->Append(_("NULL item"), (LItemData*) NULL); + const wxString dispCol = rs->GetColumnName(1); + const wxString idCol = rs->GetColumnName(0); + do { + cmb->Append(rs->GetData(dispCol).As(), new LItemData(rs->GetData(idCol))); + } while (rs->Next()); + } else { + cmb->Append(wxEmptyString); + const wxString dispCol = rs->GetColumnName(0); + do { + cmb->Append(rs->GetData(dispCol).As()); + } while (rs->Next()); + } + delete rs; + } +} + +void L7Frame::FilterGrid() +{ + wxString sql = _T("SELECT rand1, PK2, PK1, text2, check2d, check2t, list1.item AS combo2t," + " combo2x, date2, spin2 FROM tbl2" + " LEFT JOIN list1 ON tbl2.combo2t = list1.id_list1" + " WHERE tbl2.pk1"); + sql += Pk1->GetValue().IsEmpty() ? _T(" IS NULL ") : _T(" = ") + Pk1->GetValue(); + sql += " ORDER BY tbl2.text2"; + rsTbl2->SetSQL(sql); + grid->FillGrid(); + + if (!colsCreated) { + grid->SetDefaultRowSize(40, true); + grid->CreateTextColumn(_T("Pk2"), _T("PK2"), 40, false, true); + grid->CreateTextColumn(_T("pK1"), _T("PK1"), 40, false, true); + grid->CreateTextColumn(_T("text2"), _T("Text 2"), 100, true); + grid->CreateCheckBoxColumn(_T("check2d"), _T("Case 2"), 50, false, true); + grid->CreateCheckBoxColumn(_T("check2t"), _T("Case 3"), 50, false, false); + grid->CreateComboBoxColumn(_T("combo2t"), _T("Combo num"), 80); + grid->CreateComboBoxColumn(_T("combo2x"), _T("Combo txt"), 80); + grid->CreateDateColumn(_T("date2"), _T("Date"), 80); + grid->CreateSpinColumn(_T("spin2"), _T("Spin"), 60, -20, 20, 5); + grid->CreateTextColumn(_T("rand1"), _T("Random"), 80, false, true); + + LBoundComboBox * Combo2t = static_cast (grid->GetBoundControl(grid->GetGridCursorRow(), _T("combo2t"), false)); + FillComboBox(Combo2t, _T("SELECT id_list1, item FROM list1 ORDER BY id_list1")); + LBoundComboBox * Combo2x = static_cast (grid->GetBoundControl(grid->GetGridCursorRow(), _T("combo2x"), false)); + Combo2x->SetSQLQuote(_T("'")); + FillComboBox(Combo2x, _T("SELECT item FROM list1 ORDER BY id_list1")); + LBoundControl * Pk2 = grid->GetBoundControl(grid->GetGridCursorRow(), _T("pk2"), false); + Pk2->SetSQLQuote(wxEmptyString); + LBoundControl * Pk1 = grid->GetBoundControl(grid->GetGridCursorRow(), _T("pk1"), false); + Pk1->SetSQLQuote(wxEmptyString); + colsCreated = true; + } +} + +/////////////////////////////////////////////////////////////////////////////// + +ConnectionEVH::ConnectionEVH(L7Frame* newOwner) { + owner = newOwner; +} +ConnectionEVH::~ConnectionEVH() { + +} +void ConnectionEVH::Inform(const LConnection* caller, const LInformation& msg) const { + owner->MsgBox(msg.GetFullInformation()); +} +void ConnectionEVH::BeforeExecute(const LConnection* caller) { + owner->AppendMsg(_T("LConnection::BeforeExecute")); +} +void ConnectionEVH::AfterExecute(const LConnection* caller) { + owner->AppendMsg(_T("LConnection::AfterExecute")); +} + +/////////////////////////////////////////////////////////////////////////////// + +ResultSetTbl1EVH::ResultSetTbl1EVH(L7Frame* newOwner) { + owner = newOwner; +} +ResultSetTbl1EVH::~ResultSetTbl1EVH() { + +} +void ResultSetTbl1EVH::Inform(const LResultSet* caller, const LInformation& msg) const { + owner->MsgBox(msg.GetFullInformation()); +} +void ResultSetTbl1EVH::AfterAction(LResultSet* caller, ACTIONS action) { + owner->AppendMsg(_T("LResultSet::AfterAction - ") + caller->GetTableName() + _T(" - ") + wxAny((int) action).As()); +} +void ResultSetTbl1EVH::AfterChangeRow(LResultSet* caller) { + owner->AppendMsg(_T("LResultSet::AfterChangeRow - ") + caller->GetTableName()); + owner->FilterGrid(); +} +void ResultSetTbl1EVH::AfterDelete(LResultSet* caller, const wxAny& oldPK, const wxString& sql) { + owner->AppendMsg(_T("LResultSet::AfterDelete - ") + caller->GetTableName() + _T(" - ") + sql); +} +void ResultSetTbl1EVH::AfterInsert(LResultSet* caller, const wxAny& newPK, const wxString& sql) +{ + owner->AppendMsg(_T("LResultSet::AfterInsert - ") + caller->GetTableName() + _T(" - ") + sql); +} + +void ResultSetTbl1EVH::AfterSave(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::AfterSave - ") + caller->GetTableName()); +} + +void ResultSetTbl1EVH::AfterUpdate(LResultSet* caller, const wxAny& curPK, const wxString& sql) +{ + owner->AppendMsg(_T("LResultSet::AfterUpdate - ") + caller->GetTableName() + _T(" - ") + sql); +} + +void ResultSetTbl1EVH::BeforeChangeRow(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeChangeRow - ") + caller->GetTableName()); +} + +void ResultSetTbl1EVH::BeforeDelete(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeDelete - ") + caller->GetTableName()); + wxMessageDialog * md = new wxMessageDialog(owner, _("Delete ?"), wxApp::GetInstance()->GetAppName(), wxYES_NO); + int reply = md->ShowModal(); + caller->SetCanDelete(reply == wxID_YES ? true : false); +} + +void ResultSetTbl1EVH::BeforeInsert(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeInsert - ") + caller->GetTableName()); + bool valid = !(owner->Text1->IsNull()); + if (!valid) { + owner->MsgBox(_("Text1 is NULL.")); + } + caller->SetCanInsert(valid); +} + +void ResultSetTbl1EVH::BeforeSave(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeSave - ") + caller->GetTableName()); +} + +void ResultSetTbl1EVH::BeforeUpdate(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeUpdate - ") + caller->GetTableName()); + bool valid = !(owner->Text1->IsNull()); + if (!valid) { + owner->MsgBox(_("Text1 is NULL.")); + } + caller->SetCanUpdate(valid); +} + +/////////////////////////////////////////////////////////////////////////////// + +ResultSetTbl2EVH::ResultSetTbl2EVH(L7Frame* newOwner) { + owner = newOwner; +} +ResultSetTbl2EVH::~ResultSetTbl2EVH() { + +} +void ResultSetTbl2EVH::Inform(const LResultSet* caller, const LInformation& msg) const { + owner->MsgBox(msg.GetFullInformation()); +} +void ResultSetTbl2EVH::AfterAction(LResultSet* caller, ACTIONS action) { + owner->AppendMsg(_T("LResultSet::AfterAction - ") + caller->GetTableName() + _T(" - ") + wxAny((int) action).As()); +} +void ResultSetTbl2EVH::AfterChangeRow(LResultSet* caller) { + owner->AppendMsg(_T("LResultSet::AfterChangeRow - ") + caller->GetTableName()); +} +void ResultSetTbl2EVH::AfterDelete(LResultSet* caller, const wxAny& oldPK, const wxString& sql) { + owner->AppendMsg(_T("LResultSet::AfterDelete - ") + caller->GetTableName() + _T(" - ") + sql); +} +void ResultSetTbl2EVH::AfterInsert(LResultSet* caller, const wxAny& newPK, const wxString& sql) +{ + owner->AppendMsg(_T("LResultSet::AfterInsert - ") + caller->GetTableName() + _T(" - ") + sql); +} + +void ResultSetTbl2EVH::AfterSave(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::AfterSave - ") + caller->GetTableName()); +} + +void ResultSetTbl2EVH::AfterUpdate(LResultSet* caller, const wxAny& curPK, const wxString& sql) +{ + owner->AppendMsg(_T("LResultSet::AfterUpdate - ") + caller->GetTableName() + _T(" - ") + sql); +} + +void ResultSetTbl2EVH::BeforeChangeRow(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeChangeRow - ") + caller->GetTableName()); +} + +void ResultSetTbl2EVH::BeforeDelete(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeDelete - ") + caller->GetTableName()); +} + +void ResultSetTbl2EVH::BeforeInsert(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeInsert - ") + caller->GetTableName()); +} + +void ResultSetTbl2EVH::BeforeSave(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeSave - ") + caller->GetTableName()); +} + +void ResultSetTbl2EVH::BeforeUpdate(LResultSet* caller) +{ + owner->AppendMsg(_T("LResultSet::BeforeUpdate - ") + caller->GetTableName()); +} + +/////////////////////////////////////////////////////////////////////////////// + +GridEVH::GridEVH(L7Frame* newOwner) +{ + owner = newOwner; +} + +GridEVH::~GridEVH() +{ + +} + +void GridEVH::BeforeFormShown(const LBoundGrid* origin, wxBoxSizer* clientSizer) +{ + wxButton * btnClient = new wxButton(clientSizer->GetContainingWindow(), wxID_ANY, _("Click")); + clientSizer->Add(btnClient, 1, wxEXPAND); + btnClient->Bind(wxEVT_BUTTON, &GridEVH::OnClientButtonClicked, this); +} + +void GridEVH::OnClientButtonClicked(wxCommandEvent& evt) +{ + wxTextCtrl * txtFormCtrl = static_cast (owner->grid->GetFormEditor(_T("text2"))); + owner->MsgBox(txtFormCtrl->GetValue()); +} diff --git a/L7Test/L7Test.h b/L7Test/L7Test.h new file mode 100644 index 0000000..216f6cd --- /dev/null +++ b/L7Test/L7Test.h @@ -0,0 +1,142 @@ +/* + * File: L7Test.h + * Author: Saleem EDAH-TALLY - nmset@netcourrier.com + * Copyright Saleem EDAH-TALLY - © 2014 + * + * Created on 4 juin 2014, 20:42 + */ + +#ifndef L7TEST_H +#define L7TEST_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class L7Test; +class L7Frame; + +class L7Test : public wxApp +{ +public: + L7Test(); + virtual ~L7Test(); + + bool OnInit(); + int OnExit(); + +private: + +}; + +class L7Frame : public wxFrame +{ + friend class ConnectionEVH; + friend class ResultSetTbl1EVH; + friend class ResultSetTbl2EVH; + friend class GridEVH; +public: + L7Frame(wxWindow * parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString); + virtual ~L7Frame(); +private: + LConnection * m_conn; + wxTextCtrl * m_txtConnInfo; + LResultSet * m_rsTbl1; + LResultSet * rsTbl2; + wxRadioBox * rdBE; + wxTextCtrl * txtMessages; + LBoundTextCtrl * Pk1; + LBoundTextCtrl * Text1; + LBoundCheckBox * Check1d; // Dual state + LBoundCheckBox * Check1t; // Tri state + LBoundComboBox * Combo1t; // Translated + LBoundComboBox * Combo1x; // Text + LBoundDatePickerCtrl * Date1; + LBoundSpinCtrl * Spin1; + LNavigator * navTbl1; + LBoundGrid * grid; + bool colsCreated; + + void AppendMsg(const wxString& msg); + void MsgBox(const wxString& msg); + void OnRadioConnClick(wxCommandEvent& evt); + void OnButtonConnectClick(wxCommandEvent& evt); + void OnButtonNewFrameClick(wxCommandEvent& evt); + void FillComboBox(LBoundComboBox * cmb, const wxString& sql); + void FilterGrid(); +}; + +class ConnectionEVH : public LConnectionEvent { +public: + ConnectionEVH(L7Frame * newOwner); + virtual ~ConnectionEVH(); + +private: + L7Frame * owner; + void BeforeExecute(const LConnection * caller); + void AfterExecute(const LConnection * caller); + void Inform(const LConnection * caller, + const LInformation& msg) const; +}; + +class ResultSetTbl1EVH : public LResultSetEvent { +public: + ResultSetTbl1EVH(L7Frame * newOwner); + virtual ~ResultSetTbl1EVH(); +private: + L7Frame * owner; + void Inform(const LResultSet* caller, const LInformation& msg) const; + void AfterAction(LResultSet* caller, ACTIONS action); + void AfterChangeRow(LResultSet* caller); + void AfterDelete(LResultSet* caller, const wxAny& oldPK, const wxString& sql); + void AfterInsert(LResultSet* caller, const wxAny& newPK, const wxString& sql); + void AfterSave(LResultSet* caller); + void AfterUpdate(LResultSet* caller, const wxAny& curPK, const wxString& sql); + void BeforeChangeRow(LResultSet* caller); + void BeforeDelete(LResultSet* caller); + void BeforeInsert(LResultSet* caller); + void BeforeSave(LResultSet* caller); + void BeforeUpdate(LResultSet* caller); +}; + +class ResultSetTbl2EVH : public LResultSetEvent { +public: + ResultSetTbl2EVH(L7Frame * newOwner); + virtual ~ResultSetTbl2EVH(); +private: + L7Frame * owner; + void Inform(const LResultSet* caller, const LInformation& msg) const; + void AfterAction(LResultSet* caller, ACTIONS action); + void AfterChangeRow(LResultSet* caller); + void AfterDelete(LResultSet* caller, const wxAny& oldPK, const wxString& sql); + void AfterInsert(LResultSet* caller, const wxAny& newPK, const wxString& sql); + void AfterSave(LResultSet* caller); + void AfterUpdate(LResultSet* caller, const wxAny& curPK, const wxString& sql); + void BeforeChangeRow(LResultSet* caller); + void BeforeDelete(LResultSet* caller); + void BeforeInsert(LResultSet* caller); + void BeforeSave(LResultSet* caller); + void BeforeUpdate(LResultSet* caller); +}; + +class GridEVH : public LBoundGridFormEvent { +public: + GridEVH(L7Frame * newOwner); + virtual ~GridEVH(); + +private: + L7Frame * owner; + + void BeforeFormShown(const LBoundGrid* origin, wxBoxSizer* clientSizer); + void OnClientButtonClicked(wxCommandEvent& evt); + +}; +#endif /* L7TEST_H */ + diff --git a/L7Test/Makefile b/L7Test/Makefile new file mode 100644 index 0000000..05de621 --- /dev/null +++ b/L7Test/Makefile @@ -0,0 +1,128 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_PLATFORM_${CONF} platform name (current configuration) +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# build tests +build-tests: .build-tests-post + +.build-tests-pre: +# Add your pre 'build-tests' code here... + +.build-tests-post: .build-tests-impl +# Add your post 'build-tests' code here... + + +# run tests +test: .test-post + +.test-pre: build-tests +# Add your pre 'test' code here... + +.test-post: .test-impl +# Add your post 'test' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/L7Test/nbproject/Makefile-Debug.mk b/L7Test/nbproject/Makefile-Debug.mk new file mode 100644 index 0000000..a00530e --- /dev/null +++ b/L7Test/nbproject/Makefile-Debug.mk @@ -0,0 +1,89 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/L7Test.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-L/usr/local/wxWidgets/lib -lwx_baseu-3.1 -lwx_gtk2u_core-3.1 -lwx_gtk2u_adv-3.1 -lpq -lsqlite3 -Wl,-rpath,'../L7/dist/Debug/GNU-Linux' -L../L7/dist/Debug/GNU-Linux -lL7 + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test: ../L7/dist/Debug/GNU-Linux/libL7.so + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + g++ -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/L7Test.o: L7Test.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -DUSE_LIBPQ -DUSE_LIBSQ -DWXUSINGDLL -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -I/usr/local/wxWidgets/include/wx-3.1 -I/usr/local/wxWidgets/lib/wx/include/gtk2-unicode-3.1 -I../L7 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/L7Test.o L7Test.cpp + +# Subprojects +.build-subprojects: + cd ../L7 && ${MAKE} -j8 -f Makefile CONF=Debug + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} -r ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libL7.so + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test + +# Subprojects +.clean-subprojects: + cd ../L7 && ${MAKE} -j8 -f Makefile CONF=Debug clean + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/L7Test/nbproject/Makefile-Release.mk b/L7Test/nbproject/Makefile-Release.mk new file mode 100644 index 0000000..d338afc --- /dev/null +++ b/L7Test/nbproject/Makefile-Release.mk @@ -0,0 +1,89 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/L7Test.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-L/usr/local/wxWidgets-Release/lib -lwx_baseu-3.1 -lwx_gtk2u_core-3.1 -lwx_gtk2u_adv-3.1 -Wl,-rpath,'../L7/dist/Release/GNU-Linux' -L../L7/dist/Release/GNU-Linux -lL7 -lpq -lsqlite3 + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test: ../L7/dist/Release/GNU-Linux/libL7.so + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test ${OBJECTFILES} ${LDLIBSOPTIONS} -s + +${OBJECTDIR}/L7Test.o: L7Test.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -s -DUSE_LIBPQ -DUSE_LIBSQ -DWXUSINGDLL -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -DwxDEBUG_LEVEL=0 -I/usr/local/wxWidgets-Release/include/wx-3.1 -I/usr/local/wxWidgets-Release/lib/wx/include/gtk2-unicode-3.1 -I../L7 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/L7Test.o L7Test.cpp + +# Subprojects +.build-subprojects: + cd ../L7 && ${MAKE} -j4 -f Makefile CONF=Release + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} -r ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libL7.so + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test + +# Subprojects +.clean-subprojects: + cd ../L7 && ${MAKE} -j4 -f Makefile CONF=Release clean + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/L7Test/nbproject/Makefile-impl.mk b/L7Test/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..bef8ad0 --- /dev/null +++ b/L7Test/nbproject/Makefile-impl.mk @@ -0,0 +1,133 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=L7Test + +# Active Configuration +DEFAULTCONF=Debug +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=Debug Release + + +# build +.build-impl: .build-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf + + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ + done + +# all +.all-impl: .all-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ + done + +# build tests +.build-tests-impl: .build-impl .build-tests-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf + +# run tests +.test-impl: .build-tests-impl .test-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf + +# dependency checking support +.depcheck-impl: + @echo "# This code depends on make tool being used" >.dep.inc + @if [ -n "${MAKE_VERSION}" ]; then \ + echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \ + echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ + echo "include \$${DEPFILES}" >>.dep.inc; \ + echo "endif" >>.dep.inc; \ + else \ + echo ".KEEP_STATE:" >>.dep.inc; \ + echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ + fi + +# configuration validation +.validate-impl: + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + echo ""; \ + echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ + echo "See 'make help' for details."; \ + echo "Current directory: " `pwd`; \ + echo ""; \ + fi + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + exit 1; \ + fi + + +# help +.help-impl: .help-pre + @echo "This makefile supports the following configurations:" + @echo " ${ALLCONFS}" + @echo "" + @echo "and the following targets:" + @echo " build (default target)" + @echo " clean" + @echo " clobber" + @echo " all" + @echo " help" + @echo "" + @echo "Makefile Usage:" + @echo " make [CONF=] [SUB=no] build" + @echo " make [CONF=] [SUB=no] clean" + @echo " make [SUB=no] clobber" + @echo " make [SUB=no] all" + @echo " make help" + @echo "" + @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," + @echo " also clean subprojects." + @echo "Target 'clobber' will remove all built files from all configurations and," + @echo " unless 'SUB=no', also from subprojects." + @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'help' prints this message." + @echo "" + diff --git a/L7Test/nbproject/Makefile-variables.mk b/L7Test/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..b0b7502 --- /dev/null +++ b/L7Test/nbproject/Makefile-variables.mk @@ -0,0 +1,35 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +CND_BUILDDIR=build +CND_DISTDIR=dist +# Debug configuration +CND_PLATFORM_Debug=GNU-Linux +CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux +CND_ARTIFACT_NAME_Debug=l7test +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/l7test +CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package +CND_PACKAGE_NAME_Debug=l7test.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/l7test.tar +# Release configuration +CND_PLATFORM_Release=GNU-Linux +CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux +CND_ARTIFACT_NAME_Release=l7test +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/l7test +CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package +CND_PACKAGE_NAME_Release=l7test.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/l7test.tar +# +# include compiler specific variables +# +# dmake command +ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ + (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) +# +# gmake command +.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) +# +include nbproject/private/Makefile-variables.mk diff --git a/L7Test/nbproject/Package-Debug.bash b/L7Test/nbproject/Package-Debug.bash new file mode 100644 index 0000000..c9b8d0d --- /dev/null +++ b/L7Test/nbproject/Package-Debug.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test +OUTPUT_BASENAME=l7test +PACKAGE_TOP_DIR=l7test/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/l7test/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/l7test.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/l7test.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/L7Test/nbproject/Package-Release.bash b/L7Test/nbproject/Package-Release.bash new file mode 100644 index 0000000..6429de2 --- /dev/null +++ b/L7Test/nbproject/Package-Release.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/l7test +OUTPUT_BASENAME=l7test +PACKAGE_TOP_DIR=l7test/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/l7test/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/l7test.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/l7test.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/L7Test/nbproject/configurations.xml b/L7Test/nbproject/configurations.xml new file mode 100644 index 0000000..0642498 --- /dev/null +++ b/L7Test/nbproject/configurations.xml @@ -0,0 +1,149 @@ + + + + + L7Test.h + + + + + L7Test.cpp + + + + + Makefile + + + Makefile + + + + default + true + false + + + + + /usr/local/wxWidgets/include/wx-3.1 + /usr/local/wxWidgets/lib/wx/include/gtk2-unicode-3.1 + ../L7 + + + USE_LIBPQ + USE_LIBSQ + WXUSINGDLL + _FILE_OFFSET_BITS=64 + __WXGTK__ + + + + + /usr/local/wxWidgets/lib + + g++ + + wx_baseu-3.1 + wx_gtk2u_core-3.1 + wx_gtk2u_adv-3.1 + pq + sqlite3 + + + + + + + + + + + + + + + default + true + false + + + + 5 + + + 5 + true + + /usr/local/wxWidgets-Release/include/wx-3.1 + /usr/local/wxWidgets-Release/lib/wx/include/gtk2-unicode-3.1 + ../L7 + + + USE_LIBPQ + USE_LIBSQ + WXUSINGDLL + _FILE_OFFSET_BITS=64 + __WXGTK__ + wxDEBUG_LEVEL=0 + + + + 5 + + + 5 + + + + /usr/local/wxWidgets-Release/lib + + true + + wx_baseu-3.1 + wx_gtk2u_core-3.1 + wx_gtk2u_adv-3.1 + + + + + pq + sqlite3 + + + + + + + + + + diff --git a/L7Test/nbproject/private/Makefile-variables.mk b/L7Test/nbproject/private/Makefile-variables.mk new file mode 100644 index 0000000..a64183e --- /dev/null +++ b/L7Test/nbproject/private/Makefile-variables.mk @@ -0,0 +1,7 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +# Debug configuration +# Release configuration diff --git a/L7Test/nbproject/private/c_standard_headers_indexer.c b/L7Test/nbproject/private/c_standard_headers_indexer.c new file mode 100644 index 0000000..c2548d2 --- /dev/null +++ b/L7Test/nbproject/private/c_standard_headers_indexer.c @@ -0,0 +1,75 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/c/header + +#include // Conditionally compiled macro that compares its argument to zero +#include // Functions to determine the type contained in character data +#include // Macros reporting error conditions +#include // Limits of float types +#include // Sizes of basic types +#include // Localization utilities +#include // Common mathematics functions +#include // Nonlocal jumps +#include // Signal handling +#include // Variable arguments +#include // Common macro definitions +#include // Input/output +#include // String handling +#include // General utilities: memory management, program utilities, string conversions, random numbers +#include // Time/date utilities +#include // (since C95) Alternative operator spellings +#include // (since C95) Extended multibyte and wide character utilities +#include // (since C95) Wide character classification and mapping utilities +#ifdef _STDC_C99 +#include // (since C99) Complex number arithmetic +#include // (since C99) Floating-point environment +#include // (since C99) Format conversion of integer types +#include // (since C99) Boolean type +#include // (since C99) Fixed-width integer types +#include // (since C99) Type-generic math (macros wrapping math.h and complex.h) +#endif +#ifdef _STDC_C11 +#include // (since C11) alignas and alignof convenience macros +#include // (since C11) Atomic types +#include // (since C11) noreturn convenience macros +#include // (since C11) Thread library +#include // (since C11) UTF-16 and UTF-32 character utilities +#endif diff --git a/L7Test/nbproject/private/configurations.xml b/L7Test/nbproject/private/configurations.xml new file mode 100644 index 0000000..86e6ff4 --- /dev/null +++ b/L7Test/nbproject/private/configurations.xml @@ -0,0 +1,74 @@ + + + Makefile + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + + diff --git a/L7Test/nbproject/private/cpp_standard_headers_indexer.cpp b/L7Test/nbproject/private/cpp_standard_headers_indexer.cpp new file mode 100644 index 0000000..04f6fa6 --- /dev/null +++ b/L7Test/nbproject/private/cpp_standard_headers_indexer.cpp @@ -0,0 +1,135 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/cpp/header + +#include // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search +#include // Functions and macro constants for signal management +#include // Macro (and function) that saves (and jumps) to an execution context +#include // Handling of variable length argument lists +#include // Runtime type information utilities +#include // std::bitset class template +#include // Function objects, designed for use with the standard algorithms +#include // Various utility components +#include // C-style time/date utilites +#include // typedefs for types such as size_t, NULL and others +#include // Low-level memory management utilities +#include // Higher level memory management utilities +#include // limits of integral types +#include // limits of float types +#include // standardized way to query properties of arithmetic types +#include // Exception handling utilities +#include // Standard exception objects +#include // Conditionally compiled macro that compares its argument to zero +#include // Macro containing the last error number +#include // functions to determine the type contained in character data +#include // functions for determining the type of wide character data +#include // various narrow character string handling functions +#include // various wide and multibyte string handling functions +#include // std::basic_string class template +#include // std::vector container +#include // std::deque container +#include // std::list container +#include // std::set and std::multiset associative containers +#include // std::map and std::multimap associative containers +#include // std::stack container adaptor +#include // std::queue and std::priority_queue container adaptors +#include // Algorithms that operate on containers +#include // Container iterators +#include // Common mathematics functions +#include // Complex number type +#include // Class for representing and manipulating arrays of values +#include // Numeric operations on values in containers +#include // forward declarations of all classes in the input/output library +#include // std::ios_base class, std::basic_ios class template and several typedefs +#include // std::basic_istream class template and several typedefs +#include // std::basic_ostream, std::basic_iostream class templates and several typedefs +#include // several standard stream objects +#include // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs +#include // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs +#include // std::strstream, std::istrstream, std::ostrstream(deprecated) +#include // Helper functions to control the format or input and output +#include // std::basic_streambuf class template +#include // C-style input-output functions +#include // Localization utilities +#include // C localization utilities +#include // empty header. The macros that appear in iso646.h in C are keywords in C++ +#if __cplusplus >= 201103L +#include // (since C++11) std::type_index +#include // (since C++11) Compile-time type information +#include // (since C++11) C++ time utilites +#include // (since C++11) std::initializer_list class template +#include // (since C++11) std::tuple class template +#include // (since C++11) Nested allocator class +#include // (since C++11) fixed-size types and limits of other types +#include // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions +#include // (since C++11) defines std::error_code, a platform-dependent error code +#include // (since C++11) C-style Unicode character conversion functions +#include // (since C++11) std::array container +#include // (since C++11) std::forward_list container +#include // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers +#include // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers +#include // (since C++11) Random number generators and distributions +#include // (since C++11) Compile-time rational arithmetic +#include // (since C++11) Floating-point environment access functions +#include // (since C++11) Unicode conversion facilities +#include // (since C++11) Classes, algorithms and iterators to support regular expression processing +#include // (since C++11) Atomic operations library +#include // (since C++11)(deprecated in C++17) simply includes the header +#include // (since C++11)(deprecated in C++17) simply includes the headers (until C++17) (since C++17) and : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11) std::thread class and supporting functions +#include // (since C++11) mutual exclusion primitives +#include // (since C++11) primitives for asynchronous computations +#include // (since C++11) thread waiting conditions +#endif +#if __cplusplus >= 201300L +#include // (since C++14) shared mutual exclusion primitives +#endif +#if __cplusplus >= 201500L +#include // (since C++17) std::any class template +#include // (since C++17) std::optional class template +#include // (since C++17) std::variant class template +#include // (since C++17) Polymorphic allocators and memory resources +#include // (since C++17) std::basic_string_view class template +#include // (since C++17) Predefined execution policies for parallel versions of the algorithms +#include // (since C++17) std::path class and supporting functions +#endif diff --git a/L7Test/nbproject/private/launcher.properties b/L7Test/nbproject/private/launcher.properties new file mode 100644 index 0000000..6cc2127 --- /dev/null +++ b/L7Test/nbproject/private/launcher.properties @@ -0,0 +1,40 @@ +# Launchers File syntax: +# +# [Must-have property line] +# launcher1.runCommand= +# [Optional extra properties] +# launcher1.displayName= +# launcher1.buildCommand= +# launcher1.runDir= +# launcher1.symbolFiles= +# launcher1.env.= +# (If this value is quoted with ` it is handled as a native command which execution result will become the value) +# [Common launcher properties] +# common.runDir= +# (This value is overwritten by a launcher specific runDir value if the latter exists) +# common.env.= +# (Environment variables from common launcher are merged with launcher specific variables) +# common.symbolFiles= +# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) +# +# In runDir, symbolFiles and env fields you can use these macroses: +# ${PROJECT_DIR} - project directory absolute path +# ${OUTPUT_PATH} - linker output path (relative to project directory path) +# ${OUTPUT_BASENAME}- linker output filename +# ${TESTDIR} - test files directory (relative to project directory path) +# ${OBJECTDIR} - object files directory (relative to project directory path) +# ${CND_DISTDIR} - distribution directory (relative to project directory path) +# ${CND_BUILDDIR} - build directory (relative to project directory path) +# ${CND_PLATFORM} - platform name +# ${CND_CONF} - configuration name +# ${CND_DLIB_EXT} - dynamic library extension +# +# All the project launchers must be listed in the file! +# +# launcher1.runCommand=... +# launcher2.runCommand=... +# ... +# common.runDir=... +# common.env.KEY=VALUE + +# launcher1.runCommand= \ No newline at end of file diff --git a/L7Test/nbproject/private/private.xml b/L7Test/nbproject/private/private.xml new file mode 100644 index 0000000..3f8d5ff --- /dev/null +++ b/L7Test/nbproject/private/private.xml @@ -0,0 +1,14 @@ + + + + true + + + 1 + 0 + + + + + + diff --git a/L7Test/nbproject/project.xml b/L7Test/nbproject/project.xml new file mode 100644 index 0000000..ef79343 --- /dev/null +++ b/L7Test/nbproject/project.xml @@ -0,0 +1,33 @@ + + + org.netbeans.modules.cnd.makeproject + + + L7Test + + cpp + h + UTF-8 + + ../L7 + + + + + Debug + 1 + + + Release + 1 + + + + true + Apache|Apache + Apache|Apache + Apache|Apache + + + + diff --git a/L7Test/sql/postgresql.sql b/L7Test/sql/postgresql.sql new file mode 100644 index 0000000..9fbd42e --- /dev/null +++ b/L7Test/sql/postgresql.sql @@ -0,0 +1,338 @@ +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: list1; Type: TABLE; Schema: public; Owner: postgres; Tablespace: +-- + +CREATE TABLE list1 ( + id_list1 integer NOT NULL, + item character varying(50) DEFAULT (NOT NULL::boolean) +); + + +ALTER TABLE public.list1 OWNER TO postgres; + +-- +-- Name: list1_id_list1_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE list1_id_list1_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.list1_id_list1_seq OWNER TO postgres; + +-- +-- Name: list1_id_list1_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE list1_id_list1_seq OWNED BY list1.id_list1; + + +-- +-- Name: tbl1; Type: TABLE; Schema: public; Owner: postgres; Tablespace: +-- + +CREATE TABLE tbl1 ( + pk1 integer NOT NULL, + text1 character varying(255) NOT NULL, + check1d integer DEFAULT 0, + check1t integer, + combo1t integer, + combo1x character varying(50), + date1 date, + spin1 integer DEFAULT 3, + rand1 integer DEFAULT round((random() * (10000000)::double precision)) NOT NULL +); + + +ALTER TABLE public.tbl1 OWNER TO postgres; + +-- +-- Name: tbl1_pk1_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE tbl1_pk1_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.tbl1_pk1_seq OWNER TO postgres; + +-- +-- Name: tbl1_pk1_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE tbl1_pk1_seq OWNED BY tbl1.pk1; + + +-- +-- Name: tbl2; Type: TABLE; Schema: public; Owner: postgres; Tablespace: +-- + +CREATE TABLE tbl2 ( + pk2 integer NOT NULL, + pk1 integer NOT NULL, + text2 character varying(255) NOT NULL, + check2d integer DEFAULT 0, + check2t integer, + combo2t integer, + combo2x character varying(50), + date2 date, + spin2 integer DEFAULT 5, + rand1 integer +); + + +ALTER TABLE public.tbl2 OWNER TO postgres; + +-- +-- Name: tbl2_pk2_seq; Type: SEQUENCE; Schema: public; Owner: postgres +-- + +CREATE SEQUENCE tbl2_pk2_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.tbl2_pk2_seq OWNER TO postgres; + +-- +-- Name: tbl2_pk2_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres +-- + +ALTER SEQUENCE tbl2_pk2_seq OWNED BY tbl2.pk2; + + +-- +-- Name: id_list1; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY list1 ALTER COLUMN id_list1 SET DEFAULT nextval('list1_id_list1_seq'::regclass); + + +-- +-- Name: pk1; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY tbl1 ALTER COLUMN pk1 SET DEFAULT nextval('tbl1_pk1_seq'::regclass); + + +-- +-- Name: pk2; Type: DEFAULT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY tbl2 ALTER COLUMN pk2 SET DEFAULT nextval('tbl2_pk2_seq'::regclass); + + +-- +-- Data for Name: list1; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY list1 (id_list1, item) FROM stdin; +1 List1Item1 +2 List1Item2 +3 List1Item3 +4 List1Item4 +5 List1Item5 +\. + + +-- +-- Name: list1_id_list1_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('list1_id_list1_seq', 5, true); + + +-- +-- Data for Name: tbl1; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY tbl1 (pk1, text1, check1d, check1t, combo1t, combo1x, date1, rand1) FROM stdin; +\. + + +-- +-- Name: tbl1_pk1_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('tbl1_pk1_seq', 0, true); + + +-- +-- Data for Name: tbl2; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY tbl2 (pk2, pk1, text2, check2d, check2t, combo2t, combo2x, date2, rand1) FROM stdin; +\. + + +-- +-- Name: tbl2_pk2_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres +-- + +SELECT pg_catalog.setval('tbl2_pk2_seq', 0, true); + + +-- +-- Name: list1_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: +-- + +ALTER TABLE ONLY list1 + ADD CONSTRAINT list1_pkey PRIMARY KEY (id_list1); + + +-- +-- Name: tbl1_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: +-- + +ALTER TABLE ONLY tbl1 + ADD CONSTRAINT tbl1_pkey PRIMARY KEY (pk1); + + +-- +-- Name: tbl2_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: +-- + +ALTER TABLE ONLY tbl2 + ADD CONSTRAINT tbl2_pkey PRIMARY KEY (pk2); + + +-- +-- Name: tbl1_combo1t_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY tbl1 + ADD CONSTRAINT tbl1_combo1t_fkey FOREIGN KEY (combo1t) REFERENCES list1(id_list1); + + +-- +-- Name: tbl2_combo2t_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY tbl2 + ADD CONSTRAINT tbl2_combo2t_fkey FOREIGN KEY (combo2t) REFERENCES list1(id_list1); + + +-- +-- Name: tbl2_pk1_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres +-- + +ALTER TABLE ONLY tbl2 + ADD CONSTRAINT tbl2_pk1_fkey FOREIGN KEY (pk1) REFERENCES tbl1(pk1); + + +-- +-- Name: public; Type: ACL; Schema: -; Owner: postgres +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM postgres; +GRANT ALL ON SCHEMA public TO postgres; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- Name: list1; Type: ACL; Schema: public; Owner: postgres +-- + +REVOKE ALL ON TABLE list1 FROM PUBLIC; +REVOKE ALL ON TABLE list1 FROM postgres; +GRANT ALL ON TABLE list1 TO postgres; +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE list1 TO l7; + + +-- +-- Name: list1_id_list1_seq; Type: ACL; Schema: public; Owner: postgres +-- + +REVOKE ALL ON SEQUENCE list1_id_list1_seq FROM PUBLIC; +REVOKE ALL ON SEQUENCE list1_id_list1_seq FROM postgres; +GRANT ALL ON SEQUENCE list1_id_list1_seq TO postgres; +GRANT SELECT,UPDATE ON SEQUENCE list1_id_list1_seq TO l7; + + +-- +-- Name: tbl1; Type: ACL; Schema: public; Owner: postgres +-- + +REVOKE ALL ON TABLE tbl1 FROM PUBLIC; +REVOKE ALL ON TABLE tbl1 FROM postgres; +GRANT ALL ON TABLE tbl1 TO postgres; +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE tbl1 TO l7; + + +-- +-- Name: tbl1_pk1_seq; Type: ACL; Schema: public; Owner: postgres +-- + +REVOKE ALL ON SEQUENCE tbl1_pk1_seq FROM PUBLIC; +REVOKE ALL ON SEQUENCE tbl1_pk1_seq FROM postgres; +GRANT ALL ON SEQUENCE tbl1_pk1_seq TO postgres; +GRANT SELECT,UPDATE ON SEQUENCE tbl1_pk1_seq TO l7; + + +-- +-- Name: tbl2; Type: ACL; Schema: public; Owner: postgres +-- + +REVOKE ALL ON TABLE tbl2 FROM PUBLIC; +REVOKE ALL ON TABLE tbl2 FROM postgres; +GRANT ALL ON TABLE tbl2 TO postgres; +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE tbl2 TO l7; + + +-- +-- Name: tbl2_pk2_seq; Type: ACL; Schema: public; Owner: postgres +-- + +REVOKE ALL ON SEQUENCE tbl2_pk2_seq FROM PUBLIC; +REVOKE ALL ON SEQUENCE tbl2_pk2_seq FROM postgres; +GRANT ALL ON SEQUENCE tbl2_pk2_seq TO postgres; +GRANT SELECT,UPDATE ON SEQUENCE tbl2_pk2_seq TO l7; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/L7Test/sql/sqlite.sql b/L7Test/sql/sqlite.sql new file mode 100644 index 0000000..440586e --- /dev/null +++ b/L7Test/sql/sqlite.sql @@ -0,0 +1,35 @@ +CREATE TABLE "List1" ( + "ID_List1" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + "Item" TEXT NOT NULL +); +CREATE TABLE tbl2 ( + "PK2" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + "PK1" INTEGER NOT NULL, + "text2" TEXT NOT NULL, + "check2d" INTEGER, + "check2t" INTEGER, + "combo2t" INTEGER, + "combo2x" TEXT, + "date2" TEXT, + "spin2" INTEGER DEFAULT 5, + "rand1" INTEGER NOT NULL DEFAULT (abs(random())), + foreign key (combo2t) references list1(id_list1), + foreign key (pk1) references tbl1(pk1) +); +CREATE TABLE tbl1 ( + "PK1" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + "text1" TEXT NOT NULL, + "check1d" INTEGER, + "check1t" INTEGER, + "combo1t" INTEGER, + "combo1x" TEXT, + "date1" TEXT, + "spin1" INTEGER DEFAULT 3, + "rand1" INTEGER NOT NULL DEFAULT (abs(random())) +); + +INSERT INTO List1 VALUES(1, 'List1Item1'); +INSERT INTO List1 VALUES(2, 'List1Item2'); +INSERT INTO List1 VALUES(3, 'List1Item3'); +INSERT INTO List1 VALUES(4, 'List1Item4'); +INSERT INTO List1 VALUES(5, 'List1Item5');