org.ow2.choreos.services.datamodel.DeployableServiceSpec.java Source code

Java tutorial

Introduction

Here is the source code for org.ow2.choreos.services.datamodel.DeployableServiceSpec.java

Source

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.ow2.choreos.services.datamodel;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;

import org.apache.commons.lang.SerializationUtils;
import org.ow2.choreos.nodes.datamodel.ResourceImpact;
import org.ow2.choreos.services.datamodel.qos.DesiredQoS;

@XmlRootElement
public class DeployableServiceSpec extends ServiceSpec implements Serializable {

    private static final long serialVersionUID = -6366027505813495206L;

    private String packageUri;
    private PackageType packageType;
    private String endpointName;
    private int port;
    private String owner;
    private String group;
    private int numberOfInstances = 1;
    private ResourceImpact resourceImpact;
    private String version;

    private DesiredQoS desiredQoS;

    public DeployableServiceSpec() {

    }

    public DeployableServiceSpec(String name, ServiceType serviceType, PackageType packageType,
            ResourceImpact resourceImpact, String version, String packageUri, int port, String endpointName,
            int numberOfInstances) {
        super.name = name;
        super.serviceType = serviceType;
        this.packageType = packageType;
        this.resourceImpact = resourceImpact;
        this.version = version;
        this.packageUri = packageUri;
        this.port = port;
        this.endpointName = endpointName;
        this.numberOfInstances = numberOfInstances;
    }

    public DeployableServiceSpec(String name, ServiceType serviceType, PackageType packageType,
            ResourceImpact resourceImpact, String version, String packageUri, String endpointName,
            int numberOfInstances) {
        super.name = name;
        super.serviceType = serviceType;
        this.packageType = packageType;
        this.resourceImpact = resourceImpact;
        this.version = version;
        this.packageUri = packageUri;
        this.endpointName = endpointName;
        this.numberOfInstances = numberOfInstances;
    }

    public void setNumberOfInstances(int numberOfInstances) {
        if (numberOfInstances > 0)
            this.numberOfInstances = numberOfInstances;
        else
            this.numberOfInstances = 1;
    }

    public String getPackageUri() {
        return packageUri;
    }

    public void setPackageUri(String packageUri) {
        this.packageUri = packageUri;
    }

    public PackageType getPackageType() {
        return packageType;
    }

    public void setPackageType(PackageType packageType) {
        this.packageType = packageType;
    }

    public String getEndpointName() {
        return endpointName;
    }

    public void setEndpointName(String endpointName) {
        this.endpointName = endpointName;
    }

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public String getGroup() {
        return group;
    }

    public void setGroup(String group) {
        this.group = group;
    }

    public ResourceImpact getResourceImpact() {
        return resourceImpact;
    }

    public void setResourceImpact(ResourceImpact resourceImpact) {
        this.resourceImpact = resourceImpact;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public int getNumberOfInstances() {
        return numberOfInstances;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public int getPort() {
        int effectivePort = port;
        if (portIsNotDefined()) {
            PortRetriever portRetriever = new PortRetriever();
            effectivePort = portRetriever.getPortByPackageType(packageType);
        }
        return effectivePort;
    }

    private boolean portIsNotDefined() {
        return this.port == 0;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = super.hashCode();
        result = prime * result + ((endpointName == null) ? 0 : endpointName.hashCode());
        result = prime * result + ((group == null) ? 0 : group.hashCode());
        result = prime * result + numberOfInstances;
        result = prime * result + ((owner == null) ? 0 : owner.hashCode());
        result = prime * result + ((packageType == null) ? 0 : packageType.hashCode());
        result = prime * result + ((packageUri == null) ? 0 : packageUri.hashCode());
        result = prime * result + port;
        result = prime * result + ((resourceImpact == null) ? 0 : resourceImpact.hashCode());
        result = prime * result + ((version == null) ? 0 : version.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (!super.equals(obj))
            return false;
        if (getClass() != obj.getClass())
            return false;
        DeployableServiceSpec other = (DeployableServiceSpec) obj;
        if (endpointName == null) {
            if (other.endpointName != null)
                return false;
        } else if (!endpointName.equals(other.endpointName))
            return false;
        if (group == null) {
            if (other.group != null)
                return false;
        } else if (!group.equals(other.group))
            return false;
        if (numberOfInstances != other.numberOfInstances)
            return false;
        if (owner == null) {
            if (other.owner != null)
                return false;
        } else if (!owner.equals(other.owner))
            return false;
        if (packageType == null) {
            if (other.packageType != null)
                return false;
        } else if (!packageType.equals(other.packageType))
            return false;
        if (packageUri == null) {
            if (other.packageUri != null)
                return false;
        } else if (!packageUri.equals(other.packageUri))
            return false;
        if (port != other.port)
            return false;
        if (resourceImpact == null) {
            if (other.resourceImpact != null)
                return false;
        } else if (!resourceImpact.equals(other.resourceImpact))
            return false;
        if (version == null) {
            if (other.version != null)
                return false;
        } else if (!version.equals(other.version))
            return false;
        return true;
    }

    public DeployableServiceSpec clone() {
        return (DeployableServiceSpec) SerializationUtils.clone(this);
    }

    @Override
    public String toString() {
        return "DeployableServiceSpec [name=" + super.name + ", packageUri=" + packageUri + ", packageType="
                + packageType + ", endpointName=" + endpointName + ", port=" + port + ", owner=" + owner
                + ", group=" + group + ", numberOfInstances=" + numberOfInstances + ", version=" + version
                + ", roles= " + super.roles + "]";
    }

    public DesiredQoS getDesiredQoS() {
        return this.desiredQoS;
    }

    public void setDesiredQoS(DesiredQoS desiredQoS) {
        this.desiredQoS = desiredQoS;
    }

}