package com.cyngn.chrono.storage; import com.cyngn.chrono.storage.accessor.UploadAccessor; import com.datastax.driver.core.ResultSet; import com.datastax.driver.mapping.MappingManager; import com.englishtown.vertx.cassandra.CassandraSession; import com.englishtown.vertx.cassandra.FutureUtils; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.ListenableFuture; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.function.Consumer; /** * Upload data from client. * * @author truelove@cyngn.com (Jeremy Truelove) 8/15/15 */ public class UploadStorage { private static final Logger logger = LoggerFactory.getLogger(UploadStorage.class); private final CassandraSession session; private final UploadAccessor uploadAccessor; private final int ttl; public UploadStorage(CassandraSession session, int ttl) { MappingManager manager = new MappingManager(session.getSession()); this.session = session; uploadAccessor = manager.createAccessor(UploadAccessor.class); this.ttl = ttl; } public void uploadData(String testBatch, String unit, int size, String data, Consumer<Boolean> onComplete) { logger.info("uploadData - testBatch: {} unit: {} size: {} data size: {}", testBatch, unit, size, data.length()); ListenableFuture<ResultSet> future = uploadAccessor.uploadData(testBatch, unit, size, data, ttl); FutureUtils.addCallback(future, new FutureCallback<ResultSet>() { @Override public void onSuccess(ResultSet result) { onComplete.accept(result.wasApplied()); } @Override public void onFailure(Throwable t) { logger.error("uploadData - testBatch: {} unit: {} size: {} data size: {} ex: ", testBatch, unit, size, data.length(), t); onComplete.accept(false); } }, session.getVertx()); } }