org.sleuthkit.autopsy.datamodel.accounts.BINRange.java Source code

Java tutorial

Introduction

Here is the source code for org.sleuthkit.autopsy.datamodel.accounts.BINRange.java

Source

/*
 * Autopsy Forensic Browser
 *
 * Copyright 2011-2016 Basis Technology Corp.
 * Contact: carrier <at> sleuthkit <dot> 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.sleuthkit.autopsy.datamodel.accounts;

import java.util.Optional;
import javax.annotation.concurrent.Immutable;
import org.apache.commons.lang3.StringUtils;
import org.sleuthkit.autopsy.datamodel.CreditCards;

/**
 * Details of a range of Bank Identification Number(s) (BIN) used by a bank.
 */
@Immutable
public class BINRange implements CreditCards.BankIdentificationNumber {

    private final int BINStart; //start of BIN range, 8 digits
    private final int BINEnd; // end (incluse ) of BIN rnage, 8 digits

    private final Integer numberLength; // the length of accounts numbers with this BIN, currently unused

    /**
     * AMEX, VISA, MASTERCARD, DINERS, DISCOVER, UNIONPAY
     */
    private final String scheme;
    private final String brand;

    /**
     * DEBIT, CREDIT
     */
    private final String cardType;
    private final String country;
    private final String bankName;
    private final String bankCity;
    private final String bankURL;
    private final String bankPhoneNumber;

    /**
     * Constructor
     *
     * @param BIN_start     the first BIN in the range, must be 8 digits
     * @param BIN_end       the last(inclusive) BIN in the range, must be 8
     *                      digits
     * @param number_length the length of account numbers in this BIN range
     * @param scheme        amex/visa/mastercard/etc
     * @param brand         the brand of this BIN range
     * @param type          credit vs debit
     * @param country       the country of the issuer
     * @param bank_name     the name of the issuer
     * @param bank_url      the url of the issuer
     * @param bank_phone    the phone number of the issuer
     * @param bank_city     the city of the issuer
     */
    public BINRange(int BIN_start, int BIN_end, Integer number_length, String scheme, String brand, String type,
            String country, String bank_name, String bank_url, String bank_phone, String bank_city) {
        this.BINStart = BIN_start;
        this.BINEnd = BIN_end;

        this.numberLength = number_length;
        this.scheme = StringUtils.defaultIfBlank(scheme, null);
        this.brand = StringUtils.defaultIfBlank(brand, null);
        this.cardType = StringUtils.defaultIfBlank(type, null);
        this.country = StringUtils.defaultIfBlank(country, null);
        this.bankName = StringUtils.defaultIfBlank(bank_name, null);
        this.bankURL = StringUtils.defaultIfBlank(bank_url, null);
        this.bankPhoneNumber = StringUtils.defaultIfBlank(bank_phone, null);
        this.bankCity = StringUtils.defaultIfBlank(bank_city, null);
    }

    /**
     * Get the first BIN in this range
     *
     * @return the first BIN in this range.
     */
    public int getBINstart() {
        return BINStart;
    }

    /**
     * Get the last (inclusive) BIN in this range.
     *
     * @return the last (inclusive) BIN in this range.
     */
    public int getBINend() {
        return BINEnd;
    }

    @Override
    public Optional<Integer> getNumberLength() {
        return Optional.ofNullable(numberLength);
    }

    @Override
    public Optional<String> getScheme() {
        return Optional.ofNullable(scheme);
    }

    @Override
    public Optional<String> getBrand() {
        return Optional.ofNullable(brand);
    }

    @Override
    public Optional<String> getCardType() {
        return Optional.ofNullable(cardType);
    }

    @Override
    public Optional<String> getCountry() {
        return Optional.ofNullable(country);
    }

    @Override
    public Optional<String> getBankName() {
        return Optional.ofNullable(bankName);
    }

    @Override
    public Optional<String> getBankURL() {
        return Optional.ofNullable(bankURL);
    }

    @Override
    public Optional<String> getBankPhoneNumber() {
        return Optional.ofNullable(bankPhoneNumber);
    }

    @Override
    public Optional<String> getBankCity() {
        return Optional.ofNullable(bankCity);
    }
}