// Copyright 2011 Google Inc. All Rights Reserved.
package com.google.appengine.tools.mapreduce.impl;
import com.google.appengine.tools.mapreduce.Counter;
import com.google.appengine.tools.mapreduce.Counters;
import java.io.Serializable;
import java.util.HashMap;
/**
*/
public class CountersImpl implements Counters {
// --------------------------- STATIC FIELDS ---------------------------
private static final long serialVersionUID = -8499952345096458550L;
// ------------------------------ FIELDS ------------------------------
private final HashMap<String, CounterImpl> values = new HashMap<String, CounterImpl>();
// ------------------------ INTERFACE METHODS ------------------------
// --------------------- Interface Counters ---------------------
@Override
public Counter getCounter(String name) {
CounterImpl counter = values.get(name);
if (counter == null) {
counter = new CounterImpl(name);
values.put(name, counter);
}
return counter;
}
@Override
public Iterable<? extends Counter> getCounters() {
return values.values();
}
// -------------------------- INNER CLASSES --------------------------
private static class CounterImpl implements Counter, Serializable {
private static final long serialVersionUID = 5872696485441192885L;
private final String name;
private long value = 0L;
CounterImpl(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
@Override
public long getValue() {
return value;
}
@Override
public void increment(long delta) {
value += delta;
}
}
}