EdeeShop · Implementace

Profil katalogu

Upraveno

Pomocí profilu lze určovat specifické chování pro daný katalog. Aktuálně lze ovlivnit například:

  • zobrazení hlavního menu v AR,
  • zobrazení statistiky objednávek na dashboardu v AR,
  • publikace katalogu.

Základní profily

V jádru EdeeShop modulu jsou definovány tyto tři profily: base (výchozí), origin, alias.

Profil base

Tento profil nemá žádná specifika a v podstatě nijak neovlivňuje chování systému. Profil je vhodný pro jedno-katalogová řešení (tedy bez použití aliasů).

Jedná se o výchozí profil, který je použitý v případě, že není konfiguračně určen jiný profil.

Profil origin

Tento profil je vhodný pro "katalog produktových předloh", více zde.

Tedy profil se hodí pro více-katalogová řešení, kde je jeden katalog určený pro sdílenou správu produktů a souvisejících dat, zatímco jiné katalogy (s profilem nebo i bez profilu 'alias') jsou určeny pro frontendovou část.

Pro katalog s tímto profilem se pak například v menu nezobrazují položky pro objednávky, benefity apod. V tomto katalogu také neprobíhá publikace dat, protože takový katalog nemá frontendovou část.

Profil alias

Tento profil doplňuje předchozí profil origin a je vhodný pro katalogy, které mají frontendovou část.

Pro katalog s tímto profilem se pak v menu nezobrazují položky, které pro "alias" katalog nedávají smysl, např. definice skladů.

Pro katalogy s tímto profilem se také nezakládají automaticky sklady (pro ostatní profily katalogů se automaticky založí sklad pokud žádný neexistuje).

Vytvoření vlastního profilu

EdeeShop umožňuje definovat vlastní profily. Pro registraci nového profilu slouží metoda CatalogFeature#registerCatalogProfile(java.lang.String).

Chování všech profilů se následně specifikuje při startu jednotlivých feature, konkrétně v metodě AbstractBaseEdeeShopFeature#initCatalogProfiles.

Rozšíření vlastností profilu

Objekt profilu lze dynamicky rozšiřovat o další vlastnosti pomocí traitů (interface rozšiřující com.fg.eshop.catalog.model.CatalogProfile).

Trait se registruje pomocí metody CatalogProfile#registerTrait.

Příklad:

java
public interface WithOrderProfile extends CatalogProfile {	boolean isOrderTreeNodeHidden();	void setOrderTreeNodeHidden(boolean hidden);}
CatalogProfile.registerTrait(WithOrderProfile.class);

Konkrétní profil je následně možné načíst pomocí metody com.fg.cps.eshop.catalogEntity.CatalogFeature#getCatalogProfile, kde na vstupu metody je kód profilu a trait, ve kterém chceme profile získat.

Načtení kódu profilu pro konkrétní katalog je možné pomocí metody com.fg.cps.eshop.catalogEntity.model.Catalog.getProfile().