All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.aeon.experiment.shape.internal.NormModel Maven / Gradle / Ivy

The newest version!
package io.aeon.experiment.shape.internal;

import io.aeon.experiment.mu.KClass;
import io.aeon.experiment.mu.KHybrid;
import io.aeon.experiment.rule.RuleUnique;
import io.aeon.experiment.shape.AbstractHModel;
import io.horizon.atom.app.KApp;
import io.horizon.eon.em.modeler.ModelType;
import io.horizon.exception.web._501NotSupportException;
import io.horizon.specification.modeler.HAttribute;
import io.vertx.core.json.JsonObject;

import java.util.Objects;
import java.util.concurrent.ConcurrentMap;

/**
 * @author Lang
 */
public class NormModel extends AbstractHModel {

    private final KClass kClass;
    private final KHybrid hybrid;

    public NormModel(final KApp app, final String identifier) {
        super(app);
        this.kClass = KClass.create(app, identifier, true);
        this.hybrid = this.kClass.hybrid();
        /*
         * Initialize
         * -- attributeMap
         * -- unique
         * -- marker
         * -- reference
         */
        this.initialize();
    }

    @Override
    public String identifier() {
        if (Objects.isNull(this.identifier)) {
            // identifier extract
            this.identifier = this.kClass.identifier();
        }
        return this.identifier;
    }

    @Override
    public JsonObject toJson() {
        throw new _501NotSupportException(this.getClass());
    }

    @Override
    public void fromJson(final JsonObject json) {
        throw new _501NotSupportException(this.getClass());
    }

    @Override
    public ModelType type() {
        return ModelType.READONLY;
    }

    @Override
    protected ConcurrentMap loadAttribute() {
        return Objects.requireNonNull(this.hybrid).attribute();
    }

    @Override
    protected RuleUnique loadRule() {
        return Objects.requireNonNull(this.hybrid).rule();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy