00001 /** 00002 * C-JDBC: Clustered JDBC. 00003 * Copyright (C) 2002-2004 French National Institute For Research In Computer 00004 * Science And Control (INRIA). 00005 * Contact: c-jdbc@objectweb.org 00006 * 00007 * This library is free software; you can redistribute it and/or modify it 00008 * under the terms of the GNU Lesser General Public License as published by the 00009 * Free Software Foundation; either version 2.1 of the License, or any later 00010 * version. 00011 * 00012 * This library is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 00015 * for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public License 00018 * along with this library; if not, write to the Free Software Foundation, 00019 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00020 * 00021 * Initial developer(s): Nicolas Modrzyk. 00022 * Contributor(s): ______________________. 00023 */ 00024 00025 package org.objectweb.cjdbc.common.sql.filters; 00026 00027 import org.objectweb.cjdbc.common.stream.encoding.Base64; 00028 import org.objectweb.cjdbc.common.stream.encoding.ZipEncoding; 00029 import org.objectweb.cjdbc.common.xml.DatabasesXmlTags; 00030 00031 /** 00032 * This class defines a Base64Filter. It is based on the Base64 encoding class 00033 * from apache. 00034 * 00035 * @author <a href="mailto:Nicolas.Modrzyk@inria.fr">Nicolas Modrzyk </a> 00036 * @version 1.0 00037 */ 00038 public class Base64Filter extends AbstractBlobFilter 00039 { 00040 00041 /** 00042 * @see org.objectweb.cjdbc.common.sql.filters.AbstractBlobFilter#encode(byte[]) 00043 */ 00044 public String encode(byte[] data) 00045 { 00046 try 00047 { 00048 return Base64.encode(ZipEncoding.encode(data)); 00049 } 00050 catch (Exception e) 00051 { 00052 e.printStackTrace(); 00053 return ""; 00054 } 00055 } 00056 00057 /** 00058 * @see org.objectweb.cjdbc.common.sql.filters.AbstractBlobFilter#encode(java.lang.String) 00059 */ 00060 public String encode(String data) 00061 { 00062 00063 return encode(data.getBytes()); 00064 } 00065 00066 /** 00067 * @see org.objectweb.cjdbc.common.sql.filters.AbstractBlobFilter#decode(byte[]) 00068 */ 00069 public byte[] decode(byte[] data) 00070 { 00071 try 00072 { 00073 return ZipEncoding.decode(Base64.decode(new String(data))); 00074 } 00075 catch (Exception e) 00076 { 00077 e.printStackTrace(); 00078 return null; 00079 } 00080 } 00081 00082 /** 00083 * @see org.objectweb.cjdbc.common.sql.filters.AbstractBlobFilter#decode(java.lang.String) 00084 */ 00085 public byte[] decode(String data) 00086 { 00087 return decode(data.getBytes()); 00088 } 00089 00090 /** 00091 * @see org.objectweb.cjdbc.common.sql.filters.AbstractBlobFilter#getXml() 00092 */ 00093 public String getXml() 00094 { 00095 return DatabasesXmlTags.VAL_base64; 00096 } 00097 00098 }