KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > transformers > SpaceRemover


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.util.transformers;
11
12 import java.io.Reader JavaDoc;
13 import java.io.Writer JavaDoc;
14
15 import org.mmbase.util.logging.*;
16
17 /**
18  * Replace 1 or white space by 1 space, and all spaces on the begin and end.
19  *
20  * @author Michiel Meeuwissen
21  * @since MMBase-1.7.4
22  */

23
24 public class SpaceRemover extends ReaderTransformer implements CharTransformer {
25
26     private static final Logger log = Logging.getLoggerInstance(SpaceRemover.class);
27
28     public Writer JavaDoc transform(Reader JavaDoc r, Writer JavaDoc w) {
29
30         try {
31             log.debug("Starting to remove all space.");
32
33             int c = r.read();
34
35             // remove all leading space;
36
while (c != -1 && Character.isWhitespace((char) c)) {
37                 c = r.read();
38             }
39             // consider the rest;
40
boolean writing = true;
41             while (c != -1) {
42                 if (Character.isWhitespace((char) c)) {
43                     writing = false;
44                 } else {
45                     if (! writing) {
46                         w.write(' ');
47                         writing = true;
48                     }
49                     w.write(c);
50                 }
51                 c = r.read();
52             }
53             log.debug("Finished");
54         } catch (java.io.IOException JavaDoc e) {
55             log.error(e.toString());
56         }
57         return w;
58     }
59
60     public String JavaDoc toString() {
61         return "SPACEREMOVER";
62     }
63 }
64
Popular Tags