// Path: src/java/main/br/ufpe/cin/groundhog/codehistory/UnsupportedForgeException.java
// public class UnsupportedForgeException extends GroundhogException {
// 	private static final long serialVersionUID = 1L;
// 
// 	public UnsupportedForgeException(String msg) {
// 		super(msg);
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/CSVFormater.java
// public class CSVFormater extends Formater {
// 
// 	@Override
// 	public String format(HashMap<String, HashMap<String, MutableInt>> object) {
// 		StringWriter result = new StringWriter();
// 		try {
// 			CSVWriter writer = new CSVWriter(result, ';');
// 			writer.writeNext(new String[] { "Metric", "Entry", "Value" });
// 			for (String metric : object.keySet()) {
// 				HashMap<String, MutableInt> counter = object.get(metric);
// 				for (Entry<String, MutableInt> entry : counter.entrySet()) {
// 					writer.writeNext(new String[] { metric, entry.getKey(), entry.getValue().toString() });
// 				}
// 			}
// 			writer.flush();
// 			writer.close();
// 			return result.toString();
// 		} catch (IOException e) {
// 			e.printStackTrace();
// 			throw new ParserException();
// 		}
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/Formater.java
// public abstract class Formater {
// 
// 	/**
// 	 * Formats the metric object into a file representation. It could be
// 	 * CSV or JSON
// 	 * 
// 	 * @param object
// 	 * @return
// 	 */
// 	public abstract String format(HashMap<String, HashMap<String, MutableInt>> object);
// 
// 	public String toString() {
// 		return getClass().getSimpleName().toLowerCase().replaceAll("formater", "");
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/FormaterFactory.java
// public class FormaterFactory {
// 
// 	/**
// 	 * Factory method to create a {@link Formater} object
// 	 * @param formater
// 	 * @return
// 	 */
// 	public static Formater get(Class<? extends Formater> formater) {
// 		try {
// 			return formater.newInstance();
// 		} catch (Exception e) {
// 			String msg = String.format("I did not reconginze this output format (%s) :( I can only format in CSV or JSON", formater.getSimpleName());
// 			throw new GroundhogException(msg, e);
// 		}
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/JSONFormater.java
// public class JSONFormater extends Formater {
// 
// 	@Override
// 	public String format(HashMap<String, HashMap<String, MutableInt>> object) {
// 		Gson gson = new GsonBuilder().serializeNulls().create();
// 		return gson.toJson(object);
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/util/Dates.java
// public class Dates {
// 
// 	private SimpleDateFormat simpleDateFormat;
// 
// 	public Dates() {
// 		simpleDateFormat = new SimpleDateFormat();
// 	}
// 
// 	public Dates(String pattern) {
// 		simpleDateFormat = new SimpleDateFormat(pattern);
// 	}
// 
// 	public String format(Date date) {
// 		return simpleDateFormat.format(date);
// 	}
// 
// 	public Date format(String date) {
// 		try {
// 			return simpleDateFormat.parse(date);
// 		} catch (ParseException e) {
// 			e.printStackTrace();
// 			return null;
// 		}
// 	}
// }


import java.io.File;
import java.util.Date;
import java.util.List;
import br.ufpe.cin.groundhog.codehistory.UnsupportedForgeException;
import br.ufpe.cin.groundhog.parser.java.formater.CSVFormater;
import br.ufpe.cin.groundhog.parser.java.formater.Formater;
import br.ufpe.cin.groundhog.parser.java.formater.FormaterFactory;
import br.ufpe.cin.groundhog.parser.java.formater.JSONFormater;
import br.ufpe.cin.groundhog.util.Dates;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
		return FormaterFactory.get(CSVFormater.class);
	}

	public static int getMaxThreads() {
		return 4;
	}
	
	public String getGitHubOauthAcessToken() {
		return gitHubOauthAcessToken;
	}

	public Search getSearch() {
		return this.search;
	}

	public String toString() {
		return Objects.toStringHelper("")
				.add("forge", forge)
				.add("dest", dest)
				.add("out", out)
				.add("datetime", datetime)
				.add("nproject", nprojects)
				.add("outputformat", outputformat)
				.add("search", search)
				.toString();
	}
}

