Package com.tistory.devyongsik.crescent.admin.service

Source Code of com.tistory.devyongsik.crescent.admin.service.CollectionManageServiceImpl

package com.tistory.devyongsik.crescent.admin.service;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.tistory.devyongsik.crescent.admin.controller.CollectionManageMainCotroller;
import com.tistory.devyongsik.crescent.collection.entity.CrescentAnalyzerHolder;
import com.tistory.devyongsik.crescent.collection.entity.CrescentCollection;
import com.tistory.devyongsik.crescent.collection.entity.CrescentCollectionField;
import com.tistory.devyongsik.crescent.collection.entity.CrescentCollections;
import com.tistory.devyongsik.crescent.collection.entity.CrescentDefaultSearchField;
import com.tistory.devyongsik.crescent.collection.entity.CrescentSortField;
import com.tistory.devyongsik.crescent.config.CrescentCollectionHandler;

@Service("collectionManageService")
public class CollectionManageServiceImpl implements CollectionManageService {

  private Logger logger = LoggerFactory.getLogger(CollectionManageMainCotroller.class);

  @Autowired
  @Qualifier("crescentCollectionHandler")
  private CrescentCollectionHandler collectionHandler;
 
  @Override
  public CrescentCollection updateCollectionInfo(HttpServletRequest request) {
   
    CrescentCollections crescentCollections = collectionHandler.getCrescentCollections();
   
    String selectedCollectionName = request.getParameter("collectionName");

    logger.debug("selectedCollectionName : " + selectedCollectionName);

    String indexingModeAnalyzer = request.getParameter("indexingModeAnalyzer");
    String searchModeAnalyzer = request.getParameter("searchModeAnalyzer");
   
    String indexingModeAnalyzerType = request.getParameter("indexingModeAnalyzerType");
    String searchModeAnalyzerType = request.getParameter("searchModeAnalyzerType");
   
    String indexingModeAnalyzerConstArgs = request.getParameter("indexingModeAnalyzerConstArgs");
    String searchModeAnalyzerConstArgs = request.getParameter("searchModeAnalyzerConstArgs");
   
    CrescentCollection selectedCollection = crescentCollections.getCrescentCollection(selectedCollectionName);
   
    List<CrescentAnalyzerHolder> analyzerHolderList = new ArrayList<CrescentAnalyzerHolder>();
    CrescentAnalyzerHolder indexingModeAnalyzerHolder = new CrescentAnalyzerHolder();
    indexingModeAnalyzerHolder.setClassName(indexingModeAnalyzer);
    indexingModeAnalyzerHolder.setConstructorArgs(indexingModeAnalyzerConstArgs);
    indexingModeAnalyzerHolder.setType(indexingModeAnalyzerType);
    analyzerHolderList.add(indexingModeAnalyzerHolder);
   
    CrescentAnalyzerHolder searchModeAnalyzerHolder = new CrescentAnalyzerHolder();
    searchModeAnalyzerHolder.setClassName(searchModeAnalyzer);
    searchModeAnalyzerHolder.setConstructorArgs(searchModeAnalyzerConstArgs);
    searchModeAnalyzerHolder.setType(searchModeAnalyzerType);
    analyzerHolderList.add(searchModeAnalyzerHolder);
   
    selectedCollection.setAnalyzers(analyzerHolderList);
   
    selectedCollection.setSearcherReloadScheduleMin(StringUtils.defaultIfEmpty(request.getParameter("searcherReloadScheduleMin"), "10"));

    if(logger.isDebugEnabled()) {
      logger.debug("analyzer : {} ", request.getParameter("analyzer"));
      logger.debug("collection Name : {} ", request.getParameter("collectionName"));
      logger.debug("indexing Directory : {} ", request.getParameter("indexingDirectory"));
      logger.debug("searcher reload schedule min : {} ", request.getParameter("searcherReloadScheduleMin"));
      logger.debug("indexingModeAnalyzer : {} ", request.getParameter("indexingModeAnalyzer"));
      logger.debug("searchModeAnalyzer : {} ", request.getParameter("searchModeAnalyzer"));
      logger.debug("indexingModeAnalyzerType : {} ", request.getParameter("indexingModeAnalyzerType"));
      logger.debug("searchModeAnalyzerType : {} ", request.getParameter("searchModeAnalyzerType"));
      logger.debug("indexingModeAnalyzerConstArgs : {} ", request.getParameter("indexingModeAnalyzerConstArgs"));
      logger.debug("searchModeAnalyzerConstArgs : {} ", request.getParameter("searchModeAnalyzerConstArgs"));
    }

    List<CrescentCollectionField> crescentCollectionFieldList = selectedCollection.getFields();

    //추가되는 필드명을 모은다.
    @SuppressWarnings("unchecked")
    Enumeration<String> enumeration = request.getParameterNames();
    List<String> addFieldNameList = new ArrayList<String>();
    while(enumeration.hasMoreElements()) {
      String paramValue = enumeration.nextElement();
      if(paramValue.endsWith("fieldName")) {
        addFieldNameList.add(paramValue.substring(0, paramValue.lastIndexOf("-")));
      }
    }

    logger.debug("add field name list : {}", addFieldNameList);

    for(String fieldName :addFieldNameList) {
      CrescentCollectionField crescentField = new CrescentCollectionField();
      crescentField.setName(fieldName);
     
      if(!crescentCollectionFieldList.contains(crescentField)) {
        crescentCollectionFieldList.add(crescentField);
      }
    }
       
    for(CrescentCollectionField crescentField : crescentCollectionFieldList) {

      crescentField.setAnalyze("on".equals(request.getParameter(crescentField.getName()+"-analyze")) ? true : false);
      crescentField.setIndex("on".equals(request.getParameter(crescentField.getName()+"-index")) ? true : false);
      crescentField.setMust("on".equals(request.getParameter(crescentField.getName()+"-must")) ? true : false);
      crescentField.setStore("on".equals(request.getParameter(crescentField.getName()+"-store")) ? true : false);
      crescentField.setTermoffset("on".equals(request.getParameter(crescentField.getName()+"-termoffset")) ? true : false);
      crescentField.setTermposition("on".equals(request.getParameter(crescentField.getName()+"-termposition")) ? true : false);
      crescentField.setTermvector("on".equals(request.getParameter(crescentField.getName()+"-termvector")) ? true : false);
      crescentField.setRemoveHtmlTag("on".equals(request.getParameter(crescentField.getName()+"-removeHtmlTag")) ? true : false);

      crescentField.setBoost(Float.parseFloat(StringUtils.defaultString(request.getParameter(crescentField.getName()+"-boost"), "0")));
      crescentField.setType(StringUtils.defaultString(request.getParameter(crescentField.getName()+"-type"), "STRING"));


      //sort field 처리
      if("on".equals(request.getParameter(crescentField.getName()+"-sortField"))) {
        CrescentSortField sortField = new CrescentSortField();
        sortField.setSource(crescentField.getName());
        sortField.setDest(crescentField.getName()+"_sort");

        if(selectedCollection.getSortFields().contains(sortField)) {
          //Nothing
        } else {
          selectedCollection.getSortFields().add(sortField);
        }
      }

      //default search field 처리
      if("on".equals(request.getParameter(crescentField.getName()+"-defaultSearchField"))) {
        CrescentDefaultSearchField defaultSearchField = new CrescentDefaultSearchField();
        defaultSearchField.setName(crescentField.getName());

        if(selectedCollection.getDefaultSearchFields().contains(defaultSearchField)) {
          //Nothing
        } else {
          selectedCollection.getDefaultSearchFields().add(defaultSearchField);
        }
      }

      if(logger.isDebugEnabled()) {
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "sortField : " + request.getParameter(crescentField.getName()+"-sortField"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "defaultSearchField : "+ request.getParameter(crescentField.getName()+"-defaultSearchField"));
      }

      if(logger.isDebugEnabled()) {
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "analyze : " + request.getParameter(crescentField.getName()+"-analyze"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "index : " + request.getParameter(crescentField.getName()+"-index"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "must : " + request.getParameter(crescentField.getName()+"-must"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "store : " + request.getParameter(crescentField.getName()+"-store"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "termoffset : " + request.getParameter(crescentField.getName()+"-termoffset"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "termposition : " + request.getParameter(crescentField.getName()+"-termposition"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "termvector : " + request.getParameter(crescentField.getName()+"-termvector"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "boost : " + request.getParameter(crescentField.getName()+"-boost"));
        logger.debug("crescentField Name {} = {}", crescentField.getName(), "type : " + request.getParameter(crescentField.getName()+"-type"));
      }
    }
     
    collectionHandler.writeToXML();
    collectionHandler.reloadCollectionsXML();
   
    crescentCollections = collectionHandler.getCrescentCollections();
    selectedCollection = crescentCollections.getCrescentCollection(selectedCollectionName);
   
    return selectedCollection;
  }
 
 
  @Override
  public CrescentCollection addCollectionInfo(HttpServletRequest request) {
   
//    CrescentCollectionHandler collectionHandler
//      = SpringApplicationContext.getBean("crescentCollectionHandler", CrescentCollectionHandler.class);
 
   
    String selectedCollectionName = request.getParameter("collectionName");

    logger.debug("selectedCollectionName : " + selectedCollectionName);
   
    CrescentCollection newCollection = new CrescentCollection();
    newCollection.setName(selectedCollectionName);
    newCollection.setIndexingDirectory(request.getParameter("indexingDirectory"));
   
    newCollection.setSearcherReloadScheduleMin(StringUtils.defaultIfEmpty(request.getParameter("searcherReloadScheduleMin"), "10"));

    String indexingModeAnalyzer = request.getParameter("indexingModeAnalyzer");
    String searchModeAnalyzer = request.getParameter("searchModeAnalyzer");
   
    String indexingModeAnalyzerType = request.getParameter("indexingModeAnalyzerType");
    String searchModelAnalyzerType = request.getParameter("searchModeAnalyzerType");
   
    String indexingModeAnalyzerConstArgs = request.getParameter("indexingModeAnalyzerConstArgs");
    String searchModeAnalyzerConstArgs = request.getParameter("searchModeAnalyzerConstArgs");
   
    List<CrescentAnalyzerHolder> analyzerHolderList = new ArrayList<CrescentAnalyzerHolder>();
    CrescentAnalyzerHolder indexingModeAnalyzerHolder = new CrescentAnalyzerHolder();
    indexingModeAnalyzerHolder.setClassName(indexingModeAnalyzer);
    indexingModeAnalyzerHolder.setConstructorArgs(indexingModeAnalyzerConstArgs);
    indexingModeAnalyzerHolder.setType(indexingModeAnalyzerType);
    analyzerHolderList.add(indexingModeAnalyzerHolder);
   
    CrescentAnalyzerHolder searchModeAnalyzerHolder = new CrescentAnalyzerHolder();
    searchModeAnalyzerHolder.setClassName(searchModeAnalyzer);
    searchModeAnalyzerHolder.setConstructorArgs(searchModeAnalyzerConstArgs);
    searchModeAnalyzerHolder.setType(searchModelAnalyzerType);
    analyzerHolderList.add(searchModeAnalyzerHolder);
   
    if(logger.isDebugEnabled()) {
      logger.debug("analyzer : {} ", request.getParameter("analyzer"));
      logger.debug("collection Name : {} ", request.getParameter("collectionName"));
      logger.debug("indexing Directory : {} ", request.getParameter("indexingDirectory"));
      logger.debug("searcher reload schedule min : {} ", request.getParameter("searcherReloadScheduleMin"));
      logger.debug("indexingModeAnalyzer : {} ", request.getParameter("indexingModeAnalyzer"));
      logger.debug("searchModeAnalyzer : {} ", request.getParameter("searchModeAnalyzer"));
      logger.debug("indexingModeAnalyzerType : {} ", request.getParameter("indexingModeAnalyzerType"));
      logger.debug("searchModelAnalyzerType : {} ", request.getParameter("searchModelAnalyzerType"));
      logger.debug("indexingModeAnalyzerConstArgs : {} ", request.getParameter("indexingModeAnalyzerConstArgs"));
      logger.debug("searchModeAnalyzerConstArgs : {} ", request.getParameter("searchModeAnalyzerConstArgs"));
    }

    //필드들을 걸러낸다.
    @SuppressWarnings("unchecked")
    Enumeration<String> enumeration = (Enumeration<String>)request.getParameterNames();
    List<String> fieldNameList = new ArrayList<String>();
    while(enumeration.hasMoreElements()) {
      String paramName = enumeration.nextElement();

      if(paramName.endsWith("-fieldName")) { //필수값
        String fieldName = paramName.split("-")[0];
        fieldNameList.add(fieldName);
      }
    }
   
    List<CrescentCollectionField> newCollectionFieldList = new ArrayList<CrescentCollectionField>();
    List<CrescentSortField> sortFieldList = new ArrayList<CrescentSortField>();
    List<CrescentDefaultSearchField> defaultSearchFieldList = new ArrayList<CrescentDefaultSearchField>();
   
    for(String fieldName : fieldNameList) {
      CrescentCollectionField newCollectionField = new CrescentCollectionField();
     
      newCollectionField.setName(fieldName);
      newCollectionField.setAnalyze("on".equals(request.getParameter(fieldName+"-analyze")) ? true : false);
      newCollectionField.setIndex("on".equals(request.getParameter(fieldName+"-index")) ? true : false);
      newCollectionField.setMust("on".equals(request.getParameter(fieldName+"-must")) ? true : false);
      newCollectionField.setStore("on".equals(request.getParameter(fieldName+"-store")) ? true : false);
      newCollectionField.setTermoffset("on".equals(request.getParameter(fieldName+"-termoffset")) ? true : false);
      newCollectionField.setTermposition("on".equals(request.getParameter(fieldName+"-termposition")) ? true : false);
      newCollectionField.setTermvector("on".equals(request.getParameter(fieldName+"-termvector")) ? true : false);

      //System.out.println("DDDDDDDDDDDDDD : " + request.getParameter(fieldName+"-boost"));
     
      newCollectionField.setBoost(Float.parseFloat(StringUtils.defaultIfEmpty(request.getParameter(fieldName+"-boost"), "0")));
      newCollectionField.setType(StringUtils.defaultString(request.getParameter(fieldName+"-type"), "STRING"));

      newCollectionFieldList.add(newCollectionField);
     
      //sort field 처리     
      if("on".equals(request.getParameter(fieldName+"-sortField"))) {
        CrescentSortField sortField = new CrescentSortField();
        sortField.setSource(fieldName);
        sortField.setDest(fieldName+"_sort");

        sortFieldList.add(sortField);
      }
     
      //default search field 처리
      if("on".equals(request.getParameter(fieldName+"-defaultSearchField"))) {
        CrescentDefaultSearchField defaultSearchField = new CrescentDefaultSearchField();
        defaultSearchField.setName(fieldName);
        defaultSearchFieldList.add(defaultSearchField);
      }
     

      if(logger.isDebugEnabled()) {
        logger.debug("crescentField Name {} = {}", fieldName, "sortField : " + request.getParameter(fieldName+"-sortField"));
        logger.debug("crescentField Name {} = {}", fieldName, "defaultSearchField : "+ request.getParameter(fieldName+"-defaultSearchField"));
      }

      if(logger.isDebugEnabled()) {
        logger.debug("crescentField Name {} = {}", fieldName, "analyze : " + request.getParameter(fieldName+"-analyze"));
        logger.debug("crescentField Name {} = {}", fieldName, "index : " + request.getParameter(fieldName+"-index"));
        logger.debug("crescentField Name {} = {}", fieldName, "must : " + request.getParameter(fieldName+"-must"));
        logger.debug("crescentField Name {} = {}", fieldName, "store : " + request.getParameter(fieldName+"-store"));
        logger.debug("crescentField Name {} = {}", fieldName, "termoffset : " + request.getParameter(fieldName+"-termoffset"));
        logger.debug("crescentField Name {} = {}", fieldName, "termposition : " + request.getParameter(fieldName+"-termposition"));
        logger.debug("crescentField Name {} = {}", fieldName, "termvector : " + request.getParameter(fieldName+"-termvector"));
        logger.debug("crescentField Name {} = {}", fieldName, "boost : " + request.getParameter(fieldName+"-boost"));
        logger.debug("crescentField Name {} = {}", fieldName, "type : " + request.getParameter(fieldName+"-type"));
      }
    }
   
    newCollection.setSortFields(sortFieldList);
    newCollection.setDefaultSearchFields(defaultSearchFieldList);
    newCollection.setFields(newCollectionFieldList);
    newCollection.setAnalyzers(analyzerHolderList);
   
    collectionHandler.getCrescentCollections().getCrescentCollections().add(newCollection);
    collectionHandler.writeToXML();
    collectionHandler.reloadCollectionsXML();
   
    return newCollection;
  }
 
  @Override
  public void deleteCollectionInfo(String collectionName) {

    CrescentCollections collections = collectionHandler.getCrescentCollections();
    List<CrescentCollection> collectionList = collections.getCrescentCollections();
   
    int targetIndex = -1;
   
    for(int index = 0; index < collectionList.size(); index++) {
      if(collectionName.equals(collectionList.get(index).getName())) {
        targetIndex = index;
        break;
      }
    }
   
    if(targetIndex > 0) {
      collectionList.remove(targetIndex);
    } else {
      logger.error("삭제하려는 컬렉션이 존재하지 않습니다. [{}]", collectionName);
      throw new IllegalArgumentException("삭제하려는 컬렉션이 존재하지 않습니다.");
    }
   
    collectionHandler.writeToXML();
    collectionHandler.reloadCollectionsXML();
  }
}
TOP

Related Classes of com.tistory.devyongsik.crescent.admin.service.CollectionManageServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.