1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.encrypt.rewrite.token.pojo;
19
20 import lombok.Getter;
21 import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
22 import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.Substitutable;
23
24 import java.util.Collection;
25 import java.util.Map;
26 import java.util.Objects;
27
28
29
30
31 public final class EncryptPredicateInRightValueToken extends SQLToken implements Substitutable {
32
33 @Getter
34 private final int stopIndex;
35
36 private final Map<Integer, Object> indexValues;
37
38 private final Collection<Integer> paramMarkerIndexes;
39
40 public EncryptPredicateInRightValueToken(final int startIndex, final int stopIndex, final Map<Integer, Object> indexValues, final Collection<Integer> paramMarkerIndexes) {
41 super(startIndex);
42 this.stopIndex = stopIndex;
43 this.indexValues = indexValues;
44 this.paramMarkerIndexes = paramMarkerIndexes;
45 }
46
47 @Override
48 public String toString() {
49 StringBuilder result = new StringBuilder();
50 result.append('(');
51 for (int i = 0; i < indexValues.size() + paramMarkerIndexes.size(); i++) {
52 if (paramMarkerIndexes.contains(i)) {
53 result.append('?');
54 } else {
55 if (indexValues.get(i) instanceof String) {
56 result.append('\'').append(indexValues.get(i)).append('\'');
57 } else {
58 result.append(indexValues.get(i));
59 }
60 }
61 result.append(", ");
62 }
63 result.delete(result.length() - 2, result.length()).append(')');
64 return result.toString();
65 }
66
67 @Override
68 public boolean equals(final Object obj) {
69 return obj instanceof EncryptPredicateInRightValueToken && ((EncryptPredicateInRightValueToken) obj).getStartIndex() == getStartIndex()
70 && ((EncryptPredicateInRightValueToken) obj).getStopIndex() == stopIndex && ((EncryptPredicateInRightValueToken) obj).indexValues.equals(indexValues)
71 && ((EncryptPredicateInRightValueToken) obj).paramMarkerIndexes.equals(paramMarkerIndexes);
72 }
73
74 @Override
75 public int hashCode() {
76 return Objects.hash(getStartIndex(), stopIndex, indexValues, paramMarkerIndexes);
77 }
78 }