final class Search {
	private List<String> projects;
// Path: src/java/main/br/ufpe/cin/groundhog/codehistory/UnsupportedForgeException.java
// public class UnsupportedForgeException extends GroundhogException {
// 	private static final long serialVersionUID = 1L;
// 
// 	public UnsupportedForgeException(String msg) {
// 		super(msg);
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/CSVFormater.java
// public class CSVFormater extends Formater {
// 
// 	@Override
// 	public String format(HashMap<String, HashMap<String, MutableInt>> object) {
// 		StringWriter result = new StringWriter();
// 		try {
// 			CSVWriter writer = new CSVWriter(result, ';');
// 			writer.writeNext(new String[] { "Metric", "Entry", "Value" });
// 			for (String metric : object.keySet()) {
// 				HashMap<String, MutableInt> counter = object.get(metric);
// 				for (Entry<String, MutableInt> entry : counter.entrySet()) {
// 					writer.writeNext(new String[] { metric, entry.getKey(), entry.getValue().toString() });
// 				}
// 			}
// 			writer.flush();
// 			writer.close();
// 			return result.toString();
// 		} catch (IOException e) {
// 			e.printStackTrace();
// 			throw new ParserException();
// 		}
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/Formater.java
// public abstract class Formater {
// 
// 	/**
// 	 * Formats the metric object into a file representation. It could be
// 	 * CSV or JSON
// 	 * 
// 	 * @param object
// 	 * @return
// 	 */
// 	public abstract String format(HashMap<String, HashMap<String, MutableInt>> object);
// 
// 	public String toString() {
// 		return getClass().getSimpleName().toLowerCase().replaceAll("formater", "");
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/FormaterFactory.java
// public class FormaterFactory {
// 
// 	/**
// 	 * Factory method to create a {@link Formater} object
// 	 * @param formater
// 	 * @return
// 	 */
// 	public static Formater get(Class<? extends Formater> formater) {
// 		try {
// 			return formater.newInstance();
// 		} catch (Exception e) {
// 			String msg = String.format("I did not reconginze this output format (%s) :( I can only format in CSV or JSON", formater.getSimpleName());
// 			throw new GroundhogException(msg, e);
// 		}
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/parser/java/formater/JSONFormater.java
// public class JSONFormater extends Formater {
// 
// 	@Override
// 	public String format(HashMap<String, HashMap<String, MutableInt>> object) {
// 		Gson gson = new GsonBuilder().serializeNulls().create();
// 		return gson.toJson(object);
// 	}
// }
// 
// Path: src/java/main/br/ufpe/cin/groundhog/util/Dates.java
// public class Dates {
// 
// 	private SimpleDateFormat simpleDateFormat;
// 
// 	public Dates() {
// 		simpleDateFormat = new SimpleDateFormat();
// 	}
// 
// 	public Dates(String pattern) {
// 		simpleDateFormat = new SimpleDateFormat(pattern);
// 	}
// 
// 	public String format(Date date) {
// 		return simpleDateFormat.format(date);
// 	}
// 
// 	public Date format(String date) {
// 		try {
// 			return simpleDateFormat.parse(date);
// 		} catch (ParseException e) {
// 			e.printStackTrace();
// 			return null;
// 		}
// 	}
// }


// Path: src/java/main/br/ufpe/cin/groundhog/main/JsonInputFile.java
import java.io.File;
import java.util.Date;
import java.util.List;
import br.ufpe.cin.groundhog.codehistory.UnsupportedForgeException;
import br.ufpe.cin.groundhog.parser.java.formater.CSVFormater;
import br.ufpe.cin.groundhog.parser.java.formater.Formater;
import br.ufpe.cin.groundhog.parser.java.formater.FormaterFactory;
import br.ufpe.cin.groundhog.parser.java.formater.JSONFormater;
import br.ufpe.cin.groundhog.util.Dates;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;

		return FormaterFactory.get(CSVFormater.class);
	}

	public static int getMaxThreads() {
		return 4;
	}
	
	public String getGitHubOauthAcessToken() {
		return gitHubOauthAcessToken;
	}

	public Search getSearch() {
		return this.search;
	}

	public String toString() {
		return Objects.toStringHelper("")
				.add("forge", forge)
				.add("dest", dest)
				.add("out", out)
				.add("datetime", datetime)
				.add("nproject", nprojects)
				.add("outputformat", outputformat)
				.add("search", search)
				.toString();
	}
}

final class Search {
	private List<String> projects;
	private String username;