package compbio.controllers; import java.util.Calendar; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import compbio.cassandra.CassandraRemover; import compbio.cassandra.DateFormatter; /** * MVC controller for direct interaction with the internal DB * A really dangerous controller since it can change data in the DB * Should be available to administrators only * * @author Alexander Sherstnev * @author Natasha Sherstneva * * @version 1.0 * @since Nov 2013 */ @Controller public class DatabaseController extends BasicController { @RequestMapping(value = "/database/remove", method = RequestMethod.GET) public String initRemoveForm(Map model) { model.put("username", getPrincipalName()); Calendar cal = Calendar.getInstance(); String date2 = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DATE); cal.add(Calendar.DATE, -3); String date1 = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DATE); String jobid = "jp_NzBOJKo"; model.put("samplejobid", jobid); model.put("date1", date1); model.put("date2", date2); model.put("sampleip", "127.0.0.1"); model.put("sampleseq", "ATA"); return "query/RemoveJobs"; } @RequestMapping(value = "/database/state", method = RequestMethod.GET) public String initDBStatRequest(Map model) { model.put("username", getPrincipalName()); // return "queryDBState"; return "support/Denied"; } @RequestMapping(value = "/database/remove/go", method = RequestMethod.GET) public String findIPwithCounter(@RequestParam("byId") String byId, @RequestParam("id") String jobid, @RequestParam("byDate") String byDate, @RequestParam("date1") String date1, @RequestParam("date2") String date2, @RequestParam("byIp") String byIp, @RequestParam("ip") String ip, @RequestParam("bySequence") String bySequence, @RequestParam("seq") String sequence, Map model) { model.put("username", getPrincipalName()); model.put("byDate", byDate); model.put("date1", date1); model.put("date2", date2); model.put("byId", byId); model.put("id", jobid); model.put("byIp", byIp); model.put("ip", ip); model.put("bySequence", bySequence); model.put("seq", sequence); CassandraRemover cr = new CassandraRemover(); int njobs1 = 0; int njobs2 = 0; int njobs3 = 0; int njobs4 = 0; if (byId.equals("on,off")) njobs1 = cr.RemoveJobById(jobid); if (byDate.equals("on,off")) { long longDate1 = DateFormatter.DateParsing(date1, formaterYYMMDD) / 1000; long longDate2 = DateFormatter.DateParsing(date2, formaterYYMMDD) / 1000; int timerange = (int)(longDate2 - longDate1) /24 / 3600 + 1; model.put("ndays", timerange); njobs2 = cr.RemoveJobByDate(date1, date2); } if (byIp.equals("on,off")) njobs3 = cr.RemoveJobByIp(ip); if (bySequence.equals("on,off")) njobs4 = cr.RemoveJobBySequence(sequence); model.put("njobs", njobs1 + njobs2 + njobs3 + njobs4); model.put("njobsbyDate", njobs2); model.put("njobsbyIP", njobs3); model.put("njobsbySeq", njobs4); return "reports/RemoveJobs"; } }