/*
* 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.list;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.wikipediacleaner.api.APIException;
import org.wikipediacleaner.api.constants.EnumWikipedia;
import org.wikipediacleaner.api.data.AbuseFilter;
/**
* MediaWiki abuse filters requests.
*/
public class ApiAbuseFiltersRequest extends ApiListRequest {
// ==========================================================================
// API properties
// ==========================================================================
/**
* Property for Direction.
*/
public final static String PROPERTY_DIR = "abfdir";
/**
* Property value for Direction / Newer.
*/
public final static String PROPERTY_DIR_NEWER = "newer";
/**
* Property value for Direction / Older.
*/
public final static String PROPERTY_DIR_OLDER = "older";
/**
* Property for End Identifier.
*/
public final static String PROPERTY_ENDID = "abfendid";
/**
* Property for Limit.
*/
public final static String PROPERTY_LIMIT = "abflimit";
/**
* Property for Properties.
*/
public final static String PROPERTY_PROP = "abfprop";
/**
* Property value for Properties / Actions.
*/
public final static String PROPERTY_PROP_ACTIONS = "actions";
/**
* Property value for Properties / Comments.
*/
public final static String PROPERTY_PROP_COMMENTS = "comments";
/**
* Property value for Properties / Description.
*/
public final static String PROPERTY_PROP_DESC = "description";
/**
* Property value for Properties / Hits.
*/
public final static String PROPERTY_PROP_HITS = "hits";
/**
* Property value for Properties / ID.
*/
public final static String PROPERTY_PROP_ID = "id";
/**
* Property value for Properties / Last Editor.
*/
public final static String PROPERTY_PROP_LASTEDITOR = "lasteditor";
/**
* Property value for Properties / Last Edit Time.
*/
public final static String PROPERTY_PROP_LASTEDITTIME = "lastedittime";
/**
* Property value for Properties / Pattern.
*/
public final static String PROPERTY_PROP_PATTERN = "pattern";
/**
* Property value for Properties / Private.
*/
public final static String PROPERTY_PROP_PRIVATE = "private";
/**
* Property value for Properties / Status.
*/
public final static String PROPERTY_PROP_STATUS = "status";
/**
* Property for Show.
*/
public final static String PROPERTY_SHOW = "abfshow";
/**
* Property value for Show / Deleted.
*/
public final static String PROPERTY_SHOW_DELETED = "deleted";
/**
* Property value for Show / Not Deleted.
*/
public final static String PROPERTY_SHOW_NOTDELETED = "!deleted";
/**
* Property value for Show / Enabled.
*/
public final static String PROPERTY_SHOW_ENABLED = "enabled";
/**
* Property value for Show / Not Enabled.
*/
public final static String PROPERTY_SHOW_NOTENABLED = "!enabled";
/**
* Property value for Show / Private.
*/
public final static String PROPERTY_SHOW_PRIVATE = "private";
/**
* Property value for Show / Not Private.
*/
public final static String PROPERTY_SHOW_NOTPRIVATE = "!private";
/**
* Property for Start Identifier.
*/
public final static String PROPERTY_STARTID = "abfstartid";
// ==========================================================================
// Request management
// ==========================================================================
private final ApiAbuseFiltersResult result;
/**
* @param wiki Wiki.
* @param result Parser for result depending on chosen format.
*/
public ApiAbuseFiltersRequest(EnumWikipedia wiki, ApiAbuseFiltersResult result) {
super(wiki);
this.result = result;
}
/**
* Load list of abuse filters.
*/
public List<AbuseFilter> loadAbuseFilters() throws APIException {
Map<String, String> properties = getProperties(ACTION_QUERY, result.getFormat());
properties.put(
PROPERTY_LIST,
PROPERTY_LIST_ABUSEFILTERS);
properties.put(PROPERTY_LIMIT, LIMIT_MAX);
properties.put(PROPERTY_SHOW, PROPERTY_SHOW_ENABLED);
List<AbuseFilter> list = new ArrayList<AbuseFilter>();
while (result.executeAbuseFilters(properties, list)) {
//
}
Collections.sort(list);
return list;
}
}