com.comcast.cats.SnmpUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.comcast.cats.SnmpUtil.java

Source

/**
 * Copyright 2014 Comcast Cable Communications Management, LLC
 *
 * This file is part of CATS.
 *
 * CATS is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * CATS is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with CATS.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.comcast.cats;

import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;
import org.snmp4j.smi.TimeTicks;

/**
 * Utility class for the snmp input parameter validations.
 * @author TATA
 *
 */
public final class SnmpUtil {
    /**
     * The minimum length of the USM password in the case of Snmp V3.
     */
    private static final int MIN_PWD_LENGTH = 8;

    /**
     * Regular expression for validating OID.
     */
    private static final String OID_REGEX = "(\\.?\\d+)*";
    /**
     * Constant separator for DOT.
     */
    private static final String CONST_DOT = ".";

    /**
     * Regular expression for validating Target machine IP Address.
     */
    private static final String IP_ADDR_REGEX = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.)"
            + "{3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";

    public static final String TIMETICK_PATTERN = "{0,number,00}:{1,number,00}:{2,number,00}:{3,number,00}.{4,number,00}";

    /**
     * Private constructor added to enforce the check style.
     */
    private SnmpUtil() {
    }

    /**
     * Checking whether the specified OID is valid using regular expression.
     * @param oid
     *            Object identifier representing the functionality.
     * @return True if the OID is in correct format else false
     */
    public static boolean isValidOid(final String oid) {
        return Pattern.compile(OID_REGEX).matcher(oid).matches();
    }

    /**
     * Checking whether the specified IP Address is valid using regular expression.
     * @param ip
     *            The IP Address of the target machine
     * @return True if the IP is in correct format else false
     */
    public static boolean isValidIp(final String ip) {
        return Pattern.compile(IP_ADDR_REGEX).matcher(ip).matches();
    }

    /**
     * Checking whether the password specified has minimum 8 characters.
     * @param password
     *            The Authentication or Privacy Password in the case of Snmp V3.
     * @return True if the Password has minimum length else false
     */
    public static boolean isValidPassword(final String password) {
        return (MIN_PWD_LENGTH <= password.length()) ? true : false;
    }

    /**
     * Returns the Formatted time in day:HH:mm:ss format. The input time is in
     * seconds. Returns empty string if input is negative.
     * 
     * @param upTimeInSec
     * @return
     */
    public static String getFormattedTime(final long upTimeInSec) {
        String timeTicksString = getFormattedTimeForTimeTicks(upTimeInSec * 100);
        return StringUtils.substringBefore(timeTicksString, CONST_DOT);
    }

    /**
     * Returns time in days:HH:mm:ss format if input time is greater than 0 else
     * returns empty string. The input time is in hundredth of a seconds. The
     * same output from SNMP.
     * 
     * 
     * @param upTimeInHundredthSec
     * @return
     */
    public static String getFormattedTimeForTimeTicks(final long upTimeInHundredthSec) {
        String result = "";
        if (upTimeInHundredthSec >= 0) {
            TimeTicks timeTicks = new TimeTicks(upTimeInHundredthSec);
            result = timeTicks.toString(TIMETICK_PATTERN);
        }
        return result;
    }

}