Commit 430a6f69 authored by Jucelino Fonseca's avatar Jucelino Fonseca

Hoje continuei implementando o mapeamento do alias, continuei verificando...

Hoje continuei implementando o mapeamento do alias, continuei verificando sempre os detalhes que existe no editor do SQL para colocar no editor do OQL.
parent 3736ed7f
......@@ -138,11 +138,11 @@
<VerifyObjMethodCallValidity Value="True"/>
<TargetCPU Value="x86_64"/>
<TargetOS Value="win64"/>
<Optimizations>
<OptimizationLevel Value="0"/>
</Optimizations>
</CodeGeneration>
<Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2Set"/>
</Debugging>
<Options>
<Win32>
<GraphicApplication Value="True"/>
......
......@@ -25,6 +25,7 @@ const
__PARENTESES_FECHADO = ')';
__EXISTS = 'EXISTS';
__IN = 'IN';
__ASTERICO = '*';
type
TDLLDialog = class(TForm)
......@@ -151,7 +152,7 @@ type
function GetNumeroDeStringOID (piString : string) : string;
function GetClassTicket(piBloco,piPropertyName : string):acClassTicket;
procedure CopiaTextoObjeto (piObjeto : TTreeNode);
function BuscaParcial(piSubstring,piTexto :string): boolean;
function BuscaParcial(piSubstring,piTexto :string;piretirarEspaco : boolean = true): boolean;
function BuscaParcialClasse(piCLasse: string; piFiltrar: boolean): boolean;
function BuscarParcialChildClass(piClassTicket : acClassTicket; piFiltrar: boolean): boolean;
function FindParcialNodeClass(piClassTicketPai : acClassTicket; piFiltrar: boolean):acClassTicket;
......@@ -168,8 +169,9 @@ type
function GetClassTicketByNameRelation(piNameObjeto : string; out piNameAntObjeto : string) : acClassTicket;
function GetClassTicketByNameANDAlias(piNameObjeto : string) : acClassTicket;
//
function RetirarPalavraChaveOLQ(piSynEdit :TSynEdit):string;
function RetirarPalavraChaveOLQ(piSynEdit :TSynEdit;opEve: TFaOpenEvent):string;
function IsKeyword(piItem : string): boolean;
function GetTextBetweenWord(piSynEdit :TSynEdit;piWord : string) : string;
protected
procedure CreateParams(var Params : TCreateParams); override;
......@@ -609,13 +611,20 @@ begin
Clipbrd.Clipboard.AsText := lString;
end;
function TExplorerV2.BuscaParcial(piSubstring, piTexto: string): boolean;
function TExplorerV2.BuscaParcial(piSubstring, piTexto: string;piretirarEspaco : boolean = true): boolean;
var lSubstring,
lTexto : string;
begin
if trim(piSubstring) <> '' then
begin
if piretirarEspaco then
begin
lSubstring := TiraAcentos(trim(UpperCase(piSubstring)));
end
else
begin
lSubstring := TiraAcentos(UpperCase(piSubstring));
end;
lTexto := TiraAcentos(trim(UpperCase(piTexto)));
result := Pos(lSubstring,lTexto) > 0;
end
......@@ -753,7 +762,7 @@ begin
while not lEnumerator.EOL do
begin
lClassTicketCurrent := acClassTicket(lEnumerator.Current);
if BuscaParcial(piLinha,lClassTicketCurrent.PersistentObjectClassName) then
if BuscaParcial(piLinha,lClassTicketCurrent.PersistentObjectClassName,false) then
begin
piLista.Add(lClassTicketCurrent.PersistentObjectClassName);
end;
......@@ -1195,31 +1204,69 @@ begin
end; }
function TExplorerV2.RetirarPalavraChaveOLQ(piSynEdit: TSynEdit): string;
var ls_espaco,
function TExplorerV2.RetirarPalavraChaveOLQ(piSynEdit: TSynEdit;opEve: TFaOpenEvent): string;
var lWord,
lText,
ls_espaco,
ls_aux : string;
li_Pos : integer;
p1,zeroPoint : TPoint;
begin
p1 := piSynEdit.CaretXY ;
zeroPoint.X := 0;
zeroPoint.y := piSynEdit.CaretY;
ls_aux := piSynEdit.TextBetweenPoints[zeroPoint,p1];
if trim(ls_aux) <> '' then
result := '';
lWord := trim(piSynEdit.GetWordAtRowCol(piSynEdit.PrevWordPos));
lText := GetTextBetweenWord(piSynEdit,lWord);
if not IsKeyword(lWord) then
begin
if Copy(ls_aux, Length(ls_aux) - 1, Length(ls_aux)) = '' then
if (opEve = fopEvenSelectCompleto) or
(opEve = fopEvenFromCompleto) or
(opEve = fopEvenWhereCompleto)
then
begin
if trim(lText) <> '' then
begin
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]) + '#';
result := lText;
end;
if (opEve = fopEvenSelectCompleto) or
(opEve = fopEvenFromCompleto)
then
begin
if ContemPalavra(',',lText) then
begin
result := '';
end;
end;
end
else
begin
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]);
if (trim(lWord) = trim(lText)) or
ContemPalavra('.',lText)
then
begin
result := lText;
end;
end
end
else
begin
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]);
if (lWord = lText) then
begin
result := lWord;
end
else if ContemPalavra(__ASTERICO,lText) then
begin
result := lText;
end;
end;
{1 := piSynEdit.CaretXY ;
zeroPoint.X := 0;
zeroPoint.y := piSynEdit.CaretY;
ls_aux := piSynEdit.TextBetweenPoints[zeroPoint,p1];
ls_aux := Copy(ls_aux, Length(ls_aux), Length(ls_aux));
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]);
ls_espaco := ' ';
li_Pos := Pos(__FROM,uppercase(result));
......@@ -1247,6 +1294,12 @@ begin
li_Pos := Pos(ls_espaco,result);
end;
if ls_aux = ' ' then
begin
result := result + ls_aux;
// showMessage(Result)
end;
}
end;
......@@ -1255,10 +1308,26 @@ var li_index : integer;
begin
result := false;
li_index := fKeywords.IndexOf(piItem);
if li_index >= 0 then
begin
result := true;
end;
end;
function TExplorerV2.GetTextBetweenWord(piSynEdit :TSynEdit;piWord: string): string;
var p1: TPoint;
li_Pos : integer;
begin
li_Pos := Pos(piWord,piSynEdit.LineText);
p1 := piSynEdit.CaretXY;
if li_pos > 0 then
begin
p1.X:= li_Pos;
end;
result := piSynEdit.TextBetweenPoints[p1, piSynEdit.CaretXY];
end;
procedure TExplorerV2.CreateParams(var Params: TCreateParams);
......@@ -1394,6 +1463,7 @@ begin
ls_Texto := SynEditOQL.GetWordAtRowCol(SynEditOQL.CaretXY);
if not IsKeyword(ls_Texto) then
begin
if (opEve = fopEvenSelectAposPonto) or
(opEve = fopEvenWhereAposPonto) or
(opEve = fopEvenFromAposPonto)
......@@ -1412,10 +1482,9 @@ begin
end;
end;
end;
lLista := TStringList.Create;
try
lLinha := RetirarPalavraChaveOLQ(SynEditOQL);
lLinha := RetirarPalavraChaveOLQ(SynEditOQL,opEve);
LoadListCompletion(lLinha,lAceitaAtributo,lLista);
for li := 0 to lLista.Count - 1 do
begin
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment