com.redhat.rhn.domain.config.ConfigChannel.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.rhn.domain.config.ConfigChannel.java

Source

/**
 * Copyright (c) 2009--2012 Red Hat, Inc.
 *
 * This software is licensed to you under the GNU General Public License,
 * version 2 (GPLv2). There is NO WARRANTY for this software, express or
 * implied, including the implied warranties of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
 * along with this software; if not, see
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
 *
 * Red Hat trademarks are not licensed under GPLv2. No permission is
 * granted to use or replicate Red Hat trademarks that are incorporated
 * in this software or its documentation.
 */
package com.redhat.rhn.domain.config;

import com.redhat.rhn.domain.BaseDomainHelper;
import com.redhat.rhn.domain.Identifiable;
import com.redhat.rhn.domain.org.Org;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

import java.util.Date;
import java.util.SortedSet;

/**
 * ConfigChannel - Class representation of the table rhnConfigChannel.
 * @version $Rev$
 */
public class ConfigChannel extends BaseDomainHelper implements Identifiable {

    private Long id;
    private Org org;
    private String name;
    private String label;
    private String description;

    private ConfigChannelType configChannelType;

    private SortedSet configFiles;

    /**
     * Protected constructor
     * Use ConfigurationFactory to create a new channel.
     */
    protected ConfigChannel() {

    }

    /**
     * Getter for id
     * @return Long to get
    */
    public Long getId() {
        return this.id;
    }

    /**
     * Setter for id
     * @param idIn to set
    */
    public void setId(Long idIn) {
        this.id = idIn;
    }

    /**
     * Getter for orgId
     * @return Long to get
    */
    public Long getOrgId() {
        return this.org.getId();
    }

    /**
     * Getter for name
     * @return String to get
    */
    public String getName() {
        return this.name;
    }

    /**
     * Setter for name
     * @param nameIn to set
    */
    public void setName(String nameIn) {
        this.name = nameIn;
    }

    /**
     * Getter for label
     * @return String to get
    */
    public String getLabel() {
        return this.label;
    }

    /**
     * Setter for label
     * @param labelIn to set
    */
    public void setLabel(String labelIn) {
        this.label = labelIn;
    }

    /**
     * Getter for description
     * @return String to get
    */
    public String getDescription() {
        return this.description;
    }

    /**
     * Setter for description
     * @param descriptionIn to set
    */
    public void setDescription(String descriptionIn) {
        this.description = descriptionIn;
    }

    /**
     * @return Returns the configChannelType.
     */
    public ConfigChannelType getConfigChannelType() {
        return configChannelType;
    }

    /**
     * @param configChannelTypeIn The configChannelType to set.
     */
    public void setConfigChannelType(ConfigChannelType configChannelTypeIn) {
        this.configChannelType = configChannelTypeIn;
    }

    /**
     * @return Returns the org.
     */
    public Org getOrg() {
        return org;
    }

    /**
     * @param orgIn The org to set.
     */
    public void setOrg(Org orgIn) {
        org = orgIn;
    }

    // Utility routines for common use cases

    /**
     * Is this a local (i.e. system) channel?
     * @return true if local
     */
    public boolean isLocalChannel() {
        return ConfigChannelType.local().equals(getConfigChannelType());
    }

    /**
     * Is this a global channel?
     * @return true if global
     */
    public boolean isGlobalChannel() {
        return ConfigChannelType.global().equals(getConfigChannelType());
    }

    /**
     * Is this a sandbox channel?
     * @return true if sandbox
     */
    public boolean isSandboxChannel() {
        return ConfigChannelType.sandbox().equals(getConfigChannelType());
    }

    /**
     * @return Returns the set of config files associated to this channel.
     */

    public SortedSet<ConfigFile> getConfigFiles() {
        return configFiles;
    }

    /**
     * Setter for list of config files associated to this channel
     * @param cfg to set
    */
    protected void setConfigFiles(SortedSet cfg) {
        this.configFiles = cfg;
    }

    /**
     * Provide a wrapper that returns a useful, I18N'd, name for a channel -
     * relies on the utility function in ConfigurationFactory.
     *
     * @return displayable, I18N'd channel name, even for local and sandbox channels
     */
    public String getDisplayName() {
        String typeStr = getConfigChannelType().getLabel();
        return ConfigurationFactory.getChannelNameDisplay(typeStr, getName());
    }

    /**
     * Creates a configuration file and saves it to the database
     * with the given information.
     * Note: users of the same org do not automatically have access to this file.
     * See rhn_config_channel.get_user_file_access
     * @param state The state of the file (dead or alive)
     * @param cfn The file's path
     * @return T        he newly created ConfigFile
     */
    public ConfigFile createConfigFile(ConfigFileState state, ConfigFileName cfn) {
        ConfigFile file = ConfigurationFactory.newConfigFile();
        file.setConfigChannel(this);
        file.setConfigFileState(state);
        file.setConfigFileName(cfn);
        file.setCreated(new Date());
        file.setModified(new Date());
        return ConfigurationFactory.commit(file);
    }

    /**
     * See createConfigFile(ConfigFileState, ConfigFileName).
     * @param state The state of the file (dead or alive)
     * @param path The path of the file
     * @return The newly created ConfigFile
     */
    public ConfigFile createConfigFile(ConfigFileState state, String path) {
        ConfigFileName cfn = ConfigurationFactory.lookupOrInsertConfigFileName(path);
        return createConfigFile(state, cfn);
    }

    /**
     *
     * {@inheritDoc}
     */
    public boolean equals(Object obj) {
        ConfigChannel that = (ConfigChannel) obj;
        return new EqualsBuilder().append(this.getLabel(), that.getLabel()).append(this.getOrg(), that.getOrg())
                .append(this.getName(), that.getName())
                .append(this.getConfigChannelType(), that.getConfigChannelType()).isEquals();
    }

    /**
     *
     * {@inheritDoc}
     */
    public int hashCode() {
        // The id field has been intentionally ignored here
        // because for a new object the id can be null
        // The label, name, org_id, channel type uniquely identify a Channel
        HashCodeBuilder builder = new HashCodeBuilder();

        builder.append(this.getOrg());
        builder.append(this.getName());
        builder.append(this.getLabel());
        builder.append(this.getConfigChannelType());

        return builder.toHashCode();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String toString() {
        ToStringBuilder builder = new ToStringBuilder(this);
        builder.append("id", getId()).append("label", getLabel()).append("name", getName()).append("org", getOrg())
                .append("type", getConfigChannelType());
        return builder.toString();
    }
}