All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opsmatters.newrelic.api.model.accounts.PartnerAccount Maven / Gradle / Ivy

/*
 * Copyright 2018 Gerald Curley
 *
 * 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 com.opsmatters.newrelic.api.model.accounts;

import java.util.List;
import com.google.gson.annotations.SerializedName;
import com.opsmatters.newrelic.api.model.NamedIdResource;

/**
 * Represents a New Relic partner account.  
 * 
 * @author Gerald Curley (opsmatters)
 */
public class PartnerAccount extends NamedIdResource
{
    @SerializedName("application_type")
    private String applicationType;

    @SerializedName("allow_api_access")
    private Boolean allowApiAccess;

    @SerializedName("phone_number")
    private String phoneNumber;

    private Boolean testing;

    private List users;

    private List subscriptions;

    private String status;

    @SerializedName("license_key")
    private String licenseKey;

    @SerializedName("api_key")
    private String apiKey;

    @SerializedName("data_access_key")
    private String dataAccessKey;

    @SerializedName("browser_monitoring_key")
    private String browserMonitoringKey;

    @SerializedName("high_security")
    private Boolean highSecurity;

    @SerializedName("partner_external_identifier")
    private String partnerExternalIdentifier;

    private PartnerSubscription subscription;

    @SerializedName("primary admin")
    private AdminUser primaryAdmin;

    /**
     * Default constructor.
     */
    public PartnerAccount()
    {
    }
    
    /**
     * Sets the application type of the account.
     * @param applicationType The application type of the account
     */
    public void setApplicationType(String applicationType)
    {
        this.applicationType = applicationType;
    }

    /**
     * Returns the application type of the account.
     * @return The application type of the account
     */
    public String getApplicationType()
    {
        return applicationType;
    }

    /**
     * Set to true if API access to application data is allowed.
     * @param allowApiAccess true if API access to application data is allowed
     */
    public void setAllowApiAccess(Boolean allowApiAccess)
    {
        this.allowApiAccess = allowApiAccess;
    }

    /**
     * Returns true if API access to application data is allowed.
     * @return true if API access to application data is allowed
     */
    public Boolean getAllowApiAccess()
    {
        return allowApiAccess;
    }

    /**
     * Sets the phone number of the account.
     * @param phoneNumber The phone number of the account
     */
    public void setPhoneNumber(String phoneNumber)
    {
        this.phoneNumber = phoneNumber;
    }

    /**
     * Returns the phone number of the account.
     * @return The phone number of the account
     */
    public String getPhoneNumber()
    {
        return phoneNumber;
    }

    /**
     * Set to true if this account is a test account.
     * @param testing true if this account is a test account
     */
    public void setTesting(Boolean testing)
    {
        this.testing = testing;
    }

    /**
     * Returns true if this account is a test account.
     * @return true if this account is a test account
     */
    public Boolean getTesting()
    {
        return testing;
    }

    /**
     * Sets the list of users.
     * @param users The list of users
     */
    public void setUsers(List users)
    {
        this.users = users;
    }

    /**
     * Adds a user to the list of users.
     * @param user The user to be added
     */
    public void addUser(PartnerUser user)
    {
        this.users.add(user);
    }

    /**
     * Returns the list of users.
     * @return The list of users
     */
    public List getUsers()
    {
        return users;
    }

    /**
     * Sets the list of subscriptions.
     * @param subscriptions The list of subscriptions
     */
    public void setSubscriptions(List subscriptions)
    {
        this.subscriptions = subscriptions;
    }

    /**
     * Adds a subscription to the list of subscriptions.
     * @param subscription The subscription to be added
     */
    public void addSubscription(ProductSubscription subscription)
    {
        this.subscriptions.add(subscription);
    }

    /**
     * Returns the list of subscriptions.
     * @return The list of subscriptions
     */
    public List getSubscriptions()
    {
        return subscriptions;
    }

    /**
     * Returns the status of the account.
     * @return The status of the account
     */
    public String getStatus()
    {
        return status;
    }

    /**
     * Returns the license key of the account.
     * @return The license key of the account
     */
    public String getLicenseKey()
    {
        return licenseKey;
    }

    /**
     * Returns the API key of the account.
     * @return The API key of the account
     */
    public String getApiKey()
    {
        return apiKey;
    }

