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 com.sixsq.slipstream.exceptions.ValidationException; import com.sixsq.slipstream.persistence.ServiceConfiguration.RequiredParameters; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Root; import java.util.regex.Pattern; @Root(name = "parameter") @SuppressWarnings("serial") public class ServiceConfigurationParameter extends Parameter<ServiceConfiguration> { Long id; @Attribute(required = false) private ServiceConfigurationParameter() { } public ServiceConfigurationParameter(String name) throws ValidationException { super(name); } public ServiceConfigurationParameter(String name, String value) throws ValidationException { super(name, value, ""); } public ServiceConfigurationParameter(String name, String value, String description) throws ValidationException { super(name, value, description); } public ServiceConfigurationParameter(RequiredParameters parameter, String value) throws ValidationException { super(parameter.name(), value, parameter.getDescription()); setType(parameter.getType()); setInstructions(parameter.getInstruction()); setCategory(parameter.getCategory().name()); setMandatory(true); setReadonly(parameter.isReadonly()); } @Override public Long getId() { return id; } @Override protected void setId(Long id) { this.id = id; } @Override public ServiceConfigurationParameter copy() throws ValidationException { return (ServiceConfigurationParameter) copyTo(new ServiceConfigurationParameter( getName(), getValue(), getDescription())); } @Override protected void validateName() throws ValidationException { super.validateName(); if ("".equals(getName())) { throw (new ValidationException("Key cannot be empty")); } if (!Pattern.matches("[a-zA-Z][\\w\\d._-]+", getName())) { throw new ValidationException( "Key must start with a letter and contain only letters, digits, dots, dash and underscores."); } } }