domenica 20 settembre 2009

un cms semplice semplice con jsf-facelets

Dopo anni di sviluppo in PHP, è arrivato il momento di fare siti web in giava.
Molto leggeri, senza usare tutto j2ee, limitandosi a JPA+JSF+GUICE.
Scelta obbligata dai pochi mezzi a disposizione, usare tomcat invece del caro jboss.
L'idea è questa:
  1. si crea una applicazione di management (che gestisce css, templates e pagine) che verrà clonata ogni volta con tutte le funzioni di gestione.
  2. ed una applicazione web che verrà popolata da quella di management, ed inzialmente conterrà soltanto i files base:
    cartella WEB-INF con files di configurazione generici,
    prettyfaces per rewrite-url nativo
    librerie guice-jsf -primefaces/richfaces
Problematiche da gestire:
  1. creazione al volo pagine xhtml partendo dai templates e gestire i contenuti in esse tramite textarea avanzate (stile tinymce)
  2. aggiungere moduli standard per i comuni siti web: news/gallerie di foto/google maps nella pagina contatti/forum
  3. creazione al volo di componenti facelets (come tag per lista news o tag per singola news) da riutilizzare tra i contenuti html inseriti mediante tinymce
Progetti di partenza:
  1. per la gestione templates: http://code.google.com/p/prime-flowers/source/browse/#svn/trunk/simpleCMSgenerator
  2. per i contentuti del sito web in jsf_facelets_jpa: http://code.google.com/p/prime-flowers/source/browse/#svn/trunk/ZetaWeb
Tecnologie da approfondire:
  1. prettyfaces per rewrite_uri: l'uso minimale in ZetaWeb, mostra com'è possibile automatizzare la navigazione tra pagine
    - il cui path reale è in una cartella fissa (es: pages),
    - il cui url completo è www.appname.com/pages/nomePagina.xhtml
    - il cui jsf url è www.appname.com/pages/nomePagina.jsf
    - l'alias www.appname.com/nomePagina

  2. uso di Dynamic Finders (interfacce che contengono query jpa-senza scrivere implementazione): http://www.wideplay.com/dynamicfinders
  3. uso di Custom Units of Work (http://www.wideplay.com/transactionsemantics ) per il caricamento delle lazy collection in jpa in contesti transazionali + lunghi della semplice request.
Accetasi aiuti + o - volontari....

se proprio java non vede la data giusta...

Se proprio le hai tentate tutte ed il tempo stringe..e la tua macchina linux ha una certa ora mentre la tu applicazione giava non la vuole leggere correttamente...

Naturalmente hai già fatto:

  1. run.conf di jboss con opzione-Duser.language=it -Duser.region =IT -Duser.timezone=Europe/Rome

  2. in faces-config.xml hai aggiunto:

    java.util.Date

..........CustomDateTimeConverter



che chiama:

public class CustomDateTimeConverter extends DateTimeConverter {
Logger log = Logger.getLogger(getClass().getName());

public CustomDateTimeConverter() {
super();
TimeZone tz = TimeZone.getTimeZone("Europe/Rome");
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
setTimeZone(tz);
setLocale(new Locale("it/IT"));
setPattern("d/M/yyyy");
}
}


Alla fine incazzato come una iena:

public static Date getDateLinux() {
try {
String data = CommandLauncher.executeCmd(new String[] { "date",
"+%m/%d/%Y %H:%M:%S" });
log.info("DATA LINUX: " + data);
SimpleDateFormat formatLINUX = new SimpleDateFormat(
"MM/dd/yyyy HH:mm:ss");
Date parsed1 = formatLINUX.parse(data);
log.info("DATA LINUX FROM JAVA: " + parsed1);
return parsed1;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}