/* $Id: AbstractShowLowlevelData.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 org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** Basisklasse f�r die beiden <code>ShowLowlevelGV*</code>-Tools. Diese Klasse wird nur intern verwendet. */ public class AbstractShowLowlevelData { protected static void showData(String gvname,Document syntax,int minLevel) { int len=gvname.length(); int versionpos=-1; for (int i=len-1;i>=0;i--) { char ch=gvname.charAt(i); if (!(ch>='0' && ch<='9')) { versionpos=i+1; break; } } System.out.println("jobname:"+gvname.substring(0,versionpos)+" version:"+gvname.substring(versionpos)); Element gvdef=syntax.getElementById(gvname); NodeList gvcontent=gvdef.getChildNodes(); len=gvcontent.getLength(); boolean first=true; for (int i=0;i<len;i++) { Node contentref=gvcontent.item(i); if (contentref.getNodeType()==Node.ELEMENT_NODE) { if (first) { first=false; } else { displayContentRef("",(Element)contentref,syntax,2,0,minLevel); } } } } protected static void displayContentRef(String path,Element ref,Document syntax,int indent,int currentLevel,int minLevel) { if (ref.getAttribute("type").length()!=0) { StringBuffer spaces=new StringBuffer(); for (int i=0;i<indent;i++) spaces.append(" "); if (ref.getNodeName().equals("DE")) { if (currentLevel>=minLevel) { String name=ref.getAttribute("name"); String datatype=ref.getAttribute("type"); String minlen=ref.getAttribute("minsize"); String maxlen=ref.getAttribute("maxsize"); int minnum=1; int maxnum=1; String st=ref.getAttribute("minnum"); if (st.length()!=0) minnum=Integer.parseInt(st); st=ref.getAttribute("maxnum"); if (st.length()!=0) maxnum=Integer.parseInt(st); System.out.println(spaces+pathWithDot(path)+name+":"+datatype+ ((minlen.length()!=0)?(" min:"+minlen):"")+ ((maxlen.length()!=0)?(" max:"+maxlen):"")+ " {"+minnum+","+maxnum+"}"); } } else { String nextPath=path; int nextIndent=indent; if (currentLevel>=minLevel) { String name=ref.getAttribute("name"); if (name.length()==0) name=ref.getAttribute("type"); int minnum=1; int maxnum=1; String st=ref.getAttribute("minnum"); if (st.length()!=0) minnum=Integer.parseInt(st); st=ref.getAttribute("maxnum"); if (st.length()!=0) maxnum=Integer.parseInt(st); System.out.println(spaces+"GROUP:"+name+" {"+minnum+","+maxnum+"}"); nextIndent+=2; nextPath=pathWithDot(path)+name; } Element def=syntax.getElementById(ref.getAttribute("type")); NodeList defcontent=def.getChildNodes(); int len=defcontent.getLength(); for (int i=0;i<len;i++) { Node content=defcontent.item(i); if (content.getNodeType()==Node.ELEMENT_NODE) displayContentRef( nextPath,(Element)content,syntax, nextIndent,currentLevel+1,minLevel); } } } } protected static void showData(String gvname,Document syntax) { showData(gvname, syntax, 0); } protected static String pathWithDot(String path) { return (path.length()==0)?path:(path+"."); } }