Add files via upload

This commit is contained in:
nmset
2018-04-25 20:44:46 +02:00
committed by GitHub
parent 428cc9099e
commit 6663c6c183
19 changed files with 2157 additions and 0 deletions

489
L7Test/L7Test.cpp Normal file
View File

@@ -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 <LPQConnection.h>
#include <LPQResultSet.h>
#include <LSQConnection.h>
#include <LSQResultSet.h>
#include <LLightPQResultSet.h>
#include <LLightSQResultSet.h>
#include <LItemData.h>
#include <wx/stdpaths.h>
#include <wx/filename.h>
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<LResultSetEvent*> (m_rsTbl1->GetEventHandlers().Item(i));
}
delete m_rsTbl1;
}
if (rsTbl2) {
for (unsigned int i = 0; i < rsTbl2->GetEventHandlers().Count(); i++) {
delete static_cast<LResultSetEvent*> (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<ConnectionEVH*> (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<wxString>() + _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<wxString>());
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<wxString>(), 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<wxString>());
} 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<LBoundComboBox*> (grid->GetBoundControl(grid->GetGridCursorRow(), _T("combo2t"), false));
FillComboBox(Combo2t, _T("SELECT id_list1, item FROM list1 ORDER BY id_list1"));
LBoundComboBox * Combo2x = static_cast<LBoundComboBox*> (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<wxString>());
}
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<wxString>());
}
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<wxTextCtrl*> (owner->grid->GetFormEditor(_T("text2")));
owner->MsgBox(txtFormCtrl->GetValue());
}

142
L7Test/L7Test.h Normal file
View File

@@ -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 <wx/wx.h>
#include <LConnection.h>
#include <LResultSet.h>
#include <LBoundTextCtrl.h>
#include <LBoundCheckBox.h>
#include <LBoundComboBox.h>
#include <LBoundDatePickerCtrl.h>
#include <LBoundSpinCtrl.h>
#include <LNavigator.h>
#include <LBoundGrid.h>
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 */

128
L7Test/Makefile Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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=<CONFIGURATION>] [SUB=no] build"
@echo " make [CONF=<CONFIGURATION>] [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 ""

View File

@@ -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

View File

@@ -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}

View File

@@ -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}

View File

