Hjälp att förstå java uppgift.
Jag har fått en java uppgift som jag har lite svårt att förstå. Jag förstår en del men när jag väl ska planera ut vad som behövs göra och vilka metoder jag ska använda så blir hjärnan blank. Jag vill bara få hjälp att förstå och lite hjälp att börja. Jag vill lösa uppgiften så mycket på egen hand som möjligt.
Uppgiften går ut på att jag ska bygga ett API som läser in filer och behandlar dom. Jag har 2 filformat som har data i dom som jag ska använda. Lösningen ska innehålla en hanterare för dessa två filformat. Denna hanterare ska anropa metoder från ett interface som jag fick med. Man ska också kunna utöka filhanteringsmodulen med nya filtyper.
Hantering av infiler
Istället för att registrera händelser i systemet manuellt skulle man vilja låta andra system skicka information till modulen i form av filer där varje rad representerar en händelse.
Till exempel, en inbetalningsfil som representerar inbetalningar via en viss inbetalningstjänst för ett visst datum. Varje rad i en sådan fil representerar en inbetalning och säger typiskt att en viss summa har betalats in till en viss försäkring från en viss källa.
En fil med fondkurser är ett annat exempel. En rad representerar då en kurs för en viss fond för en viss punkt i tiden.
Ytterligare ett exempel är personuppgifter. Om en person skulle byta adress eller namn informeras Inca av ett centralt system via en sådan fil. Varje rad innehåller personens namn, personnummer, adress samt övriga relevanta uppgifter.
Din uppgift är att bygga ett API för att hantera sådana filer. Den del av systemet som säkerställer att filer kommer från en säker källa är redan gjord. Dessutom har vi ett system som upptäcker när nya filer dyker upp och ser till att din modul anropas för varje nyinkommen fil. Din programvara ska läsa in filen och behandla den.
Du får två konkreta filtformat att leka med: ”Betalningsservice” och ”Inbetalningstjänsten”. De finns beskrivna i separata dokument, och exempel på indata finns i motsvarande textfiler. Din lösning ska inkludera hanterare för dessa två filformat. Hanteraren ska anropa metoderna i det bifogade Java-interfacet PaymentReceiver. Samtidigt ska man kunna utöka filhanteringsmodulen med stöd för nya filtyper.
Här är PaymentReceiver.
import java.math.BigDecimal;
import java.util.Date;
public interface PaymentReceiver {
/**
* Called to mark the start of a new payment bundle.
* @param accountNumber The account number where funds are deposited.
* @param paymentDate The date at which the funds were/will be deposited on the specified account.
* @param currency The currency of the payments in the bundle.
*/
public void startPaymentBundle(String accountNumber, Date paymentDate, String currency);
/**
* Called to notify the receiver of a single payment within a bundle.
* @param amount The payment amount.
* @param reference The payment reference.
*/
public void payment(BigDecimal amount, String reference);
/**
* Called to mark the end of a payment bundle. This means that there will be no more calls to payment()
* for this bundle, and that the receiver can process the bundle.
*/
public void endPaymentBundle();
}
Exempel på hur data i en fil kan se ut beroende på vad det är för filtyp.
Första tecknet säger vad det är för typ av tjänst T.ex "O i O5555" eller "B".
Sen är det annan data som banknr, belopp, valuta etc.
Rader avslutas med två radbrytningstecken CR + LF (ASCII 13 + 10).
Filer använder teckenkodningen ISO-8859-1. Alla filer av denna typ har ett namn som slutar på ”_betalningsservice.txt”
O5555 5555555555 4711,17 420110315SEK
B 30001234567890
B 10002345678901
B 300,103456789012
B 400,074567890123
Vad jag har förstått är att jag ska göra två PaymentHandlers som implementerar PaymentReceiver. En för varsin filtyp. Läsa in data från filerna med FileInputStream. Men när och vart jag ska kalla på metoderna från paymenthandler är jag osäker om. Om någon skulle vilja förklara lite bättre och hjälpa mig på traven så skulle det vara väldigt omtänksamt.