DepartamentoMdFactory novo arquivo

0:00 / 0:00

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.

CÓDIGO COMPLETO
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

ElementoO que significa
publicA 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
classUma classe Java comum, sem nada especial além disso
DepartamentoMdFactoryConvençã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 = null

protected AppManager manager = null;
ElementoO que significa
protectedVisí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)
AppManagerObjeto 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
= nullComeç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 construtores

public 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.

ConstrutorQuando é 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.