@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<configurationDescriptor version="100">
<logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
<logicalFolder name="HeaderFiles"
displayName="Header Files"
projectFiles="true">
<itemPath>L7Test.h</itemPath>
</logicalFolder>
<logicalFolder name="ResourceFiles"
displayName="Resource Files"
projectFiles="true">
</logicalFolder>
<logicalFolder name="SourceFiles"
displayName="Source Files"
projectFiles="true">
<itemPath>L7Test.cpp</itemPath>
</logicalFolder>
<logicalFolder name="TestFiles"
displayName="Test Files"
projectFiles="false"
kind="TEST_LOGICAL_FOLDER">
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"
projectFiles="false"
kind="IMPORTANT_FILES_FOLDER">
<itemPath>Makefile</itemPath>
</logicalFolder>
</logicalFolder>
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="Debug" type="1">
<toolsSet>
<compilerSet>default</compilerSet>
<dependencyChecking>true</dependencyChecking>
<rebuildPropChanged>false</rebuildPropChanged>
</toolsSet>
<compileType>
<ccTool>
<incDir>
<pElem>/usr/local/wxWidgets/include/wx-3.1</pElem>
<pElem>/usr/local/wxWidgets/lib/wx/include/gtk2-unicode-3.1</pElem>
<pElem>../L7</pElem>
</incDir>
<preprocessorList>
<Elem>USE_LIBPQ</Elem>
<Elem>USE_LIBSQ</Elem>
<Elem>WXUSINGDLL</Elem>
<Elem>_FILE_OFFSET_BITS=64</Elem>
<Elem>__WXGTK__</Elem>
</preprocessorList>
</ccTool>
<linkerTool>
<linkerAddLib>
<pElem>/usr/local/wxWidgets/lib</pElem>
</linkerAddLib>
<commandlineTool>g++</commandlineTool>
<linkerLibItems>
<linkerLibLibItem>wx_baseu-3.1</linkerLibLibItem>
<linkerLibLibItem>wx_gtk2u_core-3.1</linkerLibLibItem>
<linkerLibLibItem>wx_gtk2u_adv-3.1</linkerLibLibItem>
<linkerLibLibItem>pq</linkerLibLibItem>
<linkerLibLibItem>sqlite3</linkerLibLibItem>
<linkerLibProjectItem>
<makeArtifact PL="../L7"
CT="2"
CN="Debug"
AC="true"
BL="true"
WD="../L7"
BC="${MAKE} -j8 -f Makefile CONF=Debug"
CC="${MAKE} -j8 -f Makefile CONF=Debug clean"
OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libL7.${CND_DLIB_EXT}">
</makeArtifact>
</linkerLibProjectItem>
</linkerLibItems>
</linkerTool>
</compileType>
<item path="L7Test.cpp" ex="false" tool="1" flavor2="0">
</item>
<item path="L7Test.h" ex="false" tool="3" flavor2="0">
</item>
</conf>
<conf name="Release" type="1">
<toolsSet>
<compilerSet>default</compilerSet>
<dependencyChecking>true</dependencyChecking>
<rebuildPropChanged>false</rebuildPropChanged>
</toolsSet>
<compileType>
<cTool>
<developmentMode>5</developmentMode>
</cTool>
<ccTool>
<developmentMode>5</developmentMode>
<stripSymbols>true</stripSymbols>
<incDir>
<pElem>/usr/local/wxWidgets-Release/include/wx-3.1</pElem>
<pElem>/usr/local/wxWidgets-Release/lib/wx/include/gtk2-unicode-3.1</pElem>
<pElem>../L7</pElem>
</incDir>
<preprocessorList>
<Elem>USE_LIBPQ</Elem>
<Elem>USE_LIBSQ</Elem>
<Elem>WXUSINGDLL</Elem>
<Elem>_FILE_OFFSET_BITS=64</Elem>
<Elem>__WXGTK__</Elem>
<Elem>wxDEBUG_LEVEL=0</Elem>
</preprocessorList>
</ccTool>
<fortranCompilerTool>
<developmentMode>5</developmentMode>
</fortranCompilerTool>
<asmTool>
<developmentMode>5</developmentMode>
</asmTool>
<linkerTool>
<linkerAddLib>
<pElem>/usr/local/wxWidgets-Release/lib</pElem>
</linkerAddLib>
<stripSymbols>true</stripSymbols>
<linkerLibItems>
<linkerLibLibItem>wx_baseu-3.1</linkerLibLibItem>
<linkerLibLibItem>wx_gtk2u_core-3.1</linkerLibLibItem>
<linkerLibLibItem>wx_gtk2u_adv-3.1</linkerLibLibItem>
<linkerLibProjectItem>
<makeArtifact PL="../L7"
CT="2"
CN="Release"
AC="false"
BL="true"
WD="../L7"
BC="${MAKE} -j4 -f Makefile CONF=Release"
CC="${MAKE} -j4 -f Makefile CONF=Release clean"
OP="${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libL7.${CND_DLIB_EXT}">
</makeArtifact>
</linkerLibProjectItem>
<linkerLibLibItem>pq</linkerLibLibItem>
<linkerLibLibItem>sqlite3</linkerLibLibItem>
</linkerLibItems>
</linkerTool>
</compileType>
<item path="L7Test.cpp" ex="false" tool="1" flavor2="0">
</item>
<item path="L7Test.h" ex="false" tool="3" flavor2="0">
</item>
</conf>
</confs>
</configurationDescriptor>

View File

@@ -0,0 +1,7 @@
#
# Generated - do not edit!
#
# NOCDDL
#
# Debug configuration
# Release configuration

View File

