package com.aol.micro.server.async.data.cleaner;
import java.util.Random;
import java.util.function.Supplier;
import com.aol.micro.server.events.ScheduledJob;
import com.aol.micro.server.events.SystemData;
import com.aol.micro.server.manifest.ManifestComparator;
import com.aol.micro.server.utility.HashMapBuilder;
import cyclops.collections.MapX;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
public class DataCleaner<T> implements ScheduledJob<T> {
public static final String MANIFEST_COMPARATOR_DATA_CLEANER_KEY = "Manifest Comparator Data Cleaner";
private final ManifestComparator<T> comparator;
@Getter
private final String cron;
private final Random r = new Random();
@Override
public SystemData<String, String> scheduleAndLog() {
String correlationId = "" + System.currentTimeMillis() + ":" + r.nextLong();
Supplier<MapX<String, String>> dataMap = () -> MapX.fromMap(HashMapBuilder.map(MANIFEST_COMPARATOR_DATA_CLEANER_KEY,
comparator.toString())
.build());
try {
comparator.cleanAll();
return SystemData.<String, String> builder()
.correlationId(correlationId)
.dataMap(dataMap.get())
.errors(0)
.processed(1)
.build();
} catch (Exception e) {
return SystemData.<String, String> builder()
.correlationId(correlationId)
.dataMap(dataMap.get()
.plus("Error", e.getMessage()))
.errors(1)
.processed(0)
.build();
}
}
}