Project

General

Profile

Task #4785

duplicate code

Added by Alexey Demakov almost 6 years ago. Updated about 5 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

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: Вид диалогового окна при перемещении и копировании узловClosed11/20/2013

Actions

Associated revisions

Revision 3587 (diff)
Added by Denis Kildishev over 5 years ago

fixes: #4785; remove duplicated method, adds iterator

Revision 84beae7f (diff)
Added by Denis Kildishev over 5 years ago

fixes: #4785; remove duplicated method, adds iterator

git-svn-id: https://forge.ispras.ru/svn/reqdb/trunk/requality@3587 f558eac1-05b1-4da7-9ed5-5050e8a619d6

Revision 3587 (diff)
Added by Denis Kildishev over 5 years ago

fixes: #4785; remove duplicated method, adds iterator

History

#1

Updated by Alexey Khoroshilov almost 6 years ago

  • Target version set to 0.16
#2

Updated by Denis Kildishev over 5 years ago

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

Applied in changeset r3587.

#3

Updated by Denis Kildishev over 5 years ago

  • Published in build set to 0.16.201
#4

Updated by Alexey Khoroshilov about 5 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF