unit Model.ConfigProjeto;
{$mode delphi}{$H+}{$M+}
interface
uses
Classes,
SysUtils,
Model.ConfigProjeto.PastasArquivos,
Model.ConfigProjeto.Scripts,
Model.ConfigProjeto.ConfigBD
;
type
{ TModelConfigProjeto }
TModelParameroScriptList = Model.ConfigProjeto.Scripts.TModelParameroScriptList;
TModelParameroScript = Model.ConfigProjeto.Scripts.TModelParameroScript;
TModelConfigProjetoScripts = Model.ConfigProjeto.Scripts.TModelConfigProjetoScripts;
TModelConfigProjetoConfigBD = Model.ConfigProjeto.ConfigBD.TModelConfigProjetoConfigBD;
TModelConfigProjeto = class(TObject)
private
FNomeProjeto: string;
FArquivoProjeto: string;
FConfigBD: TModelConfigProjetoConfigBD;
FPastasArquivos: TModelConfigProjetoPastasArquivos;
FScriptsPermissoes: TModelConfigProjetoScripts;
FScriptsParametros: TModelConfigProjetoScripts;
FScriptsParametrosEmpresa: TModelConfigProjetoScripts;
FScriptsMenus: TModelConfigProjetoScripts;
FScriptsModulos: TModelConfigProjetoScripts;
FScriptsPermissoesModulos: TModelConfigProjetoScripts;
procedure SetNomeProjeto(aValue: string);
class var FInstancia: TModelConfigProjeto;
public
constructor Create;
destructor Destroy; override;
procedure ClearObjects;
procedure LoadFromFile;
procedure SaveToFile;
procedure DeleteProjectFile;
class function GetInstancia: TModelConfigProjeto;
published
property NomeProjeto: string read FNomeProjeto write SetNomeProjeto;
property ArquivoProjeto: string read FArquivoProjeto;
property ConfigBD: TModelConfigProjetoConfigBD read FConfigBD write FConfigBD;
property PastasArquivos: TModelConfigProjetoPastasArquivos read FPastasArquivos write FPastasArquivos;
property ScriptsPermissoes: TModelConfigProjetoScripts read FScriptsPermissoes write FScriptsPermissoes;
property ScriptsParametros: TModelConfigProjetoScripts read FScriptsParametros write FScriptsParametros;
property ScriptsParametrosEmpresa: TModelConfigProjetoScripts read FScriptsParametrosEmpresa write FScriptsParametrosEmpresa;
property ScriptsMenus: TModelConfigProjetoScripts read FScriptsMenus write FScriptsMenus;
property ScriptsModulos: TModelConfigProjetoScripts read FScriptsModulos write FScriptsModulos;
property ScriptsPermissoesModulos: TModelConfigProjetoScripts read FScriptsPermissoesModulos write FScriptsPermissoesModulos;
end;
implementation
uses
Model.FileUtils,
DAO.JsonUtils,
Dialogs,
fpjson,
fpjsonrtti
;
{ TModelConfigProjeto }
constructor TModelConfigProjeto.Create;
begin
inherited Create;
FConfigBD := TModelConfigProjetoConfigBD.Create;
FPastasArquivos := TModelConfigProjetoPastasArquivos.Create;
FScriptsPermissoes := TModelConfigProjetoScripts.Create;
FScriptsParametros := TModelConfigProjetoScripts.Create;
FScriptsParametrosEmpresa := TModelConfigProjetoScripts.Create;
FScriptsMenus := TModelConfigProjetoScripts.Create;
FScriptsModulos := TModelConfigProjetoScripts.Create;
FScriptsPermissoesModulos := TModelConfigProjetoScripts.Create;
end;
destructor TModelConfigProjeto.Destroy;
begin
FreeAndNil(FConfigBD);
FreeAndNil(FPastasArquivos);
FreeAndNil(FScriptsPermissoes);
FreeAndNil(FScriptsParametros);
FreeAndNil(FScriptsParametrosEmpresa);
FreeAndNil(FScriptsMenus);
FreeAndNil(FScriptsModulos);
FreeAndNil(FScriptsPermissoesModulos);
inherited Destroy;
end;
procedure TModelConfigProjeto.ClearObjects;
begin
FConfigBD.Clear;
FPastasArquivos.Clear;
FScriptsPermissoes.Clear;
FScriptsParametros.Clear;
FScriptsParametrosEmpresa.Clear;
FScriptsMenus.Clear;
FScriptsModulos.Clear;
FScriptsPermissoesModulos.Clear;
end;
procedure TModelConfigProjeto.LoadFromFile;
begin
end;
procedure TModelConfigProjeto.SaveToFile;
var
_Json: TJSONStreamer;
_Arquivo: TMemoryStream;
_Conteudo: string;
begin
_Json := TJSONStreamer.Create(nil);
try
_Arquivo := TMemoryStream.Create;
try
_Conteudo := _Json.ObjectToJSONString(Self);
_Arquivo.Write(_Conteudo[1], Length(_Conteudo));
_Arquivo.SaveToFile(FArquivoProjeto);
finally
_Arquivo.Free;
end;
finally
_Json.Free;
end;
end;
procedure TModelConfigProjeto.DeleteProjectFile;
begin
if FileExists(FArquivoProjeto) then
DeleteFile(FArquivoProjeto);
FNomeProjeto := '';
Self.ClearObjects;
end;
procedure TModelConfigProjeto.SetNomeProjeto(aValue: string);
begin
if FNomeProjeto <> aValue then
FNomeProjeto := aValue;
FArquivoProjeto := TModelFileUtils.GetProjectFileName(FNomeProjeto);
end;
class function TModelConfigProjeto.GetInstancia: TModelConfigProjeto;
begin
if FInstancia = nil then
FInstancia := TModelConfigProjeto.Create;
result := FInstancia;
end;
initialization
TModelConfigProjeto.FInstancia := nil;
finalization
if TModelConfigProjeto.FInstancia <> nil then
FreeAndNil(TModelConfigProjeto.FInstancia);
end.
Thank's in advance