| 1 10 package org.mmbase.util.transformers; 11 12 import java.io.Reader ; 13 import java.io.Writer ; 14 import java.util.HashMap ; 15 import java.util.Map ; 16 17 18 25 26 public class Sql extends ConfigurableReaderTransformer implements CharTransformer { 27 private final static String ENCODING = "ESCAPE_SINGLE_QUOTE"; 28 public final static int ESCAPE_QUOTES = 1; 29 30 public Sql() { 31 super(ESCAPE_QUOTES); 32 } 33 34 public Sql(int conf) { 35 super(conf); 36 } 37 38 48 public static Writer singleQuote(Reader r, Writer w) { 49 try { 50 while (true) { 51 int c = r.read(); 52 if (c == -1) break; 53 if(c == '\'') w.write(c); 54 w.write(c); 55 } 56 } catch (java.io.IOException e) { 57 } 58 return w; 59 } 60 61 69 public static Writer singleQuoteBack(Reader r, Writer w) { 70 try { 71 boolean skipNext = false; 72 while (true) { 73 int c = r.read(); 74 if (c == -1) break; 75 if(c == '\'') { 76 if (skipNext) { 77 skipNext = false; 78 } else { 79 w.write(c); 80 skipNext = true; 81 } 82 } else { 83 w.write(c); 84 skipNext = false; 85 } 86 } 87 } catch (java.io.IOException e) { 88 } 89 return w; 90 } 91 92 95 96 public Map transformers() { 97 HashMap h = new HashMap (); 98 h.put(ENCODING, new Config(Sql.class, ESCAPE_QUOTES, "Escape single quotes for SQL statements")); 99 return h; 100 } 101 102 public Writer transform(Reader r, Writer w) { 103 switch(to){ 104 case ESCAPE_QUOTES: return singleQuote(r, w); 105 default: throw new UnsupportedOperationException ("Cannot transform"); 106 } 107 } 108 109 public Writer transformBack(Reader r, Writer w) { 110 switch(to){ 111 case ESCAPE_QUOTES: return singleQuoteBack(r, w); 112 default: throw new UnsupportedOperationException ("Cannot transform"); 113 } 114 } 115 116 public String getEncoding() { 117 return ENCODING; 118 } 119 } 120 | Popular Tags |