⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genericvalidatingpackager.java

📁 POS is a Java&#174 platform-based, mission-critical, ISO-8583 based financial transaction library/fr
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    String size = atts.getValue("length");                    String pad  = atts.getValue("pad");                    Class c = Class.forName(type);                    ISOFieldPackager f;                    f = (ISOFieldPackager) c.newInstance();                    f.setDescription(name);                    f.setLength(Integer.parseInt(size));                    f.setPad(new Boolean(pad).booleanValue());                    // Insert this new isofield into the Hashtable                    // on the top of the stack using the fieldID as the key                    Hashtable ht = (Hashtable) fieldStack.peek();                    ht.put(new Integer(fldID), f);                }                if ( localName.equals( "isofieldvalidator" ) ){                    String type = atts.getValue( "class" );                    String breakOnError = atts.getValue( "break-on-error" );                    String minLen = atts.getValue( "minlen" );                    String maxLen = atts.getValue( "maxlen" );                    Class c = Class.forName( type );                    ISOFieldValidator v = (ISOFieldValidator)c.newInstance();                    if ( breakOnError != null ) v.setBreakOnError( Boolean.valueOf( breakOnError ).booleanValue() );                    if ( minLen != null ) v.setMinLength( Integer.parseInt( minLen ) );                    if ( maxLen != null ) v.setMaxLength( Integer.parseInt( maxLen ) );                    v.setFieldId( Integer.parseInt(fldID) );                    /** insert validator on stack waiting for properties **/                    validatorStack.push( v );                    validatorStack.push( new Properties() );                }                if ( localName.equals( "property" ) ){                    ((Properties)validatorStack.peek()).setProperty(                            atts.getValue( "name" ),                            atts.getValue( "value" ) );                }                if ( localName.equals( "isovalidator" ) ){                    String type = atts.getValue( "class" );                    String breakOnError = atts.getValue( "break-on-error" );                    Class c = Class.forName( type );                    ISOBaseValidator v = (ISOBaseValidator)c.newInstance();                    if ( breakOnError != null ) v.setBreakOnError( Boolean.valueOf( breakOnError ).booleanValue() );                    /** insert validator on stack waiting for properties **/                    validatorStack.push( v );                    validatorStack.push( new Properties() );                }                if ( localName.equals("isofieldpackager") ) {                    String id   = atts.getValue("id");                    String type = atts.getValue("class");                    String name = atts.getValue("name");                    String size = atts.getValue("length");                    String pad  = atts.getValue("pad");/*For a isofield packager node push the following fieldsonto the stack.1) an Integer indicating the field ID2) an instance of the specified ISOFieldPackager class3) an instance of the specified ISOBasePackager (msgPackager) class4) a Hashtable to collect the subfields*/                    String packager = atts.getValue("packager");                    fieldStack.push(new Integer(id));                    ISOFieldPackager f;                    f = (ISOFieldPackager) Class.forName(type).newInstance();                    f.setDescription(name);                    f.setLength(Integer.parseInt(size));                    f.setPad(new Boolean(pad).booleanValue());                    fieldStack.push(f);                    ISOBasePackager p;                    p = (ISOBasePackager) Class.forName(packager).newInstance();                    if (p instanceof GenericValidatingPackager){                        GenericValidatingPackager gp = (GenericValidatingPackager) p;                        gp.setGenericPackagerParams (atts);                    }                    fieldStack.push(p);                    String validator = atts.getValue( "validator" );                    ISOBaseValidatingPackager v;                    v = (ISOBaseValidatingPackager) Class.forName(validator).newInstance();                    validatorStack.push( v );                    Hashtable hash = new Hashtable();                    hash.put( new Integer( VALIDATOR_INDEX ), new Vector() );                    validatorStack.push( hash );                    fieldStack.push( new Hashtable() );                }            } catch (Exception ex){                throw new SAXException(ex);            }        }        /**         * Convert the ISOFieldPackagers in the Hashtable         * to an array of ISOFieldPackagers         */        private ISOFieldPackager[] makeFieldPackArray(Hashtable tab){            int maxField = 0;            // First find the largest field number in the Hashtable            for (Enumeration e=tab.keys(); e.hasMoreElements(); ){                int n = ((Integer)e.nextElement()).intValue();                if (n > maxField) maxField = n;            }            // Create the array            ISOFieldPackager fld[] = new ISOFieldPackager[maxField+1];            // Populate it            for (Enumeration e=tab.keys(); e.hasMoreElements(); ){                Integer key = (Integer) e.nextElement();                fld[key.intValue()] = (ISOFieldPackager)tab.get(key);            }            return fld;        }        public void endElement(String namespaceURI, String localName, String qName) {            if (localName.equals("isopackager")){                Hashtable tab  = (Hashtable)fieldStack.pop();                setFieldPackager( makeFieldPackArray(tab) );                tab = (Hashtable)validatorStack.pop();                setFieldValidator ( makeFieldValidatorArray( tab ));                setMsgValidator( makeMsgValidatorArray( tab ) );            }            if ( localName.equals( "isofieldvalidator" ) ){                /** pop properties **/                Properties p = (Properties)validatorStack.pop();                SimpleConfiguration cfg = null;                if ( !p.entrySet().isEmpty() )                    cfg = new SimpleConfiguration( p );                /** pop validator and add it to the hash **/                ISOFieldValidator f = (ISOFieldValidator)validatorStack.pop();                if ( cfg != null ){                    try {                        f.setConfiguration( cfg );                    }                    catch (ConfigurationException ex) {                        ex.printStackTrace(  );                    }                }                ((Hashtable)validatorStack.peek()).put( new Integer(fldID), f );            }            if ( localName.equals( "isovalidator" ) ){                /** pop properties **/                Properties p = (Properties)validatorStack.pop();                SimpleConfiguration cfg = null;                if ( !p.entrySet().isEmpty() )                    cfg = new SimpleConfiguration( p );                /** pop validator and add it to the hash **/                ISOBaseValidator v = (ISOBaseValidator)validatorStack.pop();                if ( cfg != null ){                    try {                        v.setConfiguration( cfg );                    }                    catch (ConfigurationException ex) {                        ex.printStackTrace(  );                    }                }                /** add validator to the has **/                ((Vector)((Hashtable)validatorStack.peek()).get( new Integer(VALIDATOR_INDEX) )).addElement( v );            }            if (localName.equals("isofieldpackager")){                // Pop the 4 entries off the stack in the correct order                Hashtable tab = (Hashtable)fieldStack.pop();                ISOBasePackager msgPackager = (ISOBasePackager) fieldStack.pop();                msgPackager.setFieldPackager (makeFieldArray(tab));                msgPackager.setLogger (getLogger(), "Generic Packager");                ISOFieldPackager fieldPackager = (ISOFieldPackager) fieldStack.pop();                Integer fno = (Integer) fieldStack.pop();                // Create the ISOMsgField packager with the retrieved msg and field Packagers                ISOMsgFieldPackager mfp =                        new ISOMsgFieldPackager(fieldPackager, msgPackager);                // Add the newly created ISOMsgField packager to the                // lower level field stack                tab=(Hashtable)fieldStack.peek();                tab.put(fno, mfp);                Hashtable val = (Hashtable)validatorStack.pop();                ISOBaseValidatingPackager v = (ISOBaseValidatingPackager) validatorStack.pop();                v.setFieldValidator( makeFieldValidatorArray ( val ) );                v.setMsgValidator( makeMsgValidatorArray ( val ) );                ISOMsgFieldValidator mfv = new ISOMsgFieldValidator ( fieldPackager.getDescription(), v );                mfv.setFieldId( fno.intValue() );                v.setLogger (getLogger(), "Generic validating Packager");                tab=(Hashtable)validatorStack.peek();                tab.put(fno, mfv);            }        }        ISOFieldValidator[] makeFieldValidatorArray ( Hashtable tab ){            // Create the array            ISOFieldValidator fvlds[] = new ISOFieldValidator[tab.keySet().size()];            // Populate it            int ind = 0;            for (Enumeration e=tab.keys(); e.hasMoreElements(); ){                Integer key = (Integer) e.nextElement();                if ( key.intValue() != VALIDATOR_INDEX ){                    fvlds[ind] = (ISOFieldValidator)tab.get(key);                    ind ++;                }            }            return fvlds;        }        ISOBaseValidator[] makeMsgValidatorArray ( Hashtable tab ){            // First find the count            Vector v = (Vector)tab.get( new Integer( VALIDATOR_INDEX ) );            if ( v==null || v.size() <= 0 ) return null;            ISOBaseValidator[] r = new ISOBaseValidator[v.size()];            for (int i = 0; i < v.size(); i++)                r[i] = (ISOBaseValidator)v.elementAt( i );            return r;        }        // ErrorHandler Methods        public void error (SAXParseException ex) throws SAXException        {            throw ex;        }        public void fatalError (SAXParseException ex) throws SAXException        {            throw ex;        }        final int VALIDATOR_INDEX = -3 ;        private Stack fieldStack, validatorStack;        private String fldID;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -