P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
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
package foundation.persist;
 
import java.util.Set;
 
import foundation.monitor.IMessager;
import foundation.variant.expression.VariantList;
import foundation.variant.expression.VariantSegment;
 
public abstract class SQLContext implements ISQLContext {
 
    public void setParametersTo(NamedSQL namedSQL, IMessager messager) throws Exception {
        VariantList variantMap = namedSQL.getVariantList();
        Set<String> names = variantMap.keySet();
 
        for (String name : names) {
            VariantSegment variant = variantMap.get(name);
 
            if (variant != null) {
                if (!variant.isEmpty()) {
                    continue;
                }
                
                Object[] args = messager.getMessages().toArray(new String[messager.getMessages().size()]);
 
                String value = getSqlString(name, args);
                if (value == null) {
                    throw new Exception("can not get param: " + name);
                }
                
                variant.setValue(value);
            }
        }
    }
 
    public abstract String getSqlString(String name, Object... args) throws Exception;
 
    public NamedSQL reassignNamedSQL(NamedSQL namedSQL, Object... args) throws Exception {
        return namedSQL;
    }
}