package tech.riemann.ims; import java.io.IOException; import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAccessor; import java.util.Locale; import org.mybatis.spring.annotation.MapperScan; import org.nutz.castor.Castors; import org.nutz.json.Json; import org.nutz.json.JsonFormat; import org.nutz.json.JsonRender; import org.nutz.json.JsonTypeHandler; import org.nutz.lang.Mirror; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @MapperScan("tech.riemann.ims.mapper") @EnableAsync @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); Json.addTypeHandler(new JsonTypeHandler() { /** * @param mirror * @param obj * @return * @see org.nutz.json.JsonTypeHandler#supportFromJson(org.nutz.lang.Mirror, * java.lang.Object) */ @Override public boolean supportFromJson(Mirror mirror, Object obj) { return mirror.getType().equals(LocalTime.class); } /** * @param mirror * @param obj * @param jf * @return * @see org.nutz.json.JsonTypeHandler#supportToJson(org.nutz.lang.Mirror, * java.lang.Object, org.nutz.json.JsonFormat) */ @Override public boolean supportToJson(Mirror mirror, Object obj, JsonFormat jf) { return mirror.getType().equals(LocalTime.class); } /** * @param mirror * @param currentObj * @param r * @param jf * @throws IOException * @see org.nutz.json.JsonTypeHandler#toJson(org.nutz.lang.Mirror, * java.lang.Object, org.nutz.json.JsonRender, * org.nutz.json.JsonFormat) */ @Override public void toJson(Mirror mirror, Object currentObj, JsonRender r, JsonFormat jf) throws IOException { String df = jf.getDateFormatRaw(); if (mirror.getType().equals(LocalTime.class)) { df = "HH:mm:ss"; } Locale locale = null; String tmp = jf.getLocale(); if (tmp != null) { locale = Locale.forLanguageTag(tmp); } else { locale = Locale.getDefault(); } r.string2Json(DateTimeFormatter.ofPattern(df, locale).withZone(ZoneId.systemDefault()).format((TemporalAccessor) currentObj)); } /** * @param obj * @param mirror * @return * @throws Exception * @see org.nutz.json.JsonTypeHandler#fromJson(java.lang.Object, * org.nutz.lang.Mirror) */ @Override public Object fromJson(Object obj, Mirror mirror) throws Exception { return Castors.me().castTo(obj, mirror.getType()); } }); } }