package com.ctrip.platform.dal.daogen.resource;
import com.ctrip.platform.dal.daogen.utils.Configuration;
import com.ctrip.platform.dal.daogen.domain.Status;
import com.ctrip.platform.dal.daogen.entity.Config;
import com.ctrip.platform.dal.daogen.entity.ConfigTemplate;
import com.ctrip.platform.dal.daogen.entity.Language;
import com.ctrip.platform.dal.daogen.enums.ConfigType;
import com.ctrip.platform.dal.daogen.enums.LanguageType;
import com.ctrip.platform.dal.daogen.utils.SpringBeanGetter;
import javax.annotation.Resource;
import javax.inject.Singleton;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@Resource
@Singleton
@Path("configTemplate")
public class ConfigTemplateResource {
private static ClassLoader classLoader = null;
private static List<Config> configList = null;
private static List<Language> languageList = null;
static {
classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader == null) {
classLoader = Configuration.class.getClassLoader();
}
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("getAllConfigTemplates")
public List<ConfigTemplate> getAllConfigTemplates() throws Exception {
List<ConfigTemplate> configTemplates = SpringBeanGetter.getConfigTemplateDao().getAllConfigTemplates();
return configTemplates;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("getConfigTemplateById")
public ConfigTemplate getConfigTemplateById(@QueryParam("id") String id) {
int templateId = -1;
try {
templateId = Integer.parseInt(id);
} catch (NumberFormatException ex) {
return null;
}
ConfigTemplate configTemplate = SpringBeanGetter.getConfigTemplateDao().getConfigTemplateById(templateId);
return configTemplate;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("getConfigTemplateByConditions")
public ConfigTemplate getConfigTemplateByConditions(@QueryParam("configType") String configType, @QueryParam("langType") String langType) {
ConfigTemplate configTemplate = null;
if (configType == null || langType == null) {
return configTemplate;
}
int config_type = -1;
try {
config_type = Integer.parseInt(configType);
} catch (NumberFormatException e) {
return configTemplate;
}
int lang_type = -1;
try {
lang_type = Integer.parseInt(langType);
} catch (NumberFormatException e) {
return configTemplate;
}
ConfigTemplate temp = new ConfigTemplate();
temp.setConfig_type(config_type);
temp.setLang_type(lang_type);
configTemplate = SpringBeanGetter.getConfigTemplateDao().getConfigTemplateByConditions(temp);
return configTemplate;
}
@POST
@Path("addConfigTemplate")
public Status addConfigTemplate(@FormParam("configType") String configType, @FormParam("langType") String langType, @FormParam("template") String template) {
Status status = Status.OK;
if (configType == null || langType == null || template == null) {
status = Status.ERROR;
status.setInfo("Null parameters.");
return status;
}
int config_type = -1;
try {
config_type = Integer.parseInt(configType);
} catch (NumberFormatException e) {
status = Status.ERROR;
status.setInfo("Invalid config type.");
return status;
}
int lang_type = -1;
try {
lang_type = Integer.parseInt(langType);
} catch (NumberFormatException e) {
status = Status.ERROR;
status.setInfo("Invalid lang type.");
return status;
}
ConfigTemplate configTemplate = new ConfigTemplate();
configTemplate.setConfig_type(config_type);
configTemplate.setLang_type(lang_type);
configTemplate.setTemplate(template);
SpringBeanGetter.getConfigTemplateDao().insertConfigTemplate(configTemplate);
return status;
}
@POST
@Path("updateConfigTemplate")
public Status updateConfigTemplate(@FormParam("id") String id, @FormParam("configType") String configType, @FormParam("langType") String langType, @FormParam("template") String template) {
Status status = Status.OK;
if (id == null || configType == null || langType == null || template == null) {
status = Status.ERROR;
status.setInfo("Null parameters");
return status;
}
int templateId = -1;
try {
templateId = Integer.parseInt(id);
} catch (NumberFormatException e) {
status = Status.ERROR;
status.setInfo("Invalid id.");
return status;
}
int config_type = -1;
try {
config_type = Integer.parseInt(configType);
} catch (NumberFormatException e) {
status = Status.ERROR;
status.setInfo("Invalid config type.");
return status;
}
int lang_type = -1;
try {
lang_type = Integer.parseInt(langType);
} catch (NumberFormatException e) {
status = Status.ERROR;
status.setInfo("Invalid lang type.");
return status;
}
ConfigTemplate configTemplate = new ConfigTemplate();
configTemplate.setId(templateId);
configTemplate.setConfig_type(config_type);
configTemplate.setLang_type(lang_type);
configTemplate.setTemplate(template);
SpringBeanGetter.getConfigTemplateDao().updateConfigTemplate(configTemplate);
return status;
}
@POST
@Path("deleteConfigTemplate")
public Status deleteConfigTemplate(@FormParam("id") String id) {
Status status = Status.OK;
if (id == null) {
status = Status.ERROR;
status.setInfo("Null parameters");
return status;
}
int templateId = -1;
try {
templateId = Integer.parseInt(id);
} catch (NumberFormatException e) {
status = Status.ERROR;
status.setInfo("Invalid id.");
return status;
}
ConfigTemplate configTemplate = new ConfigTemplate();
configTemplate.setId(templateId);
SpringBeanGetter.getConfigTemplateDao().deleteConfigTemplate(configTemplate);
return status;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("getConfigList")
public List<Config> getConfigList() {
if (configList == null) {
configList = getConfigs();
}
return configList;
}
private List<Config> getConfigs() {
List<Config> list = new ArrayList<>();
for (ConfigType configType : ConfigType.values()) {
Config config = new Config();
config.setId(configType.getValue());
config.setName(configType.getDescription());
list.add(config);
}
Collections.sort(list, new Comparator<Config>() {
@Override
public int compare(Config c1, Config c2) {
return c1.getId().compareTo(c2.getId());
}
});
return list;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("getLanguageList")
public List<Language> getLanguageList() {
if (languageList == null) {
languageList = getLanguages();
}
return languageList;
}
private List<Language> getLanguages() {
List<Language> list = new ArrayList<>();
for (LanguageType languageType : LanguageType.values()) {
Language language = new Language();
language.setId(languageType.getValue());
language.setName(languageType.toString());
list.add(language);
}
Collections.sort(list, new Comparator<Language>() {
@Override
public int compare(Language l1, Language l2) {
return l1.getId().compareTo(l2.getId());
}
});
return list;
}
}