1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef ADABASUI_SQLNAMEEDIT_HXX
25*b1cdbd2cSJim Jagielski #include "ASQLNameEdit.hxx"
26*b1cdbd2cSJim Jagielski #endif
27*b1cdbd2cSJim Jagielski namespace adabasui
28*b1cdbd2cSJim Jagielski {
29*b1cdbd2cSJim Jagielski 	//------------------------------------------------------------------
isCharOk(sal_Unicode _cChar)30*b1cdbd2cSJim Jagielski 	sal_Bool isCharOk(sal_Unicode _cChar)
31*b1cdbd2cSJim Jagielski 	{
32*b1cdbd2cSJim Jagielski 		return (
33*b1cdbd2cSJim Jagielski                 (_cChar >= 'A' && _cChar <= 'Z') ||
34*b1cdbd2cSJim Jagielski                 _cChar == '_' ||
35*b1cdbd2cSJim Jagielski                 ((_cChar >= '0' && _cChar <= '9')) ||
36*b1cdbd2cSJim Jagielski                 ((_cChar >= 'a' && _cChar <= 'z'))
37*b1cdbd2cSJim Jagielski                );
38*b1cdbd2cSJim Jagielski 	}
39*b1cdbd2cSJim Jagielski 	//------------------------------------------------------------------
checkString(const::rtl::OUString & _sOldValue,const::rtl::OUString & _sToCheck,::rtl::OUString & _rsCorrected)40*b1cdbd2cSJim Jagielski 	sal_Bool OSQLNameChecker::checkString(	const ::rtl::OUString& _sOldValue,
41*b1cdbd2cSJim Jagielski 										const ::rtl::OUString& _sToCheck,
42*b1cdbd2cSJim Jagielski 										::rtl::OUString& _rsCorrected)
43*b1cdbd2cSJim Jagielski 	{
44*b1cdbd2cSJim Jagielski 		sal_Bool bCorrected = sal_False;
45*b1cdbd2cSJim Jagielski 		XubString sSavedValue	= _sOldValue;
46*b1cdbd2cSJim Jagielski 		XubString sText			= _sToCheck;
47*b1cdbd2cSJim Jagielski 		xub_StrLen nMatch		= 0;
48*b1cdbd2cSJim Jagielski 		for ( xub_StrLen i=nMatch;i < sText.Len(); ++i )
49*b1cdbd2cSJim Jagielski 		{
50*b1cdbd2cSJim Jagielski 			if ( !isCharOk( sText.GetBuffer()[i]) )
51*b1cdbd2cSJim Jagielski 			{
52*b1cdbd2cSJim Jagielski 				_rsCorrected += sText.Copy( nMatch, i - nMatch );
53*b1cdbd2cSJim Jagielski 				bCorrected = sal_True;
54*b1cdbd2cSJim Jagielski 				nMatch = i + 1;
55*b1cdbd2cSJim Jagielski 			}
56*b1cdbd2cSJim Jagielski 		}
57*b1cdbd2cSJim Jagielski 		_rsCorrected += sText.Copy( nMatch, sText.Len() - nMatch );
58*b1cdbd2cSJim Jagielski 		return bCorrected;
59*b1cdbd2cSJim Jagielski 	}
60*b1cdbd2cSJim Jagielski 	//------------------------------------------------------------------
Modify()61*b1cdbd2cSJim Jagielski 	void OSQLNameEdit::Modify()
62*b1cdbd2cSJim Jagielski 	{
63*b1cdbd2cSJim Jagielski 		::rtl::OUString sCorrected;
64*b1cdbd2cSJim Jagielski 		if ( checkString( GetSavedValue(),GetText(),sCorrected ) )
65*b1cdbd2cSJim Jagielski 		{
66*b1cdbd2cSJim Jagielski 			Selection aSel = GetSelection();
67*b1cdbd2cSJim Jagielski 			aSel.setMax( aSel.getMin() );
68*b1cdbd2cSJim Jagielski 			SetText( sCorrected, aSel );
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski 			SaveValue();
71*b1cdbd2cSJim Jagielski 		}
72*b1cdbd2cSJim Jagielski 		Edit::Modify();
73*b1cdbd2cSJim Jagielski 	}
74*b1cdbd2cSJim Jagielski }
75*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
76*b1cdbd2cSJim Jagielski 
77