package codeine.servlets.api_servlets; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import codeine.api.NodeWithMonitorsInfo; import codeine.db.IStatusDatabaseConnector; import codeine.db.mysql.connectors.StatusDatabaseConnectorListProvider; import codeine.jsons.peer_status.PeerStatusJsonV2; import codeine.jsons.peer_status.ProjectStatus; import codeine.servlet.AbstractApiServlet; import com.google.inject.Inject; public class ReporterServlet extends AbstractApiServlet { private static final long serialVersionUID = 1L; private static final Logger log = Logger.getLogger(ReporterServlet.class); private IStatusDatabaseConnector databaseConnector; @Inject public ReporterServlet(StatusDatabaseConnectorListProvider databaseConnectorProvider) { super(); this.databaseConnector = databaseConnectorProvider.get().get(0); } @Override protected void myPost(HttpServletRequest req, HttpServletResponse resp) { NodeWithMonitorsInfo nodeWithMonitorsInfo = readBodyJson(req, NodeWithMonitorsInfo.class); log.info("Recieved status " + nodeWithMonitorsInfo); PeerStatusJsonV2 json = new PeerStatusJsonV2(nodeWithMonitorsInfo.projectName() + "_" + nodeWithMonitorsInfo.name(), createProjectStatus(nodeWithMonitorsInfo)); log.info("Pushing peer report " + json); databaseConnector.putReplaceStatus(json); } private ProjectStatus createProjectStatus(NodeWithMonitorsInfo nodeWithMonitorsInfo) { ProjectStatus projectStatus = new ProjectStatus(nodeWithMonitorsInfo.projectName(), nodeWithMonitorsInfo); return projectStatus; } @Override protected boolean checkPermissions(HttpServletRequest request) { return true; } }