ims-server/src/main/java/tech/riemann/ims/Application.java

98 lines
2.8 KiB
Java

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());
}
});
}
}