Project

General

Profile

Actions

Task #4785

closed

duplicate code

Added by Alexey Demakov over 10 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
Category:
-
Target version:
Start date:
03/24/2014
Due date:
% Done:

100%

Estimated time:
Detected in build:
svn
Published in build:
0.16.201

Description

requality\src\java\com\unitesk\requality\tools\RequalityCLI.java
содержит два практически одинаковых метода:

public static String getNextId(List<TreeNode> workList, TreeNode parent, String type, String defaultPrefix);

public static String getNextId(TreeNode parent, TreeNode parent2, String type, String defaultPrefix);

От второго можно избавиться следующим образом:

1. Сделать рефакторинг по перемене мест параметров parent <-> parent2 второго метода.

2. Изменить тип параметра workList на Iterable<TreeNode> - всё будет работать по-прежнему.

3. В класс TreeNode добавить поддержку итератора детей:

public class TreeNode implements Iterable<TreeNode> {
@Override
public Iterator<TreeNode> iterator() { return new ChildIterator(); }

public class ChildIterator implements Iterator&lt;TreeNode&gt;
{
private int index;
@Override
public boolean hasNext() {
return index < sizeChildren();
}
@Override
public TreeNode next() {
return getChild( index++ );
}
@Override
public void remove() {
removeChild( getChild( index ) );
}
}

4. Удалить второй метод. Теперь TreeNode parent2 - это Iterable<TreeNode> по children list, то есть будет вызываться первый метод и итерировать как раз детей.

Заодно и во всех других местах можно итерировать детей циклом

for( TreeNode child: parentTreeNode ) { ... }

NB: надо тестировать, я проверил только компилируемость


Related issues 3 (0 open3 closed)

Related to Requality - Bug #4602: Лишнее окно при Move и PasteClosed11/19/2013

Actions
Related to Requality - Bug #4604: После move у одного требования появляются два подтребования с одинаковым idClosed11/19/2013

Actions
Related to Requality - Feature #4608: Вид диалогового окна при перемещении и копировании узловClosedDenis Kildishev11/20/2013

Actions
Actions #1

Updated by Alexey Khoroshilov over 10 years ago

  • Target version set to 0.16
Actions #2

Updated by Denis Kildishev over 10 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100

Applied in changeset r3587.

Actions #3

Updated by Denis Kildishev over 10 years ago

  • Published in build set to 0.16.201
Actions #4

Updated by Alexey Khoroshilov almost 10 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF