/* * WPCleaner: A tool to help on Wikipedia maintenance tasks. * Copyright (C) 2013 Nicolas Vervelle * * See README.txt file for licensing information. */ package org.wikipediacleaner.api.request.query.meta; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import org.wikipediacleaner.api.APIException; import org.wikipediacleaner.api.constants.EnumWikipedia; /** * MediaWiki API site information requests. */ public class ApiSiteInfoRequest extends ApiMetaRequest { // ========================================================================== // API properties // ========================================================================== /** * Property for Properties. */ public final static String PROPERTY_PROP = "siprop"; /** * Property for Properties / General. */ public final static String PROPERTY_PROP_GENERAL = "general"; /** * Property for Properties / Interwiki map. */ public final static String PROPERTY_PROP_INTERWIKI_MAP = "interwikimap"; /** * Property for Properties / Languages. */ public final static String PROPERTY_PROP_LANGUAGES = "languages"; /** * Property for Properties / Magic words. */ public final static String PROPERTY_PROP_MAGIC_WORDS = "magicwords"; /** * Property for Properties / Name space aliases. */ public final static String PROPERTY_PROP_NAMESPACE_ALIASES = "namespacealiases"; /** * Property for Properties / Special page aliases. */ public final static String PROPERTY_PROP_SPECIAL_PAGE_ALIASES = "specialpagealiases"; /** * Property for Properties / Name spaces. */ public final static String PROPERTY_PROP_NAMESPACES = "namespaces"; /** * Property for Properties / Statistics. */ public final static String PROPERTY_PROP_STATISTICS = "statistics"; // ========================================================================== // Request management // ========================================================================== private final ApiSiteInfoResult result; /** * @param wiki Wiki. * @param result Parser for result depending on chosen format. */ public ApiSiteInfoRequest(EnumWikipedia wiki, ApiSiteInfoResult result) { super(wiki); this.result = result; } /** * Load site information. * * @param general True if general information are requested. * @param namespaces True if information about name spaces are requested. * @param namespaceAliases True if information about name spaces aliases are requested. * @param languages True if information about languages are requested. * @param interwikiMap True if information about interwiki map are requested. * @param magicWords True if information about magic words are requested. * @param specialPageAliases True if information about special page aliases are requested. */ public void loadSiteInformation( boolean general, boolean namespaces, boolean namespaceAliases, boolean languages, boolean interwikiMap, boolean magicWords, boolean specialPageAliases) throws APIException { Map<String, String> properties = getProperties(ACTION_QUERY, result.getFormat()); properties.put( PROPERTY_META, PROPERTY_META_SITEINFO); properties.put(PROPERTY_CONTINUE, PROPERTY_CONTINUE_DEFAULT); Collection<String> information = new ArrayList<String>(); if (general) { information.add(PROPERTY_PROP_GENERAL); } if (namespaces) { information.add(PROPERTY_PROP_NAMESPACES); } if (namespaceAliases) { information.add(PROPERTY_PROP_NAMESPACE_ALIASES); } if (languages) { information.add(PROPERTY_PROP_LANGUAGES); } if (interwikiMap) { information.add(PROPERTY_PROP_INTERWIKI_MAP); } if (magicWords) { information.add(PROPERTY_PROP_MAGIC_WORDS); } if (specialPageAliases) { information.add(PROPERTY_PROP_SPECIAL_PAGE_ALIASES); } properties.put( PROPERTY_PROP, constructList(information)); result.executeSiteInformation(properties); } }