/**
* @version $Id: TwitterQuerySettings.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2012/09/28 15:36:53
* @author yukihiro-kinjo
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.webentry;
import com.tida_okinawa.corona.webentry.util.CreateClaimTableValidator;
/**
* Twitter検索クエリー設定オブジェクト
*
* @author yukihiro-kinjo
*
*/
public class TwitterQuerySettings {
/** 検索で取得できる最大件数(本来は件数制限なんて意味がないんだけどね) */
public static final int TWITTER_SEARCH_MAX = 15000;
private String dataName;
private boolean useName;
private int searchMax;
private String productName;
private boolean japaneseOnly;
private boolean useDateTime;
private boolean useScreenName;
private String searchWord;
private boolean isFilterRt;
private boolean isFilterReply;
private boolean isUseRtCount;
private boolean isUseFollowers;
private boolean isUseFollows;
private boolean isUseProfile;
private boolean isTcoExpand;
private String validateError;
/**
* Twitter検索クエリ設定オブジェクトをインスタンス化します。<br />
*
* 引数で設定する値以外の設定値はデフォルト値が適用されます。
* 変更が必要な値は適切なsetterメソッドで設定してください。
* また、設定値が有効な状態であるかは{@link #isValidSettings()} メソッドで確認可能です。
*
* @param dataName
* 問い合わせデータ名
* @param productName
* ターゲット名
* @param searchWord
* 検索クエリー
*/
public TwitterQuerySettings(String dataName, String productName, String searchWord) {
this.dataName = dataName;
this.useName = true;
this.searchMax = TWITTER_SEARCH_MAX;
this.productName = productName;
this.japaneseOnly = false;
this.useDateTime = true;
this.useScreenName = true;
this.searchWord = searchWord;
this.isFilterRt = false;
this.isFilterReply = false;
this.isUseRtCount = false;
this.isUseFollowers = false;
this.isUseFollows = false;
this.isUseProfile = false;
this.isTcoExpand = false;
this.validateError = ""; //$NON-NLS-1$
}
/**
* 設定値が有効な状態であるかを取得。<br />
* 詳細なエラー内容は {@link #getValidateErrorMessage()} メソッドで文字列表現を取得できます。
*
* @return 設定内容に問題が無ければtrue
*/
public boolean isValidSettings() {
/* nullチェック */
if (dataName == null) {
validateError = Messages.TwitterQuerySettings_DataNameIsNull;
return false;
}
if (productName == null) {
validateError = Messages.TwitterQuerySettings_ProductNameIsNull;
return false;
}
if (searchWord == null) {
validateError = Messages.TwitterQuerySettings_QueryIsNull;
return false;
}
/* Table名チェック */
/* 重複 */
CreateClaimTableValidator tableValidator = new CreateClaimTableValidator();
if (tableValidator.exists(dataName)) {
validateError = Messages.TwitterQuerySettings_DataBaseNameExists;
return false;
}
/* 正しい形式の名前か */
String warning = tableValidator.isValid(dataName);
if (dataName.length() == 0 || (warning != null)) {
/* textDataNameに入力なし(length==0) */
validateError = warning;
return false;
}
/* ターゲット名チェック */
if (productName.isEmpty()) {
validateError = Messages.TwitterQuerySettings_PleaseInputProductName;
return false;
}
if (productName.length() > 128) {
validateError = Messages.TwitterQuerySettings_ProductNameLengthError;
return false;
}
if (productName.indexOf(",") != -1) { //$NON-NLS-1$
validateError = Messages.TwitterQuerySettings_ProductNameCharacterError;
return false;
}
/* 検索ワードチェック */
if (searchWord.isEmpty()) {
validateError = Messages.TwitterQuerySettings_PleaseInputQuery;
return false;
}
if (searchWord.length() > 256) {
validateError = Messages.TwitterQuerySettings_QueryLengthError;
return false;
}
/* 取得件数チェック */
if ((searchMax < 1) || (searchMax > TWITTER_SEARCH_MAX)) {
validateError = Messages.TwitterQuerySettings_GetCountLengthError;
return false;
}
validateError = ""; //$NON-NLS-1$
return true;
}
/**
* 設定値のエラー内容を文字列表現として取得します。<br />
* このメソッドで適切な値を取得する為には、
* 先に {@link #isValidSettings()} メソッドを呼び出す必要が有ります。
*
* @return 設定値のエラー内容文字列表現。エラーが見つからなかった場合、空文字を返却します。
*/
public String getValidateErrorMessage() {
return this.validateError;
}
/**
* 問い合わせデータ名を取得
*
* @return 問い合わせデータ名
*/
public String getDataName() {
return dataName;
}
/**
* 問い合わせデータ名を設定
*
* @param dataName
* 問い合わせデータ名
*/
public void setDataName(String dataName) {
this.dataName = dataName;
}
/**
* Name(ユーザーID)を利用するかを取得
*
* @return ユーザーIDを利用する場合true
*/
public boolean isUseName() {
return useName;
}
/**
* Name(ユーザーID)を利用するかを設定
*
* @param useName
* ユーザーIDを利用する場合true
*/
public void setUseName(boolean useName) {
this.useName = useName;
}
/**
* 最大取得件数を取得
*
* @return 最大取得件数
*/
public int getSearchMax() {
return searchMax;
}
/**
* 最大取得件数を設定
*
* @param getCount
* 最大取得件数
*/
public void setSearchMax(int getCount) {
if ((getCount < 1) || (getCount > TWITTER_SEARCH_MAX)) {
validateError = Messages.TwitterQuerySettings_GetCountLengthError;
return;
}
this.searchMax = getCount;
}
/**
* ターゲット名を取得
*
* @return ターゲット名
*/
public String getProductName() {
return productName;
}
/**
* ターゲット名を設定
*
* @param productName
* ターゲット名
*/
public void setProductName(String productName) {
this.productName = productName;
}
/**
* 日本語の投稿のみを取得するかを取得
*
* @return 日本語の投稿のみを取得する場合true
*/
public boolean isJapaneseOnly() {
return japaneseOnly;
}
/**
* 日本語の投稿のみを取得するかを設定
*
* @param japaneseOnly
* 日本語の投稿のみを取得する場合true
*/
public void setJapaneseOnly(boolean japaneseOnly) {
this.japaneseOnly = japaneseOnly;
}
/**
* 投稿日時を利用するかを取得
*
* @return 投稿日時を利用する場合true
*/
public boolean isUseDateTime() {
return useDateTime;
}
/**
* 投稿日時を利用するかを設定
*
* @param useDateTime
* 投稿日時を利用する場合true
*/
public void setUseDateTime(boolean useDateTime) {
this.useDateTime = useDateTime;
}
/**
* ScreenName(ユーザー表示名)を利用するかを取得
*
* @return ユーザー表示名を利用する場合true
*/
public boolean isUseScreenName() {
return useScreenName;
}
/**
* ScreenName(ユーザー表示名)を利用するかを設定
*
* @param useScreenName
* ユーザー表示名を利用する場合true
*/
public void setUseScreenName(boolean useScreenName) {
this.useScreenName = useScreenName;
}
/**
* 検索クエリーを取得
*
* @return 検索クエリー
*/
public String getSearchWord() {
return searchWord;
}
/**
* 検索クエリーを設定
*
* @param searchWord
* 検索クエリー
*/
public void setSearchWord(String searchWord) {
this.searchWord = searchWord;
}
/**
* リツイートフィルタリング設定を取得
*
* @return the isFilterRt 有効の場合true
*/
public boolean isFilterRt() {
return isFilterRt;
}
/**
* リツイートフィルタリングを設定
*
* @param isFilterRt
* 有効にする場合true
*/
public void setFilterRt(boolean isFilterRt) {
this.isFilterRt = isFilterRt;
}
/**
* リプライフィルタリング設定を取得
*
* @return 有効の場合true
*/
public boolean isFilterReply() {
return isFilterReply;
}
/**
* リプライフィルタリングを設定
*
* @param isFilterReply
* 有効にする場合true
*/
public void setFilterReply(boolean isFilterReply) {
this.isFilterReply = isFilterReply;
}
/**
* リツイート数を利用するか
*
* @return 利用する場合true
*/
public boolean isUseRtCount() {
return isUseRtCount;
}
/**
* リツイート数を利用するか設定
*
* @param isUseRtCount
* 利用する場合true
*/
public void setUseRtCount(boolean isUseRtCount) {
this.isUseRtCount = isUseRtCount;
}
/**
* フォロワー数を利用するか
*
* @return 利用する場合true
*/
public boolean isUseFollowers() {
return isUseFollowers;
}
/**
* フォロワー数を利用するか設定
*
* @param isUseFollowers
* 利用する場合true
*/
public void setUseFollowers(boolean isUseFollowers) {
this.isUseFollowers = isUseFollowers;
}
/**
* フォロー数を利用するか
*
* @return 利用する場合true
*/
public boolean isUseFollows() {
return isUseFollows;
}
/**
* フォロー数を利用するか設定
*
* @param isUseFollows
* 利用する場合true
*/
public void setUseFollows(boolean isUseFollows) {
this.isUseFollows = isUseFollows;
}
/**
* プロフィールを利用するか
*
* @return 利用する場合true
*/
public boolean isUseProfile() {
return isUseProfile;
}
/**
* プロフィールを利用するか設定
*
* @param isUseProfile
* 利用する場合true
*/
public void setUseProfile(boolean isUseProfile) {
this.isUseProfile = isUseProfile;
}
/**
* t.co URL短縮を展開するか
*
* @return 有効にする場合true
*/
public boolean isTcoExpand() {
return isTcoExpand;
}
/**
* t.co URL短縮を展開するか設定
*
* @param isTcoExpand
* 有効にする場合true
*/
public void setTcoExpand(boolean isTcoExpand) {
this.isTcoExpand = isTcoExpand;
}
}