@@ -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 <assert.h> // Conditionally compiled macro that compares its argument to zero
#include <ctype.h> // Functions to determine the type contained in character data
#include <errno.h> // Macros reporting error conditions
#include <float.h> // Limits of float types
#include <limits.h> // Sizes of basic types
#include <locale.h> // Localization utilities
#include <math.h> // Common mathematics functions
#include <setjmp.h> // Nonlocal jumps
#include <signal.h> // Signal handling
#include <stdarg.h> // Variable arguments
#include <stddef.h> // Common macro definitions
#include <stdio.h> // Input/output
#include <string.h> // String handling
#include <stdlib.h> // General utilities: memory management, program utilities, string conversions, random numbers
#include <time.h> // Time/date utilities
#include <iso646.h> // (since C95) Alternative operator spellings
#include <wchar.h> // (since C95) Extended multibyte and wide character utilities
#include <wctype.h> // (since C95) Wide character classification and mapping utilities
#ifdef _STDC_C99
#include <complex.h> // (since C99) Complex number arithmetic
#include <fenv.h> // (since C99) Floating-point environment
#include <inttypes.h> // (since C99) Format conversion of integer types
#include <stdbool.h> // (since C99) Boolean type
#include <stdint.h> // (since C99) Fixed-width integer types
#include <tgmath.h> // (since C99) Type-generic math (macros wrapping math.h and complex.h)
#endif
#ifdef _STDC_C11
#include <stdalign.h> // (since C11) alignas and alignof convenience macros
#include <stdatomic.h> // (since C11) Atomic types
#include <stdnoreturn.h> // (since C11) noreturn convenience macros
#include <threads.h> // (since C11) Thread library
#include <uchar.h> // (since C11) UTF-16 and UTF-32 character utilities
#endif

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<configurationDescriptor version="100">
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="Debug" type="1">
<toolsSet>
<developmentServer>localhost</developmentServer>
<platform>2</platform>
</toolsSet>
<dbx_gdbdebugger version="1">
<gdb_pathmaps>
</gdb_pathmaps>
<gdb_interceptlist>
<gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
</gdb_interceptlist>
<gdb_options>
<DebugOptions>
</DebugOptions>
</gdb_options>
<gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
</dbx_gdbdebugger>
<nativedebugger version="1">
<engine>gdb</engine>
</nativedebugger>
<runprofile version="9">
<runcommandpicklist>
<runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
</runcommandpicklist>
<runcommand>"${OUTPUT_PATH}"</runcommand>
<rundir></rundir>
<buildfirst>true</buildfirst>
<terminal-type>0</terminal-type>
<remove-instrumentation>0</remove-instrumentation>
<environment>
<variable name="LD_LIBRARY_PATH" value="/usr/local/wxWidgets/lib"/>
</environment>
</runprofile>
</conf>
<conf name="Release" type="1">
<toolsSet>
<developmentServer>localhost</developmentServer>
<platform>2</platform>
</toolsSet>
<dbx_gdbdebugger version="1">
<gdb_pathmaps>
</gdb_pathmaps>
<gdb_interceptlist>
<gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
</gdb_interceptlist>
<gdb_options>
<DebugOptions>
</DebugOptions>
</gdb_options>
<gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
</dbx_gdbdebugger>
<nativedebugger version="1">
<engine>gdb</engine>
</nativedebugger>
<runprofile version="9">
<runcommandpicklist>
<runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
</runcommandpicklist>
<runcommand>"${OUTPUT_PATH}"</runcommand>
<rundir></rundir>
<buildfirst>true</buildfirst>
<terminal-type>0</terminal-type>
<remove-instrumentation>0</remove-instrumentation>
<environment>
<variable name="LD_LIBRARY_PATH" value="/usr/local/wxWidgets-Release/lib"/>
</environment>
</runprofile>
</conf>
</confs>
</configurationDescriptor>

View File

@@ -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 <cstdlib> // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search
#include <csignal> // Functions and macro constants for signal management
#include <csetjmp> // Macro (and function) that saves (and jumps) to an execution context
#include <cstdarg> // Handling of variable length argument lists
#include <typeinfo> // Runtime type information utilities
#include <bitset> // std::bitset class template
#include <functional> // Function objects, designed for use with the standard algorithms
#include <utility> // Various utility components
#include <ctime> // C-style time/date utilites
#include <cstddef> // typedefs for types such as size_t, NULL and others
#include <new> // Low-level memory management utilities
#include <memory> // Higher level memory management utilities
#include <climits> // limits of integral types
#include <cfloat> // limits of float types
#include <limits> // standardized way to query properties of arithmetic types
#include <exception> // Exception handling utilities
#include <stdexcept> // Standard exception objects
#include <cassert> // Conditionally compiled macro that compares its argument to zero
#include <cerrno> // Macro containing the last error number
#include <cctype> // functions to determine the type contained in character data
#include <cwctype> // functions for determining the type of wide character data
#include <cstring> // various narrow character string handling functions
#include <cwchar> // various wide and multibyte string handling functions
#include <string> // std::basic_string class template
#include <vector> // std::vector container
#include <deque> // std::deque container
#include <list> // std::list container
#include <set> // std::set and std::multiset associative containers
#include <map> // std::map and std::multimap associative containers
#include <stack> // std::stack container adaptor
#include <queue> // std::queue and std::priority_queue container adaptors
#include <algorithm> // Algorithms that operate on containers
#include <iterator> // Container iterators
#include <cmath> // Common mathematics functions
#include <complex> // Complex number type
#include <valarray> // Class for representing and manipulating arrays of values
#include <numeric> // Numeric operations on values in containers
#include <iosfwd> // forward declarations of all classes in the input/output library
#include <ios> // std::ios_base class, std::basic_ios class template and several typedefs
#include <istream> // std::basic_istream class template and several typedefs
#include <ostream> // std::basic_ostream, std::basic_iostream class templates and several typedefs
#include <iostream> // several standard stream objects
#include <fstream> // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs
#include <sstream> // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs
#include <strstream> // std::strstream, std::istrstream, std::ostrstream(deprecated)
#include <iomanip> // Helper functions to control the format or input and output
#include <streambuf> // std::basic_streambuf class template
#include <cstdio> // C-style input-output functions
#include <locale> // Localization utilities
#include <clocale> // C localization utilities
#include <ciso646> // empty header. The macros that appear in iso646.h in C are keywords in C++
#if __cplusplus >= 201103L
#include <typeindex> // (since C++11) std::type_index
#include <type_traits> // (since C++11) Compile-time type information
#include <chrono> // (since C++11) C++ time utilites
#include <initializer_list> // (since C++11) std::initializer_list class template
#include <tuple> // (since C++11) std::tuple class template
#include <scoped_allocator> // (since C++11) Nested allocator class
#include <cstdint> // (since C++11) fixed-size types and limits of other types
#include <cinttypes> // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions
#include <system_error> // (since C++11) defines std::error_code, a platform-dependent error code
#include <cuchar> // (since C++11) C-style Unicode character conversion functions
#include <array> // (since C++11) std::array container
#include <forward_list> // (since C++11) std::forward_list container
#include <unordered_set> // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers
#include <unordered_map> // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers
#include <random> // (since C++11) Random number generators and distributions
#include <ratio> // (since C++11) Compile-time rational arithmetic
#include <cfenv> // (since C++11) Floating-point environment access functions
#include <codecvt> // (since C++11) Unicode conversion facilities
#include <regex> // (since C++11) Classes, algorithms and iterators to support regular expression processing
#include <atomic> // (since C++11) Atomic operations library
#include <ccomplex> // (since C++11)(deprecated in C++17) simply includes the header <complex>
#include <ctgmath> // (since C++11)(deprecated in C++17) simply includes the headers <ccomplex> (until C++17)<complex> (since C++17) and <cmath>: the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers
#include <cstdalign> // (since C++11)(deprecated in C++17) defines one compatibility macro constant
#include <cstdbool> // (since C++11)(deprecated in C++17) defines one compatibility macro constant
#include <thread> // (since C++11) std::thread class and supporting functions
#include <mutex> // (since C++11) mutual exclusion primitives
#include <future> // (since C++11) primitives for asynchronous computations
#include <condition_variable> // (since C++11) thread waiting conditions
#endif
#if __cplusplus >= 201300L
#include <shared_mutex> // (since C++14) shared mutual exclusion primitives
#endif
#if __cplusplus >= 201500L
#include <any> // (since C++17) std::any class template
#include <optional> // (since C++17) std::optional class template
#include <variant> // (since C++17) std::variant class template
#include <memory_resource> // (since C++17) Polymorphic allocators and memory resources
#include <string_view> // (since C++17) std::basic_string_view class template
#include <execution> // (since C++17) Predefined execution policies for parallel versions of the algorithms
#include <filesystem> // (since C++17) std::path class and supporting functions
#endif

