package ru.job4j.tracker;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * Class Tracker реализует сущность Трэкер заявок.
 *
 * @author Goureev Ilya (mailto:ill-jah@yandex.ru)
 * @version 4
 * @since 2017-04-18
 */
public class Tracker {
    /**
     * Массив заявок.
     */
    private ArrayList<Item> items;
    /**
     * Идентификатор заявки.
     */
    private int id;
    /**
     * Ёмкость массива заявок.
     */
    private int capacity;
    /**
     * Конструктор без параметров.
     */
    public Tracker() {
        this.id = 1;
        this.items = new ArrayList<>();
    }
    /**
     * Добавляет заявку.
     * @param item заявка.
     * @return добавленная заявка.
     */
    public Item add(Item item) {
        this.items.add(item);
        return item;
    }
    /**
     * Обновляет заявку.
     * @param uItem заявка.
     */
    public void update(Item uItem) {
        Iterator iter = this.items.iterator();
        while (iter.hasNext()) {
            Item item = (Item) iter.next();
            if (item.getId().equals(uItem.getId())) {
                item = uItem;
                break;
            }
        }
    }
    /**
     * Ищет заявку по идентификатору.
     * @param id идентификатор заявки.
     * @return найденный или пустой объект заявки.
     */
    public Item findById(String id) {
        Item uItem = new Item();
        Iterator iter = this.items.iterator();
        while (iter.hasNext()) {
            Item item = (Item) iter.next();
            if (id.equals(item.getId())) {
                uItem = item;
                break;
            }
        }
        return uItem;
    }
    /**
     * Ищет заявку по имени.
     * @param name имя заявки.
     * @return массив найденных заявок или пустой массив.
     */
    public Item[] findByName(String name) {
        ArrayList<Item> found = new ArrayList<>();
        Iterator iter = this.items.iterator();
        while (iter.hasNext()) {
            Item item = (Item) iter.next();
            if (name.equals(item.getName())) {
                found.add(item);
            }
        }
        return found.toArray(new Item[found.size()]);
    }
    /**
     * Удаляет заявку по идентификатору.
     * @param id идентификатор заявки.
     * @return true если заявка удалена, иначе false.
     */
    public boolean delete(String id) {
        boolean deleted = false;
        Iterator iter = this.items.iterator();
        while (iter.hasNext()) {
            Item item = (Item) iter.next();
            if (id.equals(item.getId())) {
                iter.remove();
                deleted = true;
                break;
            }
        }
        return deleted;
    }
    /**
     * Получает все заявки.
     * @return массив заявок.
     */
    public Item[] getAll() {
        return this.items.toArray(new Item[this.items.size()]);
    }
    /**
     * Получает количество заявок.
     * @return количество заявок.
     */
    public int getQuantity() {
        return this.items.size();
    }
    /**
     * Генерирует идентификатор заявки.
     * @return идентификатор.
     */
    public String generateId() {
        return String.valueOf(this.id++);
    }
}

@@ -158,12 +158,12 @@
 or G
-o
 ure
+y
 ev I
@@ -206,17 +206,17 @@
 version 
-4
+5
 %0D%0A * @si
@@ -948,39 +948,40 @@
  %7B%0D%0A        
-Iterator
+for (Item
  ite
-r =
+m :
  this.items.
@@ -983,99 +983,11 @@
 tems
-.iterator();%0D%0A        while (iter.hasNext()) %7B%0D%0A            Item item = (Item) iter.next();
+) %7B
 %0D%0A  
@@ -1357,32 +1357,38 @@
         Iterator
+%3CItem%3E
  iter = this.ite
@@ -1452,39 +1452,32 @@
      Item item =
- (Item)
  iter.next();%0D%0A 
@@ -1874,32 +1874,38 @@
         Iterator
+%3CItem%3E
  iter = this.ite
@@ -1969,39 +1969,32 @@
      Item item =
- (Item)
  iter.next();%0D%0A 
@@ -2407,16 +2407,22 @@
 Iterator
+%3CItem%3E
  iter = 
@@ -2506,15 +2506,8 @@
 em =
- (Item)
  ite

task 10039. junior.pack1.p5.ch2.task2.3 v2