org.audit4j.core.annotation.DeIdentifyUtil.java Source code

Java tutorial

Introduction

Here is the source code for org.audit4j.core.annotation.DeIdentifyUtil.java

Source

/*
 * Copyright (c) 2014-2015 Janith Bandara, This source is a part of
 * Audit4j - An open source auditing framework.
 * http://audit4j.org
 *
 * 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.
 */

package org.audit4j.core.annotation;

import org.apache.commons.lang3.StringUtils;

/**
 * The Class DeIndentifyUtil.
 *
 * @author <a href="mailto:janith3000@gmail.com">Janith Bandara</a>
 * 
 * @since 2.0.0
 */
public class DeIdentifyUtil {

    /**
     * private constructor to avoid instantiation of this class
     */
    private DeIdentifyUtil() {

    }

    /**
     * Deidentify left.
     *
     * @param str the str
     * @param size the size
     * @return the string
     * 
     * @since 2.0.0
     */
    public static String deidentifyLeft(String str, int size) {
        int repeat;
        if (size > str.length()) {
            repeat = str.length();
        } else {
            repeat = size;
        }
        return StringUtils.overlay(str, StringUtils.repeat('*', repeat), 0, size);
    }

    /**
     * Deidentify right.
     *
     * @param str the str
     * @param size the size
     * @return the string
     * 
     * @since 2.0.0
     */
    public static String deidentifyRight(String str, int size) {
        int end = str.length();
        int repeat;
        if (size > str.length()) {
            repeat = str.length();
        } else {
            repeat = size;
        }
        return StringUtils.overlay(str, StringUtils.repeat('*', repeat), end - size, end);
    }

    /**
     * Deidentify from left.
     *
     * @param str the str
     * @param size the size
     * @return the string
     * 
     * @since 2.0.0
     */
    public static String deidentifyFromLeft(String str, int size) {
        int end = str.length();
        int repeat;
        if (size > str.length()) {
            repeat = 0;
        } else {
            repeat = str.length() - size;
        }
        return StringUtils.overlay(str, StringUtils.repeat('*', repeat), size, end);
    }

    /**
     * Deidentify from right.
     *
     * @param str the str
     * @param size the size
     * @return the string
     * 
     * @since 2.0.0
     */
    public static String deidentifyFromRight(String str, int size) {
        int end = str.length();
        int repeat;
        if (size > str.length()) {
            repeat = str.length();
        } else {
            repeat = end - size;
        }
        return StringUtils.overlay(str, StringUtils.repeat('*', repeat), 0, end - size);
    }

    /**
     * Deidentify middle.
     *
     * @param str the str
     * @param start the start
     * @param end the end
     * @return the string
     * 
     * @since 2.0.0
     */
    public static String deidentifyMiddle(String str, int start, int end) {

        int repeat;
        if (end - start > str.length()) {
            repeat = str.length();
        } else {
            repeat = (str.length() - end) - start;
        }
        return StringUtils.overlay(str, StringUtils.repeat('*', repeat), start, str.length() - end);
    }

    /**
     * Deidentify edge.
     *
     * @param str the str
     * @param start the start
     * @param end the end
     * @return the string
     * 
     * @since 2.0.0
     */
    public static String deidentifyEdge(String str, int start, int end) {
        return deidentifyLeft(deidentifyRight(str, end), start);
    }

    /**
     * Deidentify.
     *
     * @param text the text
     * @param left the left
     * @param right the right
     * @param fromLeft the from left
     * @param fromRight the from right
     * @return the string
     * 
     * @since 2.0.0
     */
    public static String deidentify(String text, int left, int right, int fromLeft, int fromRight) {
        if (left == 0 && right == 0 && fromLeft == 0 && fromRight == 0) {
            return StringUtils.repeat('*', text.length());
        } else if (left > 0 && right == 0 && fromLeft == 0 && fromRight == 0) {
            return deidentifyLeft(text, left);
        } else if (left == 0 && right > 0 && fromLeft == 0 && fromRight == 0) {
            return deidentifyRight(text, right);
        } else if (left > 0 && right > 0 && fromLeft == 0 && fromRight == 0) {
            return deidentifyEdge(text, left, right);
        } else if (left == 0 && right == 0 && fromLeft > 0 && fromRight == 0) {
            return deidentifyFromLeft(text, fromLeft);
        } else if (left == 0 && right == 0 && fromLeft == 0 && fromRight > 0) {
            return deidentifyFromRight(text, fromRight);
        } else if (left == 0 && right == 0 && fromLeft > 0 && fromRight > 0) {
            return deidentifyMiddle(text, fromLeft, fromRight);
        }

        return text;
    }
}