Hlavní menu

Nástroje

WebKiv / ImplementacniKonvence

View (print) - Edit page | Recent changes - Page history

Updated 11 February 2010, 13:38 by PremekBrada

Pravidla pro psaní zdrojových textů v projektu RedSys:

  • používat @author na třídách které přidávají či editují
  • tabulátory konvertovat na mezery, odsazování o dvě mezery
  • dodržovat obecně platné konvence psaní kódu v Javě, pouze rozhraní stylem IMojeRozhrani?
  • standardní hlavička zdrojových souborů, viz níže
/**
 * Web KIV modul NNNN.
 *
 * Copyright (c) 2007-2010 Department of Computer Science,
 * University of West Bohemia, Pilsen, CZ
 *
 * This software and this file is available under the Creative Commons
 * Attribution-Noncommercial-Share Alike license.  You may obtain a copy
 * of the License at   http://creativecommons.org/licenses/   .
 *
 * This software is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied.  See the License
 * for the specific language governing permissions and limitations.
 */ 

Struktura adresářů v Subversion

TBD dopsat (trunk/tags/branches samozřejmě, v trunk/ potom module/, frontend/ a build/, pod module/ std struktura viz níže, pod build/ jsou vyexportovaná .zip hotových modulů)

Viz https://forge.kiv.zcu.cz/bugs/index.php?do=details&task_id=1057 .

Moduly a aplikace v OpenCms

Struktura modulu

Držet se OpenCms konvencí
Podadresáře resources, pages, lib, classes atd. (viz třeba org.opencms.frontend.photoalbum nebo org.opencms.frontend.layoutpage).
  • pro vývoj: na lokálním opencms může být do modulu zařazen i adresář src/ apod, ale v pravidlech exportu modulu musí být že se exportují (tj. do vybuildovaného modulu uloží) pouze relevantní adresáře dle opencms konvencí
Název
Musí mít ve VFS předponu cz.zcu.kiv následovanou inteligentním jménem modulu.
JSP stránky
V adresáři pages (ne v templates, aby se nevypisovaly v seznamu šablon při zakládání libovolné HTML stránky)
Properties soubory (resource bundles)
Ukládány do adresáře classes modulu. Používat názvy module.properties pro základní nastavení, l10n.properties pro L10N? hlášky, atd dle stejného mustru (xyz.properties pro oblast nastavení XYZ).

Aplikační JSP stránky

Název
Buďto (preferovaná varianta) .../adresar/seznam.jsp resp. .../detail.jsp resp. .../edit.jsp (např. .../osoby/seznam.jsp, nebo případně (nouzová varianta když je víc editačních apod. v jednom adresáři) .../adresar/funkce-edit.jsp (např. .../osoby/kategorie-edit.jsp) -- tedy nikoli funkceEdit.jsp nebo editFunkce.jsp nebo funkce_edit.jsp a podobně.
Vazba na modul
Přes <cms:include> příslušné modulové JSP stránky
Výkonný kód (scriptlety)
CO NEJMÉNĚ, používat JSTL a POJO. Zejména nezpracovávát výjimky - to musí udělat aplikační objekty, a nastavit request atribut který řekne "byly chyby" a který JSP otestuje a chyby zobrazí.
URL zobrazovaných stránek
Pozor na to, že na beta.kiv.zcu.cz a www.kiv.zcu.cz je díky předsazenému proxy serveru odstraněn URL prefix /opencms/opencms. Proto je třeba mít tento prefix možnost snadno odstranit v JSP a Java kódu při přenosu z lokální vývojového prostředí na provozní servery. Zejména důležité u form action handlerů.

Výkonný kód

V JSP stránkách
CO NEJMÉNĚ, snažit se využít POJO a JSTL pro JSP stránky. Vlastní značky (taglib) vytvářet jen v odůvodněných případech a po schválení vedením projektu.
Zdrojové Java třídy
Musí být dobře pojmenovaném v balíku (dle názvu modulu do kterého patří) umístěném pod cz.zcu.kiv.opencms.
Přístup do DB
Používat Spring JDBC, třídy v balíku pod cz.zcu.kiv.db, podle ArchitekturaDaoVrstvy.
Zachytávání výjimek
Ve všech XyzFormHandler? mít catch (Exception e) na konci try-catch bloku, aby nevyhřezlo klientovi 500 Service unavailable při obecné (např. SQL) výjimce.

Lokalizace (L10N?)

Používá se standardní přístup s resource bundles (viz Java Internationalization: An Overview a Localization with ResourceBundles).

Kam L10N? řetězce
(1) Využívat možností OpenCms (properties VFS objektu, jazykové mutace XML strukturovaných dat), (2) používat standardní konvence. Pro JSP použít <c:if> nebo <c:switch> -- pokud je v JSP málo textů závislých na jazyce -- nebo .properties lokalizační bundly v modulu, primárně pokud jsou to texty které jdou do template.
Podoba klíčů v resource bundles
Používat prefixy label pro popisky, url a email pro adresy (např. label.kiv.abbr = KIV nebo url.image.logo = ../resources/logo-kiv.png).
Editační JSP stránky
Pro vlastní KIV aplikace budou vždy pouze v CZ (prezentační stránky jsou česky a/nebo anglicky).
Jak se zjistí aktuální locale
TBD

Příklad použití v JSP stránce:

<% request.setAttribute("locale", request.getLocale()); %>
<fmt:setLocale value="${locale}" />
<fmt:bundle basename="cz/zcu/kiv/produkty/produkty">
<h1><fmt:message key="produkty.seznam" /></h1>

Zabezpečení, autentikace a autorizace

Celková bezpečnost
Viz typy útoků na webové aplikace a jak jim předcházet
Autentikace
(ověření jména/hesla) Zatím (3/2008) přes OpenCms, v budoucnu přes Kerberos (viz ZabezpecenePrihlaseni).
Autorizace
(kdo kam může) Řešit prostředky OpenCms (Permissions na VFS objektu) nikoli v aplikační logice.
Zjištění aktuálně přihlášeného uživatele
Pro potřeby JSP aplikačních stránek - TBD.

Zpět na PravidlaProVyvojare