package com.psddev.cms.tool.page;
import com.psddev.cms.tool.PageServlet;
import com.psddev.cms.nlp.SpellChecker;
import com.psddev.cms.tool.ToolPageContext;
import com.psddev.dari.util.CompactMap;
import com.psddev.dari.util.ObjectUtils;
import com.psddev.dari.util.RoutingFilter;
import javax.servlet.ServletException;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
@RoutingFilter.Path(application = "cms", value = "spellCheck")
public class SpellCheck extends PageServlet {
@Override
protected String getPermissionId() {
return null;
}
@Override
protected void doService(ToolPageContext page) throws IOException, ServletException {
Map<String, Object> response = new CompactMap<>();
try {
Locale locale = Locale.forLanguageTag(page.param(String.class, "locale"));
SpellChecker spellChecker = SpellChecker.getInstance(locale);
if (spellChecker == null) {
response.put("status", "unsupported");
} else {
response.put("status", "supported");
List<String> words = page.params(String.class, "word");
if (!ObjectUtils.isBlank(words)) {
response.put("results", words
.stream()
.map(word -> spellChecker.suggest(locale, word))
.collect(Collectors.toList()));
}
}
} catch (Exception error) {
response.put("status", "error");
response.put("message", error.getMessage());
}
page.getResponse().setContentType("application/javascript");
page.write(ObjectUtils.toJson(response));
}
}