package org.genedb.web.mvc.controller;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@Controller
@RequestMapping("/genedb")
public class ClassicCompatabilityController {
private static final String WWW = "redirect:http://www.genedb.org/";
private static final String CLASSIC = "redirect:http://old.genedb.org/";
private static final String CLASSIC_FULL = CLASSIC + "genedb/";
private static Set<String> classicOnly = Sets.newHashSet();
// The organismprop have proved too flakey so hardcode here for now
private static Map<String, String> classicMap = Maps.newHashMap();
static {
classicOnly.add("annulata");
classicOnly.add("asp");
classicOnly.add("cdubliniensis");
classicOnly.add("cerevisiae");
classicOnly.add("cjejuni");
classicOnly.add("dicty");
classicOnly.add("ehistolytica");
classicOnly.add("ehuxleyi");
classicOnly.add("glossina");
classicOnly.add("llongipalpis");
classicOnly.add("pberghei");
classicOnly.add("pert");
classicOnly.add("pombe");
classicMap.put("etenella", "Etenella");
classicMap.put("ncaninum", "Ncaninum");
classicMap.put("pchabaudi", "Pchabaudi");
classicMap.put("malaria", "Pfalciparum");
classicMap.put("pknowlesi", "Pknowlesi");
classicMap.put("tbrucei427", "Tbruceibrucei427");
classicMap.put("lbraziliensis", "Lbraziliensis");
classicMap.put("linfantum", "Linfantum");
classicMap.put("leish", "Lmajor");
classicMap.put("tryp", "Tbruceibrucei927");
classicMap.put("tcruzi", "Tcruzi");
classicMap.put("tcongolense", "Tcongolense");
classicMap.put("tgambiense", "Tbruceigambiense");
classicMap.put("tvivax", "Tvivax");
classicMap.put("smansoni", "Smansoni");
classicMap.put("bronchi", "Bbronchiseptica");
classicMap.put("bfragilis", "Bfragilis_NCTC9343");
classicMap.put("parapert", "Bparapertussis");
classicMap.put("bpseudomallei", "Bpseudomallei");
classicMap.put("cabortus", "Cabortus");
classicMap.put("diphtheria", "Cdiphtheriae");
classicMap.put("ecarot", "Ecarotovora");
classicMap.put("rleguminosarum", "Rleguminosarum");
classicMap.put("saureusMRSA", "Saureus_MRSA252");
classicMap.put("saureusMSSA", "Saureus_MSSA4776");
classicMap.put("scoelicolor", "Scoelicolor");
classicMap.put("spyogenes", "Spyogenes");
classicMap.put("styphi", "Styphi");
}
private Logger logger = Logger.getLogger(ClassicCompatabilityController.class);
// Homepage
@RequestMapping(method=RequestMethod.GET, value={"/{nickname}", "/{nickname}/", "/{nickname}/index.jsp"})
public String viewHomepage(@PathVariable("nickname") String nickname) {
if (classicOnly.contains(nickname)) {
return CLASSIC_FULL + nickname + "/";
}
return WWW + "Homepage/" + classicMap.get(nickname);
}
// Blast page
@RequestMapping(method=RequestMethod.GET, value="/{nickname}/blast.jsp")
public String viewBlastPage(@PathVariable("nickname") String nickname) {
if (classicOnly.contains(nickname)) {
return CLASSIC + "genedb/" + nickname + "/blast.jsp";
}
return WWW + "Homepage/" + classicMap.get(nickname);
}
// Canonical gene
@RequestMapping(method=RequestMethod.GET, value="/Search")
public String viewGenePage(
@RequestParam("name") String name,
@RequestParam("organism") String nickname) {
if (classicOnly.contains(nickname)) {
return CLASSIC_FULL + "Search?name=" + name + "&organism=" + nickname;
}
return WWW + "Query/quickSearch?searchText=" + name + "&allNames=true&pseudogenes=true";
//return WWW + "gene/" + name;
}
// Menu bar search
@RequestMapping(method=RequestMethod.GET, value="/Dispatcher")
public String decodeDispatcher(
@RequestParam("name") String name,
@RequestParam("organism") String nickname) {
if (classicOnly.contains(nickname)) {
return CLASSIC_FULL + "Search?name=" + name + "&organism=" + nickname;
}
return WWW + "gene/" + name;
}
}