コード例 #1
0
ファイル: TestProject.java プロジェクト: carvalhomb/tsmells
  /**
   * Test deleting an operation that contains a statechart diagram. The diagram should be deleted,
   * too.
   */
  public void testDeleteOperationWithStateDiagram() {
    Project p = ProjectManager.getManager().getCurrentProject();
    assertEquals(2, p.getDiagrams().size());

    int sizeMembers = p.getMembers().size();
    int sizeDiagrams = p.getDiagrams().size();

    // test with a class and class diagram
    Object package1 = Model.getModelManagementFactory().buildPackage("test1", null);
    Object aClass = Model.getCoreFactory().buildClass(package1);

    Collection propertyChangeListeners = p.findFigsForMember(aClass);
    Object model = p.getModel();
    Object voidType = p.findType("void");
    Object oper =
        Model.getCoreFactory().buildOperation(aClass, model, voidType, propertyChangeListeners);

    // try with Statediagram
    Object machine = Model.getStateMachinesFactory().buildStateMachine(oper);
    UMLStateDiagram d = new UMLStateDiagram(Model.getFacade().getNamespace(machine), machine);
    p.addMember(d);
    assertEquals(sizeDiagrams + 1, p.getDiagrams().size());
    assertEquals(sizeMembers + 1, p.getMembers().size());

    p.moveToTrash(oper);

    assertTrue("Operation not in trash", p.isInTrash(oper));
    assertTrue("Statemachine not in trash", Model.getUmlFactory().isRemoved(machine));
    assertEquals(sizeDiagrams, p.getDiagrams().size());
    assertEquals(sizeMembers, p.getMembers().size());
  }
コード例 #2
0
ファイル: TestProject.java プロジェクト: ckaestne/LEADT
  /**
   * Test deleting an operation that contains a statechart diagram. The diagram should be deleted,
   * too.
   */
  public void testDeleteOperationWithStateDiagram() {
    Project p = ProjectManager.getManager().getOpenProjects().get(0);
    assertEquals(2, p.getDiagramList().size());

    int sizeMembers = p.getMembers().size();
    int sizeDiagrams = p.getDiagramList().size();

    // test with a class and class diagram
    Object package1 = Model.getModelManagementFactory().buildPackage("test1");
    Object aClass = Model.getCoreFactory().buildClass(package1);

    Object voidType = p.getDefaultReturnType();
    Object oper = Model.getCoreFactory().buildOperation(aClass, voidType);

    // try with Statediagram
    Object machine = Model.getStateMachinesFactory().buildStateMachine(oper);
    UMLStateDiagram d = new UMLStateDiagram(Model.getFacade().getNamespace(machine), machine);
    p.addMember(d);
    assertEquals(sizeDiagrams + 1, p.getDiagramList().size());
    assertEquals(sizeMembers + 1, p.getMembers().size());

    p.moveToTrash(oper);
    Model.getPump().flushModelEvents();

    assertTrue("Operation not in trash", p.isInTrash(oper));
    /* Changed by issue 4281: */
    assertTrue("Statemachine in trash", !Model.getUmlFactory().isRemoved(machine));
    assertEquals(sizeDiagrams + 1, p.getDiagramList().size());
    assertEquals(sizeMembers + 1, p.getMembers().size());
    /* After issue 4284 will be solved, we
     * may even delete the class, and the diagram
     * should still exist. */
  }
コード例 #3
0
ファイル: TestProject.java プロジェクト: ckaestne/LEADT
  /**
   * Test deleting a package that contains a Class with Statechart diagram. The diagram should be
   * deleted, too.
   */
  public void testDeletePackageWithStateDiagram() {
    Project p = ProjectManager.getManager().getOpenProjects().get(0);
    assertEquals(2, p.getDiagramList().size());

    int sizeMembers = p.getMembers().size();
    int sizeDiagrams = p.getDiagramList().size();

    // test with a class and class diagram
    Object package1 = Model.getModelManagementFactory().buildPackage("test1");
    Object aClass = Model.getCoreFactory().buildClass(package1);

    // try with Statediagram
    Object machine = Model.getStateMachinesFactory().buildStateMachine(aClass);
    UMLStateDiagram d = new UMLStateDiagram(Model.getFacade().getNamespace(machine), machine);
    p.addMember(d);
    assertEquals(sizeDiagrams + 1, p.getDiagramList().size());
    assertEquals(sizeMembers + 1, p.getMembers().size());

    p.moveToTrash(package1);
    Model.getPump().flushModelEvents();

    assertTrue("Class not in trash", Model.getUmlFactory().isRemoved(aClass));
    assertTrue("Statemachine not in trash", Model.getUmlFactory().isRemoved(machine));
    assertEquals(sizeDiagrams, p.getDiagramList().size());
    assertEquals(sizeMembers, p.getMembers().size());
  }
