| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2007 13:12:18
|
Lupos
![[Avatar]](/images/avatar/8dd48d6a2e2cad213179a3992c0be53c.jpg)
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
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2007 14:09:53
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2007 16:37:20
|
Lupos
![[Avatar]](/images/avatar/8dd48d6a2e2cad213179a3992c0be53c.jpg)
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
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2007 08:47:50
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2007 09:45:50
|
Lupos
![[Avatar]](/images/avatar/8dd48d6a2e2cad213179a3992c0be53c.jpg)
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
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2007 10:51:21
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Mandou bem Leiber!
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2007 11:05:11
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2007 11:15:23
|
Lupos
![[Avatar]](/images/avatar/8dd48d6a2e2cad213179a3992c0be53c.jpg)
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.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2007 11:22:18
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
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 |
|
|
 |
|
|