package com.robert.vesta.rest; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.robert.vesta.service.bean.Id; import com.robert.vesta.service.intf.IdService; @RestController public class IdController { private final IdService idService; public IdController() { ApplicationContext ac = new ClassPathXmlApplicationContext( "spring/vesta-rest-main.xml"); idService = (IdService) ac.getBean("idService"); } @RequestMapping("/genid") public long genId() { return idService.genId(); } @RequestMapping("/expid") public Id explainId(@RequestParam(value = "id", defaultValue = "0") long id) { return idService.expId(id); } @RequestMapping("/transtime") public String transTime( @RequestParam(value = "time", defaultValue = "-1") long time) { return idService.transTime(time).toString(); } @RequestMapping("/makeid") public long makeId( @RequestParam(value = "version", defaultValue = "-1") long version, @RequestParam(value = "type", defaultValue = "-1") long type, @RequestParam(value = "genMethod", defaultValue = "-1") long genMethod, @RequestParam(value = "machine", defaultValue = "-1") long machine, @RequestParam(value = "time", defaultValue = "-1") long time, @RequestParam(value = "seq", defaultValue = "-1") long seq) { long madeId = -1; if (time == -1 || seq == -1) throw new IllegalArgumentException( "Both time and seq are required."); else if (version == -1) { if (type == -1) { if (genMethod == -1) { if (machine == -1) { madeId = idService.makeId(time, seq); } else { madeId = idService.makeId(machine, time, seq); } } else { madeId = idService.makeId(genMethod, machine, time, seq); } } else { madeId = idService.makeId(type, genMethod, machine, time, seq); } } else { madeId = idService.makeId(version, type, genMethod, machine, time, seq); } return madeId; } }