package com.uas.search.console.b2b.util;

/**
 * 索引相关的常量
 * 
 * @author sunyj
 * @since 2016年11月9日 上午11:23:25
 */
public class SearchConstants {

	/**
	 * 消息队列名，该队列存放kind、brand、component三个表的改动信息
	 */
	public static final String LUCENE_QUEUE_NAME = "lucene_queue_b2b";

	/**
	 * 消息队列对应的表
	 */
	public static final String LUCENE_QUEUE_TABLE_NAME = "lucene_queue_b2b_tb";

	/**
	 * B2B数据源标识
	 */
	public static final String PLATFORMB2B_DATASOURCE_QUALIFIER = "platformb2b";

	/**
	 * platformmanager数据源标识
	 */
	public static final String PLATFORMMANAGER_DATASOURCE_QUALIFIER = "platformmanager";

	/**
	 * 数据源标识
	 * 
	 * @author sunyj
	 * @since 2017年4月24日 上午9:22:00
	 */
	public enum DataSourceQualifier {

		/**
		 * B2B数据源
		 */
		PLATFORMB2B_DATASOURCE(PLATFORMB2B_DATASOURCE_QUALIFIER),

		/**
		 * platformmanager数据源
		 */
		PLATFORMMANAGER_DATASOURCE(PLATFORMMANAGER_DATASOURCE_QUALIFIER);

		/**
		 * 标识
		 */
		private String qualifier;

		private DataSourceQualifier(String qualifier) {
			this.qualifier = qualifier;
		}

		public String getQualifier() {
			return qualifier;
		}

		/**
		 * 获取数据源标识
		 * 
		 * @param qualifier
		 *            数据源标识
		 * @return 数据源标识
		 */
		public static DataSourceQualifier getDataSourceType(String qualifier) {
			if (qualifier == null) {
				return null;
			}
			DataSourceQualifier[] dataSourceQualifiers = DataSourceQualifier.values();
			for (DataSourceQualifier dataSourceQualifier : dataSourceQualifiers) {
				if (dataSourceQualifier.getQualifier().equalsIgnoreCase(qualifier)) {
					return dataSourceQualifier;
				}
			}
			return null;
		}

		/**
		 * 获取数据源标识
		 * 
		 * @param qualifier
		 *            数据源标识
		 * @return 数据源标识
		 * @throws IllegalArgumentException
		 *             失败，抛出异常
		 */
		public static DataSourceQualifier checkDataSourceType(String qualifier) throws IllegalArgumentException {
			DataSourceQualifier dataSourceQualifier = getDataSourceType(qualifier);
			if (dataSourceQualifier == null) {
				throw new IllegalArgumentException("数据源标识不合法：" + qualifier);
			}
			return dataSourceQualifier;
		}

	}

}
