001    /**
002     *  This library is free software; you can redistribute it and/or modify it
003     *  under the terms of the GNU Lesser General Public License (LGPL) as
004     *  published by the Free Software Foundation; either version 3.0 of the
005     *  License, or (at your option) any later version.
006     *
007     *  This library is distributed in the hope that it will be useful, but
008     *  WITHOUT ANY WARRANTY; without even the implied warranty of
009     *  MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE. See the GNU
010     *  Lesser General Public License for more details. 
011     */
012    
013    /**
014     * Title:        JBarcodeBean
015     * Description:  Barcode JavaBeans Component
016     * Copyright:    Copyright (C) 2004
017     * Company:      Matthias Hanisch
018     */
019    package net.sourceforge.jbarcodebean.model;
020    
021    import net.sourceforge.jbarcodebean.BarcodeException;
022    
023    public class Code93Extended extends Code93 {
024        
025        static class MappedCode{
026            char character;
027            String encoded;
028            MappedCode(char character, String encoded){
029                this.character=character;
030                this.encoded=encoded;
031            }
032        }
033        private String getEncoded(char character){
034            for(int i=0;i<CODES_EXTENDED.length;i++){
035                if(CODES_EXTENDED[i].character==character){
036                    return CODES_EXTENDED[i].encoded;
037                }
038            }
039            return "";
040        }
041        
042        protected String preprocess(String text) throws BarcodeException {
043            StringBuffer buffer=new StringBuffer();
044            for(int i=0;i<text.length();i++){
045                buffer.append(getEncoded(text.charAt(i)));
046            }
047            return buffer.toString();
048        }
049        
050    
051        private static MappedCode[] CODES_EXTENDED={
052            new MappedCode((char)0    , SHIFT_DOLLAR+"U"),
053            new MappedCode((char)1    , SHIFT_PERCENT+"A"),
054            new MappedCode((char)2    , SHIFT_PERCENT+"B"),
055            new MappedCode((char)3    , SHIFT_PERCENT+"C"),
056            new MappedCode((char)4    , SHIFT_PERCENT+"D"),
057            new MappedCode((char)5    , SHIFT_PERCENT+"E"),
058            new MappedCode((char)6    , SHIFT_PERCENT+"F"),
059            new MappedCode((char)7    , SHIFT_PERCENT+"G"),
060            new MappedCode((char)8     , SHIFT_PERCENT+"H"),
061            new MappedCode((char)9     , SHIFT_PERCENT+"I"),
062            new MappedCode((char)10     , SHIFT_PERCENT+"J"),
063            new MappedCode((char)11     , SHIFT_PERCENT+"K"),
064            new MappedCode((char)12     , SHIFT_PERCENT+"L"),
065            new MappedCode((char)13     , SHIFT_PERCENT+"M"),
066            new MappedCode((char)14     , SHIFT_PERCENT+"N"),
067            new MappedCode((char)15     , SHIFT_PERCENT+"O"),
068            new MappedCode((char)16    , SHIFT_PERCENT+"P"),
069            new MappedCode((char)17    , SHIFT_PERCENT+"Q"),
070            new MappedCode((char)18    , SHIFT_PERCENT+"R"),
071            new MappedCode((char)19    , SHIFT_PERCENT+"S"),
072            new MappedCode((char)20    , SHIFT_PERCENT+"T"),
073            new MappedCode((char)21    , SHIFT_PERCENT+"U"),
074            new MappedCode((char)22    , SHIFT_PERCENT+"V"),
075            new MappedCode((char)23    , SHIFT_PERCENT+"W"),
076            new MappedCode((char)24    , SHIFT_PERCENT+"X"),
077            new MappedCode((char)25     , SHIFT_PERCENT+"Y"),
078            new MappedCode((char)26    , SHIFT_PERCENT+"Z"),
079            new MappedCode((char)27    , SHIFT_DOLLAR+"A"),
080            new MappedCode((char)28     , SHIFT_DOLLAR+"B"),
081            new MappedCode((char)29     , SHIFT_DOLLAR+"C"),
082            new MappedCode((char)30     , SHIFT_DOLLAR+"D"),
083            new MappedCode((char)31     , SHIFT_DOLLAR+"E"),
084            new MappedCode(' ' , " "),
085            new MappedCode('!'      , SHIFT_SLASH+"A"),
086            new MappedCode('"'      , SHIFT_SLASH+"B"),
087            new MappedCode('#'      , SHIFT_SLASH+"C"),
088            new MappedCode('$'      , SHIFT_SLASH+"D"),
089            new MappedCode('%'      , SHIFT_SLASH+"E"),
090            new MappedCode('&'      , SHIFT_SLASH+"F"),
091            new MappedCode('\''      , SHIFT_SLASH+"G"),
092            new MappedCode('('      , SHIFT_SLASH+"H"),
093            new MappedCode(')'      , SHIFT_SLASH+"I"),
094            new MappedCode('*'      , SHIFT_SLASH+"J"),
095            new MappedCode('+'      , SHIFT_SLASH+"K"),
096            new MappedCode(','      , SHIFT_SLASH+"L"),
097            new MappedCode('-'    ,  "-"),
098            new MappedCode('.'   ,   "."),
099            new MappedCode('/'      , SHIFT_SLASH+"O"),
100            new MappedCode('0'   ,   "0"),
101            new MappedCode('1'   ,   "1"),
102            new MappedCode('2'   ,   "2"),
103            new MappedCode('3'   ,   "3"),
104            new MappedCode('4'   ,   "4"),
105            new MappedCode('5'   ,   "5"),
106            new MappedCode('6'   ,   "6"),
107            new MappedCode('7'   ,   "7"),
108            new MappedCode('8'   ,   "8"),
109            new MappedCode('9'   ,   "9"),
110            new MappedCode(':'      , SHIFT_SLASH+"Z"),
111            new MappedCode(';'      , SHIFT_DOLLAR+"F"),
112            new MappedCode('<'      , SHIFT_DOLLAR+"G"),
113            new MappedCode('='      , SHIFT_DOLLAR+"H"),
114            new MappedCode('>'      , SHIFT_DOLLAR+"I"),
115            new MappedCode('?'      , SHIFT_DOLLAR+"J"),
116            new MappedCode('@'      , SHIFT_DOLLAR+"V"),
117            new MappedCode('A'  ,    "A"),
118            new MappedCode('B'  ,    "B"),
119            new MappedCode('C'  ,    "C"),
120            new MappedCode('D'  ,    "D"),
121            new MappedCode('E'  ,    "E"),
122            new MappedCode('F'  ,    "F"),
123            new MappedCode('G'  ,    "G"),
124            new MappedCode('H'  ,    "H"),
125            new MappedCode('I'  ,    "I"),
126            new MappedCode('J'  ,    "J"),
127            new MappedCode('K'  ,    "K"),
128            new MappedCode('L'  ,    "L"),
129            new MappedCode('M'  ,    "M"),
130            new MappedCode('N'  ,    "N"),
131            new MappedCode('O'  ,    "O"),
132            new MappedCode('P'  ,    "P"),
133            new MappedCode('Q' ,     "Q"),
134            new MappedCode('R'  ,    "R"),
135            new MappedCode('S'  ,    "S"),
136            new MappedCode('T'  ,    "T"),
137            new MappedCode('U'  ,    "U"),
138            new MappedCode('V'  ,    "V"),
139            new MappedCode('W'  ,    "W"),
140            new MappedCode('X'  ,    "X"),
141            new MappedCode('Y'  ,    "Y"),
142            new MappedCode('Z'  ,    "Z"),
143            new MappedCode('['      , SHIFT_DOLLAR+"K"),
144            new MappedCode('\\'      , SHIFT_DOLLAR+"L"),
145            new MappedCode(']'      , SHIFT_DOLLAR+"M"),
146            new MappedCode('^'      , SHIFT_DOLLAR+"N"),
147            new MappedCode('_'      , SHIFT_DOLLAR+"O"),
148            new MappedCode('`'      , SHIFT_DOLLAR+"W"),
149            new MappedCode('a'      , SHIFT_PLUS+"A"),
150            new MappedCode('b'      , SHIFT_PLUS+"B"),
151            new MappedCode('c'      , SHIFT_PLUS+"C"),
152            new MappedCode('d'      , SHIFT_PLUS+"D"),
153            new MappedCode('e'      , SHIFT_PLUS+"E"),
154            new MappedCode('f'      , SHIFT_PLUS+"F"),
155            new MappedCode('g'      , SHIFT_PLUS+"G"),
156            new MappedCode('h'      , SHIFT_PLUS+"H"),
157            new MappedCode('i'      , SHIFT_PLUS+"I"),
158            new MappedCode('j'      , SHIFT_PLUS+"J"),
159            new MappedCode('k'      , SHIFT_PLUS+"K"),
160            new MappedCode('l'      , SHIFT_PLUS+"L"),
161            new MappedCode('m'      , SHIFT_PLUS+"M"),
162            new MappedCode('n'      , SHIFT_PLUS+"N"),
163            new MappedCode('o'      , SHIFT_PLUS+"O"),
164            new MappedCode('p'      , SHIFT_PLUS+"P"),
165            new MappedCode('q'      , SHIFT_PLUS+"Q"),
166            new MappedCode('r'      , SHIFT_PLUS+"R"),
167            new MappedCode('s'      , SHIFT_PLUS+"S"),
168            new MappedCode('t'     , SHIFT_PLUS+"T"),
169            new MappedCode('u'      , SHIFT_PLUS+"U"),
170            new MappedCode('v'      , SHIFT_PLUS+"V"),
171            new MappedCode('w'      , SHIFT_PLUS+"W"),
172            new MappedCode('x'      , SHIFT_PLUS+"X"),
173            new MappedCode('y'      , SHIFT_PLUS+"Y"),
174            new MappedCode('z'      , SHIFT_PLUS+"Z"),
175            new MappedCode('{'      , SHIFT_DOLLAR+"P"),
176            new MappedCode('|'      , SHIFT_DOLLAR+"Q"),
177            new MappedCode('}'      , SHIFT_DOLLAR+"R"),
178            new MappedCode('~'      , SHIFT_DOLLAR+"S"),
179            new MappedCode((char)127    , SHIFT_DOLLAR+"T")
180        };
181     
182    }