//package org.fastcatsearch.util;
//
//import java.io.File;
//
//import org.fastcatsearch.env.Path;
//import org.fastcatsearch.ir.common.SettingException;
//import org.fastcatsearch.ir.config.ClusterConfig;
//import org.fastcatsearch.ir.config.CollectionConfig;
//import org.fastcatsearch.ir.config.CollectionContext;
//import org.fastcatsearch.ir.config.CollectionIndexStatus;
//import org.fastcatsearch.ir.config.DataSourceConfig;
//import org.fastcatsearch.ir.config.JAXBConfigs;
//import org.fastcatsearch.ir.config.ShardContext;
//import org.fastcatsearch.ir.config.ShardIndexStatus;
//import org.fastcatsearch.ir.config.CollectionsConfig.Collection;
//import org.fastcatsearch.ir.settings.Schema;
//import org.fastcatsearch.ir.settings.SchemaSetting;
//import org.fastcatsearch.settings.SettingFileNames;
//
//public class ShardContextUtil {
//
// public static void saveAfterIndexing(ShardContext shardContext) {
// // TODO Auto-generated method stub
//
// }
//
// public static ShardContext load(IndexFilePaths indexFilePaths, Integer dataSequence) throws SettingException {
// try {
// Path collectionDir = new Path(indexFilePaths.file());
// File schemaFile = collectionDir.file(SettingFileNames.schema);
// SchemaSetting schemaSetting = JAXBConfigs.readConfig(schemaFile, SchemaSetting.class);
// File workSchemaFile = collectionDir.file(SettingFileNames.workSchema);
// SchemaSetting workSchemaSetting = JAXBConfigs.readConfig(workSchemaFile, SchemaSetting.class);
// CollectionConfig collectionConfig = JAXBConfigs.readConfig(collectionDir.file(SettingFileNames.collectionConfig), CollectionConfig.class);
// ClusterConfig clusterConfig = JAXBConfigs.readConfig(collectionDir.file(SettingFileNames.clusterConfig), ClusterConfig.class);
// File dataSourceConfigFile = collectionDir.file(SettingFileNames.datasourceConfig);
// DataSourceConfig dataSourceConfig = null;
// if (dataSourceConfigFile.exists()) {
// dataSourceConfig = JAXBConfigs.readConfig(dataSourceConfigFile, DataSourceConfig.class);
// } else {
// dataSourceConfig = new DataSourceConfig();
// }
//
// File collectionStatusFile = collectionDir.file(SettingFileNames.indexStatus);
// CollectionIndexStatus collectionStatus = JAXBConfigs.readConfig(collectionStatusFile, CollectionIndexStatus.class);
//
//// if (dataSequence == null) {
//// // dataSequence가 없으므로 indexedSequence로 선택하여 로딩한다.
//// int indexedSequence = collectionStatus.getSequence();
//// dataSequence = indexedSequence;
//// }
//
// // dataSequence가 null아 아니면 원하는 sequence의 정보를 읽어온다.
// File dataDir = indexFilePaths.dataFile();
// if (!dataDir.exists()) {
// dataDir.mkdirs();
// }
//// File infoFile = new File(dataDir, SettingFileNames.dataInfo);
//// DataInfo dataInfo = null;
//// if (infoFile.exists()) {
//// dataInfo = JAXBConfigs.readConfig(infoFile, DataInfo.class);
//// } else {
//// logger.info("File not found : {}", infoFile);
//// dataInfo = new DataInfo();
//// JAXBConfigs.writeConfig(infoFile, dataInfo, DataInfo.class);
//// }
////
//// logger.debug("dataInfo.getSegmentInfoList() >> {}", dataInfo.getSegmentInfoList().size());
// if (!collectionStatus.isEmpty()) {
// // SegmentInfoList가 없다면 data디렉토리를 지웠거나 색인이 안된상태이므로, 확인차 status초기화해준다.
// collectionStatus.clear();
// JAXBConfigs.writeConfig(collectionStatusFile, collectionStatus, ShardIndexStatus.class);
// }
//
// Schema schema = new Schema(schemaSetting);
// Schema workSchema = null;
// if (workSchemaSetting != null) {
// workSchema = new Schema(workSchemaSetting);
// }
// ShardContext shardContext = new ShardContext(indexFilePaths.getId(), indexFilePaths);
// shardContext.init(schema, collectionConfig, clusterConfig, dataSourceConfig, collectionStatus);
// return collectionContext;
// } catch (Exception e) {
// throw new SettingException("CollectionContext 로드중 에러발생", e);
// }
// }
//
//}