    /**
     * Returns the data access key of the account.
     * @return The data access key of the account
     */
    public String getDataAccessKey()
    {
        return dataAccessKey;
    }

    /**
     * Returns the browser monitoring key of the account.
     * @return The browser monitoring key of the account
     */
    public String getBrowserMonitoringKey()
    {
        return browserMonitoringKey;
    }

    /**
     * Returns true if this account has high security enabled.
     * @return true if this account has high security enabled
     */
    public Boolean getHighSecurity()
    {
        return highSecurity;
    }

    /**
     * Returns the partner external identifier of the account.
     * @return The partner external identifier of the account
     */
    public String getPartnerExternalIdentifier()
    {
        return partnerExternalIdentifier;
    }

    /**
     * Returns the subscription of the account.
     * @return The subscription of the account
     */
    public PartnerSubscription getSubscription()
    {
        return subscription;
    }

    /**
     * Returns the primary admin of the account.
     * @return The primary admin of the account
     */
    public AdminUser getPrimaryAdmin()
    {
        return primaryAdmin;
    }

    /**
     * Returns a string representation of the object.
     */
    @Override
    public String toString()
    {
        return "PartnerAccount ["+super.toString()
            +", applicationType="+applicationType
            +", allowApiAccess="+allowApiAccess
            +", phoneNumber="+phoneNumber
            +", testing="+testing
            +", users="+users
            +", subscriptions="+subscriptions
            +", status="+status
            +", licenseKey="+licenseKey
            +", apiKey="+apiKey
            +", dataAccessKey="+dataAccessKey
            +", browserMonitoringKey="+browserMonitoringKey
            +", highSecurity="+highSecurity
            +", partnerExternalIdentifier="+partnerExternalIdentifier
            +", subscription="+subscription
            +", primaryAdmin="+primaryAdmin
            +"]";
    }

    /**
     * Returns a builder for the account.
     * @return The builder instance.
     */
    public static Builder builder()
    {
        return new Builder();
    }

    /**
     * Builder to make account construction easier.
     */
    public static class Builder
    {
        private PartnerAccount account = new PartnerAccount();

        /**
         * Sets the name of the account.
         * @param name The name of the account
         * @return This object
         */
        public Builder name(String name)
        {
            account.setName(name);
            return this;
        }

        /**
         * Sets the application type of the account.
         * @param applicationType The application type of the account
         * @return This object
         */
        public Builder applicationType(String applicationType)
        {
            account.setApplicationType(applicationType);
            return this;
        }

        /**
         * Sets the phone number of the account.
         * @param phoneNumber The phone number of the account
         * @return This object
         */
        public Builder phoneNumber(String phoneNumber)
        {
            account.setPhoneNumber(phoneNumber);
            return this;
        }

        /**
         * Set to true if API access to application data is allowed.
         * @param allowApiAccess true if API access to application data is allowed
         * @return This object
         */
        public Builder allowApiAccess(boolean allowApiAccess)
        {
            account.setAllowApiAccess(allowApiAccess);
            return this;
        }

        /**
         * Set to true if this account is a test account.
         * @param testing true if this account is a test account
         * @return This object
         */
        public Builder testing(boolean testing)
        {
            account.setTesting(testing);
            return this;
        }

        /**
         * Sets the users of the account.
         * @param users The users of the account
         * @return This object
         */
        public Builder users(List users)
        {
            account.setUsers(users);
            return this;
        }

        /**
         * Adds the given user to the list of users for the account.
         * @param user The user to add to the list of users
         * @return This object
         */
        public Builder addUser(PartnerUser user)
        {
            account.addUser(user);
            return this;
        }

        /**
         * Sets the subscriptions of the account.
         * @param subscriptions The subscriptions of the account
         * @return This object
         */
        public Builder subscriptions(List subscriptions)
        {
            account.setSubscriptions(subscriptions);
            return this;
        }

        /**
         * Adds the given subscription to the list of subscriptions for the account.
         * @param subscription The subscription to add to the list of subscriptions
         * @return This object
         */
        public Builder addSubscription(ProductSubscription subscription)
        {
            account.addSubscription(subscription);
            return this;
        }

        /**
         * Returns the configured account instance
         * @return The account instance
         */
        public PartnerAccount build()
        {
            return account;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy