package codeine.servlets.api_servlets.angular;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import codeine.model.Constants;
import codeine.servlet.AbstractApiServlet;
import codeine.servlets.api_servlets.ProjectsTab;
import codeine.utils.FilesUtils;
import codeine.utils.TextFileUtils;
import com.google.common.collect.Lists;
import com.google.common.reflect.TypeToken;
@SuppressWarnings("serial")
public class ProjectsTabsApiServlet extends AbstractApiServlet {
private static final Logger log = Logger.getLogger(ProjectsTabsApiServlet.class);
private static final long serialVersionUID = 1L;
@Override
protected boolean checkPermissions(HttpServletRequest request) {
if (request.getMethod().equals("POST")) {
if (!isAdministrator(request)) {
log.info("User can not define new project");
return false;
}
return true;
}
return true;
}
@SuppressWarnings("unchecked")
@Override
protected void myGet(HttpServletRequest request, HttpServletResponse response) {
String file = Constants.getViewConfPath();
List<ProjectsTab> projects_tabs = Lists.newArrayList();
if (FilesUtils.exists(file)) {
Type listType = new TypeToken<ArrayList<ProjectsTab>>() { }.getType();
projects_tabs.addAll((Collection<? extends ProjectsTab>) gson().fromJson(TextFileUtils.getContents(file), listType));
}
writeResponseJson(response, projects_tabs);
}
@Override
protected void myPut(HttpServletRequest request, HttpServletResponse response) {
Type listType = new TypeToken<ArrayList<ProjectsTab>>() { }.getType();
ArrayList<ProjectsTab> data = readBodyJson(request, listType);
log.info("Will update codeine view configuration. New Config is: " + data);
TextFileUtils.setContents(Constants.getViewConfPath(), gson().toJson(data));
writeResponseJson(response, data);
}
}