Beispiel #1
0
  @Override
  public void referenceModified(RefObject target, PropertyChangeEvent evt) {
    if (((RefObject) evt.getNewValue()).refMetaObject().refGetValue("name").equals("Model")) return;
    if (!(makeKuaba(evt.getPropertyName()))) return;

    RefObject source = (RefObject) evt.getSource();
    if (!KuabaSubsystem.facade.existsDomainIdea(target)) {
      PropertyChangeEvent nameEvt =
          new PropertyChangeEvent(target, "name", "", target.refGetValue("name"));
      PropertyChangeListener listener = KuabaSubsystem.eventPump.getObserver(target);
      if (listener == null) {
        listener = this.createListener(target);
        if (listener == null) return;
        KuabaSubsystem.eventPump.addModelElementObserver(listener, target);
      }
      listener.propertyChange(nameEvt);
      Reference ref =
          MofHelper.getReference(evt.getPropertyName(), (MofClass) source.refMetaObject());
      if (!(ref == null)) {
        String otherSide = MofHelper.getExposedEndName(ref);
        try {
          PropertyChangeEvent referenceEvt =
              new PropertyChangeEvent(target, otherSide, null, target.refGetValue(otherSide));
          listener.propertyChange(referenceEvt);
        } catch (Exception e) {
          // TODO: handle exception
        }
      }
    }
    // para evitar a criação do feature
    if (evt.getPropertyName().equals("feature")) return;

    // aqui que cria as outras questões do tipo participant e owner
    Decision d =
        KuabaSubsystem.facade.referenceChanged(
            (RefObject) evt.getSource(), target, evt.getPropertyName());
    Idea sourceDomainIdea =
        KuabaHelper.getDomainIdea(
            modelRepository(),
            KuabaSubsystem.resolver.resolveXmiId((RefObject) evt.getSource()),
            this.getNamePropertyValue((RefObject) evt.getSource()));
    Idea sourceDesignIdea =
        KuabaHelper.getAcceptedDesignIdea(
            sourceDomainIdea,
            (String) ((RefObject) evt.getSource()).refMetaObject().refGetValue("name"));

    askReferenceChangeArguments(
        d.getConcludes(),
        (Question)
            KuabaHelper.getReasoningElementInTree(sourceDesignIdea, evt.getPropertyName() + "?"),
        evt);

    // tirando as ideias de dominio extras
    if (sourceDesignIdea.getHasText().equals("AssociationEnd")) {
      sourceDomainIdea.listSuggests().next().remove();
      sourceDomainIdea.remove();
    }
  }