#include <map>
#include <string>
#include <vector>
using std::map;
using std::vector;
using std::string;
typedef map<string,string> Podatak;
class BazaPodataka
{
public:
// Čitanje jednog podatka iz baze podataka
static bool ProcitajPodatak( int id, Podatak& x, string& tip )
{
vector<int> povezani;
return ProcitajSve( id, x, tip, povezani );
}
// Čitanje niza rednih brojeva povezanih podataka iz baze podataka
static void ProcitajPovezane( int id, vector<int>& povezani )
{
Podatak x;
string tip;
ProcitajSve( id, x, tip, povezani );
}
private:
// Čitanje svih informacijao podatku iz baze podataka
static bool ProcitajSve( int id, Podatak& x, string& tip, vector<int>& pov )
{
// Statički podaci kojima simuliramo sadržaj baze podataka
static map<int,Podatak> podaci;
static map<int,vector<int> > povezani;
static map<int,string> tipovi;
// Podatke inicijalizujemo samo prvi put
if( podaci.empty() ){
{ Podatak p;
p["id"] = "42";
p["naslov"] = "Lav";
p["tekst"] = "Lav (Leo ili Panthera leo) je velika snažna mačka iz porodice Felidae, druga po veličini od velikih mačaka (posle tigra). ...";
p["autor"] = "Pera Perić ";
podaci[42] = p;
povezani[42].push_back( 46 );
povezani[42].push_back( 47 );
povezani[42].push_back( 48 );
povezani[42].push_back( 73 );
tipovi[42] = "tekst";
}{
Podatak p;
p["id"] = "47";
p["naslov"] = "Lav";
p["slika"] = "...binarni zapis slike...";
p["sirina"] = "1024";
p["visina"] = "768";
p["napomena"] = "Odrasli primerak mužjaka u prirodnom okruženju.";
p["autor"] = "Fotko Fotkić";
podaci[47] = p;
povezani[47].push_back( 42 );
povezani[47].push_back( 46 );
povezani[47].push_back( 48 );
tipovi[47] = "slika";
}{
Podatak p;
p["id"] = "46";
p["naslov"] = "Urlik lava";
p["zvuk"] = "...binarni zapis zvuka...";
p["trajanje"] = "3764,45";
p["napomena"] = "Upozoravajući urlik lava spremnog da brani svoju teritoriju.";
p["autor"] = "Sima Snimić";
podaci[46] = p;
povezani[46].push_back( 42 );
povezani[46].push_back( 47 );
povezani[46].push_back( 48 );
tipovi[46] = "zvuk";
}{
Podatak p;
p["id"] = "48";
p["naslov"] = "Lav u lovu";
p["film"] = "...binarni zapis filma...";
p["sirina"] = "640";
p["visina"] = "400";
p["trajanje"] = "124,75";
p["napomena"] =
"Lavica lovi antilopu. Obratite pažnju na pomoć "
"koju joj pružaju ostali lavovi onemogućavajući "
"antilopi bekstvo.";
p["autor"] = "Žika Žikić";
podaci[48] = p;
povezani[48].push_back( 42 );
povezani[48].push_back( 46 );
povezani[48].push_back( 47 );
tipovi[48] = "film";
}{
Podatak p;
p["id"] = "73";
p["naslov"] = "Tigar";
p["tekst"] = "...neki tekst o tigru...";
p["autor"] = "Žika Žikić";
podaci[73] = p;
povezani[73].push_back( 42 );
tipovi[73] = "tekst";
}
}
// Izračunavamo tražene podatke
x = podaci[id];
tip = tipovi[id];
pov = povezani[id];
return !tip.empty();
}
};