Source Code Cross Referenced for htmlFilterAbstractScraper.java in  » Search-Engine » yacy » de » anomic » htmlFilter » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Search Engine » yacy » de.anomic.htmlFilter 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        // htmlFilterAbstractScraper.java 
002:        // ---------------------------
003:        // (C) by Michael Peter Christen; mc@anomic.de
004:        // first published on http://www.anomic.de
005:        // Frankfurt, Germany, 2004
006:        // last major change: 18.02.2004
007:        //
008:        // You agree that the Author(s) is (are) not responsible for cost,
009:        // loss of data or any harm that may be caused by usage of this softare or
010:        // this documentation. The usage of this software is on your own risk. The
011:        // installation and usage (starting/running) of this software may allow other
012:        // people or application to access your computer and any attached devices and
013:        // is highly dependent on the configuration of the software which must be
014:        // done by the user of the software;the author(s) is (are) also
015:        // not responsible for proper configuration and usage of the software, even
016:        // if provoked by documentation provided together with the software.
017:        //
018:        // THE SOFTWARE THAT FOLLOWS AS ART OF PROGRAMMING BELOW THIS SECTION
019:        // IS PUBLISHED UNDER THE GPL AS DOCUMENTED IN THE FILE gpl.txt ASIDE THIS
020:        // FILE AND AS IN http://www.gnu.org/licenses/gpl.txt
021:        // ANY CHANGES TO THIS FILE ACCORDING TO THE GPL CAN BE DONE TO THE
022:        // LINES THAT FOLLOWS THIS COPYRIGHT NOTICE HERE, BUT CHANGES MUST NOT
023:        // BE DONE ABOVE OR INSIDE THE COPYRIGHT NOTICE. A RE-DISTRIBUTION
024:        // MUST CONTAIN THE INTACT AND UNCHANGED COPYRIGHT NOTICE.
025:        // CONTRIBUTIONS AND CHANGES TO THE PROGRAM CODE SHOULD BE MARKED AS SUCH.
026:
027:        package de.anomic.htmlFilter;
028:
029:        import java.util.HashMap;
030:        import java.util.Properties;
031:        import java.util.TreeSet;
032:
033:        import de.anomic.server.serverCharBuffer;
034:
035:        public abstract class htmlFilterAbstractScraper implements 
036:                htmlFilterScraper {
037:
038:            public static final char lb = '<';
039:            public static final char rb = '>';
040:            public static final char sl = '/';
041:
042:            private TreeSet<String> tags0;
043:            private TreeSet<String> tags1;
044:
045:            // define a translation table for html character codings
046:            private static HashMap<String, String> trans = new HashMap<String, String>(
047:                    300);
048:            static {
049:                trans.put("&quot;", "\""); //Anf&uuml;hrungszeichen oben
050:                trans.put("&amp;", "&"); //Ampersand-Zeichen, kaufm&auml;nnisches Und
051:                trans.put("&lt;", "<"); //&ouml;ffnende spitze Klammer
052:                trans.put("&gt;", ">"); //schlie&szlig;ende spitze Klammer
053:                trans.put("&nbsp;", " "); //Erzwungenes Leerzeichen
054:                trans.put("&iexcl;", "!"); //umgekehrtes Ausrufezeichen
055:                trans.put("&cent;", " cent "); //Cent-Zeichen
056:                trans.put("&pound;", " pound "); //Pfund-Zeichen
057:                trans.put("&curren;", " currency "); //W&auml;hrungs-Zeichen
058:                trans.put("&yen;", " yen "); //Yen-Zeichen
059:                trans.put("&brvbar;", " "); //durchbrochener Strich
060:                trans.put("&sect;", " paragraph "); //Paragraph-Zeichen
061:                trans.put("&uml;", " "); //P&uuml;nktchen oben
062:                trans.put("&copy;", " copyright "); //Copyright-Zeichen
063:                trans.put("&ordf;", " "); //Ordinal-Zeichen weiblich
064:                trans.put("&laquo;", " "); //angewinkelte Anf&uuml;hrungszeichen links
065:                trans.put("&not;", " not "); //Verneinungs-Zeichen
066:                trans.put("&shy;", "-"); //kurzer Trennstrich
067:                trans.put("&reg;", " trademark "); //Registriermarke-Zeichen
068:                trans.put("&macr;", " "); //&Uuml;berstrich
069:                trans.put("&deg;", " degree "); //Grad-Zeichen
070:                trans.put("&plusmn;", " +/- "); //Plusminus-Zeichen
071:                trans.put("&sup2;", " square "); //Hoch-2-Zeichen
072:                trans.put("&sup3;", " 3 "); //Hoch-3-Zeichen
073:                trans.put("&acute;", " "); //Acute-Zeichen
074:                trans.put("&micro;", " micro "); //Mikro-Zeichen
075:                trans.put("&para;", " paragraph "); //Absatz-Zeichen
076:                trans.put("&middot;", " "); //Mittelpunkt
077:                trans.put("&cedil;", " "); //H&auml;kchen unten
078:                trans.put("&sup1;", " "); //Hoch-1-Zeichen
079:                trans.put("&ordm;", " degree "); //Ordinal-Zeichen m&auml;nnlich
080:                trans.put("&raquo;", " "); //angewinkelte Anf&uuml;hrungszeichen rechts
081:                trans.put("&frac14;", " quarter "); //ein Viertel
082:                trans.put("&frac12;", " half "); //ein Halb
083:                trans.put("&frac34;", " 3/4 "); //drei Viertel
084:                trans.put("&iquest;", "?"); //umgekehrtes Fragezeichen
085:                trans.put("&Agrave;", "A"); //A mit Accent grave
086:                trans.put("&Aacute;", "A"); //A mit Accent acute
087:                trans.put("&Acirc;", "A"); //A mit Circumflex
088:                trans.put("&Atilde;", "A"); //A mit Tilde
089:                trans.put("&Auml;", "Ae"); //A Umlaut
090:                trans.put("&Aring;", "A"); //A mit Ring
091:                trans.put("&AElig;", "A"); //A mit legiertem E
092:                trans.put("&Ccedil;", "C"); //C mit H&auml;kchen
093:                trans.put("&Egrave;", "E"); //E mit Accent grave
094:                trans.put("&Eacute;", "E"); //E mit Accent acute
095:                trans.put("&Ecirc;", "E"); //E mit Circumflex
096:                trans.put("&Euml;", "E"); //E Umlaut
097:                trans.put("&Igrave;", "I"); //I mit Accent grave
098:                trans.put("&Iacute;", "I"); //I mit Accent acute
099:                trans.put("&Icirc;", "I"); //I mit Circumflex
100:                trans.put("&Iuml;", "I"); //I Umlaut
101:                trans.put("&ETH;", "D"); //Eth (isl&auml;ndisch)
102:                trans.put("&Ntilde;", "N"); //N mit Tilde
103:                trans.put("&Ograve;", "O"); //O mit Accent grave
104:                trans.put("&Oacute;", "O"); //O mit Accent acute
105:                trans.put("&Ocirc;", "O"); //O mit Circumflex
106:                trans.put("&Otilde;", "O"); //O mit Tilde
107:                trans.put("&Ouml;", "Oe"); //O Umlaut
108:                trans.put("&times;", " times "); //Mal-Zeichen
109:                trans.put("&Oslash;", "O"); //O mit Schr&auml;gstrich
110:                trans.put("&Ugrave;", "U"); //U mit Accent grave
111:                trans.put("&Uacute;", "U"); //U mit Accent acute
112:                trans.put("&Ucirc;", "U"); //U mit Circumflex
113:                trans.put("&Uuml;", "Ue"); //U Umlaut
114:                trans.put("&Yacute;", "Y"); //Y mit Accent acute
115:                trans.put("&THORN;", "P"); //THORN (isl&auml;ndisch)
116:                trans.put("&szlig;", "ss"); //scharfes S
117:                trans.put("&agrave;", "a"); //a mit Accent grave
118:                trans.put("&aacute;", "a"); //a mit Accent acute
119:                trans.put("&acirc;", "a"); //a mit Circumflex
120:                trans.put("&atilde;", "a"); //a mit Tilde
121:                trans.put("&auml;", "ae"); //a Umlaut
122:                trans.put("&aring;", "a"); //a mit Ring
123:                trans.put("&aelig;", "a"); //a mit legiertem e
124:                trans.put("&ccedil;", "c"); //c mit H&auml;kchen
125:                trans.put("&egrave;", "e"); //e mit Accent grave
126:                trans.put("&eacute;", "e"); //e mit Accent acute
127:                trans.put("&ecirc;", "e"); //e mit Circumflex
128:                trans.put("&euml;", "e"); //e Umlaut
129:                trans.put("&igrave;", "i"); //i mit Accent grave
130:                trans.put("&iacute;", "i"); //i mit Accent acute
131:                trans.put("&icirc;", "i"); //i mit Circumflex
132:                trans.put("&iuml;", "i"); //i Umlaut
133:                trans.put("&eth;", "d"); //eth (isl&auml;ndisch)
134:                trans.put("&ntilde;", "n"); //n mit Tilde
135:                trans.put("&ograve;", "o"); //o mit Accent grave
136:                trans.put("&oacute;", "o"); //o mit Accent acute
137:                trans.put("&ocirc;", "o"); //o mit Circumflex
138:                trans.put("&otilde;", "o"); //o mit Tilde
139:                trans.put("&ouml;", "oe"); //o Umlaut
140:                trans.put("&divide;", "%"); //Divisions-Zeichen
141:                trans.put("&oslash;", "o"); //o mit Schr&auml;gstrich
142:                trans.put("&ugrave;", "u"); //u mit Accent grave
143:                trans.put("&uacute;", "u"); //u mit Accent acute
144:                trans.put("&ucirc;", "u"); //u mit Circumflex
145:                trans.put("&uuml;", "ue"); //u Umlaut
146:                trans.put("&yacute;", "y"); //y mit Accent acute
147:                trans.put("&thorn;", "p"); //thorn (isl&auml;ndisch)
148:                trans.put("&yuml;", "y"); //y Umlaut
149:                trans.put("&Alpha;", " Alpha "); //Alpha gro&szlig;
150:                trans.put("&alpha;", " alpha "); //alpha klein
151:                trans.put("&Beta;", " Beta "); //Beta gro&szlig;
152:                trans.put("&beta;", " beta "); //beta klein
153:                trans.put("&Gamma;", " Gamma "); //Gamma gro&szlig;
154:                trans.put("&gamma;", " gamma "); //gamma klein
155:                trans.put("&Delta;", " Delta "); //Delta gro&szlig;
156:                trans.put("&delta;", " delta "); //delta klein
157:                trans.put("&Epsilon;", " Epsilon "); //Epsilon gro&szlig;
158:                trans.put("&epsilon;", " epsilon "); //epsilon klein
159:                trans.put("&Zeta;", " Zeta "); //Zeta gro&szlig;
160:                trans.put("&zeta;", " zeta "); //zeta klein
161:                trans.put("&Eta;", " Eta "); //Eta gro&szlig;
162:                trans.put("&eta;", " eta "); //eta klein
163:                trans.put("&Theta;", " Theta "); //Theta gro&szlig;
164:                trans.put("&theta;", " theta "); //theta klein
165:                trans.put("&Iota;", " Iota "); //Iota gro&szlig;
166:                trans.put("&iota;", " iota "); //iota klein
167:                trans.put("&Kappa;", " Kappa "); //Kappa gro&szlig;
168:                trans.put("&kappa;", " kappa "); //kappa klein
169:                trans.put("&Lambda;", " Lambda "); //Lambda gro&szlig;
170:                trans.put("&lambda;", " lambda "); //lambda klein
171:                trans.put("&Mu;", " Mu "); //Mu gro&szlig;
172:                trans.put("&mu;", " mu "); //mu klein
173:                trans.put("&Nu;", " Nu "); //Nu gro&szlig;
174:                trans.put("&nu;", " nu "); //nu klein
175:                trans.put("&Xi;", " Xi "); //Xi gro&szlig;
176:                trans.put("&xi;", " xi "); //xi klein
177:                trans.put("&Omicron;", " Omicron "); //Omicron gro&szlig;
178:                trans.put("&omicron;", " omicron "); //omicron klein
179:                trans.put("&Pi;", " Pi "); //Pi gro&szlig;
180:                trans.put("&pi;", " pi "); //pi klein
181:                trans.put("&Rho;", " Rho "); //Rho gro&szlig;
182:                trans.put("&rho;", " rho "); //rho klein
183:                trans.put("&Sigma;", " Sigma "); //Sigma gro&szlig;
184:                trans.put("&sigmaf;", " sigma "); //sigmaf klein
185:                trans.put("&sigma;", " sigma "); //sigma klein
186:                trans.put("&Tau;", " Tau "); //Tau gro&szlig;
187:                trans.put("&tau;", " tau "); //tau klein
188:                trans.put("&Upsilon;", " Ypsilon "); //Upsilon gro&szlig;
189:                trans.put("&upsilon;", " ypsilon "); //upsilon klein
190:                trans.put("&Phi;", " Phi "); //Phi gro&szlig;
191:                trans.put("&phi;", " phi "); //phi klein
192:                trans.put("&Chi;", " Chi "); //Chi gro&szlig;
193:                trans.put("&chi;", " chi "); //chi klein
194:                trans.put("&Psi;", " Psi "); //Psi gro&szlig;
195:                trans.put("&psi;", " psi "); //psi klein
196:                trans.put("&Omega;", " Omega "); //Omega gro&szlig;
197:                trans.put("&omega;", " omega "); //omega klein
198:                trans.put("&thetasym;", " theta "); //theta Symbol
199:                trans.put("&upsih;", " ypsilon "); //upsilon mit Haken
200:                trans.put("&piv;", " pi "); //pi Symbol
201:                trans.put("&forall;", " for all "); //f&uuml;r alle
202:                trans.put("&part;", " part of "); //teilweise
203:                trans.put("&exist;", " exists "); //existiert
204:                trans.put("&empty;", " null "); //leer
205:                trans.put("&nabla;", " nabla "); //nabla
206:                trans.put("&isin;", " element of "); //Element von
207:                trans.put("&notin;", " not element of "); //kein Element von
208:                trans.put("&ni;", " contains "); //enth&auml;lt als Element
209:                trans.put("&prod;", " product "); //Produkt
210:                trans.put("&sum;", " sum "); //Summe
211:                trans.put("&minus;", " minus "); //minus
212:                trans.put("&lowast;", " times "); //Asterisk
213:                trans.put("&radic;", " sqare root "); //Quadratwurzel
214:                trans.put("&prop;", " proportional to "); //proportional zu
215:                trans.put("&infin;", " unlimited "); //unendlich
216:                trans.put("&ang;", " angle "); //Winkel
217:                trans.put("&and;", " and "); //und
218:                trans.put("&or;", " or "); //oder
219:                trans.put("&cap;", " "); //Schnittpunkt
220:                trans.put("&cup;", " unity "); //Einheit
221:                trans.put("&int;", " integral "); //Integral
222:                trans.put("&there4;", " cause "); //deshalb
223:                trans.put("&sim;", " similar to "); //&auml;hnlich wie
224:                trans.put("&cong;", " equal "); //ann&auml;hernd gleich
225:                trans.put("&asymp;", " equal "); //beinahe gleich
226:                trans.put("&ne;", " not equal "); //ungleich
227:                trans.put("&equiv;", " identical "); //identisch mit
228:                trans.put("&le;", " smaller or equal than "); //kleiner gleich
229:                trans.put("&ge;", " greater or equal than "); //gr&ouml;&szlig;er gleich
230:                trans.put("&sub;", " subset of "); //Untermenge von
231:                trans.put("&sup;", " superset of "); //Obermenge von
232:                trans.put("&nsub;", " not subset of "); //keine Untermenge von
233:                trans.put("&sube;", ""); //Untermenge von oder gleich mit
234:                trans.put("&supe;", ""); //Obermenge von oder gleich mit
235:                trans.put("&oplus;", ""); //Direktsumme
236:                trans.put("&otimes;", ""); //Vektorprodukt
237:                trans.put("&perp;", ""); //senkrecht zu
238:                trans.put("&sdot;", ""); //Punkt-Operator
239:                trans.put("&loz;", ""); //Raute
240:                trans.put("&lceil;", ""); //links oben
241:                trans.put("&rceil;", ""); //rechts oben
242:                trans.put("&lfloor;", ""); //links unten
243:                trans.put("&rfloor;", ""); //rechts unten
244:                trans.put("&lang;", ""); //spitze Klammer links
245:                trans.put("&rang;", ""); //spitze Klammer rechts
246:                trans.put("&larr;", ""); //Pfeil links
247:                trans.put("&uarr;", ""); //Pfeil oben
248:                trans.put("&rarr;", ""); //Pfeil rechts
249:                trans.put("&darr;", ""); //Pfeil unten
250:                trans.put("&harr;", ""); //Pfeil links/rechts
251:                trans.put("&crarr;", ""); //Pfeil unten-Knick-links
252:                trans.put("&lArr;", ""); //Doppelpfeil links
253:                trans.put("&uArr;", ""); //Doppelpfeil oben
254:                trans.put("&rArr;", ""); //Doppelpfeil rechts
255:                trans.put("&dArr;", ""); //Doppelpfeil unten
256:                trans.put("&hArr;", ""); //Doppelpfeil links/rechts
257:                trans.put("&bull;", ""); //Bullet-Zeichen
258:                trans.put("&hellip;", ""); //Horizontale Ellipse
259:                trans.put("&prime;", ""); //Minutenzeichen
260:                trans.put("&oline;", ""); //&Uuml;berstrich
261:                trans.put("&frasl;", ""); //Bruchstrich
262:                trans.put("&weierp;", ""); //Weierstrass p
263:                trans.put("&image;", ""); //Zeichen f&uuml;r &quot;imagin&auml;r&quot;
264:                trans.put("&real;", ""); //Zeichen f&uuml;r &quot;real&quot;
265:                trans.put("&trade;", ""); //Trademark-Zeichen
266:                trans.put("&euro;", ""); //Euro-Zeichen
267:                trans.put("&alefsym;", ""); //Alef-Symbol
268:                trans.put("&spades;", ""); //Pik-Zeichen
269:                trans.put("&clubs;", ""); //Kreuz-Zeichen
270:                trans.put("&hearts;", ""); //Herz-Zeichen
271:                trans.put("&diams;", ""); //Karo-Zeichen
272:                trans.put("&ensp;", ""); //Leerzeichen Breite n
273:                trans.put("&emsp;", ""); //Leerzeichen Breite m
274:                trans.put("&thinsp;", ""); //Schmales Leerzeichen
275:                trans.put("&zwnj;", ""); //null breiter Nichtverbinder
276:                trans.put("&zwj;", ""); //null breiter Verbinder
277:                trans.put("&lrm;", ""); //links-nach-rechts-Zeichen
278:                trans.put("&rlm;", ""); //rechts-nach-links-Zeichen
279:                trans.put("&ndash;", ""); //Gedankenstrich Breite n
280:                trans.put("&mdash;", ""); //Gedankenstrich Breite m
281:                trans.put("&lsquo;", ""); //einfaches Anf&uuml;hrungszeichen links
282:                trans.put("&rsquo;", ""); //einfaches Anf&uuml;hrungszeichen rechts
283:                trans.put("&sbquo;", ""); //einfaches low-9-Zeichen
284:                trans.put("&ldquo;", ""); //doppeltes Anf&uuml;hrungszeichen links
285:                trans.put("&rdquo;", ""); //doppeltes Anf&uuml;hrungszeichen rechts
286:                trans.put("&bdquo;", ""); //doppeltes low-9-Zeichen rechts
287:                trans.put("&dagger;", ""); //Kreuz
288:                trans.put("&Dagger;", ""); //Doppelkreuz
289:                trans.put("&permil;", ""); //zu tausend
290:                trans.put("&lsaquo;", ""); //angewinkeltes einzelnes Anf.zeichen links
291:                trans.put("&rsaquo;", ""); //angewinkeltes einzelnes Anf.zeichen rechts
292:            }
293:
294:            public htmlFilterAbstractScraper(TreeSet<String> tags0,
295:                    TreeSet<String> tags1) {
296:                this .tags0 = tags0;
297:                this .tags1 = tags1;
298:            }
299:
300:            public boolean isTag0(String tag) {
301:                return (tags0 != null) && (tags0.contains(tag));
302:            }
303:
304:            public boolean isTag1(String tag) {
305:                return (tags1 != null) && (tags1.contains(tag));
306:            }
307:
308:            //the 'missing' method that shall be implemented:
309:            public abstract void scrapeText(char[] text, String insideTag);
310:
311:            // the other methods must take into account to construct the return value correctly
312:            public abstract void scrapeTag0(String tagname, Properties tagopts);
313:
314:            public abstract void scrapeTag1(String tagname, Properties tagopts,
315:                    char[] text);
316:
317:            // string conversions
318:            private static String code_iso8859s(char c) {
319:                switch (c) {
320:
321:                // german umlaute and ligaturen
322:                case 0xc4:
323:                    return "AE";
324:                case 0xd6:
325:                    return "OE";
326:                case 0xdc:
327:                    return "UE";
328:                case 0xe4:
329:                    return "ae";
330:                case 0xf6:
331:                    return "oe";
332:                case 0xfc:
333:                    return "ue";
334:                case 0xdf:
335:                    return "ss";
336:
337:                    // accent on letters; i.e. french characters
338:                case 0xc0:
339:                case 0xc1:
340:                case 0xc2:
341:                case 0xc3:
342:                case 0xc5:
343:                    return "A";
344:                case 0xc6:
345:                    return "AE";
346:                case 0xc7:
347:                    return "C";
348:                case 0xc8:
349:                case 0xc9:
350:                case 0xca:
351:                    return "E";
352:                case 0xcc:
353:                case 0xcd:
354:                case 0xce:
355:                case 0xcf:
356:                    return "I";
357:                case 0xd0:
358:                    return "D";
359:                case 0xd1:
360:                    return "N";
361:                case 0xd2:
362:                case 0xd3:
363:                case 0xd4:
364:                case 0xd5:
365:                case 0xd8:
366:                    return "O";
367:                case 0xd7:
368:                    return "x";
369:                case 0xd9:
370:                case 0xda:
371:                case 0xdb:
372:                    return "U";
373:                case 0xdd:
374:                    return "Y";
375:                case 0xde:
376:                    return "p";
377:
378:                case 0xe0:
379:                case 0xe1:
380:                case 0xe2:
381:                case 0xe3:
382:                case 0xe5:
383:                    return "a";
384:                case 0xe6:
385:                    return "ae";
386:                case 0xe7:
387:                    return "c";
388:                case 0xe8:
389:                case 0xe9:
390:                case 0xea:
391:                    return "e";
392:                case 0xec:
393:                case 0xed:
394:                case 0xee:
395:                case 0xef:
396:                    return "i";
397:                case 0xf0:
398:                    return "d";
399:                case 0xf1:
400:                    return "n";
401:                case 0xf2:
402:                case 0xf3:
403:                case 0xf4:
404:                case 0xf5:
405:                case 0xf8:
406:                    return "o";
407:                case 0xf7:
408:                    return "%";
409:                case 0xf9:
410:                case 0xfa:
411:                case 0xfb:
412:                    return "u";
413:                case 0xfd:
414:                case 0xff:
415:                    return "y";
416:                case 0xfe:
417:                    return "p";
418:
419:                    // special characters
420:                case 0xa4:
421:                    return " euro ";
422:                default:
423:                    return null;
424:                }
425:            }
426:
427:            public static serverCharBuffer convertUmlaute(serverCharBuffer bb) {
428:                if (bb.length() == 0)
429:                    return bb;
430:
431:                serverCharBuffer t = new serverCharBuffer(bb.length() + 20);
432:                char c;
433:                for (int i = 0; i < bb.length(); i++) {
434:                    c = bb.charAt(i);
435:                    String z = code_iso8859s(c);
436:                    if (z == null)
437:                        t.append((int) c);
438:                    else
439:                        t.append(z);
440:                }
441:                return t;
442:
443:                //        serverByteBuffer t = new serverByteBuffer(bb.length() + 20);
444:                //        int b0, b1, b2;
445:                //        String z;
446:                //        int i = 0;
447:                //        while (i < bb.length()) {
448:                //            b0 = bb.byteAt(i) & 0xff;
449:                //            // check utf-8 encoding
450:                //            if ((b0 < 128) || (i + 1 == bb.length())) {
451:                //                t.append(b0);
452:                //                i++;
453:                //            } else {
454:                //                b1 = bb.byteAt(i + 1) & 0xff;
455:                //                if (b1 > 0x3f) {
456:                //                    z = code_iso8859s(b0);
457:                //                    i++;
458:                //                } else if ((b0 > 0xbf) && (b0 < 0xe0)) {
459:                //                    z = code_iso8859s(((b0 & 0x1f) << 0x6) | (b1 & 0x3f));
460:                //                    i += 2;
461:                //                } else {
462:                //                    if (i + 2 >= bb.length()) {
463:                //                        z = null;
464:                //                        i++;
465:                //                    } else {
466:                //                        b2 = bb.byteAt(i + 2) & 0xff;
467:                //                        if (b2 > 0x3f) {
468:                //                            z = code_iso8859s(b0);
469:                //                            i++;
470:                //                        } else {
471:                //                            z = code_iso8859s(((b0 & 0xf) << 0xc) | ((b1 & 0x3f) << 0x6) | (b2 & 0x3f));
472:                //                            i += 3;
473:                //                        }
474:                //                    }
475:                //                }
476:                //                if (z == null) t.append(b0); else t.append(z);
477:                //            }
478:                //        }
479:                //        return t;
480:            }
481:
482:            private static char[] transscript(char[] code) {
483:                String t = (String) trans.get(new String(code));
484:                if (t == null)
485:                    return new char[0];
486:                return t.toCharArray();
487:            }
488:
489:            protected static serverCharBuffer transscriptAll(serverCharBuffer bb) {
490:                int p0 = 0, p1;
491:                char[] t;
492:                while ((p0 = bb.indexOf('&', p0)) >= 0) {
493:                    p1 = bb.indexOf(';', p0);
494:                    if (p1 >= 0) {
495:                        t = transscript(bb.getChars(p0, p1 + 1));
496:                        bb = new serverCharBuffer(bb.getChars(0, p0), bb
497:                                .length()
498:                                + p0 - p1 + t.length).append(t).append(
499:                                bb.getChars(p1 + 1));
500:                    } else {
501:                        bb = new serverCharBuffer(bb.getChars(0, p0), bb
502:                                .length()).append(bb.getChars(p0 + 1));
503:                    }
504:                }
505:                t = null;
506:                return bb;
507:            }
508:
509:            protected static serverCharBuffer stripAllTags(serverCharBuffer bb) {
510:                int p0 = 0, p1;
511:                while ((p0 = bb.indexOf(lb, p0)) >= 0) {
512:                    p1 = bb.indexOf(rb, p0);
513:                    if (p1 >= 0) {
514:                        bb = ((serverCharBuffer) new serverCharBuffer(bb
515:                                .getChars(0, p0), bb.length() + p0 - p1 + 1)
516:                                .trim().append(32))
517:                                .append(new serverCharBuffer(bb
518:                                        .getChars(p1 + 1)).trim());
519:                    } else {
520:                        bb = new serverCharBuffer(bb.getChars(0, p0), bb
521:                                .length()).trim().append(
522:                                new serverCharBuffer(bb.getChars(p0 + 1))
523:                                        .trim());
524:                    }
525:                }
526:                return bb.trim();
527:            }
528:
529:            public static serverCharBuffer stripAll(serverCharBuffer bb) {
530:                //return stripAllTags(s);
531:                return convertUmlaute(transscriptAll(stripAllTags(bb)));
532:            }
533:
534:            public void close() {
535:                // free resources
536:                tags0 = null;
537:                tags1 = null;
538:            }
539:
540:            public void finalize() {
541:                close();
542:            }
543:
544:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.