[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Esclarecimento sobre loadlists c/ Banco.  XML
Forum Index -> Comentários Gerais
Author Message
Lupos


[Avatar]

Joined: 19/04/2007 11:53:00
Messages: 75
Offline

Amigos paz,

Li na documentação do Menta sobre loadlists criados apartir de dados vindos do banco, implementado no AppMan..., pois bem, minha aplicação utiliza vários objetos comboBox, em vários jsp, tipo Fornecedor/Filial/Vendedor/Cond.Pgto etc.., pergunta : seria mais viável colocar isso nas actions ou não ???? Eu quero utilizar no appMan mesmo, fica muito pratico, pois defino apenas uma vez, e só preciso declarar a tag select no jsp, mas existe algum custo nisso tipo performance???? Por último...alguém tem algum exemplo de como se implementa isso usando banco de dados no appMan ??? Eu utilizo interface DAO (Hibernante+Annotações+ioc+di+)

Valeu



IceW0lf


[Avatar]

Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline

Bom Lupos,

O que eu consigo "enxergar" em termos de necessidade do lists no banco é:

Se tua lista NUNCA muda, então coloca no ApplicationManager mesmo, mas se ele modificar as vezes ou poucas vezes ou mesmo pra cada perfil de usuário aparece uma lista diferente, então utilize elas na ACTION por exemplo.

Um caso de listas no banco de dados:

- Vc tem um sistema que tem listas específicas por usuario, então elas não poderia estar no ApplicationManager "que é pra todos" o que faço? Simples utilizo nas minhas Action, Services etc... utilizando o WHERE que o DBListData oferece por exemplo e busco a lista correta para aquele usuário.

HOJE eu uso nos BDs mesmo e algumas listas "dinâmicas" eu dou um get nelas nas action.

Leiber Wallace
Voixy ::: Soluções em Telecomunicações
Lupos


[Avatar]

Joined: 19/04/2007 11:53:00
Messages: 75
Offline

Ice blz, entendi. eu tenho listas diversas q tb são comuns a todos os usuários, estas podem estar no AppMan.., agora eu queria entender ou ver algum exemplo de como se implementa isso usando a minha estrutura

Valeu



IceW0lf


[Avatar]

Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline

Vou te mostrar como eu uso ok.

ApplicationManager
Code:
 public class ApplicationManager extends import org.mentawai.core.ApplicationManager {
 
       ListData listData; //Para listas em arquivos
       DBListData dbListData; //Para Listas no banco de dados
 
      public void init(Context application) {/*BLA BLA BLA*/}
 
      public void loadActions() {/*BLA BLA BLA*/}
 
      //Listas defaults pra todos tanto do arquivos lists quando do BD
      public void loadLists() throws IOException {
 
             //LISTA SIMPLES EM ARQUIVO (SEXO)
            listData = new BaseListData("gender", BaseListData.ORDER_BY_ID);
            ListManager.addList(listData);
 
          // LISTA DO BANCO DE DADOS DEFAULT PRA TODOS
          // 1 = name of list
          // 2 = name of column - id (key)
          // 3 = name of column - value of key
          // 4 = name of table on the DB
          // 5 = ORDER BY ? column
          // COUNTRYS (PAISES)
          dbListData = new DBListData("country", "paicod", "painom", "pais", "painom");
          try{
              dbListData.load(sessionFactory.openSession().connection());
          } catch(SQLException e){}
          ListManager.addList(dbListData);
      }
 }
 


Eu tenho um Serviço só pra cuidar dos combos "dinâmicos" e neste eu recebo os campos que eu passo da action ID, TABELA ETC, inclusive o WHERE nem preciso dizer seu uso correto, se eu nao quizer dar um WHERE passo NULL ou... posso por exemplo deixar como default um WHERE 1=1.

MinhaAction
Code:
 public class MinhaAction {
 
     public String meuMetodo() throws Exception {
           DBListData dbListData = dbListDataService.newListData("QualSeráONomeDaLista", "QualOValueDoOption", "OQueIráNoTextoDoOption", "EmQueTabelaBuscar", "OrderBy?", "WhereOqueIgualOQue?" );
           ListManager.addList(dbListData); //Adicionei a lista.
     }
 }
 


Omiti algumas coisas como GROUP de usuario que eu PASSO TB, pego na action e passo a lista de GRUPOS daquele usuario e dentro do service eu MONTO o WHERE de acordo com o GRUPO. Se vc quizer fazer o mesmo pros grupos, basta receber a lista de grupos daquele usuário (List groups = BaseLoginAction.getUserGroups(session) e passar como "variavel" também pro service e no service vc fazer suas "validações". Entendeu ?

Minha Interface DBListService
Code:
 public interface DBListService {
          DBListData newListData(String listName, String columnId, String columnName, String table, String orderBy, String sqlWhere) throws Exception;
 }
 


Minha Classe que implementa a interface DBListService
Code:
	
 public class DBListServiceImpl implements DBListService {
          public DBListData newListData(String listName, String columnId, String columnName, String table, String orderBy, String sqlWhere) throws Exception  {
                  if (meuDAO == null) throw new IllegalStateException(MSG);
                         return meuDAO.newListData(listName, columnId, columnName, table, orderBy, sqlWhere);
                 }
 }
 


Eu to usando Hibernate Annotations / Generics OK. Então tenho:

A Interface BaseDAO
Code:
 public interface BaseDAO<T, PK extends Serializable> {
 
     //OUTROS METODOS OMITIDOS
 
     DBListData newListData(String listName, String columnId, String
     		columnName, String table, String orderBy, String sqlWhere) throws HibernateException, SQLException;
 
 }
 


A Classe BaseDAOImpl que implementa BaseDAO
Code:
 public abstract class BaseDAOImpl<T, PK extends Serializable> implements BaseDAO<T,PK> {
 
         //OUTROS METODOS OMITIDOS
 
         public DBListData newListData(String listName, String columnId, String columnName, String table, String orderBy, String sqlWhere) throws HibernateException, SQLException {
                DBListData dbListData = new DBListData(listName, columnId, columnName, table, orderBy);
 	if (sqlWhere!=null) dbListData.setWhere(sqlWhere);
 	dbListData.load(conn.connection());
 	return dbListData;
          }
 }
 



Acho que é isso ai...

Leiber Wallace
Voixy ::: Soluções em Telecomunicações
Lupos


[Avatar]

Joined: 19/04/2007 11:53:00
Messages: 75
Offline

Cara não sei nem como agradecer ... por esse F.A.Q , se encaixa perfeito pra mim, valeu mesmo



saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


Mandou bem Leiber!

Sergio Oliveira

IceW0lf


[Avatar]

Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline

Se quizer posso fazer um FAQ sobre como fazer listas assim isso Sérgio.

O sistema q to fazendo tem muito coisa interessante, isso pq o do Callcenter ta parado ai to num institucional aki... mas ta ficando muito bom, o menta tem ajudado MUITO mas MUITO a desenvolver o sistema.

Leiber Wallace
Voixy ::: Soluções em Telecomunicações
Lupos


[Avatar]

Joined: 19/04/2007 11:53:00
Messages: 75
Offline

Ice... legal tb seria... nesse F.A.Q demonstrar a integração com o Mentabeans, penso que poderia ser ainda mais proveitoso para o framework, pensando de uma maneira geral so um palpite.



IceW0lf


[Avatar]

Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline

Uma das poucas coisa q ainda não usei foi o Mentabeans

Leiber Wallace
Voixy ::: Soluções em Telecomunicações
 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team