/*
* SessionHolder.java - The class holds all input parameters of the current session,
* i.e. input parameters for the big functions, e.g. CreateBaseSet, or Calculate, etc.
*
* Copyright (c) 2005-2007 Andrew Krizhanovsky /aka at mail.iias.spb.su/
* Distributed under GNU Public License.
*/
package wikipedia.kleinberg;
import wikipedia.sql.*;
import wikipedia.data.RemovedArticles;
import wikipedia.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
/** Container of all input parameters of the current session,
* i.e. input parameters for the big functions, e.g. CreateBaseSet, or
* Calculate, etc.
*/
public class SessionHolder {
public Connect connect;
public DumpToGraphViz dump;
public int source_article_id;
public String source_page_title;
/** initial set of categories in black list */
public CategoryBlackList category_black_list;
/** ID and titles of removed articles */
public RemovedArticles removed_articles;
public Map<Integer, Category> category_nodes; /** <page_id of category, category object> */
/** whether to skip articles with more than one word in title
* (titles with spaces or underscore characters) */
private boolean skip_titles_with_spaces;
/** whether to select random articles in order to create base set */
private boolean b_rand;
/** whether to add interwiki data to the node, e.g. "En:Something" or "Ru:Нечто" */
private boolean b_iwiki_title;
/** interwiki language to be added */
private String iwiki_lang;
/** Creates a new instance of SessionHolder */
public SessionHolder() {
category_nodes = new HashMap<Integer, Category>();
removed_articles = new RemovedArticles();
connect = new Connect();
skip_titles_with_spaces = true;
b_rand = true;
b_iwiki_title = false;
iwiki_lang = "Eo";
}
public void initObjects(){
category_black_list = new CategoryBlackList(this);
}
public void Init(Connect new_connect, List<String> black_list, int categories_max_steps) {
connect = new_connect;
category_black_list.init(black_list, categories_max_steps);
clear();
}
public void clear() {
removed_articles.clear();
category_nodes.clear();
}
/** Sets value: whether to skip articles with more than one word in title
* (titles with spaces or underscore characters)
* @return old value
*/
public boolean skipTitlesWithSpaces(boolean b) {
boolean old = skip_titles_with_spaces;
skip_titles_with_spaces = b;
return old;
}
/** Gets value: whether to skip articles with more than one word in title. */
public boolean skipTitlesWithSpaces() {
return skip_titles_with_spaces;
}
/** Checks whether to skip the title 'str'.
* @param this.skip_titles_with_spaces
* @return true if title contains: 1) space (underscore) or 2) it is empty
*/
public boolean skipTitle(String str) {
if(skip_titles_with_spaces && (null == str || str.contains("_") || str.contains(":"))) {
return true;
}
return false;
}
/** Sets value: whether to select random articles in order to create base set */
public void randomPages(boolean b) {
b_rand = b;
}
/** Gets value: whether to select random articles in order to create base set. */
public boolean randomPages() {
return b_rand;
}
/** Sets value: whether to add interwiki data to the node. */
public void setIWiki(boolean b) {
b_iwiki_title = b;
}
/** Gets value: whether to add interwiki data to the node. */
public boolean getIWiki() {
return b_iwiki_title;
}
/** Sets value: interwiki language.
* @return true if str is valid two letters word.
*/
public boolean setIWikiLang(String str) {
if(null == str || 2 != str.length()) {
System.out.println("Error: iwiki lang should contain 2 letters, skip: " + str);
return false;
}
iwiki_lang = StringUtil.UpperFirstLowerSecondLetter(str);
return true;
}
/** Gets value: whether to add interwiki data to the node. */
public String getIWikiLang() {
return iwiki_lang;
}
}