package de.am_soft.docbeam.raw.server.worker.new_job.limiter;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.activation.DataSource;

import de.am_soft.util.StringUtil;

// TODO docs
public class LimitingDs implements DataSource
{
	// TODO docs
	private final LimitingIs inputStream;

	// TODO docs
	private final String name;

	// TODO docs
	private final String contentType;

	// TODO docs
	public LimitingDs(	InputStream	inputStream,
						String		name,
						String		contentType,
						int			permitsPerSec1k)
	{
		this.inputStream	= new LimitingIs(inputStream, permitsPerSec1k);
		this.name			= StringUtil.reqNonEmpty(name,			"name");
		this.contentType	= StringUtil.reqNonEmpty(contentType,	"contentType");
	}

	@Override
	public InputStream getInputStream() throws IOException
	{
		return this.inputStream;
	}

	@Override
	public String getName()
	{
		return this.name;
	}

	@Override
	public String getContentType()
	{
		return this.contentType;
	}

	@Override
	public OutputStream getOutputStream() throws IOException
	{
		throw new UnsupportedOperationException("Storing/writing data isn't supported.");
	}
}
