| /******************************************************************************** |
| * Copyright (c) 2015-2019 Contributors to the Eclipse Foundation |
| * |
| * See the NOTICE file(s) distributed with this work for additional |
| * information regarding copyright ownership. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| ********************************************************************************/ |
| |
| package org.eclipse.mdm.api.dflt.model; |
| |
| import java.util.List; |
| import java.util.Optional; |
| import java.util.stream.Collectors; |
| |
| import org.eclipse.mdm.api.base.adapter.Core; |
| import org.eclipse.mdm.api.base.model.BaseEntity; |
| import org.eclipse.mdm.api.base.model.Datable; |
| import org.eclipse.mdm.api.base.model.Deletable; |
| import org.eclipse.mdm.api.base.model.Describable; |
| import org.eclipse.mdm.api.base.model.Value; |
| |
| /** |
| * Implementation of the value list entity type. A value list provides a set of |
| * default values which may be used as options while defining default values in |
| * templates or modifying context data. |
| * |
| * @since 1.0.0 |
| * @author Viktor Stoehr, Gigatronik Ingolstadt GmbH |
| * @see ValueListValue |
| * @see CatalogAttribute |
| */ |
| public class ValueList extends BaseEntity implements Datable, Describable, Deletable { |
| |
| // ====================================================================== |
| // Constructors |
| // ====================================================================== |
| |
| /** |
| * Constructor. |
| * |
| * @param core The {@link Core}. |
| */ |
| ValueList(Core core) { |
| super(core); |
| } |
| |
| // ====================================================================== |
| // Public methods |
| // ====================================================================== |
| |
| /** |
| * Returns the {@link ValueListValue} identified by given name. |
| * |
| * @param name The name of the {@code ValueListValue}. |
| * @return The {@code Optional} is empty if a {@code ValueListValue} with given |
| * name does not exist. |
| */ |
| public Optional<ValueListValue> getValueListValue(String name) { |
| return getValueListValues().stream().filter(vlv -> vlv.nameEquals(name)).findAny(); |
| } |
| |
| /** |
| * Returns all available {@link ValueListValue}s related to this value list. |
| * |
| * @return The returned {@code List} is unmodifiable. |
| */ |
| public List<ValueListValue> getValueListValues() { |
| return getCore().getChildrenStore().get(ValueListValue.class); |
| } |
| |
| /** |
| * Removes the {@link ValueListValue} identified by given name. |
| * |
| * @param name Name of the {@code ValueListValue} that has to be removed. |
| * @return Returns {@code true} if the {@code ValueListValues} with given name |
| * has been removed. |
| */ |
| public boolean removeValueListValue(String name) { |
| Optional<ValueListValue> valueListValue = getValueListValue(name); |
| if (valueListValue.isPresent()) { |
| getCore().getChildrenStore().remove(valueListValue.get()); |
| return true; |
| } |
| |
| return false; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| public String toString() { |
| StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('('); |
| sb.append(getValues().values().stream().map(Value::toString).collect(Collectors.joining(", "))); |
| |
| List<ValueListValue> valueListValues = getValueListValues(); |
| if (!valueListValues.isEmpty()) { |
| sb.append(", ValueListValues = ").append(valueListValues); |
| } |
| |
| return sb.append(')').toString(); |
| } |
| |
| } |