Залип и не могу понять. Локально вроде не зацикливается и работает как надо.
package com.javarush.task.task27.task2712;
import com.javarush.task.task27.task2712.ad.Advertisement;
import com.javarush.task.task27.task2712.ad.AdvertisementManager;
import com.javarush.task.task27.task2712.ad.NoVideoAvailableException;
import com.javarush.task.task27.task2712.kitchen.Order;
import com.javarush.task.task27.task2712.kitchen.TestOrder;
import java.io.IOException;
import java.util.Observable;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Tablet /*extends Observable*/ {
public final int number;
public static java.util.logging.Logger logger = Logger.getLogger(Tablet.class.getName());
private LinkedBlockingQueue<Order> queue = null;
public void setQueue(LinkedBlockingQueue<Order> orderQueue) {
this.queue = orderQueue;
}
public Tablet(int tabletNumber) {
number = tabletNumber;
}
@Override
public String toString() {
return String.format("Tablet{number=%d}", number);
}
public void createOrder()
{
// setChanged();
try {
Order order = new Order(this);
initAdvertisement(order);
}
catch (IOException e)
{
logger.log(Level.SEVERE, "Console is unavailable.");
}
}
private void initAdvertisement(Order order) {
if (order.isEmpty())
return;
queue.add(order);
AdvertisementManager manager = new AdvertisementManager(order.getTotalCookingTime() * 60);
System.out.println(order.toString());
try {
manager.processVideos();
} catch (NoVideoAvailableException noVideoException) {
logger.log(Level.INFO, "No video is available for the order " + order);
}
// notifyObservers(order);
}
public void createTestOrder()
{
// setChanged();
try {
Order order = new TestOrder(this);
initAdvertisement(order);
}
catch (IOException e)
{
logger.log(Level.SEVERE, "Console is unavailable.");
}
}
}