2010-03-08 2 views
0

У меня есть процесс, который в настоящее время выполняется в приложении Delphi, которое я написал, и мне нужно его преобразовать в процесс Java, который будет запущен в нашем веб-приложении. В основном наша государственная финансовая (наследственная) система требует, чтобы этот файл имел конкретный результат. В Delphi это так:создать файл с фиксированной длиной с Java

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; 

Есть ли эквивалент в Java для параметра «Формат»? Или TStringList, который сохраняет текстовый файл?

Спасибо за любую информацию .... не сделали много программирования на Java!

Лесли

+0

Я нашел эту ссылку, но не вижу, как вы форматируете вывод: http://www.rgagnon.com/javadetails/java-0461.html – Leslie

+1

Для справки в будущем, это не то, как вы кодируете кодовые блоки в Stackoverflow , Просто отступьте весь код на 4 пробела. – Pointy

+0

благодарит за информацию! Я пробовал всевозможные вещи, чтобы заставить его выглядеть правильно! Спасибо за редактирование! – Leslie

ответ

1

Это все относительно простые операции в Java (или много других языков, по этому вопросу). Для вашего случая использования в Java, вероятно, проще всего получить доступ к базе данных напрямую через JDBC, как показано на рисунке here. После извлечения данных вы можете использовать String.format(...) для форматирования данных так, как вам нужно, и вы можете записать их в файл (как описано here).

+0

Да, я знаю, что это простые операции, но когда вы не уверены, что искать на нем, сложно найти ответы! Спасибо за ссылки, особенно String.format! – Leslie

+0

Рад помочь. :) –

Смежные вопросы