Java tutorial
/* * Copyright 2012 AMG.lab, a Bull Group Company * * 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. */ package org.xlcloud.console.virtualClusters.controllers.wizard; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import javax.inject.Named; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.ObjectUtils; import org.xlcloud.console.scope.ViewScoped; import org.xlcloud.console.virtualClusters.controllers.wizard.transformers.EditableParameterToVirtualClusterParameterTransformer; import org.xlcloud.console.virtualClusters.controllers.wizard.transformers.TemplateParameterToEditableParameterTransformer; import org.xlcloud.console.virtualClusters.controllers.wizard.utils.EditableVirtualClusterParameter; import org.xlcloud.console.virtualClusters.controllers.wizard.validation.parameters.ParameterValidator; import org.xlcloud.console.virtualClusters.controllers.wizard.validation.parameters.ParameterValidatorBuilder; import org.xlcloud.service.VirtualCluster; import org.xlcloud.service.VirtualClusterDefinition; import org.xlcloud.service.api.VirtualClusterDefinitionsApi; import org.xlcloud.service.heat.template.Template; /** * <p>The controller class, which is used by virtual clusters wizard * to manage set of initial virtual cluster parameters.</p> * @author "Konrad Krl", AMG.net */ @Named @ViewScoped public class SetupPropertiesBean implements Serializable { private static final long serialVersionUID = -8747771932628831344L; private VirtualClusterDefinition virtualClusterDefinition; private List<EditableVirtualClusterParameter> editableParameters; @Inject private VirtualClusterDefinitionsApi definitionsApi; @Inject private ParameterValidatorBuilder parameterValidatorBuilder; /** * Returns the collection of virtual cluster parameters mapped to #{@link VirtualCluster.Parameters} * @return editable virtual cluster parameters */ public VirtualCluster.Parameters getVirtualClusterParameters() { VirtualCluster.Parameters virtualClusterParameters = new VirtualCluster.Parameters(); CollectionUtils.collect(editableParameters, new EditableParameterToVirtualClusterParameterTransformer(), virtualClusterParameters.getParameter()); return virtualClusterParameters; } /** * Returns the value of {@link #virtualClusterDefinition} * @return virtual cluster definition */ public VirtualClusterDefinition getVirtualClusterDefinition() { return virtualClusterDefinition; } /** * Sets the value of {@link #virtualClusterDefinition}. * Virtual cluster parameters are reinitialized if it is requred. * @param newVirtualClusterDefinition virtual cluster definition */ public void setVirtualClusterDefinition(VirtualClusterDefinition newVirtualClusterDefinition) { if (ObjectUtils.notEqual(newVirtualClusterDefinition, this.virtualClusterDefinition)) { this.virtualClusterDefinition = newVirtualClusterDefinition; this.initializeEditableParametersFromVirtualClusterDefinition(); } } /** * Returns the list of editable virtual cluster parameters * @return editable virtual cluster parameters */ public List<EditableVirtualClusterParameter> getEditableParameters() { return editableParameters; } /** * Sets the value of {@link #editableParameters} * @param editableParameters editable parameters */ public void setEditableParameters(List<EditableVirtualClusterParameter> editableParameters) { this.editableParameters = editableParameters; } /** * Returns validator for {@link EditableVirtualClusterParameter}. * @param parameter parameter for which to build a validator * @return parameter builder. */ public ParameterValidator getParameterValidator(EditableVirtualClusterParameter parameter) { return parameterValidatorBuilder.buildValidatorFor(parameter); } /** * Gets the value of {@link #definitionsApi}. * @return value of {@link #definitionsApi} */ public VirtualClusterDefinitionsApi getDefinitionsApi() { return definitionsApi; } /** * Sets the value of {@link #definitionsApi}. * @param definitionsApi - value */ public void setDefinitionsApi(VirtualClusterDefinitionsApi definitionsApi) { this.definitionsApi = definitionsApi; } private void initializeEditableParametersFromVirtualClusterDefinition() { editableParameters = new ArrayList<EditableVirtualClusterParameter>(); if (virtualClusterDefinition != null) { CollectionUtils.collect(getTemplateForDefinition().getParameters().getParameter(), new TemplateParameterToEditableParameterTransformer(), editableParameters); } } private Template getTemplateForDefinition() { return (virtualClusterDefinition != null ? getDefinitionsApi().get(virtualClusterDefinition.getId()).getTemplate() : null); } }