Package org.kapott.hbci.tools

Source Code of org.kapott.hbci.tools.SyntaxCheck

/*  $Id: SyntaxCheck.java,v 1.1 2011/05/04 22:37:45 willuhn Exp $

    This file is part of HBCI4Java
    Copyright (C) 2001-2008  Stefan Palme

    HBCI4Java is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    HBCI4Java is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package org.kapott.hbci.tools;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Properties;

import org.kapott.hbci.callback.HBCICallbackConsole;
import org.kapott.hbci.comm.Comm;
import org.kapott.hbci.manager.HBCIUtils;
import org.kapott.hbci.manager.MsgGen;
import org.kapott.hbci.protocol.MSG;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public final class SyntaxCheck
{
    private static String getArg(String[] args,int idx,String st)
        throws IOException
    {
        String ret=null;
       
        if (args!=null && idx<args.length) {
            ret=args[idx];
        } else {
            System.out.print(st+": ");
            System.out.flush();
            ret=new BufferedReader(new InputStreamReader(System.in)).readLine();
        }
       
        return ret;
    }
   
    public static void main(String[] args)
        throws IOException
    {
        String ifilename=getArg(args,0,"Dateiname der Datei mit der HBCI-Nachricht");
        String version=getArg(args,1,"HBCI-Version");
        String msgName=getArg(args,2,"Name der Nachricht");
        String checkSeq_st=getArg(args,3,"Sequenznummern validieren (0/1)");
        boolean checkSeq=checkSeq_st.equals("1");
        String checkValids_st=getArg(args,4,"Auf g�ltige Werte testen (0/1)");
        boolean checkValids=checkValids_st.equals("1");
       
        Properties props=new Properties();
        props.setProperty("log.loglevel.default", "6");
        HBCIUtils.init(props,new HBCICallbackConsole());
       
        FileInputStream fi=new FileInputStream(ifilename);
        byte[]          buffer=new byte[1024];
        int             len;
        StringBuffer    st=new StringBuffer();
       
        while ((len=fi.read(buffer))>0) {
            st.append(new String(buffer,0,len,Comm.ENCODING));
        }
        fi.close();
       
        MsgGen gen=new MsgGen(SyntaxCheck.class.getClassLoader().getResourceAsStream("hbci-"+version+".xml"));
       
        if (msgName!=null && msgName.length()!=0) {
            MSG msg=new MSG(msgName,st.toString(),st.length(),gen,checkSeq,checkValids);
            String st2=msg.toString(0);
           
            if (st2.equals(st.toString())) {
                System.out.println("ok");
            } else {
                System.out.println("detected, but different in- and output");
                System.out.println(st2);
            }
           
            Properties p=msg.getData();
            ArrayList al=new ArrayList();
            for (Enumeration e=p.propertyNames();e.hasMoreElements();) {
                al.add(e.nextElement());
            }
            String[] sa=(String[])al.toArray(new String[al.size()]);
            Arrays.sort(sa);
           
            for (int i=0;i<sa.length;i++) {
                String value=p.getProperty(sa[i]);
                System.out.println(sa[i]+" = "+value+" ("+value.length()+" Bytes)");
            }
        } else {
            NodeList list=gen.getSyntax().getElementsByTagName("MSGdef");
            int      size=list.getLength();
            MSG      msg;
           
            for (int i=0;i<size;i++) {
                msgName=((Element)list.item(i)).getAttribute("id");
                System.out.println("checking for '"+msgName+"'");
                try {
                    msg=new MSG(msgName,st.toString(),st.length(),gen,checkSeq,checkValids);
                } catch (Exception e) {
                    msg=null;
                }
                if (msg!=null) {
                    String st2=msg.toString(0);
                   
                    if (st2.equals(st.toString())) {
                        System.out.println("ok");
                    } else {
                        System.out.println("detected, but different in- and output");
                        System.out.println(st2);
                    }
                }
            }
        }
    }
}
TOP

Related Classes of org.kapott.hbci.tools.SyntaxCheck

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.