/*
* Copyright 2013 Eediom Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.araqne.logdb.client;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 인덱스 설정을 표현합니다.
*
* @author xeraph@eediom.com
*
*/
public class IndexInfo {
private String tableName;
private String indexName;
private String tokenizerName;
private Map<String, String> tokenizerConfigs = new HashMap<String, String>();
private boolean useBloomFilter;
private int bloomFilterCapacity0 = 1250000;
private double bloomFilterErrorRate0 = 0.001f;
private int bloomFilterCapacity1 = 10000000;
private double bloomFilterErrorRate1 = 0.02f;
private Date minIndexDay;
private String basePath;
private boolean buildPastIndex;
/**
* 테이블 이름을 반환합니다.
*
* @return 테이블 이름
*/
public String getTableName() {
return tableName;
}
/**
* 테이블 이름을 설정합니다.
*
* @param tableName
* 테이블 이름
*/
public void setTableName(String tableName) {
this.tableName = tableName;
}
/**
* 인덱스 이름을 반환합니다.
*
* @return 인덱스 이름
*/
public String getIndexName() {
return indexName;
}
/**
* 인덱스 이름을 설정합니다.
*
* @param indexName
* 인덱스 이름
*/
public void setIndexName(String indexName) {
this.indexName = indexName;
}
/**
* 인덱스 토크나이저 이름을 반환합니다.
*
* @return 인덱스 토크나이저 이름
*/
public String getTokenizerName() {
return tokenizerName;
}
/**
* 인덱스 토크나이저 이름을 설정합니다.
*
* @param tokenizerName
* 인덱스 토크나이저 이름
*/
public void setTokenizerName(String tokenizerName) {
this.tokenizerName = tokenizerName;
}
/**
* 인덱스 토크나이저 설정 목록을 반환합니다.
*
* @return 인덱스 토크나이저 설정 목록
*/
public Map<String, String> getTokenizerConfigs() {
return tokenizerConfigs;
}
/**
* 인덱스 토크나이저 설정 목록을 설정합니다.
*
* @param tokenizerConfigs
* 인덱스 토크나이저 설정 목록
*/
public void setTokenizerConfigs(Map<String, String> tokenizerConfigs) {
this.tokenizerConfigs = tokenizerConfigs;
}
/**
* 블룸필터 생성 여부를 반환합니다.
*
* @return 블룸필터 생성 여부
*/
public boolean isUseBloomFilter() {
return useBloomFilter;
}
/**
* 블룸필터 생성 여부를 설정합니다.
*
* @param useBloomFilter
* 블룸필터 생성 여부
*/
public void setUseBloomFilter(boolean useBloomFilter) {
this.useBloomFilter = useBloomFilter;
}
/**
* 레벨 0 블룸필터의 토큰 수용 갯수를 반환합니다.
*
* @return 레벨 0 블룸필터의 토큰 수용 갯수
*/
public int getBloomFilterCapacity0() {
return bloomFilterCapacity0;
}
/**
* 레벨 0 블룸필터의 토큰 수용 갯수를 설정합니다.
*
* @param bloomFilterCapacity0
* 레벨 0 블룸필터의 토큰 수용 갯수
*/
public void setBloomFilterCapacity0(int bloomFilterCapacity0) {
this.bloomFilterCapacity0 = bloomFilterCapacity0;
}
/**
* 레벨 0 블룸필터의 오류율을 반환합니다.
*
* @return 레벨 0 블룸필터의 오류율 (0 < x < 1)
*/
public double getBloomFilterErrorRate0() {
return bloomFilterErrorRate0;
}
/**
* 레벨 0 블룸필터의 오류율을 반환합니다.
*
* @param bloomFilterErrorRate0
* 레벨 0 블룸필터의 오류율 (0 < x < 1)
*/
public void setBloomFilterErrorRate0(double bloomFilterErrorRate0) {
this.bloomFilterErrorRate0 = bloomFilterErrorRate0;
}
/**
* 레벨 1 블룸필터의 토큰 수용 갯수를 반환합니다.
*
* @return 레벨 1 블룸필터의 토큰 수용 갯수
*/
public int getBloomFilterCapacity1() {
return bloomFilterCapacity1;
}
/**
* 레벨 1 블룸필터의 토큰 수용 갯수를 설정합니다.
*
* @param bloomFilterCapacity1
* 레벨 1 블룸필터의 토큰 수용 갯수
*/
public void setBloomFilterCapacity1(int bloomFilterCapacity1) {
this.bloomFilterCapacity1 = bloomFilterCapacity1;
}
/**
* 레벨 1 블룸필터의 오류율을 반환합니다.
*
* @return 레벨 1 블룸필터의 오류율 (0 < x < 1)
*/
public double getBloomFilterErrorRate1() {
return bloomFilterErrorRate1;
}
/**
* 레벨 1 블룸필터의 오류율을 반환합니다.
*
* @param bloomFilterErrorRate1
* 레벨 1 블룸필터의 오류율 (0 < x < 1)
*/
public void setBloomFilterErrorRate1(double bloomFilterErrorRate1) {
this.bloomFilterErrorRate1 = bloomFilterErrorRate1;
}
/**
* 인덱싱 대상 구간의 시작일자를 반환합니다.
*
* @return 인덱스 구간의 시작일자
*/
public Date getMinIndexDay() {
return minIndexDay;
}
/**
* 인덱싱 대상 구간의 시작일자를 설정합니다.
*
* @param minIndexDay
* 인덱스 구간의 시작일자
*/
public void setMinIndexDay(Date minIndexDay) {
this.minIndexDay = minIndexDay;
}
/**
* 인덱스 파티션 경로를 반환합니다.
*
* @return 인덱스 파티션 경로
*/
public String getBasePath() {
return basePath;
}
/**
* 인덱스 파티션 경로를 설정합니다.
*
* @param basePath
* 인덱스 파티션 경로
*/
public void setBasePath(String basePath) {
this.basePath = basePath;
}
/**
* 기존 데이터에 대한 인덱스 생성 여부를 반환합니다.
*
* @return 기존 데이터에 대한 인덱스 생성 여부
*/
public boolean isBuildPastIndex() {
return buildPastIndex;
}
/**
* 기존 데이터에 대한 인덱스 생성 여부를 설정합니다.
*
* @param buildPastIndex
* 기존 데이터에 대한 인덱스 생성 여부
*/
public void setBuildPastIndex(boolean buildPastIndex) {
this.buildPastIndex = buildPastIndex;
}
@Override
public String toString() {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
String s = null;
if (minIndexDay != null)
s = f.format(minIndexDay);
String bloomFilterConfig = "bloomfilter=" + useBloomFilter;
if (useBloomFilter) {
bloomFilterConfig += "[lv0: " + bloomFilterCapacity0 + ", " + bloomFilterErrorRate0 + ", ";
bloomFilterConfig += "lv1: " + bloomFilterCapacity1 + ", " + bloomFilterErrorRate1 + "]";
}
return "table=" + tableName + ", index=" + indexName + "," + bloomFilterConfig + ", tokenizer=" + tokenizerName
+ ", tokenizer configs=" + tokenizerConfigs + ", base path=" + basePath + ", min index day=" + s
+ ", build past index=" + buildPastIndex;
}
}