Mostrando postagens com marcador Java Fast Code. Mostrar todas as postagens
Mostrando postagens com marcador Java Fast Code. Mostrar todas as postagens

sexta-feira, 13 de fevereiro de 2009

Executando script Sql com o Ant

Daew pessoal blz,

Esses dias eu estava vendo as listas de Java e observei que muitos desenvolvedores tem dúvida
de como automatizar tarefas como create, drop e etc com o Ant.
Devido a isso resolvi criar um post direcionado a esta questão.
Neste Java Fast Code irei demonstrar a execução automática dos scripts SQL.

A classe abaixo PopularBase.java executa um comando de processo para executar a target do Ant.

Obs: Vale lembrar que existem outras maneiras de se executar uma target Ant com o Java.
Também não irei entrar em detalhes sobre os scripts Ant e Sql.


public class PopularBase{
public static void main(String[] args) throws Exception {
try {
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"ant createTables_MySQL");
} catch (IOException e) {
e.printStackTrace();
}
}
}

Abaixo segue o arquivo build.xml

<.project name="teste" default="ajuda" basedir=".">


<.property name="sql.driver" value="com.mysql.jdbc.Driver"/>
<.property name="sql.url" value="jdbc:mysql://localhost:3306/dataBase"/>
<.property name="sql.user" value="root"/>
<.property name="sql.pass" value="root"/>

<.!--
Target : createTables_MySQL
Finalidade : criar as tabelas no banco MySql

Como faz : utiliza os .sql

-->
<.target name="createTables_MySQL" depends="dropDB_MySQL">
<.sql driver="${sql.driver}" url="${sql.url}" userid="${sql.user}" password="${sql.pass}" >
<.classpath>
<.pathelement location="WebContent/WEB-INF/lib/mysql-connector-java-5.0.7-bin.jar"/>
<./classpath>
<.transaction src="sql/create_table.sql"/>
<./sql>
<./target>

<.!--
Target : dropDB_MySQL
Finalidade : Deleta as tabelas do Mysql
-->
<.target name="dropDB_MySQL">
<.sql driver="${sql.driver}" url="${sql.url}" userid="${sql.user}" password="${sql.pass}" src="sql/deleteTable.sql">
<.classpath>
<.pathelement location="WebContent/WEB-INF/lib/mysql-connector-java-5.0.7-bin.jar"/>
<./classpath>
<./sql>
<./target>


Abaixo segue os script SQL.
createTables_MySQL

CREATE TABLE tbusuario
idUsuario bigint(20) NOT NULL AUTO_INCREMENT,
tpUsuario char(1) NOT NULL,
status char(1) NOT NULL,
login varchar(20) default NULL UNIQUE,
senha varchar(20) default NULL,

PRIMARY KEY (idUsuario)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- INSERINDO UM ADMINISTRADOR
INSERT INTO tbUsuario (tpUsuario, status, login, senha) values ('S','A','adm','adm');

dropDB_MySQL

delete from tbusuario;

drop table tbusuario;

E eh isso pessoal espero que este post ajude vocês.

segunda-feira, 12 de janeiro de 2009

Internacionalizando Aplicações Java

Bom pessoal sempre vejo iniciantes no desenvolvimento WEB, ter dificuldade em aplicar I18N em suas aplicações, hoje irei demonstrar um pequeno exemplo de como é simples.

package com.teste;

import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author Prestes
 */
public class MessageHelper {

private final static Log logger = LogFactory.getLog(MessageHelper.class);

/* "messages" é o nome do arquivo .properties que irá armazenar as mensagens */
private final static ResourceBundle messages =  ResourceBundle.getBundle("messages",
Locale.getDefault());
// Foram criadas constantes para armazenar as chaves das mensagens
public static final String CODE_CAN_NOT_BE_NULL = "InvalidCodeException.CodeCanNotBeNull";
public static final String NAME_CAN_NOT_BE_NULL = "InvalidNameException.NameCanNotBeNull";
/**
* Retorna a mensagem baseada na chave passada como parametro, caso nao encontre retorna a propria  * chave
* @param id the message identifier
* @return the localized string corresponding to the message identifier
*/
public static String getString(String id) {
String message = id;
try {
message = messages.getString(id);
} catch (MissingResourceException e) {
logger.warn("Não foi encontrado a mensagem para a chave \"" + id  + "\"");
}
return message;
}
}
 

A única atenção que deve-se ter na classe acima é que o nome do arquivo .properties "messages" irá ser apenas o pre fixo.  O porque disso é o seguinte, em aplicações WEB deve-se adicionar o Locale como parametro na Classe ResourceBundle, assim caso o Locale Default seja o inglês o nome do arquivo será da seguinte maneira: messages_en_US.properties; em portugues seria: messages_pt_BR.properties.

No meu caso eu coloquei os aquivos messages_pt_BR.properties. e messages_en_US.properties na raiz do projeto.


/* A classe abaixo irá testar a internacionalização */
package com.teste;

public class HelloWord {
public static void main(String[] argumentos) {
ResourceBundle resourceBundle = ResourceBundle.getBundle("com.teste.messages");
System.out.println(resourceBundle.getString("InvalidNameException.CodeCanNotBeNull"));
}

}


É isso pessoal não tem muito mistério apenas um pouco de atenção e estudo.
Caso tenham duvidas ou dificuldades postem suas dúvidas ou entre no site da SUN

sexta-feira, 2 de maio de 2008

Memoria virual livre

Aew vai um fast code pra rapaziada.



public class VMMemory {
public static void main(String[] args) {
long freeMemory = Runtime.getRuntime().freeMemory();
long totalMemory = Runtime.getRuntime().totalMemory();

System.out.println("Memória Livre = " + freeMemory);
System.out.println("Memória Total = " + totalMemory);
}
}