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

com.aerospike.mapper.tools.virtuallist.Interactor Maven / Gradle / Ivy

package com.aerospike.mapper.tools.virtuallist;

import javax.validation.constraints.NotNull;

import com.aerospike.client.Operation;

public class Interactor {
	private Operation operation;
	private DeferredOperation deferredOperation;
	private final OperationParameters deferredParameters;
	private ResultsUnpacker[]resultsUnpackers;

	public Interactor(@NotNull Operation operation, @NotNull ResultsUnpacker... resultsUnpackers) {
		super();
		this.operation = operation;
		this.resultsUnpackers = resultsUnpackers;
		this.deferredParameters = null;
	}
	public Interactor(@NotNull DeferredOperation deferredOperation) {
		super();
		this.deferredOperation = deferredOperation;
		this.deferredParameters = new OperationParameters();
	}
	
	public void setNeedsResultOfType(ReturnType returnType) {
		if (this.deferredParameters != null) {
			this.deferredParameters.setNeedsResultOfType(returnType);
		}
	}
	public Operation getOperation() {
		if (operation == null && deferredOperation != null) {
			operation = deferredOperation.getOperation(this.deferredParameters);
			resultsUnpackers = deferredOperation.getUnpackers(this.deferredParameters);
		}
		return operation;
	}
	
	public Object getResult(Object rawResult) {
		Object result = rawResult;
		for (ResultsUnpacker thisUnpacker : resultsUnpackers) {
			result = thisUnpacker.unpack(result);
		}
		return result;
	}
	public boolean isWriteOperation() {
		if (this.operation != null) {
			switch (operation.type) {
			case ADD:
			case APPEND:
			case BIT_MODIFY:
			case CDT_MODIFY:
			case DELETE:
			case MAP_MODIFY:
			case PREPEND:
			case TOUCH:
			case WRITE:
				return true;
			default:
				return false;
			}
		}
		else {
			return !this.deferredOperation.isGetOperation();
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy