package com.bagri.server.hazelcast.stats;

import java.util.Map;

import com.bagri.support.stats.StatisticsEvent;

public class IndexStatistics extends UsageStatistics {

	private long size;
	private int count;
	private int unique;

	public IndexStatistics(String name) {
		super(name);
	}

	@Override
	public String getDescription() {
		return "Index Usage Statistics";
	}

	@Override
	public String getHeader() {
		return "Index";
	}

	@Override
	public String getName() {
		return "Index Statistics";
	}

	@Override
	public Map<String, Object> toMap() {
		Map<String, Object> result = super.toMap();
   		result.put("Indexed Documents", count);
   		result.put("Distinct Values", unique);
   		result.put("Consumed Size", size);
		return result;
	}

	@Override
	public void update(StatisticsEvent event) {
		Object[] params = event.getParams();
		if (params.length > 1) {
			int cnt = (Integer) params[0];
			int sz = (Integer) params[1];
			boolean un = (Boolean) params[2];
			if (event.isSuccess()) {
				count += cnt;
				size += sz;
				if (un) {
					unique++;
				}
			} else {
				count -= cnt;
				size -= sz;
				if (un) {
					unique--;
				}
			}
		} else {
			super.update(event);
		}
	}
	
}
