Skip to content

Commit

Permalink
Improved file names generated by the wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
danieleteti committed Apr 16, 2024
1 parent 51a457e commit 3820d47
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 61 deletions.
1 change: 0 additions & 1 deletion ideexpert/DMVC.Expert.CodeGen.NewControllerUnit.pas
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ TNewControllerUnitEx = class(TNewUnit)

TNewJSONRPCUnitEx = class(TNewUnit)
protected
fJSONRPCClassName: String;
function NewImplSource(const ModuleIdent, FormIdent, AncestorIdent: string)
: IOTAFile; override;
public
Expand Down
21 changes: 19 additions & 2 deletions ideexpert/DMVC.Expert.Commons.pas
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
interface

uses
MVCFramework.Commons, System.SysUtils, JsonDataObjects;
MVCFramework.Commons, System.SysUtils, JsonDataObjects, ToolsAPI;

type
IGenCommand = interface
Expand Down Expand Up @@ -79,18 +79,35 @@ TConfigKey = class sealed
webmodule_middleware_activerecord_con_def_filename= 'webmodule.middleware.activerecord.con_def_filename';
end;

procedure ChangeIOTAModuleFileNamePrefix(const IOTA: IOTAModule; const FileNamePrefix: String);

implementation

uses
System.IOUtils;

{ TCustomCommand }

procedure TCustomCommand.CheckFor(const Key: String;
Model: TJSONObject);
begin
if (not Model.Contains(Key)) or Model.S[Key].IsEmpty then
begin
Model.SaveToFile('C:\todelete\configmodelref.json');
raise Exception.CreateFmt('Required key "%s" not found or empty while processing %s', [Key, ClassName]);
end;
end;

procedure ChangeIOTAModuleFileNamePrefix(const IOTA: IOTAModule; const FileNamePrefix: String);
var
lDirName: string;
lFileName: string;
lFileExt: string;
begin
lDirName := TPath.GetDirectoryName(IOTA.FileName);
lFileName := TPath.GetFileNameWithoutExtension(IOTA.FileName);
lFileExt := TPath.GetExtension(IOTA.FileName);
lFileName := FileNamePrefix;
IOTA.FileName := TPath.Combine(lDirName, lFileName + lFileExt);
end;

end.
2 changes: 1 addition & 1 deletion ideexpert/DMVC.Expert.Forms.NewProjectWizard.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -718,7 +718,7 @@ object frmDMVCNewProject: TfrmDMVCNewProject
Height = 21
Anchors = [akLeft, akTop, akRight]
TabOrder = 0
TextHint = 'TMyJSONRPCObject'
TextHint = 'TMyRPC'
end
object chkJSONRPC: TCheckBox
Left = 16
Expand Down
58 changes: 1 addition & 57 deletions ideexpert/DMVC.Expert.Forms.NewProjectWizard.pas
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,8 @@ TfrmDMVCNewProject = class(TForm)
function GetCreateActionFiltersMethods: boolean;
function GetServerPort: Integer;
function GetCreateCRUDMethods: boolean;
function GetMiddlewares: TArray<String>;
function GetCreateJSONRPCInterface: boolean;
function GetJSONRPCClassName: String;
function GetUseMSHeapOnWindows: Boolean;
public
{ Public declarations }
// Read Only Properties to extract values without having to know control values.
Expand All @@ -130,12 +128,9 @@ TfrmDMVCNewProject = class(TForm)
property AddToProjectGroup: boolean read GetAddToProjectGroup;
property CreateIndexMethod: boolean read GetCreateIndexMethod;
property CreateCRUDMethods: boolean read GetCreateCRUDMethods;
property Middlewares: TArray<String> read GetMiddlewares;
property CreateActionFiltersMethods: boolean
read GetCreateActionFiltersMethods;
property WebModuleClassName: string read GetWebModuleClassName;
property ServerPort: Integer read GetServerPort;
property UseMSHeapOnWindows: Boolean read GetUseMSHeapOnWindows;
function GetConfigModel: TJSONObject;
end;

Expand Down Expand Up @@ -222,52 +217,6 @@ function TfrmDMVCNewProject.GetJSONRPCClassName: String;
end;
end;

function TfrmDMVCNewProject.GetMiddlewares: TArray<String>;
const
M_ANALYTICS = 'FMVC.AddMiddleware(TMVCAnalyticsMiddleware.Create(GetAnalyticsDefaultLogger));';
M_STATICFILES = 'FMVC.AddMiddleware(TMVCStaticFilesMiddleware.Create(''/static'', TPath.Combine(ExtractFilePath(GetModuleName(HInstance)), ''www'')));';
M_TRACE = 'FMVC.AddMiddleware(TMVCTraceMiddleware.Create);';
M_COMPRESSION = 'FMVC.AddMiddleware(TMVCCompressionMiddleware.Create);';
M_ETAG = 'FMVC.AddMiddleware(TMVCETagMiddleware.Create);';
M_CORS = 'FMVC.AddMiddleware(TMVCCORSMiddleware.Create);';
M_ACTIVERECORD = 'FMVC.AddMiddleware(TMVCActiveRecordMiddleware.Create(' + sLineBreak +
' dotEnv.Env(''firedac.connection_definition_name'', ''%s''), ' + sLineBreak +
' dotEnv.Env(''firedac.connection_definitions_filename'', ''%s'')' + sLineBreak +
' ));';

