public ResolutionScope forIndirectObservable(IObservableSemantics observable, IDerivedObserver observer) { ResolutionScope ret = forObservable(observable); ret.indirectObserver = observer; ret.isExplanatoryModel = !NS.isDirect(observable); return ret; }
/** * Notify that an additional (indirect or database-related) contextualizer is * available, and let the model or observer decide what to do with it, according to * which kind of model we're using. If there's no model, accept it and make a model If * this returns true the resolver is content with that and does not look for models to * resolve further. * * @deprecated probably wrong strategy - see Resolver where it's called. * @param instantiator * @return */ @Deprecated public boolean notifyContextualizer(IContextualizer instantiator) { if (this.model != null) { return ((KIMModel) model).acceptContextualizer(instantiator); } else if (NS.isDirect(this.observable)) { this.model = new KIMModel(this.observable, instantiator, this); this.node = this.resolutionGraph.getNode(this.model); this.resolutionGraph.add(this.node); } return true; }
ProcessingStep(IModel model) { this.model = model; this.observables.addAll(model.getObservables()); if (NS.isDirect(model.getObservable())) { actuator = getDirectActuator(model, scope, monitor); this.isDirect = true; /* * Produce the necessary key/catalog so that upstream states can use this * model to resolve their dependencies. */ for (int i = 1; i < model.getObservables().size(); i++) { String key = NameGenerator.shortUUID(); if (scope.isUsed(model.getObservables().get(i))) { outputs.put(key, model.getObservables().get(i)); } } } addVertex(this); }
/** * Make a default model from an observable. Only works for class/trait and for direct * observers. If direct, select an instantiator. * * @param context * @param oob * @return a new model */ public static IModel makeModel(KIMScope context, KIMObservableSemantics oob) { if (NS.isDirect(oob)) { return new KIMModel(context.getNamespace(), oob); } else if (NS.isClass(oob)) { KIMClassificationObserver co = new KIMClassificationObserver(oob); oob.setObserver(co); co.namespace = context.getNamespace(); return new KIMModel(co); } else { context.error("models can only be created without specifications for direct observables or classes/traits", oob .getFirstLineNumber()); } return null; }
boolean noOp = false; boolean linkToParentSubject = this.type == Type.MODEL && NS.isDirect(this.model.getObservable()); ProvenanceNode source = linkToParentSubject ? getParentNode() : this.node; ProvenanceNode target = child.node;
} else if (NS.isDirect(original)) { if (by == null) { return Observables.makeTypeFor(Traits.getObservabilityOf(original, true));
if (ko != null && refContext != null && !NS.isDirect(ko)) {
if (!NS.isDirect(this.observable.getType())) { context.error("only direct observables are admitted in observation statements", lineNumber(statement .getConcept()));
if (NS.isDirect(getObservable())) {
&& !(NS.isDirect(inherentType) || NS.isConfiguration(inherentType))) {
: Observables.getContextType(ko.getType()); } else if (refContext != null && !NS.isDirect(ko)) { .setObservationType(observer.getObservationType()); ((ObservableSemantics) observables.get(0)).setObserver(observer); } else if (NS.isDirect(observables.get(0).getType())) { ((ObservableSemantics) observables.get(0)) .setObservationType(KLAB.c(NS.DIRECT_OBSERVATION));
.getType(), lineNumber(statement.getConcept()), NS.isQuality(obs)); } else if (!(NS.isClass(obs) || NS.isTrait(obs)) && !NS.isDirect(obs)) {