# XBUP - Podpora: Katalogová služba

### Úvod

Tento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje ...

O úroveň výše

### Obsah

1. Katalogová služba
1.1. Případy použití
2. Implementace katalogové služby
2.1. Implementace nad Java EE5
2.1.1. Použitá struktura databáze
2.2. Implementace nad PHP
2.2.1. Použitá struktura databáze
2.2.2. Rozhraní služby

### 1. Katalogová služba

V tomto dokumentu se můžete dozvědět o implementace katalogové služby. Cílem je umožnit centralizovanou aktualizaci lokálních katalogů klientských programů.

Katalogová služba poskytuje specifikace bloků, skupin bloků a formátů protokolu XBUP (aktuálně úroveň 1). Udržuje o nich informaci o vlastníkovi a umožňuje editaci položek a struktury. Klientská aplikace bude mít k dispozici lokální katalog a bude jej moci pomocí webové služby aktualizovat dle potřeby. Dle tohoto katalogu pak bude validovat vstupní dokumenty a případně je i zobrazovat v textovém tvaru.

Cílem je návrh a implementace katalogů typů bloků a skupin:

- katalog se stromovou strukturou (obdoba MIB)
- webová služba zpřístupnění katalogu
- webové rozhraní s autentizací a možností registrace a úpravy části katalogu
- klientská aplikace s lokálním katalogem a přístupem k webové službě dle potřeby

Se strukturou katalogu:

- katalog bloků s verzováním, uváděným rozsahem atributů a popisem významu
- katalog skupin bloků s popisem, seznamem bloků a jejich verzemi
- katalog definic dokumentů s popisem, seznamem skupin
- popis může být ve více jazycích
- součástí popisu je ikona
- přesnější struktura bude upřesněna

Základní schéma:

Upřesnění schématu služby:

### 1.1. Případy použití

Webová služba bude použita pro následující případy použití (Use Cases):

Klientská aplikace:

- Načtení souboru a zobrazení stromové struktury
- Načtení formátu dokumentu a povolených rozsahů typů
- Zobrazení informací o položkách (blocích)

Webová služba:

- Operace uživatele:
  - Vypsání definovaných formátů, skupin, bloků a atributů a jejich provázání
  - Vypsání vlastníků položek
- Operace vlastníka položky (zahrnuje operace uživatele):
  - Úprava položek
  - Vytváření a mazání položek a podpoložek
  - Manipulace s propojováním
  - Předání vlastnictví
- Operace správce (zahrnuje operace vlastníka položky):
  - Změna vlastníka
  - Změna pozice položky

### 2. Implementace katalogové služby

Tato kapitola obsahuje popis jednotlivých implementací katalogové služby. Pro testovací účely bylo vytvořeno několik implementací podle dostupnosti potřebných prostředků.

### 2.1. Implementace nad Java EE5

Služba byla implementována jako týmový projekt do předmětu PA165 na půdě Fakulty informatiky Masarykovy univerzity. K řešení byla použita Java EE5 s použitím EJB a Java Persistence API ve vývojovém prostředí NetBeans 5.5 s rozšířením Visual Web Pack 5.5. Aplikace běžela na serveru Sun Java System Application Server 9.0 (GlassFish). Implementace je dostupná ke stažení jako verze WR-13.

### 2.1.1. Použitá struktura databáze

Katalog použitý v této implementaci katalogové služby měl následující strukturu:

### 2.2. Implementace nad PHP

Z důvodu nedostupnosti serveru, kde by bylo možno pustit potřebný webový kontajner pro javovou verzi, byla vytvořena alternativní verze v PHP. Jde pouze o velmi jednoduchou alternativu, která je dostupná na webových stránkách projektu.

### 2.2.1. Použitá struktura databáze

Katalog použitý v této implementaci katalogové služby měl následující strukturu:

### 2.2.2. Rozhraní služby

Služba používá pro vzdálené volání funkcí HTTP protokol. Parametry a výsledek jsou ve verzi WR-14 předávány následujícím způsobem:

Je volán soubor wr14-0.php, který akceptuje parametry:

- op - typ operace
- path - cesta k prvku ve formátu textového řetězce sekvence XBIndexů oddělené znaky "/"
- id, spec, dtype, parent - číselné parametry id prvku, případně typu hodnoty

Jako výsledek je vrácen textový soubor, kde je vrácena posloupnost názvů proměnných a hodnot oddělených konci řádků.

Následuje popis jednotlivých funkcí (podle parametru op):

- getnode (path) : id, xbindex, xblimit
  Pro zadanou cestu vrací především index prvku v databázi
- getspec (path, spec, dtype) : id, xbindex, xblimit
  Pro zadanou cestu vrací specifikaci daného xbindexu (spec) a typu (dtype):
  0 - format
  1 - skupina
  2 - blok
- getbind (origin, xbindex) : id, target
  Pro dané id specifikace a xbindex vrací odpovídající bind
- getnodepath (node) : path
  Pro dané id (node) vrací odpovídající řetězec cesty
- getlang (code) : id, caption
  Pro dany kód jazyka (code) vrací informace o jazyku
- getname (id, lang) : id, text
  Pro danou položku a jazyk vrací text rozšíření Name
- getdesc (id, lang) : id, text
  Pro danou položku a jazyk vrací text rozšíření Desc
- getcomm (id, lang) : id, text
  Pro danou položku a jazyk vrací text rozšíření Comm

Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2007-05-30