View File

@@ -0,0 +1,40 @@
# Launchers File syntax:
#
# [Must-have property line]
# launcher1.runCommand=<Run Command>
# [Optional extra properties]
# launcher1.displayName=<Display Name, runCommand by default>
# launcher1.buildCommand=<Build Command, Build Command specified in project properties by default>
# launcher1.runDir=<Run Directory, ${PROJECT_DIR} by default>
# launcher1.symbolFiles=<Symbol Files loaded by debugger, ${OUTPUT_PATH} by default>
# launcher1.env.<Environment variable KEY>=<Environment variable VALUE>
# (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=<Run Directory>
# (This value is overwritten by a launcher specific runDir value if the latter exists)
# common.env.<Environment variable KEY>=<Environment variable VALUE>
# (Environment variables from common launcher are merged with launcher specific variables)
# common.symbolFiles=<Symbol Files loaded by debugger>
# (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=<type your run command here>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<code-assistance-data xmlns="http://www.netbeans.org/ns/make-project-private/1">
<code-model-enabled>true</code-model-enabled>
</code-assistance-data>
<data xmlns="http://www.netbeans.org/ns/make-project-private/1">
<activeConfTypeElem>1</activeConfTypeElem>
<activeConfIndexElem>0</activeConfIndexElem>
</data>
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group/>
</open-files>
</project-private>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.cnd.makeproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/make-project/1">
<name>L7Test</name>
<c-extensions/>
<cpp-extensions>cpp</cpp-extensions>
<header-extensions>h</header-extensions>
<sourceEncoding>UTF-8</sourceEncoding>
<make-dep-projects>
<make-dep-project>../L7</make-dep-project>
</make-dep-projects>
<sourceRootList/>
<confList>
<confElem>
<name>Debug</name>
<type>1</type>
</confElem>
<confElem>
<name>Release</name>
<type>1</type>
</confElem>
</confList>
<formatting>
<project-formatting-style>true</project-formatting-style>
<c-style>Apache|Apache</c-style>
<cpp-style>Apache|Apache</cpp-style>
<header-style>Apache|Apache</header-style>
</formatting>
</data>
</configuration>
</project>

338
L7Test/sql/postgresql.sql Normal file
View File

@@ -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
--

35
L7Test/sql/sqlite.sql Normal file
View File

@@ -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');