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 @@ ...@@ -138,11 +138,11 @@
<VerifyObjMethodCallValidity Value="True"/> <VerifyObjMethodCallValidity Value="True"/>
<TargetCPU Value="x86_64"/> <TargetCPU Value="x86_64"/>
<TargetOS Value="win64"/> <TargetOS Value="win64"/>
<Optimizations>
<OptimizationLevel Value="0"/>
</Optimizations>
</CodeGeneration> </CodeGeneration>
<Linking> <Linking>
<Debugging>
<DebugInfoType Value="dsDwarf2Set"/>
</Debugging>
<Options> <Options>
<Win32> <Win32>
<GraphicApplication Value="True"/> <GraphicApplication Value="True"/>
......
...@@ -25,6 +25,7 @@ const ...@@ -25,6 +25,7 @@ const
__PARENTESES_FECHADO = ')'; __PARENTESES_FECHADO = ')';
__EXISTS = 'EXISTS'; __EXISTS = 'EXISTS';
__IN = 'IN'; __IN = 'IN';
__ASTERICO = '*';
type type
TDLLDialog = class(TForm) TDLLDialog = class(TForm)
...@@ -151,7 +152,7 @@ type ...@@ -151,7 +152,7 @@ type
function GetNumeroDeStringOID (piString : string) : string; function GetNumeroDeStringOID (piString : string) : string;
function GetClassTicket(piBloco,piPropertyName : string):acClassTicket; function GetClassTicket(piBloco,piPropertyName : string):acClassTicket;
procedure CopiaTextoObjeto (piObjeto : TTreeNode); 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 BuscaParcialClasse(piCLasse: string; piFiltrar: boolean): boolean;
function BuscarParcialChildClass(piClassTicket : acClassTicket; piFiltrar: boolean): boolean; function BuscarParcialChildClass(piClassTicket : acClassTicket; piFiltrar: boolean): boolean;
function FindParcialNodeClass(piClassTicketPai : acClassTicket; piFiltrar: boolean):acClassTicket; function FindParcialNodeClass(piClassTicketPai : acClassTicket; piFiltrar: boolean):acClassTicket;
...@@ -168,8 +169,9 @@ type ...@@ -168,8 +169,9 @@ type
function GetClassTicketByNameRelation(piNameObjeto : string; out piNameAntObjeto : string) : acClassTicket; function GetClassTicketByNameRelation(piNameObjeto : string; out piNameAntObjeto : string) : acClassTicket;
function GetClassTicketByNameANDAlias(piNameObjeto : 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 IsKeyword(piItem : string): boolean;
function GetTextBetweenWord(piSynEdit :TSynEdit;piWord : string) : string;
protected protected
procedure CreateParams(var Params : TCreateParams); override; procedure CreateParams(var Params : TCreateParams); override;
...@@ -609,14 +611,21 @@ begin ...@@ -609,14 +611,21 @@ begin
Clipbrd.Clipboard.AsText := lString; Clipbrd.Clipboard.AsText := lString;
end; end;
function TExplorerV2.BuscaParcial(piSubstring, piTexto: string): boolean; function TExplorerV2.BuscaParcial(piSubstring, piTexto: string;piretirarEspaco : boolean = true): boolean;
var lSubstring, var lSubstring,
lTexto : string; lTexto : string;
begin begin
if trim(piSubstring) <> '' then if trim(piSubstring) <> '' then
begin begin
lSubstring := TiraAcentos(trim(UpperCase(piSubstring))); if piretirarEspaco then
lTexto := TiraAcentos(trim(UpperCase(piTexto))); begin
lSubstring := TiraAcentos(trim(UpperCase(piSubstring)));
end
else
begin
lSubstring := TiraAcentos(UpperCase(piSubstring));
end;
lTexto := TiraAcentos(trim(UpperCase(piTexto)));
result := Pos(lSubstring,lTexto) > 0; result := Pos(lSubstring,lTexto) > 0;
end end
else else
...@@ -753,7 +762,7 @@ begin ...@@ -753,7 +762,7 @@ begin
while not lEnumerator.EOL do while not lEnumerator.EOL do
begin begin
lClassTicketCurrent := acClassTicket(lEnumerator.Current); lClassTicketCurrent := acClassTicket(lEnumerator.Current);
if BuscaParcial(piLinha,lClassTicketCurrent.PersistentObjectClassName) then if BuscaParcial(piLinha,lClassTicketCurrent.PersistentObjectClassName,false) then
begin begin
piLista.Add(lClassTicketCurrent.PersistentObjectClassName); piLista.Add(lClassTicketCurrent.PersistentObjectClassName);
end; end;
...@@ -1195,31 +1204,69 @@ begin ...@@ -1195,31 +1204,69 @@ begin
end; } end; }
function TExplorerV2.RetirarPalavraChaveOLQ(piSynEdit: TSynEdit): string; function TExplorerV2.RetirarPalavraChaveOLQ(piSynEdit: TSynEdit;opEve: TFaOpenEvent): string;
var ls_espaco, var lWord,
lText,
ls_espaco,
ls_aux : string; ls_aux : string;
li_Pos : integer; li_Pos : integer;
p1,zeroPoint : TPoint; p1,zeroPoint : TPoint;
begin begin
p1 := piSynEdit.CaretXY ; result := '';
lWord := trim(piSynEdit.GetWordAtRowCol(piSynEdit.PrevWordPos));
lText := GetTextBetweenWord(piSynEdit,lWord);
if not IsKeyword(lWord) then
begin
if (opEve = fopEvenSelectCompleto) or
(opEve = fopEvenFromCompleto) or
(opEve = fopEvenWhereCompleto)
then
begin
if trim(lText) <> '' then
begin
result := lText;
end;
if (opEve = fopEvenSelectCompleto) or
(opEve = fopEvenFromCompleto)
then
begin
if ContemPalavra(',',lText) then
begin
result := '';
end;
end;
end
else
begin
if (trim(lWord) = trim(lText)) or
ContemPalavra('.',lText)
then
begin
result := lText;
end;
end
end
else
begin
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.X := 0;
zeroPoint.y := piSynEdit.CaretY; zeroPoint.y := piSynEdit.CaretY;
ls_aux := piSynEdit.TextBetweenPoints[zeroPoint,p1]; ls_aux := piSynEdit.TextBetweenPoints[zeroPoint,p1];
if trim(ls_aux) <> '' then ls_aux := Copy(ls_aux, Length(ls_aux), Length(ls_aux));
begin
if Copy(ls_aux, Length(ls_aux) - 1, Length(ls_aux)) = '' then result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]);
begin
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]) + '#';
end
else
begin
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]);
end;
end
else
begin
result := trim(piSynEdit.TextBetweenPoints[zeroPoint,p1]);
end;
ls_espaco := ' '; ls_espaco := ' ';
li_Pos := Pos(__FROM,uppercase(result)); li_Pos := Pos(__FROM,uppercase(result));
...@@ -1247,6 +1294,12 @@ begin ...@@ -1247,6 +1294,12 @@ begin
li_Pos := Pos(ls_espaco,result); li_Pos := Pos(ls_espaco,result);
end; end;
if ls_aux = ' ' then
begin
result := result + ls_aux;
// showMessage(Result)
end;
}
end; end;
...@@ -1255,10 +1308,26 @@ var li_index : integer; ...@@ -1255,10 +1308,26 @@ var li_index : integer;
begin begin
result := false; result := false;
li_index := fKeywords.IndexOf(piItem); li_index := fKeywords.IndexOf(piItem);
if li_index >= 0 then if li_index >= 0 then
begin begin
result := true; result := true;
end; 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; end;
procedure TExplorerV2.CreateParams(var Params: TCreateParams); procedure TExplorerV2.CreateParams(var Params: TCreateParams);
...@@ -1389,18 +1458,19 @@ var lLista : TStrings; ...@@ -1389,18 +1458,19 @@ var lLista : TStrings;
lAceitaAtributo : boolean; lAceitaAtributo : boolean;
li : integer; li : integer;
begin begin
opEve.ClearAvails; opEve.ClearAvails;
lAceitaAtributo := false; lAceitaAtributo := false;
ls_Texto := SynEditOQL.GetWordAtRowCol(SynEditOQL.CaretXY); ls_Texto := SynEditOQL.GetWordAtRowCol(SynEditOQL.CaretXY);
if not IsKeyword(ls_Texto) then if not IsKeyword(ls_Texto) then
begin begin
if (opEve = fopEvenSelectAposPonto) or if (opEve = fopEvenSelectAposPonto) or
(opEve = fopEvenWhereAposPonto) or (opEve = fopEvenWhereAposPonto) or
(opEve = fopEvenFromAposPonto) (opEve = fopEvenFromAposPonto)
then then
begin begin
LoadAliasOQLEdit(SynEditOQL.Text,fAlias); LoadAliasOQLEdit(SynEditOQL.Text,fAlias);
if opEve = fopEvenWhereAposPonto then if opEve = fopEvenWhereAposPonto then
begin begin
lAceitaAtributo := true; lAceitaAtributo := true;
end end
...@@ -1412,10 +1482,9 @@ begin ...@@ -1412,10 +1482,9 @@ begin
end; end;
end; end;
end; end;
lLista := TStringList.Create; lLista := TStringList.Create;
try try
lLinha := RetirarPalavraChaveOLQ(SynEditOQL); lLinha := RetirarPalavraChaveOLQ(SynEditOQL,opEve);
LoadListCompletion(lLinha,lAceitaAtributo,lLista); LoadListCompletion(lLinha,lAceitaAtributo,lLista);
for li := 0 to lLista.Count - 1 do for li := 0 to lLista.Count - 1 do
begin 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