yangys
2024-05-07 9b677ea5c6978788d135fc15da3d78c5a93789c2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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;
    }
}