function GetText(const Edit: TCustomEdit): String;
begin
if Edit.Text = '' then
begin
Result := Edit.TextHint;
end
else
begin
Result := Edit.Text;
end;
end;
begin
Result := [];
Result := Result + ['', '// Analytics middleware generates a csv log, useful to do traffic analysis'];
Result := Result + [ifthen(not chkAnalyticsMiddleware.Checked, '//') + M_ANALYTICS];
Result := Result + ['', '// The folder mapped as documentroot for TMVCStaticFilesMiddleware must exists!'];
Result := Result + [ifthen(not chkStaticFiles.Checked, '//') + M_STATICFILES];
Result := Result + ['', '// Trace middlewares produces a much detailed log for debug purposes'];
Result := Result + [ifthen(not chkTrace.Checked, '//') + M_TRACE];
Result := Result + ['', '// CORS middleware handles... well, CORS'];
Result := Result + [ifthen(not chkCORS.Checked, '//') + M_CORS];
Result := Result + ['', '// Simplifies TMVCActiveRecord connection definition'];
Result := Result + [
ifthen(not chkActiveRecord.Checked, '{') + sLineBreak +
' ' + Format(M_ACTIVERECORD, [GetText(EdtConnDefName), GetText(EdtFDConnDefFileName)]) + sLineBreak +
ifthen(not chkActiveRecord.Checked, ' }') + sLineBreak
];
Result := Result + ['', '// Compression middleware must be the last in the chain, just before the ETag, if present.'];
Result := Result + [ifthen(not chkCompression.Checked, '//') + M_COMPRESSION];
Result := Result + ['', '// ETag middleware must be the latest in the chain'];
Result := Result + [ifthen(not chkETAG.Checked, '//') + M_ETAG];
end;

function TfrmDMVCNewProject.GetServerPort: Integer;
var
lServerPort: Integer;
Expand All @@ -281,11 +230,6 @@ function TfrmDMVCNewProject.GetServerPort: Integer;
end;
end;

function TfrmDMVCNewProject.GetUseMSHeapOnWindows: Boolean;
begin
Result := chkMSHeap.Checked;
end;

function TfrmDMVCNewProject.GetWebModuleClassName: string;
begin
if Trim(edtWebModuleName.Text) = '' then
Expand Down Expand Up @@ -362,7 +306,7 @@ function TfrmDMVCNewProject.GetConfigModel: TJSONObject;
begin
fModel.Clear;
fModel.S[TConfigKey.program_name] := 'TBA';
fModel.S[TConfigKey.program_default_server_port] := GetServerPort.ToString;
fModel.S[TConfigKey.program_default_server_port] := GetServerPort.ToString;
fModel.B[TConfigKey.program_msheap] := chkMSHeap.Checked;
fModel.S[TConfigKey.controller_unit_name] := 'TBA';
fModel.S[TConfigKey.controller_classname] := GetControllerClassName;
Expand Down
6 changes: 6 additions & 0 deletions ideexpert/DMVC.Expert.ProjectWizardEx.pas
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ class procedure TDMVCNewProjectWizard.RegisterDMVCProjectWizard(const APersonali
begin
ControllerCreator := TNewControllerUnitEx.Create(lJSON, APersonality);
ControllerUnit := ModuleServices.CreateModule(ControllerCreator);
ChangeIOTAModuleFileNamePrefix(ControllerUnit, 'Controllers.' + lJSON.S[TConfigKey.controller_classname].SubString(1));
lJSON.S[TConfigKey.controller_unit_name] := TPath.GetFileNameWithoutExtension(ControllerUnit.FileName);
if Project <> nil then
begin
Project.AddFile(ControllerUnit.FileName, True);
Expand All @@ -137,7 +139,9 @@ class procedure TDMVCNewProjectWizard.RegisterDMVCProjectWizard(const APersonali
lJSON,
APersonality);
JSONRPCUnit := ModuleServices.CreateModule(JSONRPCUnitCreator);
ChangeIOTAModuleFileNamePrefix(JSONRPCUnit, 'JSONRPC.' + lJSON.S[TConfigKey.jsonrpc_classname].Substring(1));
lJSONRPCUnitName := GetUnitName(JSONRPCUnit.FileName);
lJSON.S[TConfigKey.jsonrpc_unit_name] := lJSONRPCUnitName;
if Project <> nil then
begin
Project.AddFile(JSONRPCUnit.FileName, True);
Expand All @@ -149,6 +153,8 @@ class procedure TDMVCNewProjectWizard.RegisterDMVCProjectWizard(const APersonali
lJSON,
APersonality);
WebModuleUnit := ModuleServices.CreateModule(WebModuleCreator);
ChangeIOTAModuleFileNamePrefix(WebModuleUnit, lJSON.S[TConfigKey.webmodule_classname].SubString(1));
lJSON.S[TConfigKey.webmodule_unit_name] := TPath.GetFileNameWithoutExtension(WebModuleUnit.FileName);
if Project <> nil then
begin
Project.AddFile(WebModuleUnit.FileName, True);
Expand Down

0 comments on commit 3820d47

Please sign in to comment.