Beispiel #1
0
std::string evalute::evalute_b2Body(Watch* watch)
{
    std::string name = watch->MemberName;
    std::string result = "";
    b2Body* body = boost::get<b2Body*>(watch->Object);

    if( name == "Type")
    {
        b2BodyType type = body->GetType();
        switch(type)
        {
            case b2_staticBody: result = "StaticBody"; break;
            case b2_dynamicBody: result = "DynamicBody"; break;
            case b2_kinematicBody: result = "KinematicBody"; break;
            default: result = "Unknown type";
        }
    }
    else if(name == "Position") result = VectorToStr(body->GetPosition());
    else if(name == "Angle") result = FloatToStr(body->GetAngle());
    else if(name == "WorldCenter") result = VectorToStr(body->GetWorldCenter());
    else if(name == "LocalCenter") result = VectorToStr(body->GetLocalCenter());
    else if(name == "LinearVelocity") result = VectorToStr(body->GetLinearVelocity());
    else if(name == "AngularVelocity") result = FloatToStr(body->GetAngularVelocity());
    else if(name == "Inertia") result = FloatToStr(body->GetInertia());
    else if(name == "LinearDamping") result = FloatToStr(body->GetLinearDamping());
    else if(name == "AngularDamping")result = FloatToStr(body->GetAngularDamping());
    else if(name == "Bullet") result = BoolToStr(body->IsBullet());
    else if(name == "SleepingAllowed") result = BoolToStr(body->IsSleepingAllowed());
    else if(name == "Awake") result = BoolToStr(body->IsAwake());
    else if(name == "Active") result = BoolToStr(body->IsActive());
    else if(name == "FixedRotation") result = BoolToStr(body->IsFixedRotation());
    bool mass = false;
    std::string massValuePrefix = "", massCenterPrefix = "", massRotationInertiaPrefix = "";
    b2MassData massData;
    body->GetMassData(&massData);
    if( name == "Mass")
    {
        mass = true;
        result = "{ ";
        massValuePrefix = "Value = ";
        massCenterPrefix = ", Center = ";
        massRotationInertiaPrefix = ", RotationInertia = ";
    }
    if( name == "Mass.Value" || mass) result += massValuePrefix + FloatToStr(massData.mass);
    if( name == "Mass.Center" || mass) result += massCenterPrefix + VectorToStr(massData.center);
    if( name == "Mass.RotationInertia" || mass)
        result += massRotationInertiaPrefix + FloatToStr(massData.I);
    if(mass) result += " }";

    if(result == "") result = "Can't evalute";

    return result;
}
Beispiel #2
0
// Read a boolean value
bool sysSettings::Read(const wxString &key, bool *val, bool defaultVal) const
{
	wxString actualDefault = BoolToStr(defaultVal);
	wxString str;

	// Get the default from the defaults file, in preference
	// to the hardcoded value
	if (defaultSettings)
		defaultSettings->Read(key, &actualDefault, BoolToStr(defaultVal));

	Read(key, &str, actualDefault);
	*val = StrToBool(str);
	return true;
}
Beispiel #3
0
wxString dlgSchedule::GetInsertSql()
{
	wxString sql;
	if (!schedule)
	{
		wxString name = GetName();
		wxString jscjobid, list = wxT("NULL");
		if (jobId)
			jscjobid = NumToStr(jobId);
		else
			jscjobid = wxT("<JobId>");

		// Build the various arrays of values
		sql = wxT("INSERT INTO pgagent.pga_schedule (jscid, jscjobid, jscname, jscdesc, jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths, jscenabled, jscstart, jscend)\n")
		      wxT("VALUES(<SchId>, ") + jscjobid + wxT(", ") + qtDbString(name) + wxT(", ") + qtDbString(txtComment->GetValue()) + wxT(", ")
		      + wxT("'") + ChkListBox2PgArray(chkMinutes) + wxT("', ")
		      + wxT("'") + ChkListBox2PgArray(chkHours) + wxT("', ")
		      + wxT("'") + ChkListBox2PgArray(chkWeekdays) + wxT("', ")
		      + wxT("'") + ChkListBox2PgArray(chkMonthdays) + wxT("', ")
		      + wxT("'") + ChkListBox2PgArray(chkMonths) + wxT("', ")
		      + BoolToStr(chkEnabled->GetValue()) + wxT(", ")
		      + wxT("'") + DateToAnsiStr(calStart->GetValue() + timStart->GetValue()) + wxT("'");

		if (calEnd->GetValue().IsValid())
			sql += wxT(", '") + DateToAnsiStr(calEnd->GetValue() + timEnd->GetValue()) + wxT("'");
		else
			sql += wxT(", NULL");

		sql += wxT(");\n");
	}

	return sql;
}
wxString dlgRepSubscription::GetSql()
{
	wxString sql;

	sql = wxT("SELECT ") + cluster->GetSchemaPrefix() + wxT("subscribeset(")
	      + NumToStr(set->GetSlId()) + wxT(", ");

	if (cluster && cluster->ClusterMinimumVersion(1, 1))
	{
		// Actually, provider and receiver are exchanged here.
		sql += NumToStr(cluster->GetLocalNodeID()) + wxT(", ")
		       + NumToStr((long)cbProvider->wxItemContainer::GetClientData(cbProvider->GetCurrentSelection()));
	}
	else
	{
		sql += NumToStr((long)cbProvider->wxItemContainer::GetClientData(cbProvider->GetCurrentSelection())) + wxT(", ")
		       + NumToStr(cluster->GetLocalNodeID());
	}
	sql += wxT(", ")
	       + BoolToStr(chkForward->GetValue());

	// Omit copy?
	if (cluster && cluster->ClusterMinimumVersion(2, 0) &&
	        cluster->GetClusterVersion() != wxT("2.0.0") &&
	        cluster->GetClusterVersion() != wxT("2.0.1") &&
	        cluster->GetClusterVersion() != wxT("2.0.2"))
		sql += wxT(", false");

	sql += wxT(");");

	return sql;
}
Beispiel #5
0
void IOMapViewportDefinition::Write(MdfStream& fd, MapViewportDefinition* mapViewportDef, Version* version, MgTab& tab)
{
    _ASSERT(NULL != mapViewportDef);

    // Set the expected version
    MdfString strVersion = L"2.0.0";

    fd << tab.tab() << "<PrintLayoutElementDefinition xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"PrintLayoutDefinition-" << EncodeString(strVersion) << ".xsd\" version=\"" << EncodeString(strVersion) << "\">" << std::endl; // NOXLATE
    tab.inctab();

    fd << tab.tab() << startStr(sMapViewportDefinition) << std::endl;
    tab.inctab();

    IOPrintLayoutElementDefinition::Write(fd, mapViewportDef, version, tab);

    // Property: MapName
    fd << tab.tab() << startStr(sMapName);
    fd << EncodeString(mapViewportDef->GetMapName());
    fd << endStr(sMapName) << std::endl;

    // Property: HiddenLayerNames
    IOStringObjectCollection::Write(fd, mapViewportDef->GetHiddenLayerNames(), version, sHiddenLayerNames, sName, tab);

    // Property: Locked
    fd << tab.tab() << startStr(sLocked);
    fd << BoolToStr(mapViewportDef->GetIsLocked());
    fd << endStr(sLocked) << std::endl;

    // Property: On
    fd << tab.tab() << startStr(sOn);
    fd << BoolToStr(mapViewportDef->GetIsOn());
    fd << endStr(sOn) << std::endl;

    // Property: MapView
    IOMapView::Write(fd, mapViewportDef->GetMapView(), version, tab);

    tab.dectab();
    fd << tab.tab() << endStr(sMapViewportDefinition) << std::endl;

    tab.dectab();
    fd << tab.tab() << "</PrintLayoutElementDefinition>" << std::endl; // NOXLATE
}
Beispiel #6
0
void dlgSchedule::OnChangeException(wxCommandEvent &ev)
{
	if (!calException->GetValue().IsValid() && timException->GetValue().IsNull())
	{
		wxMessageBox(_("You must enter a valid date and/or time!"), _("Add exception"), wxICON_EXCLAMATION | wxOK, this);
		return;
	}

	wxString exDate, exTime;

	if (calException->GetValue().IsValid())
		exDate = calException->GetValue().FormatDate();
	else
		exDate = _("<any>");

	if (!timException->GetValue().IsNull())
		exTime = timException->GetValue().Format();
	else
		exTime = _("<any>");

	long item = lstExceptions->GetFocusedItem();

	for (int pos = 0; pos < lstExceptions->GetItemCount(); pos++)
	{
		if (item != pos)
		{
			if (lstExceptions->GetText(pos, 0) == exDate &&
			        lstExceptions->GetText(pos, 1) == exTime)
			{
				wxMessageBox(_("The specified exception already exists!"), _("Add exception"), wxICON_EXCLAMATION | wxOK, this);
				return;
			}

			if (lstExceptions->GetText(pos, 0) == exDate &&
			        lstExceptions->GetText(pos, 1) == _("<any>"))
			{
				wxMessageBox(_("An exception already exists for any time on this date!"), _("Add exception"), wxICON_EXCLAMATION | wxOK, this);
				return;
			}

			if (lstExceptions->GetText(pos, 1) == exTime &&
			        lstExceptions->GetText(pos, 0) == _("<any>"))
			{
				wxMessageBox(_("An exception already exists for this time on any date!"), _("Add exception"), wxICON_EXCLAMATION | wxOK, this);
				return;
			}
		}
	}

	lstExceptions->SetItem(item, 0, exDate);
	lstExceptions->SetItem(item, 1, exTime);
	lstExceptions->SetItem(item, 2, BoolToStr(true));
	CheckChange();
}
Beispiel #7
0
void SavePrefToDB()
{
  int i; 

  for( i=0; i < N_DPY_PREFS; i++ )
       XrmPutStringResource( &pref_db.db, pref_db.dpyPrefs[i].name, 
 			     BoolToStr(pref_db.dpyPrefs[i].value ) );
  for( i=0; i < N_CLI_PREFS; i++ )
       XrmPutStringResource( &pref_db.db, pref_db.cliPrefs[i].name,
			     BoolToStr(pref_db.cliPrefs[i].value ) );
  for( i=0; i < N_WIN_PREFS; i++ )
       XrmPutStringResource( &pref_db.db, pref_db.winPrefs[i].name,
			     BoolToStr(pref_db.winPrefs[i].value ) );
  for( i=0; i < N_PROP_PREFS; i++ )
       XrmPutStringResource( &pref_db.db, pref_db.propPrefs[i].name,
			     BoolToStr(pref_db.propPrefs[i].value ) );
  for( i=0; i < N_TREE_PREFS; i++ )
       XrmPutStringResource( &pref_db.db, pref_db.treePrefs[i].name,
			     BoolToStr(pref_db.treePrefs[i].value ) );
}
Beispiel #8
0
std::string evalute::evalute_EnvironObject(Watch* watch)
{
    std::string name = watch->MemberName;
    std::string result = "";
    EnvironObject* obj = boost::get<EnvironObject*>(watch->Object);
    if(name == "Enabled") result = BoolToStr(obj->getEnabled());
    else if(name == "Limit") result = IntToStr(obj->getLimit());

    if(result == "") result = "Can't evalute";

    return result;
}
Beispiel #9
0
std::string evalute::evalute_BodyPart(Watch* watch)
{
    std::string name = watch->MemberName;
    std::string result = "";
    BodyPart* part = boost::get<BodyPart*>(watch->Object);

    if( name == "MaxKindleLevel") result = FloatToStr(part->getMaxKindleLevel());
    else if( name == "MaxDampness") result = FloatToStr(part->getMaxDampness());
    else if( name == "AcceptsCord") result = BoolToStr(part->getAcceptsCord());
    else if( name == "Name") result = part->getName();

    if(result == "") result = "Can't evalute";
    return result;
}
Beispiel #10
0
wxString dlgJob::GetInsertSql()
{
	wxString sql;

	if (!job)
	{
		sql = wxT("INSERT INTO pgagent.pga_job (jobid, jobjclid, jobname, jobdesc, jobenabled, jobhostagent)\n")
		      wxT("SELECT <JobId>, jcl.jclid, ") + qtDbString(GetName()) +
		      wxT(", ") + qtDbString(txtComment->GetValue()) + wxT(", ") + BoolToStr(chkEnabled->GetValue()) +
		      wxT(", ") + qtDbString(txtHostAgent->GetValue()) + wxT("\n")
		      wxT("  FROM pgagent.pga_jobclass jcl WHERE jclname=") + qtDbString(cbJobclass->GetValue()) + wxT(";\n");
	}
	return sql;
}
Beispiel #11
0
wxString dlgStep::GetInsertSql()
{
    wxString sql;

    if (!step)
    {
        wxString name = GetName();
        wxString kind = wxT("sb")[rbxKind->GetSelection()];
        wxString onerror = wxT("fsi")[rbxOnError->GetSelection()];
        wxString db, connstr;
        wxString jstjobid;
        if (jobId)
            jstjobid = NumToStr(jobId);
        else
            jstjobid = wxT("<JobId>");
        // SQL script expected
        if (rbxKind->GetSelection() == 0)
        {
            if (hasConnStrSupport && rbRemoteConn->GetValue())
            {
                connstr = qtDbString(txtConnStr->GetValue().Trim());
                db = wxT("''");
            }
            else
            {
                db = qtDbString(cbDatabase->GetValue().Trim());
                connstr = wxT("''");
            }
        }
        else
        {
            db = wxT("''");
            connstr = wxT("''");
        }

        sql = wxT("INSERT INTO pgagent.pga_jobstep (jstid, jstjobid, jstname, jstdesc, jstenabled, jstkind, jstonerror, jstcode, jstdbname");
        if (hasConnStrSupport)
            sql += wxT(", jstconnstr");
        sql += wxT(")\n ") \
               wxT("SELECT <StpId>, ") + jstjobid + wxT(", ") + qtDbString(name) + wxT(", ") + qtDbString(txtComment->GetValue()) + wxT(", ")
               + BoolToStr(chkEnabled->GetValue()) + wxT(", ") + qtDbString(kind) + wxT(", ")
               + qtDbString(onerror) + wxT(", ") + qtDbString(sqlBox->GetText()) + wxT(", ") + db;
        if (hasConnStrSupport)
        {
            sql += wxT(", ") + connstr;
        }
        sql += wxT(";\n");
    }
    return sql;
}
Beispiel #12
0
wxString slNode::GetSql(ctlTree *browser)
{
	if (sql.IsNull())
	{
		sql = wxT("-- Create replication node ") + GetName() + wxT(".\n\n")
		      wxT("SELECT ") + GetCluster()->GetSchemaPrefix() + wxT("storenode(")
		      + NumToStr(GetSlId()) + wxT(", ")
		      + qtDbString(GetComment());

		if (GetCluster()->ClusterMinimumVersion(1, 1) && !GetCluster()->ClusterMinimumVersion(2, 0))
			sql += wxT(", ") + BoolToStr(GetSpool());
		sql += wxT(");\n");
	}
	return sql;
}
Beispiel #13
0
wxString slSubscription::GetSql(ctlTree *browser)
{
    if (sql.IsNull())
    {
        if (GetReceiverId() != GetCluster()->GetLocalNodeID())
            sql = wxT("-- Subscription must be maintained on receiver node.\n");
        else
            sql = wxT("-- subscribe replication set\n\n")
                  wxT(" SELECT ") + GetCluster()->GetSchemaPrefix() + wxT("subscribeset(")
                  + NumToStr(GetSet()->GetSlId()) + wxT(", ")
                  + NumToStr(GetProviderId()) + wxT(", ")
                  + NumToStr(GetReceiverId()) + wxT(", ")
                  + BoolToStr(GetForward()) + wxT(");");
    }
    return sql;
}
void TEventEntry::ToStr(TDes& aStr)
	{
	if (IsEvent())  							// Event or Action
		{
		aStr.Append(KLitEvent);
		}
	else
		{
		aStr.Append(KLitAction);
		}

	if (iSequenceNumber>=0)
		{
		aStr.AppendFormat(KLit02D, iSequenceNumber);		
		}

	aStr.Append(KLitColon);

	if (iType!=EActionUserWait)
		{
		aStr.AppendFormat(KLitA02D, iAlarmIdx);	// Alarm idx
		}
	
	aStr.AppendFormat(KLitS, &TypeToStr());	// Event name


	if (iType==EEventVisible)  			// Visibility
		{
		aStr.AppendFormat(KLitS, &BoolToStr(iVisible));
		}
	
	if (iType==EEventSetState) 			// State flags
		{
		aStr.AppendFormat(KLitFlags, iAltSFlags);
		}

	if (iType==EActionUserWait)
		{
		aStr.AppendFormat(KLitDSec, iPeriod);
		if (iAlarmIdx==KBogusAlarmIdx)  aStr.AppendFormat(KLitCompleted);
		}
		
	if (iType==EActionSnooze || iType==EActionPauseSound)
		{
		aStr.AppendFormat(KLitForDMinutes, iPeriod/60);
		}
	}
