---------------------------------------------------------------------------------------------------
					ARCHI CLARIN
					(opis software)
					FORMULARZ READ
---------------------------------------------------------------------------------------------------


----------------------------------------- zasadniczy ---------------------------------------------
---------------------------------------------------------------------------------------------------
					   parser
---------------------------------------------------------------------------------------------------

parser funkcja 1
------> srawdzenie dugosci przekazywane stringu:
	PA=123456&ID=1234567&CH=000000&DY=12&MH=12&YE=1234&NF=123456789012&WA=00
		if (strlen(input)!=72) print_error(nie dobra dlugosc stringu)

	------------------------ znacznie danych w strunu input---------------------------- 
	PA= <ACHI-PIN> 	6 chars [0..9,a..z,A..Z] - cyfry, litery male i duze
	ID= <clientID> 	7 chars [0..9] smane cyfry
	CH= <Check-Key>	6 chars [0..9,a..z,A..Z] tak samo jak w przypadku <ARCHI-PIN>
	DY= <DAY> 	2 chars [0..9] np. 05,29 itd. numer dnia
	MH= <MONTH>  	2 chars [0..9] np. 08,12 itp. numer miesiaca
	YE= <YEAR>	4 chars [0..9] np 2014, 2015 rok
	NF= <filename>	12 chars [0..9] tylko cyfry nazwa pliku w ARCHI [YearMonthDAYxxxx]
	WA=<priority>	2 chars 00 - normal priority, 01 -high pririty
	-----------------------------------------------------------------------------------

parser funkcja 1
-----> sprawdza czy sa wlasciwe kody PA=, ID= itd. 

parser funkcja 3
-----> spradzenie czy substringi ID,DY,MH,YE,NF,WA zawieraja same cyfry
		(!=) print_error(niewlasciwe dane zostaly przekazane


---------------------------------------------------------------------------------------------------
				sprawdzenienie ID & ARCHI-PIN (passwd)
---------------------------------------------------------------------------------------------------
basic funkcja 1
------> pobiera ID i PIN
	sprawdzenie ID 
	jesli nie pasuja  - print_error(bledny pin i ID)
	sprawdza ID w 3trays.adm jesli byly bledy to print_error(jestes zablokowany)
	- jesli ID jest ok. a pin niedobry to dopisuje do pliku 3trays.adm

basic funkcja 2
------> sprawdza poprawnosc daty
		jak za stara to print_error(date is in the past)
		jak wiecej niz ustawiony limit to (max 12 miesiecy) to print(limit date<12 months)
		uwaga rok przestepny jest uwzgledniony

basic funkcja 3
-----> sprawdza nazwe pliku tzn. czy plik istnieje i pobiera dane z .SM
		jesli pliku nie ma to print_error(nie ma takiego pliku)

basic funkcja 4	
-----> jesli HP zostalo ustawione to sprawdza czy klient znajduje sie w pliku priority.adm
		jesli nie to print_error(nie masz prawa do zamowienia H-P
		jeli klient jest ma prawo HP to sprawdza czy plik ma rozmiar <1GB
			jesli plik jest wiekszy to print_error(plik jest za duzy do przkazu HP)

-------------------------------------KONIEC BASIC TEST --------------------------------------------


---------------------------------------------------------------------------------------------------
				sprawdzenie flag Check-key i GROUP (flaga PRIVATE)
---------------------------------------------------------------------------------------------------
nie sprawdza jesli flaga udostepniania jest PUBLIC

basic funkcja 1
-----> jesli plik ma flage PRIVATE 
	- sprawdza czy  clientID znajduje sie w pliku ALL.grp (od linii 2 - OWNER)
	- jesli nie ma clinetID ALL.grp sprawdza czy plik ma obraz .grp i czy jest w nim clientID
	 	jesli nie to print_error(wlasciciel nie usostepnil tego pliku dla ciebie)

funkcja 2 
-----> jesli ustawona jest flaga CONFIDENTIAL
	- spradza czy clientID znajduje sie na liscie onekey.adm
		jesli nie to nie print_error(nie masz prawa do pobierania tego pliku)
	- spradza czy clientID znajduje sie w spisie [nazwa zasobu].cnf
		jesli nie to print_error(nie masz prawa do pobierania tego pliku)


-------------------------------------------- REALIZACJA ------------------------------------------


//0. parser+clientID+passwd t.j. ARCHI-PIN
//1. sprawdza czy jest metryczka
//2. pobiera dane z metryczki 
//4. Sprawdza czy plik jest CONFIDENTIAL
//5.  if yes --> Sprawdza czy clientID ma wazna (t.j. ALLOWED) rejestracje w onekey.adm
//6.  if yes --> Sprawdza czy clientID ma prawo pbrania pliku w [filename].cnf
//7. Sprawdza czy plik jest PRIVATE (Check-Key) ma byc ustawiony na 000000, ale tego nie sprawdza bo parser to wywali)
//8.  if yes --> sprawdza czy clientID jest OWNER
//9.  if yes --> sprawdza czt clientID jest ALL.grp, jak nie to czy jest w prywatnej [filename].grp
//10. sprawdza czy plik jes public 
//11. ustawia flage - zdolny do pobrania pliku
//12. sprawdza techniczna dostepnosc pliku (z glownego lub kopie) (lista EXLUDED)//przenisone
	//do porzadkowania kolejki
//13. pobiera dane z MT i tr.
//14 zapisuje dane do na stos kolejki zlecen 






