Centraliza o acesso aos models do módulo. Cada entidade adicionada ao módulo ganha um método aqui — garantindo que cada model seja criado uma única vez por requisição.
package br.xt.app.departamento;
import br.jasap.core.AppManager;
public class DepartamentoMdFactory {
protected AppManager manager = null;
public DepartamentoMdFactory() {
}
public DepartamentoMdFactory(AppManager manager) {
this.manager = manager;
}
public AppManager getManager() {
return manager;
}
}
public class DepartamentoMdFactory| Elemento | O que significa |
|---|---|
public | A classe precisa ser visível fora do pacote do módulo — o AppsRootModelFactory a instancia de um pacote diferente para disponibilizá-la a todas as actions do sistema |
class | Uma classe Java comum, sem nada especial além disso |
DepartamentoMdFactory | Convenção do projeto: prefixo do módulo + MdFactory (abreviação de Model Factory) |
Ao contrário do DepartamentoManager, que extends PnlManager, a factory não herda de nada. Ela não precisa de nenhum comportamento do framework — é uma classe de organização pura. Seu único trabalho é guardar o manager e entregar os models quando solicitados.
protected AppManager manager = nullprotected AppManager manager = null;
| Elemento | O que significa |
|---|---|
protected | Visível para esta classe e para as subclasses. Os próprios models estendem DAOs que por sua vez recebem o manager — o protected permite esse repasse pela hierarquia sem abrir para o mundo inteiro (public) |
AppManager | Objeto do Jasap que representa o contexto da requisição atual. Por dentro carrega a conexão com o banco de dados, a sessão do usuário e outras informações da requisição. Sem ele, nenhum DAO consegue executar queries |
= null | Começa vazio. Será preenchido pelo construtor que recebe o manager como parâmetro. Se ficar null (construtor vazio for usado), qualquer chamada a banco vai lançar um erro |
dois construtorespublic DepartamentoMdFactory() {
}
public DepartamentoMdFactory(AppManager manager) {
this.manager = manager;
}
Java permite que uma classe tenha mais de um construtor, desde que tenham parâmetros diferentes. Isso se chama sobrecarga de construtor.
| Construtor | Quando é usado |
|---|---|
DepartamentoMdFactory() | Construtor vazio — usado pelo AppsRootModelFactory durante a inicialização, antes de ter um manager disponível. O manager pode ser atribuído depois via setter, ou nunca ser usado se a factory for apenas declarada como campo |
DepartamentoMdFactory(AppManager manager) | O mais importante na prática. Quando uma action chama getFactory().lab(), o Jasap já passou o manager aqui. O this.manager = manager salva o manager recebido no campo da classe para que todos os models criados depois possam usá-lo |
this.manager usa a palavra-chave this para diferenciar o campo da classe (this.manager) do parâmetro do construtor (manager). Sem o this, o Java entenderia que a variável local (parâmetro) está sendo atribuída a ela mesma — o campo continuaria null.
public AppManager getManager()public AppManager getManager() {
return manager;
}
Getter simples que expõe o manager armazenado. Usado internamente pelos models quando precisam acessar o banco de dados ou a sessão da requisição. À medida que entidades forem adicionadas ao módulo, novos métodos de model surgirão aqui seguindo o padrão lazy initialization — cada model criado uma única vez por requisição, somente quando solicitado.