Beispiel #15
0
	static bool HandleNextRecursive (const unsigned short theIndex, Cell * theCell, MatrixOfCellPtr * theSchema){
		LogicAssert (true == IsGoodPtr (theCell));
		LogicAssert (true == IsGoodPtr (theSchema));
		LogicAssert (true == IsGoodSchema (theSchema));

		const unsigned short aTransformedIndex = TransformIndex (theIndex, theCell, theSchema);
		gNumOfCall++;
		if (theIndex >= kDim * kDim){
			++gNumOfSolution;
			if (!(gNumOfSolution % 100000) || true){
				const unsigned long aCurrentSolution = gNumOfSolution;
				ISI_DUMP (aCurrentSolution);
				ISI_DUMP (gNumOfCall);
				ISI_DUMP (static_cast <double >(gNumOfCall)/aCurrentSolution);
				DumpMatrix ("theRowVector", theSchema [0]);
				ISI_DUMP (BoolToStr (IsGoodSolution (theSchema)));
			}
			return false;
		}

		LogicAssert (/*(theIndex >= 0) &&*/ (theIndex < kDim * kDim));
		
		if (theCell [aTransformedIndex].GetStatus () == CellStatus::ConstantInputInitValue){
			return HandleNextRecursive (NextIndex (theIndex), theCell, theSchema);
		}

		bool rit = false;
		for (CellValue aValue = 0; aValue < kDim; ++aValue){
			LogicAssert (theCell [aTransformedIndex].GetValue () != aValue+1);
			LogicAssert (theCell [aTransformedIndex].GetValue () == 0);

            const bool aGood = IsGoodSchemaAvailable (theSchema, aValue, aTransformedIndex);
			if (aGood){
				theCell [aTransformedIndex].SetValue (aValue + 1);
				rit = HandleNextRecursive (NextIndex (theIndex), theCell, theSchema);
				if (rit){
					break;
				}
				else{
					theCell [aTransformedIndex].SetValue (0);
				}
			}
		}
		return rit;
	}
