All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.hologres.client.copy.CopyInOutputStream Maven / Gradle / Ivy

There is a newer version: 2.5.5
Show newest version
/*
 * Copyright (c) 2022. Alibaba Group Holding Limited
 */

package com.alibaba.hologres.client.copy;

import org.postgresql.copy.CopyIn;

import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;

/**
 * 把CopyIn封装成一个OutputStream.
 */
public class CopyInOutputStream extends OutputStream implements WithCopyResult {
	private final CopyIn copyIn;
	private long result = -1;

	public CopyInOutputStream(CopyIn copyIn) {
		this.copyIn = copyIn;
	}

	@Override
	public void write(int b) throws IOException {
		throw new UnsupportedOperationException("please use void write(byte b[], int off, int len)");
	}

	@Override
	public void write(byte[] b, int off, int len) throws IOException {
		if (b == null) {
			throw new NullPointerException();
		} else if ((off < 0) || (off > b.length) || (len < 0) ||
				((off + len) > b.length) || ((off + len) < 0)) {
			throw new IndexOutOfBoundsException();
		} else if (len == 0) {
			return;
		}
		try {
			copyIn.writeToCopy(b, off, len);
		} catch (SQLException e) {
			throw new IOException(e);
		}
	}

	@Override
	public void flush() throws IOException {
		try {
			copyIn.flushCopy();
		} catch (SQLException e) {
			throw new IOException(e);
		}
	}

	@Override
	public long getResult() {
		return result;
	}

	@Override
	public void close() throws IOException {
		try {
			result = copyIn.endCopy();
		} catch (SQLException e) {
			throw new IOException(e);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy