/**
 * @Author: Jordi Corbilla
 * (c) Copyright by Jordi Corbilla.
 **/
 
  TUML = class(TObject)
  private
    FFormat: string;
    FOutFile: TLog;
    FUmlFileName: string;
  public
    property Format: string read FFormat write FFormat;
    constructor Create(umlFileName: string);
    class function Start(umlFileName: string): TUML;
    procedure Define(name : String; kind : String); overload;
    procedure Define(); overload;
    procedure Call(caller: string; callee: string; method: string; params: string); overload;
    procedure Call(caller: string; callee: string; method: string; params: string; result: string); overload;
    procedure Convert();
  end;

const
  DefaultFormat = 'jpg';
  DefaultLocationLibrary = '..\..\thirdpartylibs\sdedit\sdedit.jar';

implementation

uses
  ShellAPI, Windows;

{ TUML }

procedure TUML.Call(caller, callee, method, params: string);
begin
  FOutFile.print(caller + ':' + callee + '.' + method + '(' + params + ')');
end;

procedure TUML.Call(caller, callee, method, params, result: string);
begin
  FOutFile.print(caller + ':' + result + '=' + callee + '.' + method + '(' + params + ')');
end;

procedure TUML.Convert();
var
  params: string;
  FileINFormat: string;
  FileOutFormat: string;
begin
  FileINFormat := FUmlFileName + '.sdx';
  FileOutFormat := FUmlFileName + '.' + FFormat;
  params := '-jar ' + DefaultLocationLibrary + ' -o ' + FileOutFormat + ' -t ' + FFormat + ' -r landscape ' + FileINFormat;
  ShellExecute(0, nil, 'java.exe', PChar(params), nil, SW_HIDE);
end;

constructor TUML.Create(umlFileName: string);
begin
  FOutFile := TLog.Start(umlFileName + '.sdx');
  FFormat := DefaultFormat;
  FUmlFileName := umlFileName;
end;

procedure TUML.Define;
begin
  FOutFile.print('');
end;

procedure TUML.Define(name, kind: String);
begin
  FOutFile.print(name + ':' + kind);
end;

class function TUML.Start(umlFileName: string): TUML;
begin
  result := Create(umlFileName);
end;