Beispiel #16
0
BOOL CIniFile::ReadBool(
	const char* pszSection, 
	const char* pszIdent, 
	BOOL        bDefault
	)
{
	char    szResult[MAX_PATH];
	BOOL    bResult   = bDefault;
	char    szDefault[MAX_PATH];
		
	BoolToStr(bDefault, szDefault);

	ReadString(
		pszSection, 
		pszIdent,
		szDefault,
		szResult
		);

	bResult = StrToBool(szResult);

	return bResult;
}
Beispiel #17
0
wxString dlgView::GetSql()
{
	wxString sql;
	wxString name;
	wxString withoptions = wxEmptyString;
	bool editQuery = false;

	if (view)
	{
		// edit mode
		name = GetName();

		if (name != view->GetName())
		{
			if (connection->BackendMinimumVersion(8, 3))
			{
				if (connection->BackendMinimumVersion(9, 3))
				{
					if (view->GetMaterializedView())
					{
						AppendNameChange(sql, wxT("MATERIALIZED VIEW ") + view->GetQuotedFullIdentifier());
						editQuery = true;
					}
					else
						AppendNameChange(sql, wxT("VIEW ") + view->GetQuotedFullIdentifier());
				}
				else
					AppendNameChange(sql, wxT("VIEW ") + view->GetQuotedFullIdentifier());
			}
			else
				AppendNameChange(sql, wxT("TABLE ") + view->GetQuotedFullIdentifier());
		}

		if (connection->BackendMinimumVersion(8, 4) && cbSchema->GetName() != view->GetSchema()->GetName())
		{
			if (connection->BackendMinimumVersion(9, 3))
			{
				if (view->GetMaterializedView())
				{
					AppendSchemaChange(sql, wxT("MATERIALIZED VIEW " + qtIdent(view->GetSchema()->GetName()) + wxT(".") + qtIdent(name)));
					editQuery = true;
				}
				else
					AppendSchemaChange(sql, wxT("VIEW " + qtIdent(view->GetSchema()->GetName()) + wxT(".") + qtIdent(name)));
			}
			else
				AppendSchemaChange(sql, wxT("VIEW " + qtIdent(view->GetSchema()->GetName()) + wxT(".") + qtIdent(name)));
		}
		else
			AppendSchemaChange(sql, wxT("TABLE " + qtIdent(view->GetSchema()->GetName()) + wxT(".") + qtIdent(name)));
	}

	name = qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName());
	if (!view || txtSqlBox->GetText().Trim(true).Trim(false) != oldDefinition.Trim(true).Trim(false))
	{
		if (editQuery)
		{
			// Delete the materialized view query
			sql += wxT("DROP MATERIALIZED VIEW ") + name + wxT(";");
		}

		// Check if user creates the materialized view
		if (!chkMaterializedView->GetValue())
		{
			sql += wxT("CREATE OR REPLACE VIEW ") + name;

			if (connection->BackendMinimumVersion(9, 2) && chkSecurityBarrier->GetValue())
				withoptions += wxT("security_barrier=true");
			if (connection->BackendMinimumVersion(9, 4) && cbCheckOption->GetSelection() > 0)
			{
				if (withoptions.Length() > 0)
					withoptions += wxT(", ");
				withoptions += wxT("check_option=") + cbCheckOption->GetValue().Lower();
			}

			if (withoptions.Length() > 0)
				sql += wxT(" WITH (") + withoptions + wxT(")");

			sql += wxT(" AS\n")
			       + txtSqlBox->GetText().Trim(true).Trim(false)
			       + wxT(";\n");
		}
		else if (connection->BackendMinimumVersion(9, 3) && chkMaterializedView->GetValue())
		{
			sql += wxT("CREATE MATERIALIZED VIEW ") + name;

			// Add the parameter of tablespace and storage parameter to create the materilized view
			if (txtFillFactor->GetValue().Trim().Length() > 0 || chkVacEnabled->GetValue() == true || chkToastVacEnabled->GetValue() == true)
			{
				bool fillFactorFlag, toastTableFlag;
				fillFactorFlag = false;
				toastTableFlag = false;

				sql += wxT("\nWITH (");

				if (txtFillFactor->GetValue().Trim().Length() > 0)
				{
					sql += wxT("\n  FILLFACTOR = ") + txtFillFactor->GetValue();
					fillFactorFlag = true;
				}

				bool valChanged = false;
				wxString newVal;
				wxString resetStr;

				if (connection->BackendMinimumVersion(9, 3) && chkCustomVac->GetValue())
				{
					FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_enabled"), BoolToStr(chkVacEnabled->GetValue()));

					if (!fillFactorFlag)
					{
						int position = sql.Find(',', true);
						if (position != wxNOT_FOUND)
							sql.Remove(position, 1);
						toastTableFlag = true;
					}

					newVal =  AppendNum(valChanged, txtBaseVac, tableVacBaseThr);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_vacuum_threshold"), newVal);
					}

					newVal = AppendNum(valChanged, txtBaseAn, tableAnlBaseThr);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_analyze_threshold"), newVal);
					}

					newVal = AppendNum(valChanged, txtFactorVac, tableVacFactor);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_vacuum_scale_factor"), newVal);
					}

					newVal = AppendNum(valChanged, txtFactorAn, tableAnlFactor);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_analyze_scale_factor"), newVal);
					}

					newVal = AppendNum(valChanged, txtVacDelay, tableCostDelay);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_vacuum_cost_delay"), newVal);
					}

					newVal = AppendNum(valChanged, txtVacLimit, tableCostLimit);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_vacuum_cost_limit"), newVal);
					}

					newVal = AppendNum(valChanged, txtFreezeMinAge, tableFreezeMinAge);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_freeze_min_age"), newVal);
					}

					newVal = AppendNum(valChanged, txtFreezeMaxAge, tableFreezeMaxAge);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_freeze_max_age"), newVal);
					}

					newVal = AppendNum(valChanged, txtFreezeTableAge, tableFreezeTableAge);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("autovacuum_freeze_table_age"), newVal);
					}
				}

				if (connection->BackendMinimumVersion(9, 3) && chkCustomToastVac->GetValue())
				{
					FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_enabled"), BoolToStr(chkToastVacEnabled->GetValue()));

					if (!fillFactorFlag && !toastTableFlag)
					{
						int position = sql.Find(',', true);
						if (position != wxNOT_FOUND)
							sql.Remove(position, 1);
					}

					newVal =  AppendNum(valChanged, txtBaseToastVac, toastTableVacBaseThr);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_threshold"), newVal);
					}

					newVal = AppendNum(valChanged, txtFactorToastVac, toastTableVacFactor);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_scale_factor"), newVal);
					}

					newVal = AppendNum(valChanged, txtToastVacDelay, toastTableCostDelay);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_cost_delay"), newVal);
					}

					newVal = AppendNum(valChanged, txtToastVacLimit, toastTableCostLimit);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_vacuum_cost_limit"), newVal);
					}

					newVal = AppendNum(valChanged, txtToastFreezeMinAge, toastTableFreezeMinAge);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_freeze_min_age"), newVal);
					}

					newVal = AppendNum(valChanged, txtToastFreezeMaxAge, toastTableFreezeMaxAge);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_freeze_max_age"), newVal);
					}

					newVal = AppendNum(valChanged, txtToastFreezeTableAge, toastTableFreezeTableAge);
					if (valChanged)
					{
						valChanged = false;
						FillAutoVacuumParameters(sql, resetStr, wxT("toast.autovacuum_freeze_table_age"), newVal);
					}
				}

				sql += wxT("\n)\n");
			}

			if (cboTablespace->GetCurrentSelection() > 0 && cboTablespace->GetOIDKey() > 0)
				sql += wxT("\nTABLESPACE ") + qtIdent(cboTablespace->GetValue());

			wxString sqlDefinition;
			bool tmpLoopFlag = true;
			sqlDefinition = txtSqlBox->GetText().Trim(true).Trim(false);

			// Remove semicolon from the end of the string
			while(tmpLoopFlag)
			{
				int length = sqlDefinition.Len();
				int position = sqlDefinition.Find(';', true);
				if ((position != wxNOT_FOUND) && (position = (length - 1)))
					sqlDefinition.Remove(position, 1);
				else
					tmpLoopFlag = false;
			}

			sql += wxT(" AS\n")
			       + sqlDefinition;

			if (chkMatViewWithData->GetValue())
				sql += wxT("\n WITH DATA;\n");
			else
				sql += wxT("\n WITH NO DATA;\n");
		}
	}
	else if (view)
	{
		if (!chkMaterializedView->GetValue())
		{
			if (connection->BackendMinimumVersion(9, 2))
			{
				if (chkSecurityBarrier->GetValue() && view->GetSecurityBarrier() != wxT("true"))
					sql += wxT("ALTER VIEW ") + name + wxT("\n  SET (security_barrier=true);\n");
				else if (!chkSecurityBarrier->GetValue() && view->GetSecurityBarrier() == wxT("true"))
					sql += wxT("ALTER VIEW ") + name + wxT("\n  SET (security_barrier=false);\n");
			}

			if (connection->BackendMinimumVersion(9, 4)
			        && cbCheckOption->GetValue().Lower().Cmp(view->GetCheckOption()) != 0)
			{
				if (cbCheckOption->GetValue().Cmp(wxT("No")) == 0)
					sql += wxT("ALTER VIEW ") + name + wxT(" RESET (check_option);\n");
				else
					sql += wxT("ALTER VIEW ") + name + wxT("\n  SET (check_option=") + cbCheckOption->GetValue().Lower() + wxT(");\n");
			}

			if (withoptions.Length() > 0)
				sql += wxT(" WITH (") + withoptions + wxT(")");
		}
		else if (connection->BackendMinimumVersion(9, 3) && chkMaterializedView->GetValue())
		{
			if (txtFillFactor->GetValue() != view->GetFillFactor())
			{
				// If fill factor value get changed then set the new value
				if (txtFillFactor->GetValue().Trim().Length() > 0)
				{
					sql += wxT("ALTER MATERIALIZED VIEW ") + name
					       +  wxT("\n  SET (FILLFACTOR=")
					       +  txtFillFactor->GetValue() + wxT(");\n");
				}
				else
				{
					// If fill factor value get changed and value is not blank then do the reset
					sql += wxT("ALTER MATERIALIZED VIEW ") + name
					       +  wxT(" RESET(\n")
					       wxT("  FILLFACTOR\n")
					       wxT(");\n");
				}
			}

			bool isPopulatedFlag = false;

			if (view->GetIsPopulated().Cmp(wxT("t")) == 0)
				isPopulatedFlag = true;

			if (chkMatViewWithData->GetValue() != isPopulatedFlag)
			{
				// If checkbox is checked then set WITH NO DATA
				if (isPopulatedFlag)
				{
					sql += wxT("REFRESH MATERIALIZED VIEW ") + name
					       +  wxT(" WITH NO DATA;\n");
				}
				else
				{
					sql += wxT("REFRESH MATERIALIZED VIEW ") + name
					       +  wxT(" WITH DATA;\n");
				}
			}

			// Altered the storage parameters for the materialized view?
			if (!chkCustomVac->GetValue())
			{
				if (hasVacuum)
				{
					sql += wxT("ALTER MATERIALIZED VIEW ") + name
					       +  wxT(" RESET(\n")
					       wxT("  autovacuum_enabled,\n")
					       wxT("  autovacuum_vacuum_threshold,\n")
					       wxT("  autovacuum_analyze_threshold,\n")
					       wxT("  autovacuum_vacuum_scale_factor,\n")
					       wxT("  autovacuum_analyze_scale_factor,\n")
					       wxT("  autovacuum_vacuum_cost_delay,\n")
					       wxT("  autovacuum_vacuum_cost_limit,\n")
					       wxT("  autovacuum_freeze_min_age,\n")
					       wxT("  autovacuum_freeze_max_age,\n")
					       wxT("  autovacuum_freeze_table_age\n")
					       wxT(");\n");
				}
			}
			else
			{
				wxString vacStr;
				bool changed = (chkVacEnabled->GetValue() != tableVacEnabled);

				bool valChanged = false;
				wxString newVal;
				wxString setStr;
				wxString resetStr;

				if (changed)
				{
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_enabled"), BoolToStr(chkVacEnabled->GetValue()));
				}
				newVal =  AppendNum(valChanged, txtBaseVac, tableVacBaseThr);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_vacuum_threshold"), newVal);
				}

				newVal = AppendNum(valChanged, txtBaseAn, tableAnlBaseThr);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_analyze_threshold"), newVal);
				}

				newVal = AppendNum(valChanged, txtFactorVac, tableVacFactor);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_vacuum_scale_factor"), newVal);
				}

				newVal = AppendNum(valChanged, txtFactorAn, tableAnlFactor);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_analyze_scale_factor"), newVal);
				}

				newVal = AppendNum(valChanged, txtVacDelay, tableCostDelay);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_vacuum_cost_delay"), newVal);
				}

				newVal = AppendNum(valChanged, txtVacLimit, tableCostLimit);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_vacuum_cost_limit"), newVal);
				}

				newVal = AppendNum(valChanged, txtFreezeMinAge, tableFreezeMinAge);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_freeze_min_age"), newVal);
				}

				newVal = AppendNum(valChanged, txtFreezeMaxAge, tableFreezeMaxAge);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_freeze_max_age"), newVal);
				}

				newVal = AppendNum(valChanged, txtFreezeTableAge, tableFreezeTableAge);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("autovacuum_freeze_table_age"), newVal);
				}

				if (!setStr.IsEmpty())
				{
					vacStr = wxT("ALTER MATERIALIZED VIEW ") + name + setStr + wxT("\n);\n");;
					changed = true;
				}
				if (!resetStr.IsEmpty())
				{
					vacStr += wxT("ALTER MATERIALIZED VIEW ") + name + resetStr + wxT("\n);\n");;
					changed = true;
				}
				if (changed)
					sql += vacStr;
			}

			if (!chkCustomToastVac->GetValue())
			{
				if (toastTableHasVacuum)
				{
					sql += wxT("ALTER MATERIALIZED VIEW ") + name
					       +  wxT(" RESET(\n")
					       wxT("  toast.autovacuum_enabled,\n")
					       wxT("  toast.autovacuum_vacuum_threshold,\n")
					       wxT("  toast.autovacuum_analyze_threshold,\n")
					       wxT("  toast.autovacuum_vacuum_scale_factor,\n")
					       wxT("  toast.autovacuum_analyze_scale_factor,\n")
					       wxT("  toast.autovacuum_vacuum_cost_delay,\n")
					       wxT("  toast.autovacuum_vacuum_cost_limit,\n")
					       wxT("  toast.autovacuum_freeze_min_age,\n")
					       wxT("  toast.autovacuum_freeze_max_age,\n")
					       wxT("  toast.autovacuum_freeze_table_age\n")
					       wxT(");\n");
				}
			}
			else
			{
				wxString vacStr;
				bool changed = (chkToastVacEnabled->GetValue() != toastTableVacEnabled);
				bool valChanged = false;
				wxString newVal;
				wxString setStr;
				wxString resetStr;
				if (changed)
				{
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_enabled"), BoolToStr(chkToastVacEnabled->GetValue()));
				}
				newVal =  AppendNum(valChanged, txtBaseToastVac, toastTableVacBaseThr);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_threshold"), newVal);
				}

				newVal = AppendNum(valChanged, txtFactorToastVac, toastTableVacFactor);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_scale_factor"), newVal);
				}

				newVal = AppendNum(valChanged, txtToastVacDelay, toastTableCostDelay);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_cost_delay"), newVal);
				}

				newVal = AppendNum(valChanged, txtToastVacLimit, toastTableCostLimit);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_vacuum_cost_limit"), newVal);
				}

				newVal = AppendNum(valChanged, txtToastFreezeMinAge, toastTableFreezeMinAge);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_freeze_min_age"), newVal);
				}

				newVal = AppendNum(valChanged, txtToastFreezeMaxAge, toastTableFreezeMaxAge);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_freeze_max_age"), newVal);
				}

				newVal = AppendNum(valChanged, txtToastFreezeTableAge, toastTableFreezeTableAge);
				if (valChanged)
				{
					valChanged = false;
					FillAutoVacuumParameters(setStr, resetStr, wxT("toast.autovacuum_freeze_table_age"), newVal);
				}

				if (!setStr.IsEmpty())
				{
					vacStr = wxT("ALTER MATERIALIZED VIEW ") + name + setStr + wxT("\n);\n");
					changed = true;
				}
				if (!resetStr.IsEmpty())
				{
					vacStr += wxT("ALTER MATERIALIZED VIEW ") + name + resetStr + wxT("\n);\n");
					changed = true;
				}
				if (changed)
					sql += vacStr;
			}

			if (cboTablespace->GetOIDKey() != view->GetTablespaceOid())
			{
				sql += wxT("ALTER MATERIALIZED VIEW ") + name
				       +  wxT("\n  SET TABLESPACE ") + qtIdent(cboTablespace->GetValue())
				       + wxT(";\n");
			}
		}
	}

	if (view)
		AppendOwnerChange(sql, wxT("TABLE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()));
	else
		AppendOwnerNew(sql, wxT("TABLE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()));


	sql +=  GetGrant(wxT("arwdRxt"), wxT("TABLE ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()));

	if (connection->BackendMinimumVersion(9, 3) && chkMaterializedView->GetValue())
		AppendComment(sql, wxT("MATERIALIZED VIEW ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()), view);
	else
		AppendComment(sql, wxT("VIEW ") + qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()), view);

	if (seclabelPage && connection->BackendMinimumVersion(9, 1))
		sql += seclabelPage->GetSqlForSecLabels(wxT("VIEW"), qtIdent(cbSchema->GetValue()) + wxT(".") + qtIdent(GetName()));

	return sql;
}
Beispiel #18
0
// Write a boolean value
bool sysSettings::WriteBool(const wxString &key, bool value)
{
	return Write(key, BoolToStr(value));
}
Beispiel #19
0
bool TDataManager::SaveData(TKHR* khr, string fileName)
{
	AnsiString path2 = ExtractFilePath(Application->ExeName);
	chdir(path2.c_str());

	formMain->xmlReader->Active = true;

	formMain->xmlReader->DocumentElement = formMain->xmlReader->CreateElement("KHR","KHRNode");
	_di_IXMLNode Root = formMain->xmlReader->DocumentElement;
	Root->SetAttribute("number", STDSTR(khr->szNumber));
	Root->SetAttribute("name", STDSTR(khr->szTitle));
	Root->SetAttribute("begin", DateToStr(khr->dtStartDate));
	Root->SetAttribute("orderNum", STDSTR(khr->szOrder));

/*	_di_IXMLNode KHRNumberNode = Root->AddChild("number");
	KHRNumberNode->Text = ((khr->szNumber).c_str());
	_di_IXMLNode KHRNameNode = Root->AddChild("name");
	KHRNameNode->Text = khr->szTitle.c_str();

	_di_IXMLNode KHRBeginNode = Root->AddChild("begin");
	KHRBeginNode->Text = DateToStr(khr->dtStartDate);

	_di_IXMLNode KHROrderNode  = Root->AddChild("orderNum");
	KHROrderNode->Text = khr->szOrder.c_str();
	//--------------------------------------------------------------------------
	_di_IXMLNode KHRWorksNode = Root->AddChild("workList");
	_di_IXMLNode KHRLinksNode = Root->AddChild("linkList");
*/
	// заполнение работами
	for (unsigned int i = 0; i < khr->Works.size(); i++)
	{
		_di_IXMLNode Works = Root->AddChild("work");
		Works->SetAttribute("number", (int)khr->Works[i]->ulWorkNum);
		Works->SetAttribute("type", BoolToStr(khr->Works[i]->bPayment));
		Works->SetAttribute("begin", DateToStr(khr->Works[i]->dtStart));
		Works->SetAttribute("end", DateToStr(khr->Works[i]->dtEnd));
		Works->SetAttribute("move", DateToStr(khr->Works[i]->dtMoveTo));
		Works->SetAttribute("length", (int)khr->Works[i]->ulLength);
		//=== !!!!!!!!!!!!!! добавить информацию о стрелке
		Works->SetAttribute("pay", BoolToStr(khr->Works[i]->havePayment));

		for (unsigned int j = 0; j < khr->Works[i]->connectPayment.size(); j++)
		{
			_di_IXMLNode ConnPaymentPoint = Works->AddChild("paypoint");
			ConnPaymentPoint->SetAttribute("x", FloatToStrF(khr->Works[i]->connectPayment[j].x, ffFixed, 10, 2));
			ConnPaymentPoint->SetAttribute("y", FloatToStrF(khr->Works[i]->connectPayment[j].y, ffFixed, 10, 2));
		}

/*
		_di_IXMLNode workSetting = Works->AddChild("wnumber");
		workSetting->Text = khr->Works[i]->ulWorkNum;
		workSetting = Works->AddChild("wtype");
		workSetting->Text = BoolToStr(khr->Works[i]->bPayment);
		workSetting = Works->AddChild("wname");
		workSetting->Text = khr->Works[i]->szTitle.c_str();
		workSetting = Works->AddChild("wbegin");
		workSetting->Text = DateToStr(khr->Works[i]->dtStart);
		workSetting = Works->AddChild("wend");
		workSetting->Text = DateToStr(khr->Works[i]->dtEnd);
		workSetting = Works->AddChild("wmove");
		workSetting->Text = DateToStr(khr->Works[i]->dtMoveTo);
		workSetting = Works->AddChild("wlength");
		workSetting->Text = khr->Works[i]->ulLength;
		//=== !!!!!!!!!!!!!! добавить информацию о стрелке
		workSetting = Works->AddChild("wpay");
		workSetting->Text = BoolToStr(khr->Works[i]->havePayment);
		_di_IXMLNode wpcoord = Works->AddChild("wpcoord");
		for (unsigned int j = 0; j < khr->Works[i]->connectPayment.size(); j++)
		{
			_di_IXMLNode wpoint = wpcoord->AddChild("point");
			_di_IXMLNode wpointx = wpoint->AddChild("x");
			wpointx->Text = FloatToStr(khr->Works[i]->connectPayment[j].x);
			_di_IXMLNode wpointy = wpoint->AddChild("y");
			wpointy->Text = FloatToStr(khr->Works[i]->connectPayment[j].y);
		}*/

		Works->SetAttribute("stage", BoolToStr(khr->Works[i]->haveStage));

		// исполнители работы  - добавить проверку на наличие исполнителя
		for (unsigned int j = 0; j < khr->Works[i]->WorkVolume.size(); j++)
		{
			_di_IXMLNode workExec = Works->AddChild("executor"/**/);
			workExec->SetAttribute("number"/**/, (int)khr->Works[i]->WorkVolume[j]->ulExecutor);

			// трудоёмкость по исполнителям по кварталам
			for (int k=0; k < 4; k++)
			{
				_di_IXMLNode volume = workExec->AddChild("quartvol"/**/);
				volume->SetAttribute("volume"/**/, (int)khr->Works[i]->WorkVolume[j]->ulVolume[k]);
			}
		}

/*
		workSetting = Works->AddChild("wstage");
		workSetting->Text = BoolToStr(khr->Works[i]->haveStage);

		// исполнители работы  - добавить проверку на наличие исполнителя
		_di_IXMLNode workExecList = Works->AddChild("wexeclist");
		for (unsigned int j = 0; j < khr->Works[i]->WorkVolume.size(); j++)
		{
			_di_IXMLNode workExec = workExecList->AddChild("wexec");
			_di_IXMLNode execInfo = workExec->AddChild("wenum");
			execInfo->Text = khr->Works[i]->WorkVolume[j]->ulExecutor;

			// трудоёмкость по исполнителям по кварталам
			_di_IXMLNode qInfo = workExec->AddChild("wevList");
			for (int k=0; k < 4; k++)
			{
				_di_IXMLNode volume = qInfo->AddChild("volume");
				volume->Text = khr->Works[i]->WorkVolume[j]->ulVolume[k];
			}
		}
*/
		// зависимости работы
		for (unsigned int j = 0; j < khr->Works[i]->WorkDep.size(); j++)
		{
			if (khr->Works[i]->WorkDep[j]->ulWork != 0)
			{
				_di_IXMLNode dependence = Works->AddChild("dependence");
				dependence->SetAttribute("need", BoolToStr(khr->Works[i]->WorkDep[j]->bNeedToStart));
				dependence->SetAttribute("work", (int)khr->Works[i]->WorkDep[j]->ulWork);

			}
		}

		Works->SetAttribute("state", (int)khr->Works[i]->eWorkState);

		// список команд
		for (int j = 0; j < MAX_COMMANDS; j++)
		{
			if (khr->Works[i]->eCommand[j]!= 0)
			{
				_di_IXMLNode comm = Works->AddChild("command");
				comm->SetAttribute("code"/**/, (int)khr->Works[i]->eCommand[j]);
			}
		}

		// координаты
		Works->SetAttribute("x", FloatToStrF(khr->Works[i]->center.x, ffFixed, 10, 2));
		Works->SetAttribute("y", FloatToStrF(khr->Works[i]->center.y, ffFixed, 10, 2));

		Works->SetAttribute("name", STDSTR(khr->Works[i]->szTitle));

/*		// зависимости работы
		_di_IXMLNode workDepList = Works->AddChild("deplist");
		for (unsigned int j = 0; j < khr->Works[i]->WorkDep.size(); j++)
		{
			if (khr->Works[i]->WorkDep[j]->ulWork != 0)
			{
				_di_IXMLNode dependence = workDepList->AddChild("dependence");
				_di_IXMLNode dep = dependence->AddChild("depneed");
				dep->Text = BoolToStr(khr->Works[i]->WorkDep[j]->bNeedToStart);
				dep = dependence->AddChild("depnum");
				dep->Text = khr->Works[i]->WorkDep[j]->ulWork;
			}
		}
		_di_IXMLNode workState = Works->AddChild("wstate");
		workState->Text = khr->Works[i]->eWorkState;

		// список команд
		_di_IXMLNode workComList = Works->AddChild("comlist");
		for (int j = 0; j < MAX_COMMANDS; j++)
		{
			if (khr->Works[i]->eCommand[j]!= 0)
			{
				_di_IXMLNode comm = workComList->AddChild("command");
				comm->Text =khr->Works[i]->eCommand[j];
			}
		}
		// координаты
		_di_IXMLNode coord 	= Works->AddChild("coord");
		_di_IXMLNode coordx = coord->AddChild("x");
		coordx->Text = FloatToStr(khr->Works[i]->center.x);
		_di_IXMLNode coordy = coord->AddChild("y");
		coordy->Text = FloatToStr(khr->Works[i]->center.y);
*/
	}

	// ссылки
	for (unsigned int i = 0; i < khr->Links.size(); i++)
	{
		_di_IXMLNode Links = Root->AddChild("link");
//		_di_IXMLNode linkDepList = Links->AddChild("deplist");

		Links->SetAttribute("number", (int)khr->Links[i]->ulWorkNum);
//		_di_IXMLNode linkSetting = Links->AddChild("wnumber");
//		linkSetting->Text = khr->Links[i]->ulWorkNum;

		Links->SetAttribute("text", STR(khr->Links[i]->slText->Text));
//		linkSetting = Links->AddChild("wtext");
//		string str;
//		for (int k=0; k < khr->Links[i]->slText->Count; k++)
//		{
//			 str.append(STR(khr->Links[i]->slText->Strings[k]));
//			 str.append("\n");
//		}
//		linkSetting->Text = STDSTR(str);

		Links->SetAttribute("date", DateToStr(khr->Links[i]->dtDate));
//		linkSetting = Links->AddChild("wdate");
//		linkSetting->Text = DateToStr(khr->Links[i]->dtDate);
		Links->SetAttribute("khrnum", STDSTR(khr->Links[i]->szNumber));
//		linkSetting = Links->AddChild("wkhrnum");
//		linkSetting->Text = khr->Links[i]->szNumber.c_str();

		for (unsigned int j = 0; j < khr->Links[i]->WorkDep.size(); j++)
		{
			if (khr->Links[i]->WorkDep[j]->ulWork != 0)
			{
				_di_IXMLNode dependence = Links->AddChild("linkdependence");
				dependence->SetAttribute("need", BoolToStr(khr->Links[i]->WorkDep[j]->bNeedToStart));
				dependence->SetAttribute("num", (int)khr->Links[i]->WorkDep[j]->ulWork);
//				_di_IXMLNode dep = dependence->AddChild("depneed");
//				dep->Text = BoolToStr(khr->Links[i]->WorkDep[j]->bNeedToStart);
//				dep = dependence->AddChild("depnum");
//				dep->Text = khr->Links[i]->WorkDep[j]->ulWork;
			}
		}
		// координаты
		Links->SetAttribute("x", FloatToStrF(khr->Links[i]->center.x, ffFixed, 10, 2));
		Links->SetAttribute("y", FloatToStrF(khr->Links[i]->center.y, ffFixed, 10, 2));
//		_di_IXMLNode coord 	= Links->AddChild("coord");
//		_di_IXMLNode coordx = coord->AddChild("x");
//		coordx->Text = FloatToStr(khr->Links[i]->center.x);
//		_di_IXMLNode coordy = coord->AddChild("y");
//		coordy->Text = FloatToStr(khr->Links[i]->center.y);
	}

/*		// ссылки
		for (unsigned int i = 0; i < khr->Links.size(); i++)
	{
		_di_IXMLNode Links = KHRLinksNode->AddChild("link");
		_di_IXMLNode linkDepList = Links->AddChild("deplist");

		_di_IXMLNode linkSetting = Links->AddChild("wnumber");
		linkSetting->Text = khr->Links[i]->ulWorkNum;

		linkSetting = Links->AddChild("wtext");
		string str;
		for (int k=0; k < khr->Links[i]->slText->Count; k++)
		{
			 str.append(STR(khr->Links[i]->slText->Strings[k]));
			 str.append("\n");
		}
		linkSetting->Text = STDSTR(str);

		linkSetting = Links->AddChild("wdate");
		linkSetting->Text = DateToStr(khr->Links[i]->dtDate);
		linkSetting = Links->AddChild("wkhrnum");
		linkSetting->Text = khr->Links[i]->szNumber.c_str();

		for (unsigned int j = 0; j < khr->Links[i]->WorkDep.size(); j++)
		{
			if (khr->Links[i]->WorkDep[j]->ulWork != 0)
			{
				_di_IXMLNode dependence = linkDepList->AddChild("dependence");
				_di_IXMLNode dep = dependence->AddChild("depneed");
				dep->Text = BoolToStr(khr->Links[i]->WorkDep[j]->bNeedToStart);
				dep = dependence->AddChild("depnum");
				dep->Text = khr->Links[i]->WorkDep[j]->ulWork;
			}
		}
		// координаты
		_di_IXMLNode coord 	= Links->AddChild("coord");
		_di_IXMLNode coordx = coord->AddChild("x");
		coordx->Text = FloatToStr(khr->Links[i]->center.x);
		_di_IXMLNode coordy = coord->AddChild("y");
		coordy->Text = FloatToStr(khr->Links[i]->center.y);
	}
*/


	// заполнение доплатами
	for (unsigned int i = 0; i < khr->Payments.size(); i++)
	{
		_di_IXMLNode Works = Root->AddChild("payment");
		Works->SetAttribute("number", (int)khr->Payments[i]->ulWorkNum);
		Works->SetAttribute("type", BoolToStr(khr->Payments[i]->bPayment));
		Works->SetAttribute("begin", DateToStr(khr->Payments[i]->dtStart));
		Works->SetAttribute("end", DateToStr(khr->Payments[i]->dtEnd));
		Works->SetAttribute("move", DateToStr(khr->Payments[i]->dtMoveTo));
		Works->SetAttribute("length", (int)khr->Payments[i]->ulLength);

		// исполнители работы  - добавить проверку на наличие исполнителя
		for (unsigned int j = 0; j < khr->Payments[i]->WorkVolume.size(); j++)
		{
			_di_IXMLNode workExec = Works->AddChild("executor"/**/);
			workExec->SetAttribute("number"/**/, (int)khr->Payments[i]->WorkVolume[j]->ulExecutor);

			// трудоёмкость по исполнителям по кварталам
			for (int k=0; k < 4; k++)
			{
				_di_IXMLNode volume = workExec->AddChild("quartvol"/**/);
				volume->SetAttribute("volume"/**/, (int)khr->Payments[i]->WorkVolume[j]->ulVolume[k]);
			}
		}

		// зависимости работы
		for (unsigned int j = 0; j < khr->Payments[i]->WorkDep.size(); j++)
		{
			if (khr->Payments[i]->WorkDep[j]->ulWork != 0)
			{
				_di_IXMLNode dependence = Works->AddChild("dependence");
				dependence->SetAttribute("need", BoolToStr(khr->Payments[i]->WorkDep[j]->bNeedToStart));
				dependence->SetAttribute("work", (int)khr->Payments[i]->WorkDep[j]->ulWork);

			}
		}

		Works->SetAttribute("state", (int)khr->Payments[i]->eWorkState);

		// список команд
		for (int j = 0; j < MAX_COMMANDS; j++)
		{
			if (khr->Payments[i]->eCommand[j]!= 0)
			{
				_di_IXMLNode comm = Works->AddChild("command");
				comm->SetAttribute("code"/**/, (int)khr->Payments[i]->eCommand[j]);
			}
		}

		// координаты
		Works->SetAttribute("x", FloatToStrF(khr->Payments[i]->center.x, ffFixed, 10, 2));
		Works->SetAttribute("y", FloatToStrF(khr->Payments[i]->center.y, ffFixed, 10, 2));

		Works->SetAttribute("name", STDSTR(khr->Payments[i]->szTitle));
	}

/*
	//--------------------------------------------------------------------------
	_di_IXMLNode KHRPaymentNode = Root->AddChild("paymentList");
	// заполнение доплатами
	for (unsigned int i = 0; i < khr->Payments.size(); i++)
	{
		_di_IXMLNode Works = KHRPaymentNode->AddChild("payment");
		_di_IXMLNode workSetting = Works->AddChild("wnumber");
		workSetting->Text = khr->Payments[i]->ulWorkNum;
		workSetting = Works->AddChild("wtype");
		workSetting->Text = (khr->Payments[i]->bPayment)? "1" : "0";
		workSetting = Works->AddChild("wname");
		workSetting->Text = khr->Payments[i]->szTitle.c_str();
		workSetting = Works->AddChild("wbegin");
		workSetting->Text = DateToStr(khr->Payments[i]->dtStart);
		workSetting = Works->AddChild("wend");
		workSetting->Text = DateToStr(khr->Payments[i]->dtEnd);
		workSetting = Works->AddChild("wmove");
		workSetting->Text = DateToStr(khr->Payments[i]->dtMoveTo);
		workSetting = Works->AddChild("wlength");
		workSetting->Text = khr->Payments[i]->ulLength;

		// исполнители работы  - добавить проверку на наличие исполнителя
		_di_IXMLNode workExecList = Works->AddChild("wexeclist");
		for (unsigned int j = 0; j < khr->Payments[i]->WorkVolume.size(); j++)
		{
			_di_IXMLNode workExec = workExecList->AddChild("wexec");
			_di_IXMLNode execInfo = workExec->AddChild("wenum");
			execInfo->Text = khr->Payments[i]->WorkVolume[j]->ulExecutor;

			// трудоёмкость по исполнителям по кварталам
			_di_IXMLNode qInfo = workExec->AddChild("wevList");
			for (int k=0; k < 4; k++)
			{
				_di_IXMLNode volume = qInfo->AddChild("volume");
				volume->Text = khr->Payments[i]->WorkVolume[j]->ulVolume[k];
			}
		}

		// зависимости работы
		_di_IXMLNode workDepList = Works->AddChild("deplist");
		for (unsigned int j = 0; j < khr->Payments[i]->WorkDep.size(); j++)
		{
			if (khr->Payments[i]->WorkDep[j]->ulWork != 0)
			{
				_di_IXMLNode dependence = workDepList->AddChild("dependence");
				_di_IXMLNode dep = dependence->AddChild("depneed");
				dep->Text = (khr->Payments[i]->WorkDep[j]->bNeedToStart) ? "0" : "1";
				dep = dependence->AddChild("depnum");
				dep->Text = khr->Payments[i]->WorkDep[j]->ulWork;
			}
		}
		_di_IXMLNode workState = Works->AddChild("wstate");
		workState->Text = khr->Payments[i]->eWorkState;

		// список команд
		_di_IXMLNode workComList = Works->AddChild("comlist");
		for (int j = 0; j < MAX_COMMANDS; j++)
		{
			if (khr->Payments[i]->eCommand[j]!= 0)
			{
				_di_IXMLNode comm = workComList->AddChild("command");
				comm->Text =khr->Payments[i]->eCommand[j];
			}
		}
		// координаты
		_di_IXMLNode coord 	= Works->AddChild("coord");
		_di_IXMLNode coordx = coord->AddChild("x");
		coordx->Text = FloatToStr(khr->Payments[i]->center.x);
		_di_IXMLNode coordy = coord->AddChild("y");
		coordy->Text = FloatToStr(khr->Payments[i]->center.y);

	}
	//--------------------------------------------------------------------------
*/
	// заполнение Вех
	for (unsigned int i = 0; i < khr->Stages.size(); i++)
	{
		_di_IXMLNode Stage = Root->AddChild("stage");
		Stage->SetAttribute("number", (int)khr->Stages[i]->ulStageNum);
		Stage->SetAttribute("x", FloatToStrF(khr->Stages[i]->center.x, ffFixed, 10, 2));
		Stage->SetAttribute("y", FloatToStrF(khr->Stages[i]->center.y, ffFixed, 10, 2));

		for (unsigned int j = 0; j < khr->Stages[i]->connect.size(); j++)
		{
			_di_IXMLNode point = Stage->AddChild("point");
			point->SetAttribute("x", FloatToStrF(khr->Stages[i]->connect[j].x, ffFixed, 10, 2));
			point->SetAttribute("y", FloatToStrF(khr->Stages[i]->connect[j].y, ffFixed, 10, 2));
		}
	}
/*	// заполнение Вех
	_di_IXMLNode KHRStageNode = Root->AddChild("stageList");
	for (unsigned int i = 0; i < khr->Stages.size(); i++)
	{
		_di_IXMLNode Stage = KHRStageNode->AddChild("stage");
		_di_IXMLNode stageNum = Stage->AddChild("snumber");
		stageNum->Text = khr->Stages[i]->ulStageNum;
		_di_IXMLNode stageX = Stage->AddChild("x");
		stageX->Text = FloatToStr(khr->Stages[i]->center.x);
		_di_IXMLNode stageY = Stage->AddChild("y");
		stageY->Text = FloatToStr(khr->Stages[i]->center.y);
		_di_IXMLNode vector = Stage->AddChild("vector");
		for (unsigned int j = 0; j < khr->Stages[i]->connect.size(); j++)
		{
			_di_IXMLNode point = vector->AddChild("point");
			_di_IXMLNode x = point->AddChild("x");
			x->Text = FloatToStr(khr->Stages[i]->connect[j].x);
			_di_IXMLNode y = point->AddChild("y");
			y->Text = FloatToStr(khr->Stages[i]->connect[j].y);
		}
	}
*/
	//--------------------------------------------------------------------------
	// заполнение стрелок
	for (unsigned int i = 0; i < khr->Connects.size(); i++)
	{
		_di_IXMLNode connect = Root->AddChild("connect");
		connect->SetAttribute("begin", (int)khr->Connects[i]->begin);
		connect->SetAttribute("end", (int)khr->Connects[i]->end);
		connect->SetAttribute("need"/**/, khr->Connects[i]->needStart);
		for(int j=0; j<khr->Connects[i]->connect.size(); j++)
		{
			_di_IXMLNode point = connect->AddChild("point");
			point->SetAttribute("x", FloatToStrF(khr->Connects[i]->connect[j].x, ffFixed, 10, 2));
			point->SetAttribute("y", FloatToStrF(khr->Connects[i]->connect[j].y, ffFixed, 10, 2));
		}
	}
/*	// заполнение стрелок
	_di_IXMLNode KHRConnectNode = Root->AddChild("connectList");
	for (unsigned int i = 0; i < khr->Connects.size(); i++)
	{
		_di_IXMLNode connect = KHRConnectNode->AddChild("connect");
		_di_IXMLNode begin = connect->AddChild("begin");
		begin->Text = khr->Connects[i]->begin;
		_di_IXMLNode end = connect->AddChild("end");
		end->Text = khr->Connects[i]->end;
		_di_IXMLNode bneed = connect->AddChild("bneed");
		bneed->Text = BoolToStr(khr->Connects[i]->needStart);
		_di_IXMLNode vector = connect->AddChild("vector");
		for(int j=0; j<khr->Connects[i]->connect.size(); j++)
		{
			_di_IXMLNode point = vector->AddChild("point");
			_di_IXMLNode x = point->AddChild("x");
			x->Text = FloatToStr(khr->Connects[i]->connect[j].x);
			_di_IXMLNode y = point->AddChild("y");
			y->Text = FloatToStr(khr->Connects[i]->connect[j].y);
		}
	}
*/
	//--------------------------------------------------------------------------
	for (unsigned int i = 0; i < khr->Executors.size(); i++)
	{
		if(khr->Executors[i]->szName.c_str() != "")
		{
			_di_IXMLNode exec = Root->AddChild("executor");
			exec->SetAttribute("id", (int)khr->Executors[i]->id);
			exec->SetAttribute("name", STDSTR(khr->Executors[i]->szName));
		}
	}

	for (unsigned int i = 0; i < khr->Signatures.size(); i++)
	{
		if(khr->Signatures[i]->szName.c_str() != "")
		{
			_di_IXMLNode sig = Root->AddChild("signature");
			sig->SetAttribute("chair", STDSTR(khr->Signatures[i]->szChair));
			sig->SetAttribute("name", STDSTR(khr->Signatures[i]->szName));
		}
	}
/*	_di_IXMLNode KHRExecutNode = Root->AddChild("executors");
	for (unsigned int i = 0; i < khr->Executors.size(); i++)
	{
		if(khr->Executors[i]->szName.c_str() != "")
		{
			_di_IXMLNode exect = KHRExecutNode->AddChild("exec");
			_di_IXMLNode ExNode = exect->AddChild("exID");
			ExNode->Text = khr->Executors[i]->id;
			ExNode = exect->AddChild("exName");
			ExNode->Text = khr->Executors[i]->szName.c_str();
		}
	}

	_di_IXMLNode KHRSignNode = Root->AddChild("signature");
	for (unsigned int i = 0; i < khr->Signatures.size(); i++)
	{
		if(khr->Signatures[i]->szName.c_str() != "")
		{
			_di_IXMLNode sig = KHRSignNode->AddChild("sig");
			_di_IXMLNode SigNode = sig->AddChild("chair");
			SigNode->Text = khr->Signatures[i]->szChair.c_str();
			SigNode = sig->AddChild("sigName");
			SigNode->Text = khr->Signatures[i]->szName.c_str();
		}
	}
*/
	Root->SetAttribute("file", STDSTR(khr->szFileName));
/*	_di_IXMLNode KHRFileNode = Root->AddChild("file");
   //	KHRFileNode->Text = fileName.c_str();
	KHRFileNode->Text = khr->szFileName.c_str();
   //	fileName+=".xml";
*/
	formMain->xmlReader->SaveToFile(fileName.c_str());
	formMain->xmlReader->Active = false;

	return true;
}
Beispiel #20
0
wxString dlgRole::GetSql()
{
	int pos;
	wxString sql;
	wxString name = GetName();

	wxString passwd = txtPasswd->GetValue();
	bool createDB = chkCreateDB->GetValue(),
	     createRole = chkCreateRole->GetValue(),
	     superuser = chkSuperuser->GetValue(),
	     inherits = chkInherits->GetValue(),
	     canLogin = chkCanLogin->GetValue(),
	     replication = chkReplication->GetValue();

	if (role)
	{
		// Edit Mode

		AppendNameChange(sql, wxT("ROLE ") + role->GetQuotedFullIdentifier());


		wxString options;
		if (canLogin != role->GetCanLogin())
		{
			if (canLogin)
				options = wxT(" LOGIN");
			else
				options = wxT(" NOLOGIN");
		}
		if (canLogin && !passwd.IsEmpty())
			options += wxT(" ENCRYPTED PASSWORD ") + qtDbString(connection->EncryptPassword(name, passwd));

		if (createDB != role->GetCreateDatabase() || createRole != role->GetCreateRole()
		        || superuser != role->GetSuperuser() || inherits != role->GetInherits()
		        || replication != role->GetReplication())
		{
			options += wxT("\n ");

			if (superuser != role->GetSuperuser())
			{
				if (superuser)
					options += wxT(" SUPERUSER");
				else
					options += wxT(" NOSUPERUSER");
			}
			if (inherits != role->GetInherits())
			{
				if (inherits)
					options += wxT(" INHERIT");
				else
					options += wxT(" NOINHERIT");
			}
			if (createDB != role->GetCreateDatabase())
			{
				if (createDB)
					options += wxT(" CREATEDB");
				else
					options += wxT(" NOCREATEDB");
			}
			if (createRole != role->GetCreateRole())
			{
				if (createRole)
					options += wxT(" CREATEROLE");
				else
					options += wxT(" NOCREATEROLE");
			}
			if (connection->BackendMinimumVersion(9, 1))
			{
				if (replication != role->GetReplication())
				{
					if (replication)
						options += wxT(" REPLICATION");
					else
						options += wxT(" NOREPLICATION");
				}
			}
		}
		if (!datValidUntil->GetValue().IsValid() || DateToStr(datValidUntil->GetValue() + timValidUntil->GetValue()) != DateToStr(role->GetAccountExpires()))
		{
			if (datValidUntil->GetValue().IsValid())
				options += wxT("\n   VALID UNTIL ") + qtDbString(DateToAnsiStr(datValidUntil->GetValue() + timValidUntil->GetValue()));
			else if (!role->GetIsValidInfinity() && role->GetAccountExpires().GetValue() != -1)
				options += wxT("\n   VALID UNTIL 'infinity'");
		}

		if (txtConnectionLimit->GetValue().Length() == 0)
		{
			if (role->GetConnectionLimit() != -1)
			{
				options += wxT(" CONNECTION LIMIT -1");
			}
		}
		else
		{
			if (txtConnectionLimit->GetValue() != NumToStr(role->GetConnectionLimit()))
			{
				options += wxT(" CONNECTION LIMIT ") + txtConnectionLimit->GetValue();
			}
		}

		if (!options.IsNull())
			sql += wxT("ALTER ROLE ") + qtIdent(name) + options + wxT(";\n");

		if (!connection->BackendMinimumVersion(9, 5) &&
				chkUpdateCat->GetValue() != role->GetUpdateCatalog())
		{
			if (!connection->HasPrivilege(wxT("Table"), wxT("pg_authid"), wxT("update")))
				sql += wxT(" -- Can't update 'UpdateCatalog privilege: can't write to pg_authid.\n")
				       wxT("-- ");

			sql += wxT("UPDATE pg_authid SET rolcatupdate=") + BoolToStr(chkUpdateCat->GetValue())
			       + wxT(" WHERE OID=") + role->GetOidStr() + wxT(";\n");
		}
		int cnt = lbRolesIn->GetCount();
		wxArrayString tmpRoles = role->GetRolesIn();

		// check for added roles
		for (pos = 0 ; pos < cnt ; pos++)
		{
			wxString roleName = lbRolesIn->GetString(pos);

			int index = tmpRoles.Index(roleName);
			if (index >= 0)
			{
				// role membership unchanged
				tmpRoles.RemoveAt(index);
			}
			else
			{
				bool admin = false;
				if (roleName.Right(PGROLE_ADMINOPTION_LEN) == PGROLE_ADMINOPTION)
				{
					admin = true;
					roleName = roleName.Left(roleName.Length() - PGROLE_ADMINOPTION_LEN);
				}
				else
				{
					// new role membership without admin option
					index = tmpRoles.Index(roleName + PGROLE_ADMINOPTION);
					if (index >= 0)
					{
						// old membership with admin option
						tmpRoles.RemoveAt(index);
						sql += wxT("REVOKE ADMIN OPTION FOR ") + qtIdent(roleName)
						       + wxT(" FROM ") + qtIdent(name) + wxT(";\n");
						continue;
					}
				}

				index = tmpRoles.Index(roleName);
				if (index >= 0)
				{
					// admin option added to existing membership
					tmpRoles.RemoveAt(index);
				}

				sql += wxT("GRANT ") + qtIdent(roleName)
				       +  wxT(" TO ") + qtIdent(name);

				if (admin)
					sql += wxT(" WITH ADMIN OPTION");

				sql += wxT(";\n");
			}
		}

		// check for removed roles
		for (pos = 0 ; pos < (int)tmpRoles.GetCount() ; pos++)
		{
			sql += wxT("REVOKE ") + qtIdent(tmpRoles.Item(pos))
			       +  wxT(" FROM ") + qtIdent(name) + wxT(";\n");
		}
	}
	else
	{
		// Create Mode
		sql = wxT(
		          "CREATE ROLE ") + qtIdent(name);
		if (canLogin)
		{
			sql += wxT(" LOGIN");
			if (!passwd.IsEmpty())
				sql += wxT(" ENCRYPTED PASSWORD ") + qtDbString(connection->EncryptPassword(name, passwd));
		}

		if (createDB || createRole || !inherits || superuser)
			sql += wxT("\n ");
		if (superuser)
			sql += wxT(" SUPERUSER");
		if (!inherits)
			sql += wxT(" NOINHERIT");
		if (createDB)
			sql += wxT(" CREATEDB");
		if (createRole)
			sql += wxT(" CREATEROLE");
		if (connection->BackendMinimumVersion(9, 1))
		{
			if (replication)
				sql += wxT(" REPLICATION");
		}
		if (datValidUntil->GetValue().IsValid())
			sql += wxT("\n   VALID UNTIL ") + qtDbString(DateToAnsiStr(datValidUntil->GetValue() + timValidUntil->GetValue()));
		else
			sql += wxT("\n   VALID UNTIL 'infinity'");

		if (txtConnectionLimit->GetValue().Length() > 0)
		{
			sql += wxT(" CONNECTION LIMIT ") + txtConnectionLimit->GetValue();
		}

		int cnt = lbRolesIn->GetCount();
		wxString grants;

		if (cnt)
		{
			wxString roleName;

			for (pos = 0 ; pos < cnt ; pos++)
			{
				bool admin = false;
				roleName = lbRolesIn->GetString(pos);
				if (roleName.Right(PGROLE_ADMINOPTION_LEN) == PGROLE_ADMINOPTION)
				{
					roleName = roleName.Left(roleName.Length() - PGROLE_ADMINOPTION_LEN);
					admin = true;

				}
				grants += wxT("GRANT ") + qtIdent(roleName)
				          +  wxT(" TO ") + qtIdent(name);

				if (admin)
					grants += wxT(" WITH ADMIN OPTION;\n");
				else
					grants += wxT(";\n");
			}
		}
		sql += wxT(";\n") + grants;

		if (superuser && !chkUpdateCat->GetValue() &&
			!connection->BackendMinimumVersion(9, 5))
			sql += wxT("UPDATE pg_authid SET rolcatupdate=false WHERE rolname=") + qtDbString(name) + wxT(";\n");
	}

	wxArrayString vars;
	wxString dbname;
	wxString parameter;
	wxString value;

	size_t index;

	if (role)
	{
		for (index = 0 ; index < role->GetVariables().GetCount() ; index++)
			vars.Add(role->GetVariables().Item(index));
	}

	int cnt = lstVariables->GetItemCount();

	// check for changed or added vars
	for (pos = 0 ; pos < cnt ; pos++)
	{
		wxString newDb = lstVariables->GetText(pos);
		wxString newVar = lstVariables->GetText(pos, 1);
		wxString newVal = lstVariables->GetText(pos, 2);

		wxString oldVal;

		for (index = 0 ; index < vars.GetCount() ; index += 3)
		{
			dbname = vars.Item(index);
			parameter = vars.Item(index + 1);
			value = vars.Item(index + 2);

			if (newDb == dbname && newVar == parameter)
			{
				oldVal = value;
				vars.RemoveAt(index);
				vars.RemoveAt(index);
				vars.RemoveAt(index);
				break;
			}
		}
		if (oldVal != newVal)
		{
			if (newDb.Length() == 0)
				sql += wxT("ALTER ROLE ") + qtIdent(name);
			else
				sql += wxT("ALTER ROLE ") + qtIdent(name) + wxT(" IN DATABASE ") + newDb;

			if (newVar != wxT("search_path") && newVar != wxT("temp_tablespaces"))
			{
				sql += wxT("\n  SET ") + newVar + wxT(" = '") + newVal + wxT("';\n");
			}
			else
			{
				sql += wxT("\n  SET ") + newVar + wxT(" = ") + newVal + wxT(";\n");
			}
		}
	}

	// check for removed vars
	for (pos = 0 ; pos < (int)vars.GetCount() ; pos += 3)
	{
		dbname = vars.Item(pos);
		parameter = vars.Item(pos + 1);
		value = vars.Item(pos + 2);

		if (dbname.Length() == 0)
		{
			sql += wxT("ALTER ROLE ") + qtIdent(name)
			       +  wxT(" RESET ") + parameter
			       + wxT(";\n");
		}
		else
		{
			sql += wxT("ALTER ROLE ") + qtIdent(name) + wxT(" IN DATABASE ") + dbname
			       +  wxT(" RESET ") + parameter + wxT(";\n");
		}
	}

	AppendComment(sql, wxT("ROLE"), 0, role);

	if (seclabelPage && connection->BackendMinimumVersion(9, 2))
		sql += seclabelPage->GetSqlForSecLabels(wxT("ROLE"), qtIdent(name));

	return sql;
}
int main() {
	std::vector< int > intCases;
	intCases.push_back(123);
	intCases.push_back(0);
	intCases.push_back(-456);
	intCases.push_back(INT_MAX);
	intCases.push_back(INT_MIN);

	std::vector< float > floatCases;
	floatCases.push_back(12.34f);
	floatCases.push_back(0.0f);
	floatCases.push_back(-3.1415926575);
	floatCases.push_back(1e20);
	floatCases.push_back(1e-20);

	std::vector< std::string > strIntCases;
	strIntCases.push_back("123");
	strIntCases.push_back("0");
	strIntCases.push_back("-456");

	std::vector< std::string > strFloatCases;
	strFloatCases.push_back("12.34");
	strFloatCases.push_back("0.0");
	strFloatCases.push_back("-3.1415926535");
	strFloatCases.push_back("123");
	strFloatCases.push_back("-456");
	strFloatCases.push_back("0");

	std::vector< std::string > strVec2Cases;
	strVec2Cases.push_back("1.2,-9.8");
	strVec2Cases.push_back("0.0,0.0");
	strVec2Cases.push_back("-1.0,2.0");
	strVec2Cases.push_back("1,2.3");
	strVec2Cases.push_back("3.141592,6");

	std::vector< std::string > strBoolCases;
	strBoolCases.push_back("true");
	strBoolCases.push_back("false");
	strBoolCases.push_back("1");
	strBoolCases.push_back("0");
	strBoolCases.push_back("TRUE");
	strBoolCases.push_back("FaLSe");

	std::vector< b2Vec2 > vec2Cases;
	vec2Cases.push_back(b2Vec2(5.5f, 10.1f));
	vec2Cases.push_back(b2Vec2(0.0f, 0.0f));
	vec2Cases.push_back(b2Vec2(-3.4f, -2.8f));
	vec2Cases.push_back(b2Vec2(1e10, 1e-10));

	std::vector< bool > boolCases;
	boolCases.push_back(false);
	boolCases.push_back(true);

	typedef std::vector< int >::const_iterator IntIterator;
	typedef std::vector< float >::const_iterator FloatIterator;
	typedef std::vector< std::string >::const_iterator StrIterator;
	typedef std::vector< b2Vec2 >::const_iterator Vec2Iterator;
	typedef std::vector< bool >::const_iterator BoolIterator;

	bool (*pIntToStr)(int, std::string *) = &YPT::ConvertIntToStr;
	bool (*pStrToInt)(const std::string &, int *) = &YPT::ConvertStrToInt;
	bool (*pStrToFloat)(const std::string &, float *) = &YPT::ConvertStrToFloat;
	bool (*pStrToVec2)(const std::string &, b2Vec2 *) = &YPT::ConvertStrToVec2;
	bool (*pStrToBool)(const std::string &, bool *) = &YPT::ConvertStrToBool;
	bool (*pFloatToStr)(float, std::string *) = &YPT::ConvertFloatToStr;
	bool (*pVec2ToStr)(const b2Vec2 &, std::string *) = &YPT::ConvertVec2ToStr;
	bool (*pBoolToStr)(bool, std::string *) = &YPT::ConvertBoolToStr;

	boost::function<bool (int, std::string *)> IntToStr(pIntToStr);
	boost::function<bool (const std::string &, int *)> StrToInt(pStrToInt);
	boost::function<bool (const std::string &, float *)> StrToFloat(pStrToFloat);
	boost::function<bool (const std::string &, b2Vec2 *)> StrToVec2(pStrToVec2);
	boost::function<bool (const std::string &, bool *)> StrToBool(pStrToBool);
	boost::function<bool (float, std::string *)> FloatToStr(pFloatToStr);
	boost::function<bool (const b2Vec2 &, std::string *)> Vec2ToStr(pVec2ToStr);
	boost::function<bool (bool, std::string *)> BoolToStr(pBoolToStr);

	// test - ConvertIntToStr
	std::cout << std::endl << "---YPT::ConvertIntToStr" << std::endl;
	for (IntIterator it = intCases.begin(); it != intCases.end(); ++it) {
		Test(IntToStr, *it);
	}

	// test - ConvertStrToInt
	std::cout << std::endl << "---YPT::ConvertStrToInt" << std::endl;
	for (StrIterator it = strIntCases.begin(); it != strIntCases.end(); ++it) {
		Test(StrToInt, *it);
	}

	// test - ConvertStrToFloat
	std::cout << std::endl << "---YPT::ConvertStrToFloat" << std::endl;
	for (StrIterator it = strFloatCases.begin(); it != strFloatCases.end(); ++it) {
		Test(StrToFloat, *it);
	}

	// test - ConvertStrToVec2
	std::cout << std::endl << "---YPT::ConvertStrToVec2" << std::endl;
	for (StrIterator it = strVec2Cases.begin(); it != strVec2Cases.end(); ++it) {
		Test(StrToVec2, *it);
	}

	// test - ConvertStrToBool
	std::cout << std::endl << "---YPT::ConvertStrToBool" << std::endl;
	for (StrIterator it = strBoolCases.begin(); it != strBoolCases.end(); ++it) {
		Test(StrToBool, *it);
	}

	// test - ConvertFloatToStr
	std::cout << std::endl << "---YPT::ConvertFloatToStr" << std::endl;
	for (FloatIterator it = floatCases.begin(); it != floatCases.end(); ++it) {
		Test(FloatToStr, *it);
	}

	// test - ConvertVec2ToStr
	std::cout << std::endl << "---YPT::ConvertVec2ToStr" << std::endl;
	for (Vec2Iterator it = vec2Cases.begin(); it != vec2Cases.end(); ++it) {
		Test(Vec2ToStr, *it);
	}

	// test - ConvertBoolToStr
	std::cout << std::endl << "---YPT::ConvertBoolToStr" << std::endl;
	for (BoolIterator it = boolCases.begin(); it != boolCases.end(); ++it) {
		Test(BoolToStr, *it);
	}

	return 0;
}
Beispiel #22
0
wxString dlgSchedule::GetUpdateSql()
{
	wxString sql, name;
	name = GetName();

	if (schedule)
	{
		// edit mode
		wxString vars;

		if (name != schedule->GetName())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscname = ") + qtDbString(name));
		}
		if (txtComment->GetValue() != schedule->GetComment())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscdesc = ") + qtDbString(txtComment->GetValue()));
		}

		if ((!chkEnabled->IsChecked() && schedule->GetEnabled()) || (chkEnabled->IsChecked() && !schedule->GetEnabled()))
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscenabled = ") + BoolToStr(chkEnabled->IsChecked()));
		}

		if (calStart->GetValue() + timStart->GetValue() != schedule->GetStart())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscstart = '") + DateToAnsiStr(calStart->GetValue() + timStart->GetValue()) + wxT("'"));
		}

		if (calEnd->GetValue().IsValid())
		{
			if (schedule->GetEnd().IsValid())
			{
				if (calEnd->GetValue() + timEnd->GetValue() != schedule->GetEnd())
				{
					if (!vars.IsEmpty())
						vars.Append(wxT(", "));
					vars.Append(wxT("jscend = '") + DateToAnsiStr(calEnd->GetValue() + timEnd->GetValue()) + wxT("'"));
				}
			}
			else
			{
				if (!vars.IsEmpty())
					vars.Append(wxT(", "));
				vars.Append(wxT("jscend = '") + DateToAnsiStr(calEnd->GetValue() + wxTimeSpan()) + wxT("'"));
			}
		}
		else
		{
			if (schedule->GetEnd().IsValid())
			{
				if (!vars.IsEmpty())
					vars.Append(wxT(", "));
				vars.Append(wxT("jscend = NULL"));
			}
		}

		if (ChkListBox2StrArray(chkMinutes) != schedule->GetMinutes())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscminutes = '") + ChkListBox2PgArray(chkMinutes) + wxT("'"));
		}

		if (ChkListBox2StrArray(chkHours) != schedule->GetHours())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jschours = '") + ChkListBox2PgArray(chkHours) + wxT("'"));
		}

		if (ChkListBox2StrArray(chkWeekdays) != schedule->GetWeekdays())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscweekdays = '") + ChkListBox2PgArray(chkWeekdays) + wxT("'"));
		}

		if (ChkListBox2StrArray(chkMonthdays) != schedule->GetMonthdays())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscmonthdays = '") + ChkListBox2PgArray(chkMonthdays) + wxT("'"));
		}

		if (ChkListBox2StrArray(chkMonths) != schedule->GetMonths())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jscmonths = '") + ChkListBox2PgArray(chkMonths) + wxT("'"));
		}

		if (!vars.IsEmpty())
			sql = wxT("UPDATE pgagent.pga_schedule SET ") + vars + wxT("\n")
			      wxT(" WHERE jscid=") + NumToStr(recId) + wxT(";\n");
	}
	else
	{
		// create mode
		// Handled by GetInsertSQL
	}

	unsigned int x = 0;
	int y = 0;
	wxDateTime tmpDateTime;
	wxString newDate, newTime;

	// Remove old exceptions
	for (x = 0; x < deleteExceptions.Count(); x++)
	{
		sql += wxT("DELETE FROM pgagent.pga_exception\n  WHERE jexid = ") + deleteExceptions[x] + wxT(";\n");
	}

	// Update dirty exceptions
	for (y = 0; y < lstExceptions->GetItemCount(); y++)
	{
		if (lstExceptions->GetText(y, 2) == BoolToStr(true) &&
		        lstExceptions->GetText(y, 3) != wxEmptyString)
		{
			if (lstExceptions->GetText(y, 0) == _("<any>"))
				newDate = wxT("null");
			else
			{
				tmpDateTime.ParseFormat(lstExceptions->GetText(y, 0), wxT("%x"));
				newDate = wxT("'") + tmpDateTime.FormatISODate() + wxT("'");
			}

			if (lstExceptions->GetText(y, 1) == _("<any>"))
				newTime = wxT("null");
			else
			{
				tmpDateTime.ParseTime(lstExceptions->GetText(y, 1));
				newTime = wxT("'") + tmpDateTime.FormatISOTime() + wxT("'");
			}

			sql += wxT("UPDATE pgagent.pga_exception SET jexdate = ") + newDate +
			       wxT(", jextime = ") + newTime + wxT("\n  WHERE jexid = ") +
			       lstExceptions->GetText(y, 3) + wxT(";\n");
		}
	}

	// Insert new exceptions
	for (y = 0; y < lstExceptions->GetItemCount(); y++)
	{
		if (lstExceptions->GetText(y, 2) == wxEmptyString &&
		        lstExceptions->GetText(y, 3) == wxEmptyString)
		{
			if (lstExceptions->GetText(y, 0) == _("<any>"))
				newDate = wxT("null");
			else
			{
				tmpDateTime.ParseFormat(lstExceptions->GetText(y, 0), wxT("%x"));
				newDate = wxT("'") + tmpDateTime.FormatISODate() + wxT("'");
			}

			if (lstExceptions->GetText(y, 1) == _("<any>"))
				newTime = wxT("null");
			else
			{
				tmpDateTime.ParseTime(lstExceptions->GetText(y, 1));
				newTime = wxT("'") + tmpDateTime.FormatISOTime() + wxT("'");
			}

			sql += wxT("INSERT INTO pgagent.pga_exception (jexscid, jexdate, jextime)\n  VALUES (")
			       + NumToStr(recId) + wxT(", ") + newDate + wxT(", ") + newTime + wxT(");\n");

		}
	}



	return sql;
}
Beispiel #23
0
int dlgSchedule::Go(bool modal)
{
	int returncode;

	if (schedule)
	{
		// edit mode
		recId = schedule->GetRecId();
		txtID->SetValue(NumToStr(recId));
		chkEnabled->SetValue(schedule->GetEnabled());
		calStart->SetValue(schedule->GetStart().GetDateOnly());
		timStart->SetTime(schedule->GetStart());
		if (schedule->GetEnd().IsValid())
		{
			calEnd->SetValue(schedule->GetEnd().GetDateOnly());
			timEnd->SetTime(schedule->GetEnd());
		}
		else
		{
			calEnd->SetValue(wxInvalidDateTime);
			timEnd->SetTime(wxInvalidDateTime);
			timEnd->Disable();
		}

		unsigned int x;
		for (x = 0; x < schedule->GetMonths().Length(); x++ )
			if (schedule->GetMonths()[x] == 't') chkMonths->Check(x, true);

		for (x = 0; x < schedule->GetMonthdays().Length(); x++ )
			if (schedule->GetMonthdays()[x] == 't') chkMonthdays->Check(x, true);

		for (x = 0; x < schedule->GetWeekdays().Length(); x++ )
			if (schedule->GetWeekdays()[x] == 't') chkWeekdays->Check(x, true);

		for (x = 0; x < schedule->GetHours().Length(); x++ )
			if (schedule->GetHours()[x] == 't') chkHours->Check(x, true);

		for (x = 0; x < schedule->GetMinutes().Length(); x++ )
			if (schedule->GetMinutes()[x] == 't') chkMinutes->Check(x, true);

		wxString id, dateToken, timeToken;
		wxDateTime val;
		long pos = 0;
		wxStringTokenizer tkz(schedule->GetExceptions(), wxT("|"));

		while (tkz.HasMoreTokens() )
		{
			dateToken.Empty();
			timeToken.Empty();

			// First is the ID
			id = tkz.GetNextToken();

			// Look for a date
			if (tkz.HasMoreTokens())
				dateToken = tkz.GetNextToken();

			// Look for a time
			if (tkz.HasMoreTokens())
				timeToken = tkz.GetNextToken();

			if (!dateToken.IsEmpty() && !timeToken.IsEmpty())
			{
				val.ParseDate(dateToken);
				val.ParseTime(timeToken);
				pos = lstExceptions->AppendItem(0, val.FormatDate(), val.FormatTime());
			}
			else if (!dateToken.IsEmpty() && timeToken.IsEmpty())
			{
				val.ParseDate(dateToken);
				pos = lstExceptions->AppendItem(0, val.FormatDate(), _("<any>"));
			}
			else if (dateToken.IsEmpty() && !timeToken.IsEmpty())
			{
				val.ParseTime(timeToken);
				pos = lstExceptions->AppendItem(0, _("<any>"), val.FormatTime());
			}

			lstExceptions->SetItem(pos, 2, BoolToStr(false));
			lstExceptions->SetItem(pos, 3, id);

		}

		wxNotifyEvent ev;
	}
	else
	{
		// create mode
	}

	// setup de-/select buttons
	InitSelectAll();

	returncode = dlgProperty::Go(modal);

	SetSqlReadOnly(true);

	return returncode;
}
Beispiel #24
0
wxString dlgJob::GetUpdateSql()
{
	wxString sql, name;
	name = GetName();

	if (job)
	{
		// edit mode
		wxString vars;

		if (name != job->GetName())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jobname = ") + qtDbString(name));
		}
		if (cbJobclass->GetValue().Trim() != job->GetJobclass())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jobjclid= (SELECT jclid FROM pgagent.pga_jobclass WHERE jclname=") + qtDbString(cbJobclass->GetValue()) + wxT(")"));
		}
		if (chkEnabled->GetValue() != job->GetEnabled())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jobenabled = ") + BoolToStr(chkEnabled->GetValue()));
		}
		if (txtHostAgent->GetValue() != job->GetHostAgent())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jobhostagent = ") + qtDbString(txtHostAgent->GetValue()));
		}
		if (txtComment->GetValue() != job->GetComment())
		{
			if (!vars.IsEmpty())
				vars.Append(wxT(", "));
			vars.Append(wxT("jobdesc = ") + qtDbString(txtComment->GetValue()));
		}

		if (!vars.IsEmpty())
			sql = wxT("UPDATE pgagent.pga_job SET ") + vars + wxT("\n")
			      wxT(" WHERE jobid=") + NumToStr(recId) + wxT(";\n");

	}
	else
	{
		// create mode
		// done by GetInsertSql
	}

	int pos, index;

	wxArrayString tmpSteps = previousSteps;
	for (pos = 0 ; pos < lstSteps->GetItemCount() ; pos++)
	{
		wxString str = lstSteps->GetText(pos, 3);
		if (!str.IsEmpty())
		{
			index = tmpSteps.Index(str);
			if (index >= 0)
				tmpSteps.RemoveAt(index);
		}

		if(lstSteps->GetItemData(pos))
		{
			str = *(wxString *)lstSteps->GetItemData(pos);
			if (!str.IsEmpty())
				sql += str;
		}
	}

	for (index = 0 ; index < (int)tmpSteps.GetCount() ; index++)
	{
		sql += wxT("DELETE FROM pgagent.pga_jobstep WHERE jstid=")
		       + NumToStr(((pgaStep *)StrToLong(tmpSteps.Item(index)))->GetRecId()) + wxT(";\n");
	}

	wxArrayString tmpSchedules = previousSchedules;
	for (pos = 0 ; pos < lstSchedules->GetItemCount() ; pos++)
	{
		wxString str = lstSchedules->GetText(pos, 3);
		if (!str.IsEmpty())
		{
			index = tmpSchedules.Index(str);
			if (index >= 0)
				tmpSchedules.RemoveAt(index);
		}
		if(lstSchedules->GetItemData(pos))
		{
			str = *(wxString *)lstSchedules->GetItemData(pos);
			if (!str.IsEmpty())
				sql += str;
		}
	}

	for (index = 0 ; index < (int)tmpSchedules.GetCount() ; index++)
	{
		sql += wxT("DELETE FROM pgagent.pga_schedule WHERE jscid=")
		       + NumToStr(((pgaStep *)StrToLong(tmpSchedules.Item(index)))->GetRecId()) + wxT(";\n");
	}

	return sql;

}
Beispiel #25
0
wxString dlgStep::GetUpdateSql()
{
    wxString sql;

    if (step)
    {
        // edit mode
        wxString name = GetName();
        wxString kind = wxT("sb")[rbxKind->GetSelection()];

        wxString vars;
        if (name != step->GetName())
        {
            if (!vars.IsEmpty())
                vars.Append(wxT(", "));
            vars.Append(wxT("jstname=") + qtDbString(name));
        }
        if (chkEnabled->GetValue() != step->GetEnabled())
        {
            if (!vars.IsEmpty())
                vars.Append(wxT(", "));
            vars.Append(wxT("jstenabled=") + BoolToStr(chkEnabled->GetValue()));
        }
        if (hasConnStrSupport && kind == wxT("s"))
        {
            if (rbRemoteConn->GetValue())
            {
                if (step->HasConnectionString())
                {
                    if (txtConnStr->GetValue().Trim() != step->GetConnStr())
                    {
                        if (!vars.IsEmpty())
                            vars.Append(wxT(", "));
                        vars.Append(wxT("jstconnstr=") + qtDbString(txtConnStr->GetValue().Trim()));
                    }
                }
                else
                {
                    if (!vars.IsEmpty())
                        vars.Append(wxT(", "));
                    vars.Append(wxT("jstconnstr=") + qtDbString(txtConnStr->GetValue().Trim()) + wxT(", "));
                    vars.Append(wxT("jstdbname=''"));
                }
            }
            else
            {
                if (step->HasConnectionString())
                {
                    if (!vars.IsEmpty())
                        vars.Append(wxT(", "));
                    vars.Append(wxT("jstdbname=") + qtDbString(cbDatabase->GetValue().Trim()) + wxT(", "));
                    vars.Append(wxT("jstconnstr=''"));
                }
                else
                {
                    if (cbDatabase->GetValue().Trim() != step->GetDbname())
                    {
                        if (!vars.IsEmpty())
                            vars.Append(wxT(", "));
                        vars.Append(wxT("jstdbname=") + qtDbString(cbDatabase->GetValue().Trim()));
                    }
                }
            }
        }
        else if (kind == wxT("s"))
        {
            if (cbDatabase->GetValue().Trim() != step->GetDbname())
            {
                if (!vars.IsEmpty())
                    vars.Append(wxT(", "));
                vars.Append(wxT("jstdbname=") + qtDbString(cbDatabase->GetValue().Trim()));
            }
        }
        else
        {
            if (!vars.IsEmpty())
                vars.Append(wxT(", "));
            vars.Append(wxT("jstdbname=''"));
            if (hasConnStrSupport)
                vars.Append(wxT(", jstconnstr=''"));
        }
        if (rbxKind->GetSelection() != kind)
        {
            if (!vars.IsEmpty())
                vars.Append(wxT(", "));
            vars.Append(wxT("jstkind=") + qtDbString(kind));
        }
        if (rbxOnError->GetSelection() != wxString(wxT("fsi")).Find(step->GetOnErrorChar()))
        {
            wxString onerror = wxT("fsi")[rbxOnError->GetSelection()];
            if (!vars.IsEmpty())
                vars.Append(wxT(", "));
            vars.Append(wxT("jstonerror='") + onerror + wxT("'"));
        }
        if (txtComment->GetValue() != step->GetComment())
        {
            if (!vars.IsEmpty())
                vars.Append(wxT(", "));
            vars.Append(wxT("jstdesc=") + qtDbString(txtComment->GetValue()));
        }
        if (sqlBox->GetText() != step->GetCode())
        {
            {
                if (!vars.IsEmpty())
                    vars.Append(wxT(", "));
                vars.Append(wxT("jstcode=") + qtDbString(sqlBox->GetText()));
            }
        }

        if (!vars.IsEmpty())
            sql = wxT("UPDATE pgagent.pga_jobstep\n")
                  wxT("   SET ") + vars + wxT("\n")
                  wxT(" WHERE jstid=") + NumToStr(step->GetRecId()) +
                  wxT(";\n");
    }
    else
    {
        // create mode; handled by GetInsertSql()
    }
    return sql;
}
Beispiel #26
0
CString CBooleanVariable::GetString(void) const
{
 return BoolToStr(m_Value);
}