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

com.lordofthejars.nosqlunit.couchdb.CouchDbOperation Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package com.lordofthejars.nosqlunit.couchdb;

import java.io.InputStream;

import org.ektorp.CouchDbConnector;
import org.ektorp.http.HttpClient;
import org.ektorp.http.RestTemplate;

import com.lordofthejars.nosqlunit.core.AbstractCustomizableDatabaseOperation;
import com.lordofthejars.nosqlunit.core.NoSqlAssertionError;

public class CouchDbOperation extends AbstractCustomizableDatabaseOperation {

	private CouchDbConnector couchDbConnector;
	
	public CouchDbOperation(CouchDbConnector couchDbConnector) {
		this.couchDbConnector = couchDbConnector;
		setInsertionStrategy(new DefaultCouchDbInsertionStrategy());
		setComparisonStrategy(new DefaultCouchDbComparisonStrategy());
	}
	
	@Override
	public void insert(InputStream dataScript) {
		insertData(dataScript);
	}

	private void insertData(InputStream dataScript) {
		try {
			executeInsertion(new CouchDbConnectionCallback() {
				
				@Override
				public CouchDbConnector couchDbConnector() {
					return couchDbConnector;
				}
			}, dataScript);
		} catch (Throwable e) {
			throw new IllegalStateException(e);
		}
	}

	@Override
	public void deleteAll() {
		removeDatabase();
	}

	private void removeDatabase() {
		HttpClient connection = couchDbConnector.getConnection();
		RestTemplate restTemplate = new RestTemplate(connection);
		restTemplate.delete(couchDbConnector.path());
		
		couchDbConnector.createDatabaseIfNotExists();
	}

	@Override
	public boolean databaseIs(InputStream expectedData) {
		return compareData(expectedData);
	}

	private boolean compareData(InputStream expectedData) throws NoSqlAssertionError {
		try {
			return executeComparison(new CouchDbConnectionCallback() {
				
				@Override
				public CouchDbConnector couchDbConnector() {
					return couchDbConnector;
				}
			}, expectedData);
		} catch (NoSqlAssertionError e) {
			throw e;
		} catch (Throwable e) {
			throw new IllegalStateException(e);
		}
	}

	@Override
	public CouchDbConnector connectionManager() {
		return this.couchDbConnector;
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy