Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.aerospike.mapper.tools.virtuallist.ReactiveVirtualList Maven / Gradle / Ivy
package com.aerospike.mapper.tools.virtuallist;
import com.aerospike.client.Key;
import com.aerospike.client.Value;
import com.aerospike.client.policy.Policy;
import com.aerospike.client.policy.RecordExistsAction;
import com.aerospike.client.policy.WritePolicy;
import com.aerospike.client.query.KeyRecord;
import com.aerospike.mapper.tools.ClassCache;
import com.aerospike.mapper.tools.IReactiveAeroMapper;
import reactor.core.publisher.Mono;
import javax.validation.constraints.NotNull;
import java.util.List;
public class ReactiveVirtualList extends BaseVirtualList implements IReactiveVirtualList {
private final IReactiveAeroMapper reactiveAeroMapper;
public ReactiveVirtualList(@NotNull IReactiveAeroMapper reactiveAeroMapper, @NotNull Class> owningClazz,
@NotNull Object key, @NotNull String binName, @NotNull Class clazz) {
super(reactiveAeroMapper, null, owningClazz, key, binName, clazz);
this.reactiveAeroMapper = reactiveAeroMapper;
}
public ReactiveVirtualList(@NotNull IReactiveAeroMapper reactiveAeroMapper, @NotNull Object object,
@NotNull String binName, @NotNull Class clazz) {
super(reactiveAeroMapper, object, null, null, binName, clazz);
this.reactiveAeroMapper = reactiveAeroMapper;
}
public ReactiveVirtualList changeKey(Object newKey) {
String set = alignedSet();
this.key = new Key(owningEntry.getNamespace(), set, Value.get(owningEntry.translateKeyToAerospikeKey(key)));
return this;
}
public ReactiveMultiOperation beginMultiOperation() {
return this.beginMulti(null);
}
public ReactiveMultiOperation beginMulti(WritePolicy writePolicy) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
return new ReactiveMultiOperation<>(writePolicy, binName, listMapper, key, virtualListInteractors, reactiveAeroMapper);
}
@Override
public Mono getByValue(Object value, ReturnType returnResultsOfType) {
return this.getByValue(null, value, returnResultsOfType);
}
@Override
public Mono getByValue(WritePolicy writePolicy, Object value, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByValueInteractor(value);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByValueRange(Object startValue, Object endValue, ReturnType returnResultsOfType) {
return this.getByValueRange(null, startValue, endValue, returnResultsOfType);
}
@Override
public Mono getByValueRange(WritePolicy writePolicy, Object startValue, Object endValue, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByValueRangeInteractor(startValue, endValue);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByValueList(List values, ReturnType returnResultsOfType) {
return this.getByValueList(null, values, returnResultsOfType);
}
@Override
public Mono getByValueList(WritePolicy writePolicy, List values, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByValueListInteractor(values);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByValueRelativeRankRange(Object value, int rank, ReturnType returnResultsOfType) {
return this.getByValueRelativeRankRange(null, value, rank, returnResultsOfType);
}
@Override
public Mono getByValueRelativeRankRange(WritePolicy writePolicy, Object value, int rank, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByValueRelativeRankRangeInteractor(value, rank);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByValueRelativeRankRange(Object value, int rank, int count, ReturnType returnResultsOfType) {
return this.getByValueRelativeRankRange(null, value, rank, count, returnResultsOfType);
}
@Override
public Mono getByValueRelativeRankRange(WritePolicy writePolicy, Object value, int rank, int count, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByValueRelativeRankRangeInteractor(value, rank, count);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByIndexRange(int index, ReturnType returnResultsOfType) {
return this.getByIndexRange(null, index, returnResultsOfType);
}
@Override
public Mono getByIndexRange(WritePolicy writePolicy, int index, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByIndexRangeInteractor(index);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByIndexRange(int index, int count, ReturnType returnResultsOfType) {
return this.getByIndexRange(null, index, count, returnResultsOfType);
}
@Override
public Mono getByIndexRange(WritePolicy writePolicy, int index, int count, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByIndexRangeInteractor(index, count);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByRank(int rank, ReturnType returnResultsOfType) {
return this.getByRank(null, rank, returnResultsOfType);
}
@Override
public Mono getByRank(WritePolicy writePolicy, int rank, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByRankInteractor(rank);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByRankRange(int rank, ReturnType returnResultsOfType) {
return this.getByRankRange(null, rank, returnResultsOfType);
}
@Override
public Mono getByRankRange(WritePolicy writePolicy, int rank, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByRankRangeInteractor(rank);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByRankRange(int rank, int count, ReturnType returnResultsOfType) {
return this.getByRankRange(null, rank, count, returnResultsOfType);
}
@Override
public Mono getByRankRange(WritePolicy writePolicy, int rank, int count, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByRankRangeInteractor(rank, count);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByKey(Object key, ReturnType returnResultsOfType) {
return getByKey(null, key, returnResultsOfType);
}
@Override
public Mono getByKey(WritePolicy writePolicy, Object key, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByKeyInteractor(key);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, this.key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono getByKeyRange(Object startKey, Object endKey, ReturnType returnResultsOfType) {
return getByKeyRange(null, startKey, endKey, returnResultsOfType);
}
@Override
public Mono getByKeyRange(WritePolicy writePolicy, Object startKey, Object endKey, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getGetByKeyRangeInteractor(startKey, endKey);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, this.key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByKey(Object key, ReturnType returnResultsOfType) {
return removeByKey(null, key, returnResultsOfType);
}
@Override
public Mono removeByKey(WritePolicy writePolicy, Object key, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveKeyInteractor(key);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, this.key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByValue(Object value, ReturnType returnResultsOfType) {
return this.removeByValue(null, value, returnResultsOfType);
}
@Override
public Mono removeByValue(WritePolicy writePolicy, Object value, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByValueInteractor(value);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByValueList(List values, ReturnType returnResultsOfType) {
return this.removeByValueList(null, values, returnResultsOfType);
}
@Override
public Mono removeByValueList(WritePolicy writePolicy, List values, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByValueListInteractor(values);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByValueRange(Object startValue, Object endValue, ReturnType returnResultsOfType) {
return this.removeByValueRange(null, startValue, endValue, returnResultsOfType);
}
@Override
public Mono removeByValueRange(WritePolicy writePolicy, Object startValue, Object endValue, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByValueRangeInteractor(startValue, endValue);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByValueRelativeRankRange(Object value, int rank, ReturnType returnResultsOfType) {
return this.removeByValueRelativeRankRange(null, value, rank, returnResultsOfType);
}
@Override
public Mono removeByValueRelativeRankRange(WritePolicy writePolicy, Object value, int rank, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByValueRelativeRankRangeInteractor(value, rank);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByValueRelativeRankRange(Object value, int rank, int count, ReturnType returnResultsOfType) {
return this.removeByValueRelativeRankRange(null, value, rank, count, returnResultsOfType);
}
@Override
public Mono removeByValueRelativeRankRange(WritePolicy writePolicy, Object value, int rank, int count, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByValueRelativeRankRangeInteractor(value, rank, count);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByIndex(int index, ReturnType returnResultsOfType) {
return this.removeByIndex(null, index, returnResultsOfType);
}
@Override
public Mono removeByIndex(WritePolicy writePolicy, int index, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByIndexInteractor(index);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByIndexRange(int index, ReturnType returnResultsOfType) {
return this.removeByIndexRange(null, index, returnResultsOfType);
}
@Override
public Mono removeByIndexRange(WritePolicy writePolicy, int index, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByIndexRangeInteractor(index);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByIndexRange(int index, int count, ReturnType returnResultsOfType) {
return this.removeByIndexRange(null, index, count, returnResultsOfType);
}
@Override
public Mono removeByIndexRange(WritePolicy writePolicy, int index, int count, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByIndexRangeInteractor(index, count);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByRank(int rank, ReturnType returnResultsOfType) {
return this.removeByRank(null, rank, returnResultsOfType);
}
@Override
public Mono removeByRank(WritePolicy writePolicy, int rank, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByRankInteractor(rank);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByRankRange(int rank, ReturnType returnResultsOfType) {
return this.removeByRankRange(null, rank, returnResultsOfType);
}
@Override
public Mono removeByRankRange(WritePolicy writePolicy, int rank, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByRankRangeInteractor(rank);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByRankRange(int rank, int count, ReturnType returnResultsOfType) {
return this.removeByRankRange(null, rank, count, returnResultsOfType);
}
@Override
public Mono removeByRankRange(WritePolicy writePolicy, int rank, int count, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveByRankRangeInteractor(rank, count);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono removeByKeyRange(Object startKey, Object endKey, ReturnType returnResultsOfType) {
return this.removeByKeyRange(null, startKey, endKey, returnResultsOfType);
}
@Override
public Mono removeByKeyRange(WritePolicy writePolicy, Object startKey, Object endKey, ReturnType returnResultsOfType) {
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
Interactor interactor = virtualListInteractors.getRemoveKeyRangeInteractor(startKey, endKey);
interactor.setNeedsResultOfType(returnResultsOfType);
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono append(E element) {
return this.append(null, element);
}
@Override
public Mono append(WritePolicy writePolicy, E element) {
Object result = listMapper.toAerospikeInstanceFormat(element);
if (writePolicy == null) {
writePolicy = new WritePolicy(owningEntry.getWritePolicy());
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
}
return reactiveAeroMapper.getReactorClient()
.operate(writePolicy, key, virtualListInteractors.getAppendOperation(result))
.map(keyRecord -> keyRecord == null ? -1L : keyRecord.record.getLong(binName));
}
@Override
public Mono get(int index) {
return get(null, index);
}
@Override
public Mono get(Policy policy, int index) {
Interactor interactor = virtualListInteractors.getByIndexInteractor(index);
return reactiveAeroMapper.getReactorClient()
.operate(getWritePolicy(policy), key, interactor.getOperation())
.map(keyRecord -> getResultsWithDependencies(keyRecord, interactor));
}
@Override
public Mono size(Policy policy) {
Interactor interactor = virtualListInteractors.getSizeInteractor();
return reactiveAeroMapper.getReactorClient()
.operate(getWritePolicy(policy), key, interactor.getOperation())
.map(keyRecord -> keyRecord == null ? -1L : keyRecord.record.getLong(binName));
}
@Override
public Mono clear() {
Interactor interactor = virtualListInteractors.getClearInteractor();
return reactiveAeroMapper.getReactorClient()
.operate(null, key, interactor.getOperation()).then();
}
@SuppressWarnings("unchecked")
private E getResultsWithDependencies(KeyRecord keyRecord, Interactor interactor) {
E result = keyRecord == null ? null : (E) interactor.getResult(keyRecord.record.getList(binName));
if (result != null) {
reactiveAeroMapper.getMappingConverter().resolveDependencies(ClassCache.getInstance().loadClass(result.getClass(), reactiveAeroMapper));
}
return result;
}
}