package org.wikipedia.miner.web.service; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.simpleframework.xml.*; import org.dmilne.xjsf.Service; import com.google.gson.annotations.Expose; @SuppressWarnings("serial") public class ListWikipediasService extends WMService{ public ListWikipediasService() { super("meta","Lists available editions of Wikipedia", "<p>This service lists the different editions of Wikipedia that are available</p>",false ); } @Override public Message buildWrappedResponse(HttpServletRequest request) throws Exception { Message msg = new Message(request) ; for (String wikiName: getWMHub().getWikipediaNames()) { String desc = getWMHub().getWikipediaDescription(wikiName) ; boolean isDefault = wikiName.equals(getWMHub().getDefaultWikipediaName()) ; msg.addWikipedia(new Wikipedia(wikiName, desc, isDefault)) ; } return msg ; } public static class Message extends Service.Message { @Expose @ElementList(inline=true) private ArrayList<Wikipedia> wikipedias = new ArrayList<Wikipedia>() ; private Message(HttpServletRequest request) { super(request) ; } private void addWikipedia(Wikipedia w) { wikipedias.add(w) ; } public List<Wikipedia> getWikipedias() { return Collections.unmodifiableList(wikipedias); } } public static class Wikipedia { @Expose @Attribute private String name ; @Expose @Attribute private String description ; @Expose @Attribute private boolean isDefault ; private Wikipedia(String name, String description, boolean isDefault) { this.name = name ; this.description = description ; this.isDefault = isDefault ; } public String getName() { return name; } public String getDescription() { return description; } public boolean isDefault() { return isDefault; } } }