Reputation: 3644
I have a process that currently runs in a Delphi application that I wrote and I need to convert it to a Java process that will run on our web application. Basically our State Financial (legacy) system requires this file in a specific output. In Delphi it is like this:
procedure CreateSHAREJournalFile(AppDate : string; ClassCode : string; BudgetRef : String; AccountNumber : string; FYEStep : integer);
var
GLFileInfo : TStrings;
MPayFormat, HPayFormat, TPayFormat : string;
const
//this is the fixed length format for each item in the file
HeaderFormat = '%-1s%-5s%-10s%-8s%-12s%-10s%-21s%-3s%-71s%-3s%-20s%-1s';
DetailFormat = '%-1s%-5s%-9s%-10s%-10s%-10s%-10s%-8s%-6s%-5s%-5s%-5s%-8s%-25s%-10s%-60s%-28s%-66s%-28s';
begin
try
//get the data from the query
with dmJMS.qryShare do
begin
SQL.Clear;
SQL.Add('SELECT SUM(TOTHRPAY) As HourPay, SUM(TOTMLPAY) As MilePay, SUM(TOTALPAY) AS TotalPay FROM JMPCHECK INNER JOIN JMPMAIN ON JMPCHECK.JURNUM = JMPMAIN.JURNUM WHERE PANELID LIKE ''' + Copy(AppDate, 3, 6) + '%'' ');
if FYEStep > -1 then
SQL.Add('AND WARRANTNO = ' + QUotedStr(IntToStr(FYEStep)));
Active := True;
//assign totals to variables so they can be padded with leading zeros
MPayFormat := FieldByName('MilePay').AsString;
while length(MPayFormat) < 28 do <br>MPayFormat := '0' + MPayFormat;
HPayFormat := FieldByName('HourPay').AsString;
while length(HPayFormat) < 28 do <br>HPayFormat := '0' + HPayFormat;
TPayFormat := Format('%f' ,[(FieldByName('TotalPay').AsCurrency)]);
while length(TPayFormat) < 27 do
TPayFormat := '0' + TPayFormat;
TPayFormat := '-' + TPayFormat;
//create a TStringlist to put each line item into
GLFileInfo := TStringList.Create;
//add header info using HeaderFormat defined above
GLFileInfo.Add(Format(HeaderFormat, ['H', '21801', 'NEXT', FormatDateTime('MMDDYYYY', Today), '', 'ACTUALS', '', 'EXT', '', 'EXT', '', 'N']));
//add detail info using DetailFormat defined above
GLFileInfo.Add(Format(DetailFormat, ['L', '21801', '1', 'ACTUALS', AccountNumber, '', '1414000000', '111500', '', '01200', ClassCode, '', BudgetRef, '', AccountNumber + '0300', '', MPayFormat, '', MPayFormat]));
GLFileInfo.Add(Format(DetailFormat, ['L', '21801', '2', 'ACTUALS', AccountNumber, '', '1414000000', '111500', '', '01200', ClassCode, '', BudgetRef, '', AccountNumber + '0100', '', HPayFormat, '', HPayFormat]));
GLFileInfo.Add(Format(DetailFormat, ['L', '21801', '3', 'ACTUALS', '101900', '', '1414000000', '111500', '', '01200', ClassCode, '', BudgetRef, '', '', '', TPayFormat, '', TPayFormat]));
//save TStringList to text file
GLFileINfo.SaveToFile(ExtractFilePath(Application.ExeName) + 'FileTransfer\GL_' + formatdateTime('mmddyy', Today) + SequenceID + '24400' + '.txt');
end;
finally
GLFileINfo.Free;
end;
end;
Is there an equivalent in Java for the Format option? Or the TStringList that saves to a text file?
Thanks for any information....haven't done a lot of Java programming!
Leslie
Upvotes: 0
Views: 4802
Reputation: 10173
These are all relatively simple operations in Java (or a lot of other languages, for that matter). For your use case in Java, it's probably easiest to access the database directly via JDBC, as shown here. After you retrieve the data, you can use String.format(...) to format the data the way you need it and you can then write it to a file (as described here).
Upvotes: 1