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<T extends DncFileNameProcessRule> {
|
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;
|
}
|
}
|