帆软报表设计器源代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

91 lines
3.9 KiB

package com.fr.design.mainframe.alphafine.search.manager.impl;
import com.fr.design.DesignerEnvManager;
import com.fr.design.mainframe.alphafine.AlphaFineCloudConstants;
import com.fr.design.mainframe.alphafine.AlphaFineConstants;
import com.fr.design.mainframe.alphafine.AlphaFineHelper;
import com.fr.design.mainframe.alphafine.CellType;
import com.fr.design.mainframe.alphafine.cell.model.MoreModel;
import com.fr.design.mainframe.alphafine.cell.model.RobotModel;
import com.fr.design.mainframe.alphafine.model.SearchResult;
import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider;
import com.fr.general.http.HttpToolbox;
import com.fr.json.JSONObject;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.ArrayUtils;
import com.fr.third.org.apache.commons.codec.digest.DigestUtils;
/**
* Created by alex.sung on 2018/8/3.
*/
public class SimilarSearchManager implements AlphaFineSearchProvider {
private SearchResult lessModelList;
private SearchResult moreModelList = new SearchResult();
private SimilarSearchManager() {
}
public static SimilarSearchManager getInstance() {
return Holder.INSTANCE;
}
private static class Holder {
private static final SimilarSearchManager INSTANCE = new SimilarSearchManager();
}
@Override
public SearchResult getLessSearchResult(String[] searchText) {
lessModelList = new SearchResult();
if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isNeedIntelligentCustomerService()) {
if (ArrayUtils.isEmpty(searchText)) {
return new SearchResult();
}
SearchResult noConnectList = AlphaFineHelper.getNoConnectList(Holder.INSTANCE);
if (noConnectList != null) {
return noConnectList;
}
SearchResult allModelList = new SearchResult();
for (int j = 0; j < searchText.length; j++) {
String token = DigestUtils.md5Hex(AlphaFineConstants.ALPHA_ROBOT_SEARCH_TOKEN + searchText[j]);
String url = AlphaFineCloudConstants.SIMILAR_SEARCH_URL_PREFIX + "msg=" + searchText[j] + "&token=" + token;
try {
String result = HttpToolbox.get(url);
AlphaFineHelper.checkCancel();
allModelList = AlphaFineHelper.getModelListFromJSONArray(result, "title");
} catch (Exception e) {
FineLoggerFactory.getLogger().debug("similar search error.search str {}", searchText[j]);
}
}
moreModelList.clear();
if (allModelList.isEmpty()) {
return lessModelList;
} else if (allModelList.size() < AlphaFineConstants.SHOW_SIZE + 1) {
lessModelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Relation_Item")));
lessModelList.addAll(allModelList);
} else {
lessModelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Relation_Item"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_ShowAll"), true, CellType.ROBOT));
lessModelList.addAll(allModelList.subList(0, AlphaFineConstants.SHOW_SIZE));
moreModelList.addAll(allModelList.subList(AlphaFineConstants.SHOW_SIZE, allModelList.size()));
}
}
return lessModelList;
}
@Override
public SearchResult getMoreSearchResult(String searchText) {
return moreModelList;
}
/**
* 根据json信息获取RobotModel
*
* @param object
* @return
*/
public static RobotModel getModelFromCloud(JSONObject object) {
String name = object.optString("title");
String content = object.optString("content");
return new RobotModel(name, content);
}
}