package candies_safe;

import java.util.concurrent.locks.ReentrantLock;

public class Prodavnica extends Thread {

	private Skladiste skladiste;
	private int slatkisa;
	//katanac po svakoj prodavnici
	private ReentrantLock lock=new ReentrantLock();

	public Prodavnica(Skladiste skladiste, int i) {
		this.skladiste = skladiste;
		this.slatkisa = 0;
	}

	@Override
	public void run() {
		while (true) {
			skladiste.prebaciUProdavnicu(this, 1000 - slatkisa);
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public void promeniStanje(int promena){
		//promenu stanja u prodavnici pokusavaju i ljudi i same prodavnice
		//tako da je bolje resenje bilo izvuci ovo kao zasebnu metodu
		//i onda je pozivati sa dve razlicite lokacije
		//(alternativno smo mogli da menjamo direktno sa dva mesta, ali bi onda morali da imamo 
		//istu referencu ka katancu)
		lock.lock();
		slatkisa+=promena;
		lock.unlock();
	}

	public void kupi(Covek covek, int br) {
		promeniStanje(-br);
		covek.slatkisa +=br;
	}
	
	public int getSlatkisa() {
		return slatkisa;
	}
}
