package org.deri.grefine.reconcile.commands; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.deri.grefine.reconcile.model.ReconciliationService; import org.apache.commons.lang.StringUtils; import org.json.JSONException; import org.json.JSONWriter; import com.google.common.collect.ImmutableList; import com.google.refine.commands.Command; public abstract class AbstractAddServiceCommand extends Command{ @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ ReconciliationService service = getReconciliationService(request); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Type", "application/json"); Writer w = response.getWriter(); JSONWriter writer = new JSONWriter(w); writer.object(); writer.key("code"); writer.value("ok"); writer.key("service"); service.writeAsJson(writer); writer.endObject(); w.flush(); w.close(); } catch (Exception e) { respondException(response, e); } } protected String getIdForString(String name){ return name.toLowerCase().replaceAll("\\s+", "-").replaceAll("[^-.a-zA-Z0-9]", "").replaceAll("\\-\\-+", "-"); } protected ImmutableList<String> asImmutableList(String text){ List<String> lst = new ArrayList<String>(); if (StringUtils.isNotBlank(text)) { StringTokenizer tokenizer = new StringTokenizer(text," \n"); while(tokenizer.hasMoreTokens()){ String token = tokenizer.nextToken(); if(token.trim().isEmpty()){ continue; } lst.add(token.trim()); } } return ImmutableList.copyOf(lst); } protected abstract ReconciliationService getReconciliationService(HttpServletRequest request)throws JSONException, IOException; }