blob: d3b1c7f6b2394744255d9ad8dd9c1dd7ead4c342 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2021 the Eclipse BaSyx Authors
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
******************************************************************************/
package org.eclipse.basyx.submodel.metamodel.map.qualifier.qualifiable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import org.eclipse.basyx.submodel.metamodel.api.qualifier.qualifiable.IConstraint;
import org.eclipse.basyx.submodel.metamodel.api.qualifier.qualifiable.IQualifiable;
import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType;
import org.eclipse.basyx.vab.model.VABModelMap;
/**
* Qualifiable class
*
* @author kuhn
*
*/
public class Qualifiable extends VABModelMap<Object> implements IQualifiable {
public static final String QUALIFIERS = "qualifiers";
/**
* Constructor
*/
public Qualifiable() {}
/**
* Constructor
*/
public Qualifiable(Constraint qualifier) {
// Create collection with qualifiers
Collection<Constraint> qualifiers = new HashSet<>();
// - Add qualifier
qualifiers.add(qualifier);
// The instance of an element may be further qualified by one or more
// qualifiers.
put(QUALIFIERS, qualifiers);
}
/**
* Constructor
*/
public Qualifiable(Collection<Constraint> qualifiers) {
// The instance of an element may be further qualified by one or more
// qualifiers.
put(QUALIFIERS, qualifiers);
}
/**
* Creates a Qualifiable object from a map
*
* @param obj
* a Qualifiable object as raw map
* @return a Qualifiable object, that behaves like a facade for the given map
*/
public static Qualifiable createAsFacade(Map<String, Object> map) {
if (map == null) {
return null;
}
Qualifiable ret = new Qualifiable();
ret.setMap(map);
return ret;
}
public void setQualifiers(Collection<IConstraint> qualifiers) {
put(Qualifiable.QUALIFIERS, qualifiers);
}
@SuppressWarnings("unchecked")
@Override
public Collection<IConstraint> getQualifiers() {
// Transform set of maps to set of IConstraints
Collection<Map<String, Object>> set = (Collection<Map<String, Object>>) get(Qualifiable.QUALIFIERS);
Collection<IConstraint> ret = new HashSet<>();
if (set != null) {
for (Map<String, Object> m : set) {
if (ModelType.createAsFacade(m).getName().equals(Formula.MODELTYPE)) {
ret.add(Formula.createAsFacade(m));
} else {
ret.add(Qualifier.createAsFacade(m));
}
}
}
return ret;
}
}