1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// dlgRepNode.cpp - PostgreSQL Slony-I Node Property
//
//////////////////////////////////////////////////////////////////////////
// wxWindows headers
#include <wx/wx.h>
// App headers
#include "pgAdmin3.h"
#include "slony/dlgRepNode.h"
#include "slony/slCluster.h"
#include "slony/slNode.h"
// pointer to controls
#define txtID CTRL_TEXT("txtID")
BEGIN_EVENT_TABLE(dlgRepNode, dlgProperty)
END_EVENT_TABLE();
dlgProperty *slNodeFactory::CreateDialog(frmMain *frame, pgObject *node, pgObject *parent)
{
return new dlgRepNode(this, frame, (slNode *)node, (slCluster *)parent);
}
dlgRepNode::dlgRepNode(pgaFactory *f, frmMain *frame, slNode *s, slCluster *c)
: dlgRepProperty(f, frame, c, wxT("dlgRepNode"))
{
node = s;
}
pgObject *dlgRepNode::GetObject()
{
return node;
}
int dlgRepNode::Go(bool modal)
{
txtID->SetValidator(numericValidator);
if (node)
{
// edit mode
txtID->SetValue(NumToStr(node->GetSlId()));
txtID->Disable();
}
else
{
// create mode
EnableOK(true);
}
return dlgProperty::Go(modal);
}
pgObject *dlgRepNode::CreateObject(pgCollection *collection)
{
wxString restriction;
if (StrToLong(txtID->GetValue()) > 0)
restriction = txtID->GetValue();
else
restriction = wxT("(SELECT MAX(no_id) FROM ") + cluster->GetSchemaPrefix() + wxT("sl_node)");
pgObject *obj = nodeFactory.CreateObjects(collection, 0,
wxT(" WHERE no_id = ") + restriction);
return obj;
}
void dlgRepNode::CheckChange()
{
if (node)
{
EnableOK(txtComment->GetValue() != node->GetComment());
}
else
{
bool enable = true;
EnableOK(enable);
}
}
wxString dlgRepNode::GetSql()
{
wxString sql;
sql = wxT("-- Create replication node\n\n")
wxT("SELECT ") + cluster->GetSchemaPrefix() + wxT("storenode(");
if (StrToLong(txtID->GetValue()) > 0)
sql += txtID->GetValue();
else
sql += wxT("(SELECT COALESCE(MAX(no_id), 0) + 1 FROM ")
+ cluster->GetSchemaPrefix() + wxT("sl_node)");
sql += wxT(", ") + qtDbString(txtComment->GetValue());
// The spool parameter was removed for Slony 2.0
if (!cluster->ClusterMinimumVersion(2, 0))
sql += wxT(", false");
sql += wxT(");\n");
return sql;
}
|