#include "biblioteka.h"
#include "polica.h"
Biblioteka::Biblioteka(const char* naziv,
			const int& brPolica, const double& duzina) :
				brPol(brPolica), p(brPolica) {
	naz = new char[strlen(naziv) + 1];
	strcpy(naz, naziv);
	for (int i = 0; i < brPol; i++)
		p += new Polica(i + 1, duzina);
}
Biblioteka& Biblioteka::nabavi(int brPrimeraka, Delo& d) {
	int i = 0;
	while (brPrimeraka && i < p.getBrPod()) {
		try {
			*p[i] += d.kopija();
			brPrimeraka--;
		}
		catch (Greska&) {
			i++;
		}
	}
	if (brPrimeraka > 0)
		throw GPunaB();
	return *this;
}

PromNiz<Delo *, 1> Biblioteka::delaAutora(const char* autor) {
	PromNiz<Delo *, 1> dela(1);
	for (int i = 0; i < brPol; i++)
		dela += p[i]->delaAutora(autor);
	return dela;
}

Delo* Biblioteka::operator () (const int& i) {
	for (int j = 0; j < brPol; j++) {
		try {
			Delo* d = (*p[j])(i);
			return d;
		}
		catch (Greska&) {
			continue;
		}
	}
	throw GNemaDela();
}

Biblioteka& Biblioteka::operator += (Delo* d) {
	for (int i = 0; i < brPol; i++)
		try {
		*p[i] += d;
		return *this;
	}
	catch (Greska) {
		continue;
	}
	throw GPunaB();
}

ostream& operator << (ostream& it, Biblioteka& b) {
	it << "Biblioteka: " << b.naz << endl;
	for (int i = 0; i < b.brPol; i++) {
		it << b[i];
		if (i && !((i + 1) % 5) || i == b.brPol - 1) {
			cout << "ENTER za nastavak"; cin.get();
		}
	}
	return it;
}