/**
* Abiquo community edition
* cloud management application for hybrid clouds
* Copyright (C) 2008-2010 - Abiquo Holdings S.L.
*
* This application is free software; you can redistribute it and/or
* modify it under the terms of the GNU LESSER GENERAL PUBLIC
* LICENSE as published by the Free Software Foundation under
* version 3 of the License
*
* This software 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
* LESSER GENERAL PUBLIC LICENSE v.3 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
package com.abiquo.server.core.infrastructure.network;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;
import com.abiquo.model.validation.Ip;
import com.abiquo.server.core.common.DefaultEntityBase;
import com.softwarementors.validation.constraints.LeadingOrTrailingWhitespace;
import com.softwarementors.validation.constraints.Required;
@Entity
@Table(name = NetworkConfiguration.TABLE_NAME, uniqueConstraints = {})
// TODO: specify unique constraints
@org.hibernate.annotations.Table(appliesTo = NetworkConfiguration.TABLE_NAME, indexes = {})
// TODO: specify indexes
public class NetworkConfiguration extends DefaultEntityBase
{
// ****************************** JPA support *******************************
public static final String TABLE_NAME = "network_configuration";
// DO NOT ACCESS: present due to needs of infrastructure support. *NEVER* call from business
// code
public NetworkConfiguration()
{
// Just for JPA support
}
private final static String ID_COLUMN = "network_configuration_id";
@Id
@GeneratedValue
@Column(name = ID_COLUMN, nullable = false)
private Integer id;
@Override
public Integer getId()
{
return this.id;
}
// ******************************* Properties *******************************
public final static String GATEWAY_PROPERTY = "gateway";
private final static boolean GATEWAY_REQUIRED = true;
private final static int GATEWAY_LENGTH_MIN = 1;
private final static int GATEWAY_LENGTH_MAX = 40;
private final static boolean GATEWAY_LEADING_OR_TRAILING_WHITESPACES_ALLOWED = false;
private final static String GATEWAY_COLUMN = "gateway";
@Column(name = GATEWAY_COLUMN, nullable = !GATEWAY_REQUIRED, length = GATEWAY_LENGTH_MAX)
private String gateway;
@Required(value = GATEWAY_REQUIRED)
@Length(min = GATEWAY_LENGTH_MIN, max = GATEWAY_LENGTH_MAX)
@LeadingOrTrailingWhitespace(allowed = GATEWAY_LEADING_OR_TRAILING_WHITESPACES_ALLOWED)
@Ip
public String getGateway()
{
return this.gateway;
}
public void setGateway(final String gateway)
{
this.gateway = gateway;
}
public final static String ADDRESS_PROPERTY = "address";
private final static boolean ADDRESS_REQUIRED = true;
public final static int ADDRESS_LENGTH_MIN = 1;
public final static int ADDRESS_LENGTH_MAX = 40;
private final static boolean ADDRESS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED = false;
private final static String ADDRESS_COLUMN = "network_address";
@Column(name = ADDRESS_COLUMN, nullable = !ADDRESS_REQUIRED, length = ADDRESS_LENGTH_MAX)
private String address;
@Required(value = ADDRESS_REQUIRED)
@Length(min = ADDRESS_LENGTH_MIN, max = ADDRESS_LENGTH_MAX)
@LeadingOrTrailingWhitespace(allowed = ADDRESS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED)
@Ip
public String getAddress()
{
return this.address;
}
public void setAddress(final String address)
{
this.address = address;
}
public final static String MASK_PROPERTY = "mask";
private final static boolean MASK_REQUIRED = true;
private final static String MASK_COLUMN = "mask";
private final static long MASK_MIN_VALUE = 0L;
private final static long MASK_MAX_VALUE = 31L;
@Column(name = MASK_COLUMN, nullable = !MASK_REQUIRED)
private Integer mask;
@Required(value = MASK_REQUIRED)
@Min(MASK_MIN_VALUE)
@Max(MASK_MAX_VALUE)
public Integer getMask()
{
return this.mask;
}
public void setMask(final Integer mask)
{
this.mask = mask;
}
public final static String NETMASK_PROPERTY = "netMask";
private final static boolean NETMASK_REQUIRED = true;
public final static int NETMASK_LENGTH_MIN = 0;
public final static int NETMASK_LENGTH_MAX = 20;
private final static boolean NETMASK_LEADING_OR_TRAILING_WHITESPACES_ALLOWED = false;
private final static String NETMASK_COLUMN = "netmask";
@Column(name = NETMASK_COLUMN, nullable = !NETMASK_REQUIRED, length = NETMASK_LENGTH_MAX)
private String netMask;
@Required(value = NETMASK_REQUIRED)
@Length(min = NETMASK_LENGTH_MIN, max = NETMASK_LENGTH_MAX)
@LeadingOrTrailingWhitespace(allowed = NETMASK_LEADING_OR_TRAILING_WHITESPACES_ALLOWED)
public String getNetMask()
{
return this.netMask;
}
private void setNetMask(final String netMask)
{
this.netMask = netMask;
}
public final static String PRIMARY_DNS_PROPERTY = "primaryDNS";
private final static boolean PRIMARY_DNS_REQUIRED = false;
private final static int PRIMARY_DNS_LENGTH_MIN = 0;
private final static int PRIMARY_DNS_LENGTH_MAX = 20;
private final static boolean PRIMARY_DNS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED = false;
private final static String PRIMARY_DNS_COLUMN = "primary_dns";
@Column(name = PRIMARY_DNS_COLUMN, nullable = !PRIMARY_DNS_REQUIRED, length = PRIMARY_DNS_LENGTH_MAX)
private String primaryDNS;
@Required(value = PRIMARY_DNS_REQUIRED)
@Length(min = PRIMARY_DNS_LENGTH_MIN, max = PRIMARY_DNS_LENGTH_MAX)
@LeadingOrTrailingWhitespace(allowed = PRIMARY_DNS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED)
@Ip(required = PRIMARY_DNS_REQUIRED)
public String getPrimaryDNS()
{
return this.primaryDNS;
}
public void setPrimaryDNS(final String primaryDNS)
{
this.primaryDNS = primaryDNS;
}
public final static String SECONDARY_DNS_PROPERTY = "secondaryDNS";
private final static boolean SECONDARY_DNS_REQUIRED = false;
private final static int SECONDARY_DNS_LENGTH_MIN = 0;
private final static int SECONDARY_DNS_LENGTH_MAX = 20;
private final static boolean SECONDARY_DNS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED = false;
private final static String SECONDARY_DNS_COLUMN = "secondary_dns";
@Column(name = SECONDARY_DNS_COLUMN, nullable = !SECONDARY_DNS_REQUIRED, length = SECONDARY_DNS_LENGTH_MAX)
private String secondaryDNS;
@Required(value = SECONDARY_DNS_REQUIRED)
@Length(min = SECONDARY_DNS_LENGTH_MIN, max = SECONDARY_DNS_LENGTH_MAX)
@LeadingOrTrailingWhitespace(allowed = SECONDARY_DNS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED)
@Ip(required = SECONDARY_DNS_REQUIRED)
public String getSecondaryDNS()
{
return this.secondaryDNS;
}
public void setSecondaryDNS(final String secondaryDNS)
{
this.secondaryDNS = secondaryDNS;
}
public final static String SUFIX_DNS_PROPERTY = "sufixDNS";
private final static boolean SUFIX_DNS_REQUIRED = false;
private final static int SUFIX_DNS_LENGTH_MIN = 0;
private final static int SUFIX_DNS_LENGTH_MAX = 40;
private final static boolean SUFIX_DNS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED = false;
private final static String SUFIX_DNS_COLUMN = "sufix_dns";
@Column(name = SUFIX_DNS_COLUMN, nullable = !SUFIX_DNS_REQUIRED, length = SUFIX_DNS_LENGTH_MAX)
private String sufixDNS;
@Required(value = SUFIX_DNS_REQUIRED)
@Length(min = SUFIX_DNS_LENGTH_MIN, max = SUFIX_DNS_LENGTH_MAX)
@LeadingOrTrailingWhitespace(allowed = SUFIX_DNS_LEADING_OR_TRAILING_WHITESPACES_ALLOWED)
public String getSufixDNS()
{
return this.sufixDNS;
}
public void setSufixDNS(final String sufixDNS)
{
this.sufixDNS = sufixDNS;
}
public final static String FENCE_MODE_PROPERTY = "fenceMode";
private final static boolean FENCE_MODE_REQUIRED = true;
public final static int FENCE_MODE_LENGTH_MIN = 1;
public final static int FENCE_MODE_LENGTH_MAX = 20;
private final static boolean FENCE_MODE_LEADING_OR_TRAILING_WHITESPACES_ALLOWED = false;
private final static String FENCE_MODE_COLUMN = "fence_mode";
@Column(name = FENCE_MODE_COLUMN, nullable = !FENCE_MODE_REQUIRED, length = FENCE_MODE_LENGTH_MAX)
private String fenceMode;
@Required(value = FENCE_MODE_REQUIRED)
@Length(min = FENCE_MODE_LENGTH_MIN, max = FENCE_MODE_LENGTH_MAX)
@LeadingOrTrailingWhitespace(allowed = FENCE_MODE_LEADING_OR_TRAILING_WHITESPACES_ALLOWED)
public String getFenceMode()
{
return this.fenceMode;
}
private void setFenceMode(final String fenceMode)
{
this.fenceMode = fenceMode;
}
// *************************** Mandatory constructors ***********************
public NetworkConfiguration(final String address, final Integer mask, final String netmask,
final String gateway, final String fenceMode)
{
setAddress(address);
setMask(mask);
setFenceMode(fenceMode);
setNetMask(netmask);
setGateway(gateway);
}
// *************************** Business methods ***********************
// TODO: define business methods
// ********************************** Others ********************************
@Override
public String toString()
{
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}
}