[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Projeto MentaBlank - Ponto de partida para qualquer aplicação utilizando o Mentawai  XML
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Author Message
saoj



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

Atenção: VERSÃO ANTIGA => Utilizar aplicação de referência => http://forum.mentaframework.org/posts/list/2405.page

Para agilizar as coisas para quem está começando com o Mentawai, preparamos um projeto completo com as principais funcionalidades do framework. Trata-se de uma aplicação web onde você pode realizar um cadastro, se logar, editar esse cadastro e dar logout.

Essa aplicação pode e deve ser utilizada como ponto de partida para outras aplicações web.

Os seguintes conceitos são utilizados:

Validação
Autenticação
Redirect after Login
IoC
Auto-Wiring
Pool de Conexões
Tratamento de Exceções
ORM (Mapeamento de Beans no BD)
Diversas tags do Mentawai (mtw:requiresAuthentication, mtw:bean, etc.)


Baixe o projeto aqui: http://www.mentaframework.org/files/MentaBlank.zip

Abaixa descreveremos um passo a passo de como colocar esse projeto para rodar dentro do Eclipse, assumindo que você possui o Tomcat e o Sysdeo instalado no seu ambiente de desenvolvimento.

Selecione a opção do menu File -> Import. Escolha a opção "Existing Projects into Workspace". Clique em "Next".





Selecione a opção "Select archive file", clique em "Browse" e selecione o arquivo MentaBlank.zip que você baixou. Você deverá visualizar o projeto MentaBlank selecionado na caixa de texto logo abaixo.





Clique em "Finish" e um novo projeto "MentaBlank" será criado no seu eclipse. Antes de colocarmos ele para rodar no Tomcat precisamos criar um database para ele. O MentaBlank utiliza o MySQL, mas é bastante fácil alterá-lo para qualquer BD de sua preferência.

Vá no diretório WEB-INF/db e lá você encontrará dois arquivos:

MentaBlank.sql com o script SQL para gerar a base de dados da aplicação
grant.txt com o sql para criar o usuário "MentaBlank" no MySQL

Crie um database "MentaBlank", rode os arquivos acima e o seu banco-de-dados estará pronto para receber a nossa aplicação.

Repare que no AppManager.java, a configuração do Pool de Conexões é feita nas seguintes linhas:
Code:
 String driver = "com.mysql.jdbc.Driver";
 String url = "jdbc:mysql://localhost/MentaBlank?autoReconnect=true";
 String user = "MentaBlank";
 String pass = "MentaBlank";
 
 this.connHandler = new C3P0ConnectionHandler(driver, url, user, pass);
 


Agora para testar sua aplicação clique em Project -> Properties. Selecione a opção "Tomcat" e faça as seguintes alterações abaixo:





Clique em "Ok", inicie o seu Tomcat e acesse a URL http://localhost:8080/MentaBlank/ para testar a aplicação.

Obs: Versão para Eclipse WTP pode ser baixada em: http://www.mentaframework.org/files/MentaBlankWTP.zip (por Hélio Frota)

Sergio Oliveira

pancary


[Avatar]

Joined: 25/10/2008 23:06:52
Messages: 8
Offline

Olá,
Como fica a configuração de conexão para o HSQLDB ?
saoj



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

pancary wrote:
Olá,
Como fica a configuração de conexão para o HSQLDB ?
 


Primeiro vc tem que ver se o arquivo MentaBean.sql pode ser aplicado em um banco HSQLDB. Esse arquivo foi gerado pelo mysql.

Depois vc tem que trocar o MySQLBeanSession pelo HSQLBeanSession no application manager.

Qualquer dúvida me manda um email...

Sergio Oliveira

pancary


[Avatar]

Joined: 25/10/2008 23:06:52
Messages: 8
Offline

Sergio, consegui conectar no banco hsql, mas o script sql tem diferenças no auto_increment, não consegui fazer funcionar usando o sequence..
Preciso usar um banco embarcado, pois a aplicação terá um universo de dados limitado, com poucos objs para persistir, alem de que o scr tem que ser portátil, uso muito export > import.
Lobo


[Avatar]

Joined: 23/01/2006 02:17:14
Messages: 840
Location: Fortaleza-CE
Offline

tem o H2 http://www.h2database.com/html/main.html inclusive o mentawai tem uma implementação de MentaBeans pra ele.

Atenciosamente,
Hélio Frota

Helio Frota
10+ Java Programmer
heliofrota.com

Member
Mentawai Developer
Marcelino F. S. Neto



Joined: 04/11/2008 08:10:42
Messages: 3
Offline

Estou precisando de um SqlServerBeanSession, se puderem implementar ficarei grato. Mas pra ir adiantando meu projeto vou baixar um MySQL.

Obrigado,
Marcelino F. S. Neto
web developer and web designer
[Email]
saoj



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

pancary wrote:
Sergio, consegui conectar no banco hsql, mas o script sql tem diferenças no auto_increment, não consegui fazer funcionar usando o sequence..
Preciso usar um banco embarcado, pois a aplicação terá um universo de dados limitado, com poucos objs para persistir, alem de que o scr tem que ser portátil, uso muito export > import.
 


Cria na mão a tabela, pois o script no mysql não vai funcionar no hsql mesmo não.

Depois peço que por favor nos envie esse arquivo!

E mais importante: Vc provavelmente vai querer criar uma classe HSQLBeanSession, para tratar algumas particularidades do HSQL, como order by com limit, retorno da sequencia, etc.

Se fizer isso, manda pra gente tb que os créditos vão para vc.

Olhe como foram feitas as classes:

OracleBeanSession
MySQLBeanSession
H2BeanSession

Sergio Oliveira

saoj



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

Marcelino F. S. Neto wrote:
Estou precisando de um SqlServerBeanSession, se puderem implementar ficarei grato. Mas pra ir adiantando meu projeto vou baixar um MySQL.

Obrigado,
Marcelino F. S. Neto
web developer and web designer 


Acho que o SQLServer vc pega o auto_increment com @@identity, não é isso?

Preciso saber então como é o sysdate / now() dele e como ele trata order by com limit.

Veja a minha resposta acima e pesquisa sobre isso por favor. Seria melhor ainda se vc conseguisse fazer essa classe SqlServerBeanSession.

Nessa semana estou demasiadamente enrolado...
Marcelino F. S. Neto



Joined: 04/11/2008 08:10:42
Messages: 3
Offline

Isso, pra pegar o auto_increment é com @@identity e pra pegar a data/hora do sistema é com getdate().
Apenas a data: select CONVERT(VARCHAR( 8 ) , GETDATE(), 103)
Apenas a hora: select CONVERT(VARCHAR( 8 ) , GETDATE(), 108 )

Order by com limit no sqlserver é: select top 2 * from tabela order by desc.
Pra limitar o número de linhas use o top depois do select.


A criação da tabela é assim:

CREATE TABLE users (
id INTEGER NOT NULL IDENTITY(1,1),
username VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
CONSTRAINT pk_user PRIMARY KEY (id),
);


Olhei na API como vcs fizeram o MySQLBeanSession; vou tentar fazer a classe pro sqlserver, mesmo que eu não consiga testar, vou enviar pra vc. É provável que eu precise de ajuda pra criá-la.


Abraço

Marcelino F. S. Neto
[Email]
saoj



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

Manda brasa!

Mas ficou faltando responder uma pergunta.

O SQLServer ordena e depois limita ou limita e depois ordena?

Se limita e depois ordena então tem que fazer algo assim:

select top 10 * from (select name from users order by name)

e não

select top 10 name from users order by name

São essas pentelhações que pentelham a coisa e requerem atenção/conhecimento.

Depois me fala porque eu realmente não sei como funciona para o SQL Server.

Sergio Oliveira

Marcelino F. S. Neto



Joined: 04/11/2008 08:10:42
Messages: 3
Offline

uahauhahuahuha pentelhações q pentelham, tu é muito engraçado, Sergio.

Não sei sinceramente o que ele faz primeiro (se limita primeiro ou ordena) só
sei que a forma correta é select top 10 name from users order by name. Se tentar fazer uma subquery daquele jeito dá erro. Pode fazer depois do where.

Também não sei nada de sql do MySQL, só do SqlServer mesmo.

Me tira umas dúvidas da classe SqlServerBeanSession q to tentando fazer.

Tentei imaginar como foi feito o método handleLimit pra sobrescrever mas não consegui. Tem como me enviar o font do JdbcBeanSession ou me passar uma orientação sobre a classe toda?

Marcelino F. S. Neto
[Email]
pancary


[Avatar]

Joined: 25/10/2008 23:06:52
Messages: 8
Offline

Consegui conectar no H2 para uso embarcado na seguinte forma, sendo o nome do banco = samr:
Code:
// Retorna a url da classe ( qualquer classe do projeto serve )
 		URL url = ApplicationManager.class.getResource("ApplicationManager.class");
 		// Retorna o path acima de WEB-INF
 		String caminho = url.getFile().substring(1, url.getFile().indexOf("WEB-INF"));
 
 		this.connHandler = new C3P0ConnectionHandler("org.h2.Driver", "jdbc:h2:file:" + caminho + "/banco/samr", "sa", "");


O sql do MentaBlank rodou sem problemas no H2.
Já está validando e autenticando o usuário, estou usando uns formularios que coloquei no site que fiz para a facu http://www.projetofinal.site90.com
mas eu quero usar o FormSkin igual ao MentaBooks On line, como eu seto um template para forms ?

Ps: Recomendo o H2 para quem está iniciando, pois é muito facil usar, basta especificar o driver e o tipo de banco ( file neste caso ), setar o path do jar e só.


saoj



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


mas eu quero usar o FormSkin igual ao MentaBooks On line, como eu seto um template para forms ?
 


Isso eu não sei pois não uso e não gosto de templates, nem de formSkin.

Não gosto de misturar design com programação, mas isso é a minha opinião pessoal.


Ps: Recomendo o H2 para quem está iniciando, pois é muito facil usar, basta especificar o driver e o tipo de banco ( file neste caso ), setar o path do jar e só.
 


Seria de grande ajuda se vc pudesse passar um MentaBlank.zip prontinho para o cara importar no eclipse e utilizar com o H2. Pelo que entendi ele nem precisaria rodar qualquer SQL inicial para usar o H2, certo? O próprio ApplicationManager poderia fazer isso no banco embarcado.

Veja aí se vc consegue fazer um MentaBlank.zip prontinho para o H2.

Sergio Oliveira

saoj



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


Tentei imaginar como foi feito o método handleLimit pra sobrescrever mas não consegui. Tem como me enviar o font do JdbcBeanSession ou me passar uma orientação sobre a classe toda?
 


Eu acho que o SQLServer ordena e depois limita, então vc está safe. O Oracle não é assim...

o handleLimit vc teria que fazer como o MySQL, mas mete o top no início ao invés do limit no final.

Veja o exemplo do MySQL que é bem parecido:

Code:
 	/**
 	 * MySQL is not like Oracle. It will SORT everything first and then apply LIMIT.
 	 */
 	@Override
 	protected StringBuilder handleLimit(StringBuilder sb, String orderBy, int limit) {
 		
 		if (limit == -1) return sb;
 		
 		StringBuilder sbLimit = new StringBuilder(sb.length() + 32);
 		
 		sbLimit.append(sb.toString()).append(" LIMIT ").append(limit);
 		
 		return sbLimit;
 	}
 



Sergio Oliveira

Lobo


[Avatar]

Joined: 23/01/2006 02:17:14
Messages: 840
Location: Fortaleza-CE
Offline

Está pronto MentaBlankWTP (para usar com eclipse WTP) e MentaBlankH2db com o H2 embarcado em breve será disponibilizado bem como o MentaBlankMaven.

Atenciosamente,
Hélio Frota

Helio Frota
10+ Java Programmer
heliofrota.com

Member
Mentawai Developer
 
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team