is.idega.block.finance.business.sp.SPDataInsertTest.java Source code

Java tutorial

Introduction

Here is the source code for is.idega.block.finance.business.sp.SPDataInsertTest.java

Source

/*
 * $Id: SPDataInsertTest.java,v 1.3 2007/04/23 17:47:36 eiki Exp $ Created on Nov 2,
 * 2005
 * 
 * Copyright (C) 2005 Idega Software hf. All Rights Reserved.
 * 
 * This software is the proprietary information of Idega hf. Use is subject to
 * license terms.
 */
package is.idega.block.finance.business.sp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.MultipartPostMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.methods.multipart.StringPart;
import org.apache.commons.httpclient.params.HttpMethodParams;

import com.idega.block.finance.business.BankFileManager;
import com.idega.block.finance.business.BankInvoiceFileManager;
import com.idega.presentation.Block;
import com.idega.presentation.IWContext;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
import com.idega.util.IWTimestamp;

public class SPDataInsertTest extends Block {

    private static String SITE = "https://heimabanki.spar.is";

    //   private static String POST_METHOD = "/HBScripts/ftbspar.dll?InnheimtaStofnaKrofuSkra";
    private static String POST_METHOD = "/HBScripts/ftbspar.dll?InnheimtaSendaPrufuSkra";

    private static String POST_ANSWER_METHOD = "/HBScripts/ftbspar.dll?InnheimtaSaekjaInnborganir";

    private static String FILE_NAME = "/Users/bluebottle/sp.txt";

    private String emptyString = new String();

    private String zeroString = new String();

    public static void main(String[] args) {
        System.out.println("Starting test");
        SPDataInsertTest test = new SPDataInsertTest();
        test.sendCreateClaimsRequest();
    }

    public void main(IWContext iwc) throws Exception {
        Form f = new Form();
        SubmitButton sb = new SubmitButton("submit", "submit", "submit");
        SubmitButton gd = new SubmitButton("getdata", "getdata", "getdata");
        f.add(sb);
        f.add(gd);
        if (iwc.getParameter("submit") != null && !iwc.getParameter("submit").equals("")
                && iwc.getParameter("submit").equals("submit")) { // getSessionId();
            createClaimsInBank(1);
        }
        if (iwc.getParameter("getdata") != null && !iwc.getParameter("getdata").equals("")
                && iwc.getParameter("getdata").equals("getdata")) {
        }
        add(f);
    } /*
        * (non-Javadoc)
        * 
        * @see com.idega.block.finance.business.InvoiceDataInsert#insertData(int,
        *      int)
        */

