JavaScript Extension Development API for Oracle Visual Builder Cloud Service - Classic Applications

Source: entity/js/api/RelationCardinality.js

define([], function () {

    'use strict';

    /**
     * Defines the cardinality of a relation between two {@link entity/js/api/Entity Entities}.
     *
     * @AbcsExtension stable
     * @version 17.1.1
     * @exports entity/js/api/RelationCardinality
     *
     * @constructor
     * @private
     */
    var RelationCardinality = function () {
        AbcsLib.throwStaticClassError();
    };

    /**
     * One to one cardinality.
     *
     * @static
     * @constant
     * @type {String}
     */
    RelationCardinality.ONE_TO_ONE = 'one-to-one';

    /**
     * One to many cardinality.
     *
     * <p>
     * One source {@link entity/js/api/Entity Entity} relates to multiple target {@link entity/js/api/Entity Entities}. The target {@link entity/js/api/Entity Entity} has a
     * dedicated {@link entity/js/api/Property Property} of {@link entity/js/api/PropertyType.REFERENCE PropertyType.REFERENCE} which always contains an ID referring to the source {@link entity/js/api/Entity Entity}.
     * </p>
     *
     * <p>
     * This is an inverse cardinality to {@link entity/js/api/RelationCardinality.MANY_TO_ONE RelationCardinality.MANY_TO_ONE}.
     * </p>
     *
     * @AbcsExtension stable
     * @version 17.1.1
     * @static
     * @constant
     * @type {String}
     */
    RelationCardinality.ONE_TO_MANY = 'one-to-many';

    /**
     * Many to one cardinality.
     *
     * <p>
     * Many source {@link entity/js/api/Entity Entities} relate to one target {@link entity/js/api/Entity Entity}. The source {@link entity/js/api/Entity Entity} has a dedicated
     * {@link entity/js/api/Property Property} of {@link entity/js/api/PropertyType.REFERENCE PropertyType.REFERENCE} which always conatins an ID referring to the target {@link entity/js/api/Entity Entity}.
     * </p>
     *
     * <p>
     * This is an inverse cardinality to ONE_TO_MANY
     * </p>
     *
     * @AbcsExtension stable
     * @version 17.1.1
     * @static
     * @constant
     * @type {String}
     */
    RelationCardinality.MANY_TO_ONE = 'many-to-one';

    /**
     * Many to many cardinality.
     *
     * <p>
     * Many source {@link entity/js/api/Entity Entities} relate to many target {@link entity/js/api/Entity Entities}.
     * </p>
     *
     * @AbcsExtension stable
     * @version 17.3.5
     * @static
     * @constant
     * @type {String}
     */
    RelationCardinality.MANY_TO_MANY = 'many-to-many';

    /**
     * Gets inverse cardinality.
     *
     * @param {entity/js/api/RelationCardinality} cardinality
     * @returns {entity/js/api/RelationCardinality}
     */
    RelationCardinality.getInverseCardinality = function (cardinality) {
        switch (cardinality) {
            case RelationCardinality.MANY_TO_ONE:
                return RelationCardinality.ONE_TO_MANY;
            case RelationCardinality.ONE_TO_MANY:
                return RelationCardinality.MANY_TO_ONE;
            default:
                return cardinality; //return itself - it's symmetric
        }
    };

    return RelationCardinality;

});