package com.cyngn.chrono.storage; import com.cyngn.chrono.storage.entity.MetricReport; import com.englishtown.vertx.cassandra.CassandraSession; import com.englishtown.vertx.cassandra.mapping.VertxMapper; import com.englishtown.vertx.cassandra.mapping.VertxMappingManager; import com.englishtown.vertx.cassandra.mapping.impl.DefaultVertxMappingManager; import com.google.common.util.concurrent.FutureCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.function.Consumer; /** * Handles uploading client reports. * * @author truelove@cyngn.com (Jeremy Truelove) 8/15/15 */ public class ReportStorage { private static final Logger logger = LoggerFactory.getLogger(ReportStorage.class); private final CassandraSession session; private final VertxMapper<MetricReport> mapper; public ReportStorage(CassandraSession session) { VertxMappingManager manager = new DefaultVertxMappingManager(session); mapper = manager.mapper(MetricReport.class); this.session = session; } public void createReport(MetricReport report, Consumer<Boolean> onComplete) { logger.info("createReport - report: {}", report); mapper.saveAsync(report, new FutureCallback<Void>() { @Override public void onSuccess(Void result) { onComplete.accept(true); } @Override public void onFailure(Throwable t) { logger.error("createReport - report: {} ex: ", report, t); onComplete.accept(false); } }); } }