package com.qianwen.smartman.modules.dnc.template; import com.google.common.base.Joiner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.smartman.common.constant.DncConstant; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.dnc.context.DncFileNameProcessRuleContext; import com.qianwen.smartman.modules.dnc.dto.DefaultDncFileNameProcessRule; import com.qianwen.smartman.modules.dnc.dto.DncFileNameProcessRule; public abstract class DncFileNameProcess { private static final Logger log = LoggerFactory.getLogger(DncFileNameProcess.class); protected abstract String selectExtraInfo(DncFileNameProcessRuleContext context, T template); public String generateFinallyFileName(DncFileNameProcessRuleContext context, T rule) { String result = ""; if (Func.isNotEmpty(context)) { result = context.getFileName(); } String extraInfo = selectExtraInfo(context, rule); if (Func.isBlank(extraInfo)) { return result; } String result2 = compileRelatedFileNameInfo(context.getFileName(), handlerExtraInfoWithRegex(extraInfo, ((DefaultDncFileNameProcessRule) rule).getHandleRegexp(), ((DefaultDncFileNameProcessRule) rule).connectors), ((DefaultDncFileNameProcessRule) rule).isSuffix(), ((DefaultDncFileNameProcessRule) rule).getConnectors()); return result2; } protected String handlerExtraInfoWithRegex(String extraInfo, String regex, String replaceStr) { return extraInfo.replaceAll(regex, replaceStr); } protected String compileRelatedFileNameInfo(String fileName, String extraInfo, boolean suffix, String connectors) { String name; String fileExtension; String join; int index = fileName.lastIndexOf(DncConstant.POINT); if (index == -1) { name = fileName; fileExtension = ""; } else { name = fileName.substring(0, fileName.lastIndexOf(DncConstant.POINT)); fileExtension = fileName.substring(fileName.lastIndexOf(DncConstant.POINT)); } if (suffix) { join = Joiner.on(connectors).join(name, extraInfo, new Object[0]); } else { join = Joiner.on(connectors).join(extraInfo, name, new Object[0]); } String resultName = getString(join, fileExtension) + fileExtension; return resultName; } private String getString(String content, String fileExtension) { int suffix = Func.isNotBlank(fileExtension) ? fileExtension.length() : 0; int length = content.length() - suffix; if (length > 70) { content = content.substring(0, 70); } return content; } }