package org.jenkins.tools.test.servlets;
import com.google.appengine.api.datastore.Key;
import org.jenkins.tools.test.dao.LogsDAO;
import org.jenkins.tools.test.dao.PluginCompatResultDAO;
import org.jenkins.tools.test.model.MavenCoordinates;
import org.jenkins.tools.test.model.PluginCompatResult;
import org.jenkins.tools.test.model.PluginInfos;
import org.jenkins.tools.test.model.TestStatus;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* @author fcamblor
*/
public class WritePCTResultServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Current servlet is secured !
SecuritySupport.ensureTokenIsValid(req);
// Parsing request...
String pluginName = req.getParameter("pluginName");
String pluginVersion = req.getParameter("pluginVersion");
String pluginUrl = req.getParameter("pluginUrl");
TestStatus status = TestStatus.valueOf(req.getParameter("status"));
String errorMessages = req.getParameter("errMsg");
List<String> warningMessages = null;
if(req.getParameterValues("warnMsgs") != null){
warningMessages = Arrays.asList(req.getParameterValues("warnMsgs"));
}
String dateTimestampStr = req.getParameter("timestamp");
Date date = null;
if(dateTimestampStr == null){
date = new Date(); // If date is not set, use NOW
} else {
date = new Date(Long.valueOf(dateTimestampStr));
}
String buildLogPath = req.getParameter("buildLogPath");
PluginInfos pluginInfos = new PluginInfos(pluginName, pluginVersion, pluginUrl);
MavenCoordinates mavenCoords = MavenCoordinates.fromGAV(req.getParameter("mavenGAV"));
PluginCompatResult result = new PluginCompatResult(mavenCoords, status, errorMessages, warningMessages, buildLogPath, date);
// Now, persisting result data into datastore !
Key resultKey = PluginCompatResultDAO.INSTANCE.persist(pluginInfos, result);
String logContent = req.getParameter("logContent");
if(logContent != null && buildLogPath != null){
LogsDAO.INSTANCE.persistBuildLog(buildLogPath, logContent, resultKey);
}
resp.getWriter().print(String.format("id=%d", resultKey.getId()));
}
}