package com.tek42.perforce.parse;
import java.util.ArrayList;
import java.util.List;
import com.tek42.perforce.Depot;
import com.tek42.perforce.PerforceException;
import com.tek42.perforce.model.Counter;
/**
* Base API object for interacting with counters.
*
* @author Kamlesh Sangani
*/
public class Counters extends AbstractPerforceTemplate {
public Counters(Depot depot) {
super(depot);
}
/**
* Saves the given counter. Creates new if one does not exist.
*
* @param counter
*/
public void saveCounter(Counter counter) throws PerforceException {
saveToPerforce(counter, new CounterBuilder());
}
/**
* Returns a list of counters in the system.
*
* @return a list of counters in the system
* @throws PerforceException
*/
public List<Counter> getCounters() throws PerforceException {
final String cmd[] = new String[] { getP4Exe(), "counters" };
final List<Counter> counters = new ArrayList<Counter>();
final StringBuilder response = getPerforceResponse(cmd);
final List<String> names = parseList(response, 0);
for(final String name : names) {
counters.add(getCounter(name));
}
return counters;
}
/**
* Returns a counter specified by name.
*
* @param name
* counter name
* @return a counter specified by name
* @throws PerforceException
*/
public Counter getCounter(String name) throws PerforceException {
final CounterBuilder builder = new CounterBuilder();
final Counter counter = builder.build(getPerforceResponse(builder.getBuildCmd(getP4Exe(), name)));
counter.setName(name);
return counter;
}
}