    public void createClaimsInBank(int batchNumber) {
        for (int i = 0; i < 200; i++) {
            emptyString += " ";
            zeroString += "0";
        }
        // BankFileManager bfm = new BankInvoiceFileManager();
        StringBuffer buffer = new StringBuffer();

        String claimantSSN = "6812933379";// bfm.getClaimantSSN(groupId);
        if (claimantSSN != null && !claimantSSN.equals("")) {
            if (claimantSSN.length() < 10)
                claimantSSN = zeroString.substring(0, 10 - claimantSSN.length()) + claimantSSN;
        } else {
            claimantSSN = zeroString.substring(0, 10);
        }

        String bankNr = "1135";// bfm.getBankBranchNumber(groupId);
        if (bankNr != null && !bankNr.equals("")) {
            if (bankNr.length() < 4)
                bankNr = zeroString.substring(0, 4 - bankNr.length()) + bankNr;
        } else {
            bankNr = zeroString.substring(0, 4);
        }

        String claimantName = "fri";// bfm.getClaimantName(groupId);
        if (claimantName != null && !claimantName.equals("")) {
            if (claimantName.length() < 8)
                claimantName = claimantName + emptyString.substring(0, 8 - claimantName.length());
        } else {
            claimantName = emptyString.substring(0, 8);
        }

        String claimantAccountId = "007";// bfm.getClaimantsAccountId(groupId);
        if (claimantAccountId != null && !claimantAccountId.equals("")) {
            if (claimantAccountId.length() < 3)
                claimantAccountId = zeroString.substring(0, 3 - claimantAccountId.length());
        } else {
            claimantAccountId = zeroString.substring(0, 3);
        }

        // start the header string: "hausfaersla"
        /* Kt_krofuhafa - 10 */
        buffer.append(claimantSSN);// "5709902259"
        /* Utgafa - 4 */
        buffer.append("0140");// the version number of the data sending to RB
        /* Faerslugerd - 1 */
        buffer.append("H");// the type of the first line is: "hausfaersla" (H)
        /* Keyrsludagur - 8 */
        buffer.append(new IWTimestamp(Calendar.getInstance().getTime()).getDateString("yyyyMMdd"));// the
        // run
        // date
        // -
        // today!
        /* Verkefni - 2 */
        buffer.append("IK");// a code for "verkefni"
        /* autt - 8 */
        buffer.append(emptyString.substring(0, 8));// 8 empty spaces
        /* Gjaldkeranumer - 4 */
        buffer.append("SP01");// a code for "gjaldkeranumer"
        /* autt - 7 */
        buffer.append(emptyString.substring(0, 7));
        /* Iban - 4 */
        buffer.append(bankNr);// this is the number of the bank that sends the
        // claims
        /* Skjar - 8 */
        buffer.append(claimantName);
        /* autt - 50 */
        buffer.append(emptyString.substring(0, 50));
        buffer.append("\n");
        // "hausfaersla" ends

        Integer[] krofuNumer = new Integer[1];// bfm.getInvoiceNumbers(batchNumber);//
        // new
        // Integer[2];
        krofuNumer[0] = new Integer(1);
        // krofuNumer[1] = new Integer(2);
        // krofuNumer[2] = new Integer(3);

        String[] payersSSNArray = new String[1];

        // payersSSNArray[0] = new String("0405563469");
        payersSSNArray[0] = new String("0610703899");
        // payersSSNArray[2] = new String("2012643759");

        String numberOfClaims = String.valueOf(krofuNumer.length);
        if (numberOfClaims.length() < 6)
            numberOfClaims = zeroString.substring(0, 6 - numberOfClaims.length()) + numberOfClaims;

        int totalAmount = 0;
        String amountString = "10000";

        for (int i = 0; i < krofuNumer.length; i++) {
            int number = krofuNumer[i].intValue();

            totalAmount += Integer.valueOf(amountString).intValue(); // bfm.getAmount(number)

            String payersSSN = payersSSNArray[i]; // bfm.getPayersSSN(number);
            if (payersSSN != null && !payersSSN.equals("")) {
                if (payersSSN.length() < 10)
                    payersSSN = zeroString.substring(0, 10 - payersSSN.length()) + payersSSN;
            } else {
                payersSSN = zeroString.substring(0, 10);
            }

            String numberString = String.valueOf(number);
            if (numberString.length() < 6)
                numberString = zeroString.substring(0, 6 - numberString.length()) + numberString;

            String amount = amountString;// bfm.getAmount(number);
            if (amount != null && !amount.equals("")) {
                if (amount.length() < 11)
                    amount = zeroString.substring(0, 11 - amount.length()) + amount;
            }

            String batchString = String.valueOf(batchNumber);// String.valueOf(12);
            if (batchString.length() < 16)
                batchString = batchString + zeroString.substring(0, 16 - batchString.length());

            String noteNumber = null; // bfm.getNoteNumber(number);
            if (noteNumber != null && !noteNumber.equals("")) {
                if (noteNumber.length() < 7)
                    noteNumber = zeroString.substring(0, 7 - noteNumber.length()) + noteNumber;
            } else {
                noteNumber = zeroString.substring(0, 7);
            }

            /* Kt_krofuhafa - 10 */
            buffer.append(claimantSSN);// "5709902259"
            /* Utgafa - 4 */
            buffer.append("0140");// the version number of the data sending to
            // RB
            /* Faerslugerd - 1 */
            buffer.append("K");// the type of the second line is: "stofnun a
            // krofum" (K)
            /* Gjalddagi - 8 */
            // buffer.append(new
            // IWTimestamp(bfm.getDueDate(number).getTime()).getDateString("yyyyMMdd"));//
            // "20040801"
            buffer.append("20051101");// "20040801"
            // Calendar nidurfellingardagur = bfm.getDueDate(number);
            // nidurfellingardagur.add(Calendar.YEAR, 4);
            /* Nidurfellingardagur - 8 */
            buffer.append("20091101");// "20050801"
            /* Audkenni (Visir) - 3 */
            buffer.append(claimantAccountId);// "0IH"
            /* Kt_greidanda - 10 */
            buffer.append(payersSSN);// "5904002970"
            /* Bankanumer - 4 */
            buffer.append(bankNr);// "1158"
            /* Hofudbok - 2 */
            buffer.append("66");// "66"
            /* Numer - 6 */
            buffer.append(numberString);// "10028" + i
            /* Upphaed - 11 */
            buffer.append(amount);// "00000000100"
            /* Tilvisun - 16 */
            buffer.append(batchString);// "5904002970000000"
            /* Sedilnumer - 7 */
            buffer.append(noteNumber);// "0000000"
            /* Vidskiptanumer - 16 */
            buffer.append(emptyString.substring(0, 6) + payersSSN);// "5904002970"
            /* Eindagi - 8 */
            // buffer.append(new
            // IWTimestamp(bfm.getFinalDueDate(number).getTime()).getDateString("yyyyMMdd"));//
            // "20040815"
            buffer.append("20051131");// "20040815"

            /* information not needed for now */
            /* Tilkynningar- og greidslugjald 1 - 11 */
            buffer.append("00000000000");// bfm.getNotificationAndPaymentFee1(number));
            /* Tilkynningar- og greidslugjald 2 - 11 */
            buffer.append("00000000000");// bfm.getNotificationAndPaymentFee2(number));
            /* Fyrra vanskilagjald - 11 */
            buffer.append("00000000000");
            /* Seinna vanskilagjald - 11 */
            buffer.append("00000000000");
            /* Dagafjoldi fyrra vanskilagjalds - 2 */
            buffer.append("00");
            /* Dagafjoldi seinna vanskilagjalds - 2 */
            buffer.append("00");
            /* Vanskilagjaldskodi - 1 */
            buffer.append(" ");
            /* Annar kostnadur - 11 */
            buffer.append("00000000000");// bfm.getOtherCost(number));
            /* Annar vanskilakostnadur - 11 */
            buffer.append("00000000000");// bfm.getOtherOverdueCost(number));
            /* Drattarvaxtaprosenta - 7 */
            buffer.append("0000000");
            /* Drattarvaxtaregla - 1 */
            buffer.append("0");
            /* Drattarvaxtastofnskodi - 1 */
            buffer.append("0");
            /* Gengistegund - 1 */
            buffer.append("0");
            /* Mynt - 3 */
            buffer.append("000");
            /* Gengisbanki - 2 */
            buffer.append("00");
            /* Gengiskodi - 1 */
            buffer.append("0");
            // Autt
            buffer.append(" ");
            /* Greidslukodi - 1 */
            buffer.append(" ");
            /* Fyrri afslattur - 11 */
            buffer.append("00000000000");
            /* Seinni afslattur - 11 */
            buffer.append("00000000000");
            /* Dagafjoldi fyrri afslattar - 2 */
            buffer.append("00");
            /* Dagafjoldi seinni afslattar - 2 */
            buffer.append("00");
            /* Afslattarkodi - 1 */
            buffer.append(" ");
            /* Innborgunarkodi - 1 */
            buffer.append("1");
            /* Birtingarkodi - 1 */
            buffer.append("1");
            /* URL - 200 */
            buffer.append(emptyString);
            buffer.append("\n");

        }

        String totalString = String.valueOf(totalAmount);
        if (totalString.length() < 15)
            totalString = zeroString.substring(0, 15 - totalString.length()) + totalString;

        // "lokafaersla" begins
        /* Kt_krofuhafa - 10 */
        buffer.append(claimantSSN);// "5709902259"
        /* autt - 4 */
        buffer.append(emptyString.substring(0, 4));
        /* Faerslugerd - 1 */
        buffer.append("L");// the type of the last line is: "lokafaersla" (L)
        /* autt - 31 */
        buffer.append(emptyString.substring(0, 31));
        /* Fjoldi - 6 */
        buffer.append(numberOfClaims);
        /* Upphaed 15 */
        buffer.append(totalString);
        /* autt - 39 */
        buffer.append(emptyString.substring(0, 39));
        // "lokafaersla" ends

        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_NAME, false));
            writer.write(buffer.toString());
            writer.close();

            BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        sendCreateClaimsRequest();
    }

    public void getClaimStatusFromBank(int batchNumber, int groupId, java.util.Date from, java.util.Date to) {
        BankFileManager bfm = new BankInvoiceFileManager(groupId);
        String response = sendGetClaimStatusRequest(bfm, groupId, new IWTimestamp(from).getDateString("yyyyMMdd"),
                new IWTimestamp(to).getDateString("yyyyMMdd"));
        String number = response.substring(6, 12);
        String faerslugerd = response.substring(20, 21);

        bfm.setInvoiceStatus(faerslugerd, Integer.parseInt(number));
    }

    public void deleteClaim(int groupId, int claimNumber, java.util.Date dueDate, String payersSSN) {

    }

    private MultipartPostMethod sendCreateClaimsRequest() {
        /*
         * HttpClient client = new HttpClient(); client.setStrictMode(false);
         * MultipartPostMethod post = new MultipartPostMethod(SITE +
         * POST_METHOD); File file = new File(FILE_NAME);
         * 
         * try { post.addParameter("notendanafn", "lolo7452");// "aistest");
         * post.addParameter("password", "12345felix");
         * post.addParameter("KtFelags", "6812933379");// "5709902259");
         * post.addParameter("Skra", file);
         * 
         * post.setDoAuthentication(false); client.executeMethod(post);
         * 
         * System.out.println("responseString: " +
         * post.getResponseBodyAsString()); } catch (FileNotFoundException e1) {
         * e1.printStackTrace(); } catch (IOException e2) {
         * e2.printStackTrace(); } finally { post.releaseConnection(); } return
         * post;
         */

        PostMethod filePost = new PostMethod(SITE + POST_METHOD);
        File file = new File(FILE_NAME);

        filePost.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE, true);

        try {
            StringPart userPart = new StringPart("notendanafn", "lolo7452");
            StringPart pwdPart = new StringPart("password", "12345felix");
            StringPart clubssnPart = new StringPart("KtFelags", "6812933379");
            FilePart filePart = new FilePart("Skra", file);

            Part[] parts = { userPart, pwdPart, clubssnPart, filePart };
            filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
            HttpClient client = new HttpClient();
            client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

            int status = client.executeMethod(filePost);
            if (status == HttpStatus.SC_OK) {
                System.out.println("Upload complete, response=" + filePost.getResponseBodyAsString());
            } else {
                System.out.println("Upload failed, response=" + HttpStatus.getStatusText(status));
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            filePost.releaseConnection();
        }

        return null;

        /*
         * PostMethod authpost = new PostMethod(SITE + POST_METHOD);
         * 
         * authpost.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE,
         * true); try {
         * 
         * HttpClient client = new HttpClient();
         * client.getHttpConnectionManager().getParams().setConnectionTimeout(
         * 5000);
         * 
         * File file = new File(FILE_NAME); // Prepare login parameters
         * NameValuePair inputFile = new NameValuePair("xmldata", file);
         * authpost.setRequestBody(new NameValuePair[] { inputFile });
         * 
         * int status = client.executeMethod(authpost); System.out.println("Form
         * post: " + authpost.getStatusLine().toString()); if (status ==
         * HttpStatus.SC_OK) { System.out.println("Submit complete, response=" +
         * authpost.getResponseBodyAsString()); } else {
         * System.out.println("Submit failed, response=" +
         * HttpStatus.getStatusText(status)); } } catch (Exception ex) {
         * ex.printStackTrace(); } finally { authpost.releaseConnection(); }
         */

    }

    /**
     * Sends a http post method to Sparisj to get the status of claims
     * 
     * @param bfm
     * @param groupId
     * @return
     */
    private String sendGetClaimStatusRequest(BankFileManager bfm, int groupId, String fromDate, String toDate) {
        /*
         * Protocol easyhttps = new Protocol("https", new
         * EasySSLProtocolSocketFactory(), 443);
         */

        HttpClient client = new HttpClient();
        // client.getHostConfiguration().setHost(SITE, 443, easyhttps);
        PostMethod post = new PostMethod(SITE + POST_ANSWER_METHOD);

        String response = new String();
        try {
            post.addParameter("notendanafn", bfm.getUsername());
            post.addParameter("password", bfm.getPassword());
            post.addParameter("KtFelags", bfm.getClaimantSSN());
            post.addParameter("Reikningsnr", "");
            String claimantAccountId = bfm.getClaimantsAccountId();
            if (claimantAccountId != null && !claimantAccountId.equals("")) {
                if (claimantAccountId.length() < 3)
                    claimantAccountId = zeroString.substring(0, 3 - claimantAccountId.length());
            } else {
                claimantAccountId = zeroString.substring(0, 3);
            }
            post.addParameter("Audkenni", claimantAccountId);
            post.addParameter("DagsFra", fromDate);// "20030701"
            post.addParameter("DagsTil", toDate);// "20040823"
            /*
             * Snidmat can be: 230 - print out 240 - Excel 250 - booking file 62
             * 251 - booking file 66 252 - XML
             */
            post.addParameter("Snidmat", "230");
            client.executeMethod(post);

            response = post.getResponseBodyAsString();

        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            post.releaseConnection();
        }
        // System.out.println("response: " + response);
        return response;
    }
}