blob: d39e8774f252676a133175fd73c5f88380f7d5b7 [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.dataspecification;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import org.eclipse.basyx.submodel.metamodel.api.dataspecification.IDataSpecificationIEC61360Content;
import org.eclipse.basyx.submodel.metamodel.api.dataspecification.IValueReferencePair;
import org.eclipse.basyx.submodel.metamodel.api.dataspecification.enums.DataTypeIEC61360;
import org.eclipse.basyx.submodel.metamodel.api.dataspecification.enums.LevelType;
import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
import org.eclipse.basyx.vab.model.VABModelMap;
/**
* DataSpecification class
*
* @author elsheikh
*
*/
public class DataSpecificationIEC61360Content extends VABModelMap<Object> implements IDataSpecificationIEC61360Content {
public static final String PREFERREDNAME = "preferredName";
public static final String SHORTNAME = "shortName";
public static final String UNIT = "unit";
public static final String UNITID = "unitId";
public static final String SOURCEOFDEFINITION = "sourceOfDefinition";
public static final String SYMBOL = "symbol";
public static final String DATATYPE = "dataType";
public static final String DEFINITION = "definition";
public static final String VALUEFORMAT = "valueFormat";
public static final String VALUELIST = "valueList";
public static final String VALUE = "value";
public static final String VALUEID = "valueId";
public static final String LEVELTYPE = "levelType";
/**
* Constructor
*/
public DataSpecificationIEC61360Content() {}
/**
* Constructor
*/
public DataSpecificationIEC61360Content(LangStrings preferredName, LangStrings shortName, String unit,
IReference unitId, String sourceOfDefinition, String symbol, DataTypeIEC61360 dataType,
LangStrings definition, String valueFormat, Collection<IValueReferencePair> valueList, String value,
IReference valueId, LevelType levelType) {
// Default values
put(PREFERREDNAME, preferredName);
put(SHORTNAME, shortName);
put(UNIT, unit);
put(UNITID, unitId);
put(SOURCEOFDEFINITION, sourceOfDefinition);
put(SYMBOL, symbol);
put(DATATYPE, dataType.toString());
put(DEFINITION, definition);
put(VALUEFORMAT, valueFormat);
put(VALUELIST, valueList);
put(VALUE, value);
put(VALUEID, valueId);
put(LEVELTYPE, levelType.toString());
}
/**
* Creates a DataSpecificationIEC61360 object from a map
*
* @param obj
* a DataSpecificationIEC61360 object as raw map
* @return a DataSpecificationIEC61360 object, that behaves like a facade for
* the given map
*/
public static DataSpecificationIEC61360Content createAsFacade(Map<String, Object> map) {
if (map == null) {
return null;
}
DataSpecificationIEC61360Content ret = new DataSpecificationIEC61360Content();
ret.putAll(map);
return ret;
}
/**
* @return A Set of Strings containing all languages for the preferredName
*/
@SuppressWarnings("unchecked")
@Override
public LangStrings getPreferredName() {
return LangStrings.createAsFacade((Collection<Map<String, Object>>) get(DataSpecificationIEC61360Content.PREFERREDNAME));
}
/**
* @return A Set of Strings containing all languages for the shortName
*/
@SuppressWarnings("unchecked")
@Override
public LangStrings getShortName() {
return LangStrings.createAsFacade((Collection<Map<String, Object>>) get(DataSpecificationIEC61360Content.SHORTNAME));
}
/**
* @return The unit string
*/
@Override
public String getUnit() {
return (String) get(DataSpecificationIEC61360Content.UNIT);
}
/**
* @return The reference to the unit id
*/
@SuppressWarnings("unchecked")
@Override
public IReference getUnitId() {
return Reference.createAsFacade((Map<String, Object>) get(DataSpecificationIEC61360Content.UNITID));
}
/**
* @return The source of definition
*/
@Override
public String getSourceOfDefinition() {
return (String) get(DataSpecificationIEC61360Content.SOURCEOFDEFINITION);
}
/**
* @return The symbol string
*/
@Override
public String getSymbol() {
return (String) get(DataSpecificationIEC61360Content.SYMBOL);
}
/**
* @return The data type
*/
@Override
public DataTypeIEC61360 getDataType() {
return DataTypeIEC61360.fromString((String) get(DataSpecificationIEC61360Content.DATATYPE));
}
/**
* @return A Set of Strings containing all languages for the definition
*/
@SuppressWarnings("unchecked")
@Override
public LangStrings getDefinition() {
return LangStrings.createAsFacade((Collection<Map<String, Object>>) get(DataSpecificationIEC61360Content.DEFINITION));
}
/**
* @return The value format
*/
@Override
public String getValueFormat() {
return (String) get(DataSpecificationIEC61360Content.VALUEFORMAT);
}
/**
* @return The value list (contains pairs of values and value ids)
*/
@SuppressWarnings("unchecked")
@Override
public Collection<IValueReferencePair> getValueList() {
ArrayList<IValueReferencePair> result = new ArrayList<>();
Object list = get(DataSpecificationIEC61360Content.VALUELIST);
if ( !(list instanceof Collection<?>) ) {
return result;
}
for (Map<String, Object> pair : (Collection<Map<String, Object>>) list) {
result.add(ValueReferencePair.createAsFacade(pair));
}
return result;
}
/**
* @return The value string
*/
@Override
public String getValue() {
return (String) get(DataSpecificationIEC61360Content.VALUE);
}
/**
* @return The valueId reference
*/
@SuppressWarnings("unchecked")
@Override
public IReference getValueId() {
return Reference.createAsFacade((Map<String, Object>) get(DataSpecificationIEC61360Content.VALUEID));
}
/**
* @return The level types
*/
@Override
public LevelType getLevelType() {
return LevelType.fromString((String) get(DataSpecificationIEC61360Content.LEVELTYPE));
}
public void setPreferredName(LangStrings preferredName) {
if (preferredName != null)
put(DataSpecificationIEC61360Content.PREFERREDNAME, preferredName);
}
public void setShortName(LangStrings shortName) {
if (shortName != null)
put(DataSpecificationIEC61360Content.SHORTNAME, shortName);
}
public void setUnit(String unit) {
if (unit != null)
put(DataSpecificationIEC61360Content.UNIT, unit);
}
public void setUnitId(IReference unitId) {
if (unitId != null)
put(DataSpecificationIEC61360Content.UNITID, unitId);
}
public void setSourceOfDefinition(String sourceOfDefinition) {
if (sourceOfDefinition != null)
put(DataSpecificationIEC61360Content.SOURCEOFDEFINITION, sourceOfDefinition);
}
public void setSymbol(String symbol) {
if (symbol != null)
put(DataSpecificationIEC61360Content.SYMBOL, symbol);
}
public void setDataType(DataTypeIEC61360 dataType) {
if (dataType != null)
put(DataSpecificationIEC61360Content.DATATYPE, dataType.toString());
}
public void setDefinition(LangStrings definition) {
if (definition != null)
put(DataSpecificationIEC61360Content.DEFINITION, definition);
}
public void setValueFormat(String valueFormat) {
if (valueFormat != null)
put(DataSpecificationIEC61360Content.VALUEFORMAT, valueFormat);
}
public void setValueList(Collection<IValueReferencePair> pairList) {
if (pairList != null && !pairList.isEmpty())
put(DataSpecificationIEC61360Content.VALUELIST, pairList);
}
public void setValue(String value) {
if (value != null)
put(DataSpecificationIEC61360Content.VALUE, value);
}
public void setValueId(IReference valueId) {
if (valueId != null)
put(DataSpecificationIEC61360Content.VALUEID, valueId);
}
public void setLevelType(LevelType levelType) {
if (levelType != null)
put(DataSpecificationIEC61360Content.LEVELTYPE, levelType.toString());
}
}