コード例 #4
0
 /** @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */
 public void actionPerformed(ActionEvent e) {
   super.actionPerformed(e);
   // #if defined(STATEDIAGRAM) or defined(ACTIVITYDIAGRAM)
   // @#$LPS-STATEDIAGRAM:GranularityType:Statement
   // @#$LPS-ACTIVITYDIAGRAM:GranularityType:Statement
   // @#$LPS-STATEDIAGRAM:Localization:EndMethod
   // @#$LPS-ACTIVITYDIAGRAM:Localization:EndMethod
   Model.getStateMachinesFactory().buildSubmachineState(getTarget());
   // #endif
 }
コード例 #5
0
ファイル: TestProject.java プロジェクト: carvalhomb/tsmells
  /** Test deleting a statechart diagram directly. */
  public void testDeleteStateDiagram() {
    Project p = ProjectManager.getManager().getCurrentProject();
    assertEquals(2, p.getDiagrams().size());

    int sizeMembers = p.getMembers().size();
    int sizeDiagrams = p.getDiagrams().size();

    // test with a class and class diagram
    Object package1 = Model.getModelManagementFactory().buildPackage("test1", null);
    Object aClass = Model.getCoreFactory().buildClass(package1);

    // try with Statediagram
    Object machine = Model.getStateMachinesFactory().buildStateMachine(aClass);
    UMLStateDiagram d = new UMLStateDiagram(Model.getFacade().getNamespace(machine), machine);
    p.addMember(d);
    assertEquals(sizeDiagrams + 1, p.getDiagrams().size());
    assertEquals(sizeMembers + 1, p.getMembers().size());
    p.moveToTrash(d);
    assertTrue("Statediagram not in trash", p.isInTrash(d));
    assertEquals(sizeDiagrams, p.getDiagrams().size());
    assertEquals(sizeMembers, p.getMembers().size());
  }
コード例 #6
0
 /*
  * @see org.argouml.uml.ui.behavior.state_machines.ActionNewEvent#createEvent(
  *         java.lang.Object)
  */
 protected Object createEvent(Object ns) {
   return Model.getStateMachinesFactory().buildChangeEvent(ns);
 }
コード例 #7
0
  /**
   * Parse user input for state bodies and assign the individual lines to according actions or
   * transitions. The user input consists of multiple lines like:
   *
   * <pre>
   *   action-label / action-expression
   * </pre>
   *
   * or the format of a regular transition - see parseTransition().
   *
   * <p>"action-label" stands for one of "entry", "do" and "exit". The words "entry", "do" and
   * "exit" are case-independent.
   *
   * @param st The State object.
   * @param s The string to parse.
   * @throws ParseException when there is a syntax problem, e.g. non-matching brackets () or []
   */
  protected void parseStateBody(Object st, String s) throws ParseException {
    boolean foundEntry = false;
    boolean foundExit = false;
    boolean foundDo = false;

    /* Generate all the existing internal transitions,
     * so that we can compare them as text with the newly entered ones.
     */
    ModelElementInfoList internalsInfo =
        new ModelElementInfoList(Model.getFacade().getInternalTransitions(st));

    StringTokenizer lines = new StringTokenizer(s, "\n\r");
    while (lines.hasMoreTokens()) {
      String line = lines.nextToken().trim();
      /* Now let's check if the new line is already present in
       * the old list of internal transitions; if it is, then
       * mark the old one to be retained (i.e. do not create a new one),
       * if it isn't, continue with parsing:
       */
      if (!internalsInfo.checkRetain(line)) {
        if (line.toLowerCase().startsWith("entry") && line.substring(5).trim().startsWith("/")) {
          parseStateEntryAction(st, line);
          foundEntry = true;
        } else if (line.toLowerCase().startsWith("exit")
            && line.substring(4).trim().startsWith("/")) {
          parseStateExitAction(st, line);
          foundExit = true;
        } else if (line.toLowerCase().startsWith("do")
            && line.substring(2).trim().startsWith("/")) {
          parseStateDoAction(st, line);
          foundDo = true;
        } else {
          Object t = Model.getStateMachinesFactory().buildInternalTransition(st);
          if (t == null) {
            continue;
          }
          /* TODO: If the next line trows an exception, then what
           * do we do with the remainder of the
           * parsed/to be parsed lines?
           */
          /* TODO: Is this a good way of handling nested notation?
           * The following fails the tests:
           * new TransitionNotationUml(t).parse(line);
           */
          new TransitionNotationUml(t).parseTransition(t, line);
          /* Add this new one, and mark it to be retained: */
          internalsInfo.add(t, true);
        }
      }
    }

    if (!foundEntry) {
      delete(Model.getFacade().getEntry(st));
    }
    if (!foundExit) {
      delete(Model.getFacade().getExit(st));
    }
    if (!foundDo) {
      delete(Model.getFacade().getDoActivity(st));
    }

    /* Process the final list of internal transitions,
     * and hook it to the state:
     */
    Model.getStateMachinesHelper().setInternalTransitions(st, internalsInfo.finalisedList());
  }