aboutsummaryrefslogtreecommitdiffstats
path: root/model/utiliites/src/main/java/org/onap/policy/apex/model/utilities/comparison/KeyDifference.java
blob: 43c44aefea463ce3be4dc5476fd203d30154c659 (plain)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * SPDX-License-Identifier: Apache-2.0
 * ============LICENSE_END=========================================================
 */

package org.onap.policy.apex.model.utilities.comparison;

/**
 * This class is used to template key differences for bulk key comparisons in models. It performs a difference check between two keys.
 *
 * @author Liam Fallon (liam.fallon@ericsson.com)
 * @param <K> the generic type
 */
public class KeyDifference<K> {
    // The keys being compared
    private K leftKey;
    private K rightKey;

    /**
     * Constructor used to set the keys being compared.
     *
     * @param leftKey the left key that is being compared
     * @param rightKey the right key that is being compared
     */
    public KeyDifference(final K leftKey, final K rightKey) {
        this.leftKey = leftKey;
        this.rightKey = rightKey;
    }

    /**
     * Gets the left key.
     *
     * @return the left key
     */
    public K getLeftKey() {
        return leftKey;
    }

    /**
     * Gets the right key.
     *
     * @return the right key
     */
    public K getRightKey() {
        return rightKey;
    }

    /**
     * Checks if the left and right keys are equal.
     *
     * @return true, if checks if is equal
     */
    public boolean isEqual() {
        return leftKey.equals(rightKey);
    }

    /**
     * Gets a string representation of the difference between the keys.
     *
     * @param diffsOnly if set, then a blank string is returned if the keys are equal
     * @return the difference between the keys as a string
     */
    public String asString(final boolean diffsOnly) {
        StringBuilder builder = new StringBuilder();

        if (leftKey.equals(rightKey)) {
            if (!diffsOnly) {
                builder.append("left key ");
                builder.append(leftKey);
                builder.append(" equals right key ");
                builder.append(rightKey);
                builder.append('\n');
            }
        }
        else {
            builder.append("left key ");
            builder.append(leftKey);
            builder.append(" and right key ");
            builder.append(rightKey);
            builder.append(" differ\n");
        }

        return builder.toString();
    }
}