package com.sixsq.slipstream.persistence;
/*
* +=================================================================+
* SlipStream Server (WAR)
* =====
* Copyright (C) 2013 SixSq Sarl (sixsq.com)
* =====
* 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.
* -=================================================================-
*/
import java.util.regex.Pattern;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import com.sixsq.slipstream.exceptions.ValidationException;
import org.simpleframework.xml.Root;
@Entity
@Root(name = "parameter")
@SuppressWarnings("serial")
public class ServiceCatalogParameter extends Parameter<ServiceCatalog> {
@Id
@GeneratedValue
Long id;
@SuppressWarnings("unused")
private ServiceCatalogParameter() {
super();
}
public ServiceCatalogParameter(String key, String value, String description)
throws ValidationException {
super(key, value, description);
}
@Override
protected void validateName() throws ValidationException {
super.validateName();
if ("".equals(getName())) {
throw (new ValidationException(
"Error creating new Parameter, argument name cannot be empty"));
}
String key = getName();
if (!Pattern.matches("\\w[-\\w\\d.]+", key)) {
throw new ValidationException(
"Service catalog entry must start with a letter and contain only letters, digits and dots.");
}
}
@Override
public Long getId() {
return id;
}
@Override
protected void setId(Long id) {
this.id = id;
}
@Override
public ServiceCatalogParameter copy() throws ValidationException {
return (ServiceCatalogParameter) copyTo(new ServiceCatalogParameter(
getName(), getValue(), getDescription()));
}
}