syntaxhighlighter.googlecode.com

niedziela, 22 września 2013

MVC - architektura projektów

Podział na projekty aplikacji MVC. Architektura jest niezależna od technologii widoku (Swing/SWT/JSF itd) oraz od technologii bazy danych (SQL, CSV, ISAM, JMS, WebService itd)

  1. Core (M i C)
  2. View (V)
  3. DAO
  4. Utils

Core

Projekt Core zawiera warstwę Modelu (M) i logiki biznesowej (C).
Logika nic nie wie o technologii dostępu do danych oraz o technologii widoku.

View

Tu mogą być projekty uzależnione od technologii widoku, np.:
  • View.Swing
  • View.SWT
  • View.JSF
  • View.RCP
  • itd

DAO

       Tu mogą być różne projekty DAO  np.
  • DAO.SQL - dostęp do danych serwera SQL
  • DAO.CSV - dostęp do danych w plikach tekstowych CSV
  • DAO.JMS  - dostęp do danych pobieranych/wysyłanych przez komunikaty JMS
  • DAO.WS - dostęp do danych przez WebService
  • DAO.XML - dostęp do danych w plikach XML
  • itd

Utils

Różne narzędzia. Narzędzia nie dotyczą DAO oraz nie dotyczą View.

sobota, 21 września 2013

Swing - szablon walidacji

 ActionListener dla zwykłej kontrolki
    a. Kopiuj widok do modelu
    b. Akcja biznesowa z parametrem: model
    c. Kopiuj model do widoku
    d. Ustaw stan widoku w oparciu o model
    e. Walidacja wyniku akcji biznesowej w oparciu o model

ActionListener dla buttonów typu wykonaj/zapisz itp
   a. Walidacja modelu
   b. Wykonanie akcji biznesowej z parametrem: model

JSF2, RichFaces i Maven2

Jak skonfigurować Maven dla aplikacji webowej, która korzysta z JSF2, RichFaces 4.x?
Oto pom.xml:

<project
   xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>web.jsf2</artifactId>
    <parent>
        <groupId>pl.prv.wojsal</groupId>
        <artifactId>pom</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <packaging>war</packaging>
    <properties>
        <org.richfaces.bom.version>4.3.3.Final</org.richfaces.bom.version>
    </properties>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <wtpapplicationxml>true</wtpapplicationxml>
                    <wtpversion>2.0</wtpversion>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>pl.prv.wojsal</groupId>
            <artifactId>logika</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.richfaces</groupId>
            <artifactId>richfaces-bom</artifactId>
            <version>${org.richfaces.bom.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.richfaces.ui</groupId>
            <artifactId>richfaces-components-ui</artifactId>
            <version>${org.richfaces.bom.version}</version>
        </dependency>
        <dependency>
            <groupId>org.richfaces.core</groupId>
            <artifactId>richfaces-core-impl</artifactId>
            <version>${org.richfaces.bom.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
        </dependency>
    </dependencies>

</project>