/* * Copyright (C) 2009 JavaRosa * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ /** * */ package org.openrosa.client.jr.core.util; import java.util.Vector; /** * MultiInputStream allows for concatenating multiple * input streams together to be read serially in the * order that they were added. * * A MultiInputStream must have all of its component * streams added to it before it can be read from. Once * the stream is ready, it should be prepare()d before * the first read. * * @author Clayton Sims * @date Dec 18, 2008 * */ public class MultiInputStream /*extends InputStream*/ { /** InputStream **/ Vector streams = new Vector(); int currentStream = -1; /*public void addStream(InputStream stream) { streams.addElement(stream); }*/ /** * Finalize the stream and allow it to be read * from. * * @return True if the stream is ready to be read * from. False if the stream couldn't be prepared * because it was empty. */ public boolean prepare() { if(streams.size() == 0) { return false; } else { currentStream = 0; } return true; } /* (non-Javadoc) * @see java.io.InputStream#read() */ /*public int read() throws IOException { if(currentStream == -1) { throw new IOException("Cannot read from unprepared MultiInputStream!"); } InputStream cur = ((InputStream)streams.elementAt(currentStream)); int next = cur.read(); if(next != -1 ) { return next; } //Otherwise, end of Stream //Loop through the available streams until we read something that isn't //an end of stream while(next == -1 && currentStream + 1 < streams.size()) { currentStream++; cur = ((InputStream)streams.elementAt(currentStream)); next = cur.read(); } //Will be either a valid value or -1 if we've run out of streams. return next; }*/ /* (non-Javadoc) * @see java.io.InputStream#available() */ /*public int available() throws IOException { if(currentStream == -1) { throw new IOException("Cannot read from unprepared MultiInputStream!"); } return ((InputStream)streams.elementAt(currentStream)).available(); }*/ /* (non-Javadoc) * @see java.io.InputStream#close() */ /*public void close() throws IOException { if(currentStream == -1) { throw new IOException("Cannot read from unprepared MultiInputStream!"); } Enumeration en = streams.elements(); while(en.hasMoreElements()) { ((InputStream)en.nextElement()).close(); } }*/ }