Java tutorial
/****************************************************************************** * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. This program is distributed in the hope * * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * For the text or an alternative of this public license, you may reach us * * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * * or via info@compiere.org or http://www.compiere.org/license.html * *****************************************************************************/ package com.youxifan.utils; import java.io.*; import javax.activation.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.Level; import org.apache.log4j.Logger; import com.youxifan.controller.UserController; /** * A DataSource based on the Java Mail Example. * This class implements a DataSource from: * an InputStream * a byte array * a String * @author John Mani * @author Bill Shannon * @author Max Spivak */ public class ByteArrayDataSource implements DataSource { /** * Create a DataSource from an input stream * @param is stream * @param type optional MIME type e.g. text/html */ public ByteArrayDataSource(InputStream is, String type) { try { ByteArrayOutputStream os = new ByteArrayOutputStream(); int ch; while ((ch = is.read()) != -1) { // XXX - must be made more efficient by // doing buffered reads, rather than one byte reads os.write(ch); } m_data = os.toByteArray(); } catch (IOException ioex) { log.warn("", ioex); } if (type != null && type.length() > 0) m_type = type; } // ByteArrayDataSource /** * Create a DataSource from a byte array * @param data data * @param type type e.g. text/html */ public ByteArrayDataSource(byte[] data, String type) { m_data = data; if (type != null && type.length() > 0) m_type = type; } // ByteArrayDataSource /** * Create a DataSource from a String * @param stringData content * @param charSetName optional if null/empty uses UTF-8 * @param type optional MIME type e.g. text/html */ public ByteArrayDataSource(String stringData, String charSetName, String type) { if (charSetName == null || charSetName.length() == 0) charSetName = "UTF-8"; // WebEnv.ENCODING - alternatibe iso-8859-1 try { m_data = stringData.getBytes(charSetName); } catch (UnsupportedEncodingException uex) { log.warn("CharSetName=" + charSetName, uex); } if (type != null && type.length() > 0) m_type = type; } // ByteArrayDataSource /** Data **/ private byte[] m_data = null; /** Content Type **/ private String m_type = "text/plain"; /** Name **/ private String m_name = null; /** Logger */ protected final transient Log log = LogFactory.getLog(ByteArrayDataSource.class); /** * Return an InputStream for the data. * @return inputstream * @throws IOException */ public InputStream getInputStream() throws IOException { if (m_data == null) throw new IOException("no data"); // a new stream must be returned each time. return new ByteArrayInputStream(m_data); } // getInputStream /** * Throws exception * @return null * @throws IOException */ public OutputStream getOutputStream() throws IOException { throw new IOException("cannot do this"); } // getOutputStream /** * Get Content Type * @return MIME type e.g. text/html */ public String getContentType() { return m_type; } // getContentType /** * Set Name * @param name name * @return this */ public ByteArrayDataSource setName(String name) { m_name = name; return this; } // setName /** * Return Name or Class Name & Content Type * @return dummy */ public String getName() { if (m_name != null) return m_name; return "ByteArrayDataStream " + m_type; } // getName } // ByteArrayDataStream