Estrutura com Jsf[RESOLVIDO]

4 respostas
asousaj

Caros,
to criando uma aplicação para otimizar o trabalho aqui na empresa, coisa simples, e gostaria de uma dica quanto à estrutura que usei, se pode ser melhorada.
A aplicação consiste em 15 paginas(jsf) com forms para calculos. Não usarei DB, sem login, coisa bem simples.

Exemplo:

package model;

public class MyCalcMath {
    protected String resultado;
    protected Boolean resultadoMostrar;
    protected String erros;
    protected Boolean errosMostrar;

    ... AQUI VAI OS GETTERS e SETTERS ...

    public void calculaTrafego(double base, double expoente) {
            ... obviamente vai ter try/catch
            ... calculos matematicos com resultados em double ...
            resultado = String.valueOf(... resultado dos calculos em double ...);
            resultadoMostrar = true;
        }
    }
    
    public void ...
}
package calculos;

import model.MyCalcMath;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class CalculaTrafego {

    private MyCalcMath myCalcMath = new MyCalcMath();
    private double canais;
    private double segundos;

    public MyCalcMath getMyCalcMath() {
        return myCalcMath;
    }

    public void setMyCalcMath(MyCalcMath myCalcMath) {
        this.myCalcMath = myCalcMath;
    }
    public double getCanais() {
        return canais;
    }

    public void setCanais(double canais) {
        this.canais = canais;
    }

    public double getSegundos() {
        return segundos;
    }

    public void setSegundos(double segundos) {
        this.segundos = segundos;
    }

    public CalculaTrafego () {
    }
    public void calculaTrafegoSaida(){
        myCalcMath.calculaTrafego(canais,segundos);
    }


}
<f:view>
            <h:form>
                <h:panelGrid columns="2">
                    <h:outputLabel value="Canais:"/>
                    <h:inputText value="#{CalculaTrafego.canais}"/>
                    <h:outputLabel value="Segundos:"/>
                    <h:inputText value="#{CalculaTrafego.segundos}" />
                    <h:outputLabel value="Resultado:" rendered="#{CalculaTrafego.myCalcMath.resultadoMostrar}" />
                    <h:outputText value="#{CalculaTrafego.myCalcMath.resultado}" rendered="#{CalculaTrafego.myCalcMath.resultadoMostrar}"/>
                    <h:commandButton actionListener="#{CalculaTrafego.calculaTrafegoSaida()}" value="Calcular" />
                </h:panelGrid>
            </h:form>
        </f:view>

Bom pessoal é isso, onde posso melhorar na estrutura … os codigos do projeto sao similares a estes.

Grato a todos!

4 Respostas

alves.Felipe

acho que para isso esta muito bom, não precisa complicar mais. Eu faria assim tb.

asousaj

Entao continuo com um managedbean para cada uma das telas(jsf) de calculo e tambem concentro os 20 calculos na classe MyCalcMath ? Achei assim mais facil pra dar manutenção, até pq um calculo pode precisar de outro.

Concordam?
Grato!

rponte

Olá asousaj,

Não sei bem qual o propósito da tua aplicação e como ela seria melhor modelada de acordo com o contexto e domínio. O código que você postou parece está simples e suficiente para tuas necessidades. Talvez deixar toda a lógica de calculo dentro do seu “MyCalcMath” não seja o ideal, pois pode haver dificuldades quanto a escrita de testes de unidade.

Mas aconselho a leitura desse post sobre como implementar melhor seus managed beans. Espero que te ajude!

Um abraço e boa sorte!

asousaj:
Caros,
to criando uma aplicação para otimizar o trabalho aqui na empresa, coisa simples, e gostaria de uma dica quanto à estrutura que usei, se pode ser melhorada.
A aplicação consiste em 15 paginas(jsf) com forms para calculos. Não usarei DB, sem login, coisa bem simples.

Exemplo:

package model;

public class MyCalcMath {
    protected String resultado;
    protected Boolean resultadoMostrar;
    protected String erros;
    protected Boolean errosMostrar;

    ... AQUI VAI OS GETTERS e SETTERS ...

    public void calculaTrafego(double base, double expoente) {
            ... obviamente vai ter try/catch
            ... calculos matematicos com resultados em double ...
            resultado = String.valueOf(... resultado dos calculos em double ...);
            resultadoMostrar = true;
        }
    }
    
    public void ...
}
package calculos;

import model.MyCalcMath;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class CalculaTrafego {

    private MyCalcMath myCalcMath = new MyCalcMath();
    private double canais;
    private double segundos;

    public MyCalcMath getMyCalcMath() {
        return myCalcMath;
    }

    public void setMyCalcMath(MyCalcMath myCalcMath) {
        this.myCalcMath = myCalcMath;
    }
    public double getCanais() {
        return canais;
    }

    public void setCanais(double canais) {
        this.canais = canais;
    }

    public double getSegundos() {
        return segundos;
    }

    public void setSegundos(double segundos) {
        this.segundos = segundos;
    }

    public CalculaTrafego () {
    }
    public void calculaTrafegoSaida(){
        myCalcMath.calculaTrafego(canais,segundos);
    }


}
<f:view>
            <h:form>
                <h:panelGrid columns="2">
                    <h:outputLabel value="Canais:"/>
                    <h:inputText value="#{CalculaTrafego.canais}"/>
                    <h:outputLabel value="Segundos:"/>
                    <h:inputText value="#{CalculaTrafego.segundos}" />
                    <h:outputLabel value="Resultado:" rendered="#{CalculaTrafego.myCalcMath.resultadoMostrar}" />
                    <h:outputText value="#{CalculaTrafego.myCalcMath.resultado}" rendered="#{CalculaTrafego.myCalcMath.resultadoMostrar}"/>
                    <h:commandButton actionListener="#{CalculaTrafego.calculaTrafegoSaida()}" value="Calcular" />
                </h:panelGrid>
            </h:form>
        </f:view>

Bom pessoal é isso, onde posso melhorar na estrutura … os codigos do projeto sao similares a estes.

Grato a todos!

asousaj

Valew,
vou manter assim mesmo, quanto aos testes unitarios ta tranquilo.

Criado 16 de agosto de 2011
Ultima resposta 16 de ago. de 2011
Respostas 4
Participantes 3