blob: 8cd50f36aa38ae722aaa4b03cecf3ef2f6464aa6 [file] [log] [blame]
/********************************************************************************
* 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.odsadapter.utils;
import org.asam.ods.AggrFunc;
import org.asam.ods.DataType;
import org.asam.ods.SelOpcode;
import org.asam.ods.SelOperator;
import org.eclipse.mdm.api.base.adapter.RelationType;
import org.eclipse.mdm.api.base.model.ContextType;
import org.eclipse.mdm.api.base.model.ValueType;
import org.eclipse.mdm.api.base.query.Aggregation;
import org.eclipse.mdm.api.base.query.BooleanOperator;
import org.eclipse.mdm.api.base.query.BracketOperator;
import org.eclipse.mdm.api.base.query.ComparisonOperator;
import org.eclipse.mdm.api.base.query.JoinType;
import com.google.common.collect.ImmutableBiMap;
/**
* Utility class provides bidirectional mappings for ODS types
*
* @author Viktor Stoehr, Gigatronik Ingolstadt GmbH
* @since 1.0.0
*/
public abstract class ODSUtils {
/**
* Maps {@link RelationType} to the corresponding ODS {@link RelationType}.
*/
public static final ImmutableBiMap<RelationType, org.asam.ods.RelationType> RELATIONSHIPS = ImmutableBiMap.<RelationType, org.asam.ods.RelationType>builder()
.put(RelationType.FATHER_CHILD, org.asam.ods.RelationType.FATHER_CHILD)
.put(RelationType.INFO, org.asam.ods.RelationType.INFO)
.put(RelationType.INHERITANCE, org.asam.ods.RelationType.INHERITANCE).build();
/**
* Maps {@link Aggregation} to the corresponding ODS {@link AggrFunc}.
*/
public static final ImmutableBiMap<Aggregation, AggrFunc> AGGREGATIONS = ImmutableBiMap
.<Aggregation, AggrFunc>builder().put(Aggregation.NONE, AggrFunc.NONE)
.put(Aggregation.COUNT, AggrFunc.COUNT).put(Aggregation.DISTINCT_COUNT, AggrFunc.DCOUNT)
.put(Aggregation.MINIMUM, AggrFunc.MIN).put(Aggregation.MAXIMUM, AggrFunc.MAX)
.put(Aggregation.AVERAGE, AggrFunc.AVG).put(Aggregation.DEVIATION, AggrFunc.STDDEV)
.put(Aggregation.SUM, AggrFunc.SUM).put(Aggregation.DISTINCT, AggrFunc.DISTINCT).build();
/**
* Maps {@link ContextType} to the corresponding ODS {@link String}.
*/
public static final ImmutableBiMap<ContextType, String> CONTEXTTYPES = ImmutableBiMap.<ContextType, String>builder()
.put(ContextType.UNITUNDERTEST, "UnitUnderTest").put(ContextType.TESTSEQUENCE, "TestSequence")
.put(ContextType.TESTEQUIPMENT, "TestEquipment").build();
/**
* Maps {@link ComparisonOperator} to the corresponding ODS {@link SelOpcode}.
*/
public static final ImmutableBiMap<ComparisonOperator, SelOpcode> OPERATIONS = ImmutableBiMap
.<ComparisonOperator, SelOpcode>builder().put(ComparisonOperator.LIKE, SelOpcode.LIKE)
.put(ComparisonOperator.CASE_INSENSITIVE_LIKE, SelOpcode.CI_LIKE)
.put(ComparisonOperator.NOT_LIKE, SelOpcode.NOTLIKE)
.put(ComparisonOperator.CASE_INSENSITIVE_NOT_LIKE, SelOpcode.CI_NOTLIKE)
.put(ComparisonOperator.EQUAL, SelOpcode.EQ).put(ComparisonOperator.CASE_INSENSITIVE_EQUAL, SelOpcode.CI_EQ)
.put(ComparisonOperator.NOT_EQUAL, SelOpcode.NEQ)
.put(ComparisonOperator.CASE_INSENSITIVE_NOT_EQUAL, SelOpcode.CI_NEQ)
.put(ComparisonOperator.GREATER_THAN, SelOpcode.GT)
.put(ComparisonOperator.CASE_INSENSITIVE_GREATER_THAN, SelOpcode.CI_GT)
.put(ComparisonOperator.GREATER_THAN_OR_EQUAL, SelOpcode.GTE)
.put(ComparisonOperator.CASE_INSENSITIVE_GREATER_THAN_OR_EQUAL, SelOpcode.CI_GTE)
.put(ComparisonOperator.LESS_THAN, SelOpcode.LT)
.put(ComparisonOperator.CASE_INSENSITIVE_LESS_THAN, SelOpcode.CI_LT)
.put(ComparisonOperator.LESS_THAN_OR_EQUAL, SelOpcode.LTE)
.put(ComparisonOperator.CASE_INSENSITIVE_LESS_THAN_OR_EQUAL, SelOpcode.CI_LTE)
.put(ComparisonOperator.IS_NULL, SelOpcode.IS_NULL)
.put(ComparisonOperator.IS_NOT_NULL, SelOpcode.IS_NOT_NULL).put(ComparisonOperator.IN_SET, SelOpcode.INSET)
.put(ComparisonOperator.CASE_INSENSITIVE_IN_SET, SelOpcode.CI_INSET)
.put(ComparisonOperator.NOT_IN_SET, SelOpcode.NOTINSET)
.put(ComparisonOperator.CASE_INSENSITIVE_NOT_IN_SET, SelOpcode.CI_NOTINSET)
.put(ComparisonOperator.BETWEEN, SelOpcode.BETWEEN).build();
/**
* Maps {@link BooleanOperator} to the corresponding ODS {@link SelOperator}.
*/
public static final ImmutableBiMap<BooleanOperator, SelOperator> OPERATORS = ImmutableBiMap
.<BooleanOperator, SelOperator>builder().put(BooleanOperator.AND, SelOperator.AND)
.put(BooleanOperator.OR, SelOperator.OR).put(BooleanOperator.NOT, SelOperator.NOT).build();
/**
* Maps {@link BracketOperator} to the corresponding ODS {@link SelOperator}.
*/
public static final ImmutableBiMap<BracketOperator, SelOperator> BRACKETOPERATORS = ImmutableBiMap
.<BracketOperator, SelOperator>builder().put(BracketOperator.OPEN, SelOperator.OPEN)
.put(BracketOperator.CLOSE, SelOperator.CLOSE).build();
/**
* Maps {@link ValueType} to the corresponding ODS {@link DataType}.
*/
public static final ImmutableBiMap<ValueType<?>, DataType> VALUETYPES = ImmutableBiMap
.<ValueType<?>, DataType>builder().put(ValueType.UNKNOWN, DataType.DT_UNKNOWN)
.put(ValueType.STRING, DataType.DT_STRING).put(ValueType.STRING_SEQUENCE, DataType.DS_STRING)
.put(ValueType.DATE, DataType.DT_DATE).put(ValueType.DATE_SEQUENCE, DataType.DS_DATE)
.put(ValueType.BOOLEAN, DataType.DT_BOOLEAN).put(ValueType.BOOLEAN_SEQUENCE, DataType.DS_BOOLEAN)
.put(ValueType.BYTE, DataType.DT_BYTE).put(ValueType.BYTE_SEQUENCE, DataType.DS_BYTE)
.put(ValueType.SHORT, DataType.DT_SHORT).put(ValueType.SHORT_SEQUENCE, DataType.DS_SHORT)
.put(ValueType.INTEGER, DataType.DT_LONG).put(ValueType.INTEGER_SEQUENCE, DataType.DS_LONG)
.put(ValueType.LONG, DataType.DT_LONGLONG).put(ValueType.LONG_SEQUENCE, DataType.DS_LONGLONG)
.put(ValueType.FLOAT, DataType.DT_FLOAT).put(ValueType.FLOAT_SEQUENCE, DataType.DS_FLOAT)
.put(ValueType.DOUBLE, DataType.DT_DOUBLE).put(ValueType.DOUBLE_SEQUENCE, DataType.DS_DOUBLE)
.put(ValueType.BYTE_STREAM, DataType.DT_BYTESTR).put(ValueType.BYTE_STREAM_SEQUENCE, DataType.DS_BYTESTR)
.put(ValueType.FLOAT_COMPLEX, DataType.DT_COMPLEX)
.put(ValueType.FLOAT_COMPLEX_SEQUENCE, DataType.DS_COMPLEX)
.put(ValueType.DOUBLE_COMPLEX, DataType.DT_DCOMPLEX)
.put(ValueType.DOUBLE_COMPLEX_SEQUENCE, DataType.DS_DCOMPLEX).put(ValueType.ENUMERATION, DataType.DT_ENUM)
.put(ValueType.ENUMERATION_SEQUENCE, DataType.DS_ENUM)
.put(ValueType.FILE_LINK, DataType.DT_EXTERNALREFERENCE)
.put(ValueType.FILE_LINK_SEQUENCE, DataType.DS_EXTERNALREFERENCE).put(ValueType.BLOB, DataType.DT_BLOB)
.build();
/**
* Maps {@link JoinType} to the corresponding ODS {@link org.asam.ods.JoinType}.
*/
public static final ImmutableBiMap<JoinType, org.asam.ods.JoinType> JOINS = ImmutableBiMap.<JoinType, org.asam.ods.JoinType>builder()
.put(JoinType.INNER, org.asam.ods.JoinType.JTDEFAULT).put(JoinType.OUTER, org.asam.ods.JoinType.JTOUTER)
.build();
public static boolean isValidID(String instanceID) {
return instanceID != null && !instanceID.isEmpty() && !"0".equals(instanceID);
}
}