the factory esclarecendo a arquitetura utilizada no projeto piloto autor: wabber filho

23
The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Upload: internet

Post on 21-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

The Factory

Esclarecendo a arquitetura utilizada no projeto Piloto

Autor: Wabber Filho

Page 2: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Objetivo

Disseminar o conhecimento prático de desenvolvimento na

fábrica

Page 3: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

ResumoComo rodar o sistema ?O que é uma classe básica (Entidade) ?O que é uma classe

RepositorioXxxBDR ?PreparedStatamentPra que serve a interface Repositório ?O que é uma classe Cadastro?

Page 4: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

ResumoPor que usar Fachada?O que é um Servlet ?O que freemarker faz ?Como é o nosso Servlet ?Para que servem os Handlers ? Como são os nossos Handlers ?

Page 5: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Como rodar o sistema ? Modificar os parâmetros: arquivo_config e

templatePath do arquivo factprocess/piloto/Projeto/piloto/WEB-INF/web.xml

Isso pode ser feito em qualquer editor de texto

Page 6: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Como rodar o sistema ? Modificar o parâmetro HOME do arquivo

factprocess/piloto/Projeto/conf/piloto.properties Clicar no botão Run Project do JBuilder

Page 7: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que é uma classe básica? A classe básica representa as principais entidades

de um sistema.package thefactory.piloto.studant;public class Studant { private String name; private String password; public Studant( String name, String password ){ setName( name ); setPassword( password ); } public String getName() { return name; } public void setName( String name ) { this.name = name; }}

Page 8: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que é uma classe RepositorioXxxBDR ?

É classe responsável por fazer acesso ao SGBD-Relacional

public class RepositoryStudantDB implements RepositoryStudant {

private static final String sqlRemove = "delete from fabrica2_studant where cpf = ?";

public void remove( String cpf ) throws RepositoryException { // Envia comando sql de remover estudante do BD substituindo a “?” pelo “cpf”}

Page 9: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

PreparedStatamentUsa-se PreparedStatament para que a

aplicação fique “independente” do SGBD utilizado.

Connection connection; try {// recupera connection, cria e executa o statement connection = TransactionControl.getConnection(); PreparedStatement preStmt = connection.prepareStatement( this. sqlRemove ); preStmt.setString( 1, cpf ); preStmt.executeUpdate(); } catch ( Exception e ) { throw new RepositoryException( e ); }

Page 10: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Pra que serve a interface Repositório ?

Uma interface em Java serve para que possa haver vários tipos de implementação diferente para o mesmo serviço.

RepositorioXx

RepositorioXxBDR RepositorioXxFileRepositorioXxList

Page 11: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que é uma classe Cadastro?

É uma classe de negócios que contem um Repositório e pode acrescentar lógica de negócios nos métodos

RepositorioXx

CadastroXx

Page 12: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que é uma classe Cadastro?public class StudantBusiness {

private RepositoryStudant repository;

public StudantBusiness( RepositoryStudant rep ) { this.repository = rep; }

public void remove( String cpf ) throws RepositoryException { if ( ( cpf != null ) && ( cpf.length() == 11 ) ) { repository.remove( cpf ); } else { throw new IllegalArgumentException( "CPF invalid." ); } }}

Page 13: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Por que usar Fachada?O sistema segue o padrão de projeto

“Facade”A fachada serve como ponto único de

acesso ao sistema. Isso possibilita a construção de n GUI (Graphic User Interface)

A Fachada deve implementar o padrão de projeto singleton.

Fachada CadastroXx

Page 14: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Por que usar Fachada?

public class Facade { private static Facade instance; private Facade() { this.studants = new StudantBusiness( new RepositoryStudantDB() ); } public synchronized static Facade getInstance() { if ( instance == null ) { instance = new Facade(); } return instance; }

Page 15: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Por que usar Fachada? public void removeStudant( String cpf ) throws RepositoryException, Exception { Transaction transaction = null; boolean ok = false; try { // criar transaction transaction = TransactionControl.beginTransaction(); studants.remove( cpf ); TransactionControl.commitTransaction( transaction ); ok = true; } finally { if ( !ok ) { TransactionControl.rollBackTransaction( transaction ); } TransactionControl.endTransaction( transaction ); } }

Page 16: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que é um Servlet ?Servelt é uma classe Java que serve

para atender requisições do usuário através de algum protocolo. No nosso sistema protocolo HTTP

O Servlet gera uma Thread para cada requisição

Servlet HttpServlet Nosso Servlet

Page 17: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que é um Servlet ?

public class ServletBroker extends HttpServlet {

public void init( ServletConfig servletConfig ) throws ServletException { super.init( servletConfig ); }

public void service( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {

// Request é a requisição do usuário // Response é a resposta que o servlet deverá prover }}

Page 18: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que freemarker faz ?O freemarker possibilita isolar código

HTML de código JavaPara isso o freemarker utiliza Tags e

variáveis na página HTML

<select name="cpf" onLoad="this.focus()"> <list studants as s> <option value="${s.cpf}">${s.cpf} - ${s.name}</option> </list> </select>

Page 19: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

O que freemarker faz ?SimpleHash modelRoot = new SimpleHash(); SimpleSequence seq = new SimpleSequence();Iterator iter = facade.getIteratorStudants(); while ( iter.hasNext() ) { Studant item = ( Studant ) iter.next(); SimpleHash hash = new SimpleHash(); hash.put( "cpf", item.getCpf() ); hash.put( "name", item.getName() ); seq.add( hash ); }modelRoot.put( "studants", seq );

Page 20: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Como é o nosso Servlet ?

Vamos abrir o ServletBroker ?

Page 21: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Para que servem os Handlers ?

Handlers são classes que recebem a requisição do usuário (repassada pelo Servlet)

Analisam o request feitoChamam algum método da fachadaPreparam a resposta para o usuário

Page 22: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Para que servem os Handlers ?

Vamos abrir o InsertStudantHandler ?

Page 23: The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho

Referências GUIA-DESEN-DefinicaoArquitetura.doc -

http://cvs.factprocess.codigolivre.org.br/cgi-bin/cvsweb.cgi/~checkout~/fabrica/Desenvolvimento/Templates/GUIA-DESEN-DefinicaoArquitetura.doc?content-type=text/plain&cvsroot=factprocess

Freemarker - http://freemarker.sourceforge.net/