quarta-feira, 31 de outubro de 2012

Startegy

public
class SolicitacaoFacadeImpl implements SolicitacaoFacade {
private static final String pacote = "br.com.marketdata.sps.business.impl.";
private final ISolicitacaoFacadeStrategy strategy;
private final Solicitacao solicitacao;
private SolicitacaoDao solicitacaoDao;
public SolicitacaoFacadeImpl() {
super();
strategy = new SolicitacaoFacadeStrategy();
solicitacao = null;
}
 
 
public SolicitacaoFacadeImpl(Solicitacao solicitacao){
if(solicitacao == null){
throw new IllegalArgumentException("Campo solicitacao não pode ser nulo.");
}
String classe = String.format(
"%sFacadeStrategy", solicitacao.getClass().getSimpleName());
try {
@SuppressWarnings("unchecked")
Class<ISolicitacaoFacadeStrategy> clazz = (Class<ISolicitacaoFacadeStrategy>) Class.forName(
pacote+classe);
strategy = clazz.newInstance();
this.solicitacao = solicitacao;
}
catch (ClassNotFoundException e) {
throw new RuntimeException("Erro ao criar o objeto Class de " + classe, e);
}
catch (InstantiationException e) {
throw new RuntimeException("Falha na inicialização de " + classe, e);
}
catch (IllegalAccessException e) {
throw new RuntimeException("Falha ao acessar o construtor padrão de " + classe, e);
}
}
}
Design Paterns

Herança com hibernate




Criando relacionamento com herança usando Hibernate


Classe Solicitacao:

@Inheritance
(strategy=InheritanceType.JOINED)
@Entity
@Table
(name="solicitacao")
public
class Solicitacao implements Serializable{
/**
*
*/
private static final long serialVersionUID = 3839124554732341724L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_solicitacao")
private Integer idSolicitacao;}


Classe SolicitacaoDeEnvio:

@PrimaryKeyJoinColumn
(name="id_solicitacao")
@Entity
@Table
(name="solicitacao_bloqueio")
public
class SolicitacaoDeEnvio extends Solicitacao{
private static final long serialVersionUID = 1L;
}


Classe SolicitacaoDeRecebimento:

@PrimaryKeyJoinColumn
(name="id_solicitacao")
@Entity
@Table
(name="solicitacao_bloqueio")
public
class SolicitacaoDeRecebimento extends Solicitacao{
private static final long serialVersionUID = 1L;
}

quinta-feira, 2 de agosto de 2012

Recuperando dados de um Map no JSP

<select name="statusSolicitacao">
  <c:set value="${status[s.idSolicitacao]}" var="st" />
 <c:forEach var="ss" items="${st}">
     <option value="${ss.idStatusSolicitacao}">${ss.nome}</option>
 </c:forEach>
</select>

quarta-feira, 27 de junho de 2012

Iniciando o TomCat com Ant

<project name="GPadrao" default="create-war" basedir=".">
 <property name="app.name" value="GrupoPadrao"/>
 <property name="tomcat.home" value="C:/tomcat/apache-tomcat-6.0.35"/>
 <property name="deploy.home" value="${tomcat.home}/webapps"/>
 <property name="src.dir" value="src" />
 <property name="workspace" value="${basedir}/.." />
 <property name="project.name" value="GPadrao" />
 <property name="classes.dir" value="www/WEB-INF/classes" />
 <property name="lib.dir" location="www/WEB-INF/lib" />
 <property name="jars.dir" location="dist" />
 <path id="build.classpath">
  <fileset dir="${lib.dir}">
   <include name="**/*.jar" />
  </fileset>
 </path>
 <target name="toReady">
  <mkdir dir="${src.dir}"/>
  <mkdir dir="${classes.dir}"/>
  <mkdir dir="${jars.dir}"/>
 </target>
 <target name="build" depends="toReady">
  <javac srcdir="${src.dir}" destdir="${classes.dir}">
   <classpath refid="build.classpath">
   </classpath>
  </javac>
 </target>
 <target name="package" depends="build">
  <war destfile="${jars.dir}/${app.name}.war" webxml="www/WEB-INF/web.xml">
   <classes dir="${classes.dir}">
   </classes>
   <fileset dir="www">
   </fileset>
  </war>
 </target>
 <target name="deploy" depends="package">
  <copy file="${jars.dir}/${app.name}.war" tofile="${deploy.home}/${app.name}.war">
  </copy>
  <antcall target="clean">
  </antcall>
 </target>
 <target name="clean">
  <delete dir="${jars.dir}">
  </delete>
 </target>
 <target name="undeploy">
  <delete file="${deploy.home}/${app.name}.war"/>
 </target>
 <target name="create-war" depends="package">
 </target>
 <target name="tomcat-start">
  <java jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
   <jvmarg value="-Dcatalina.home=${tomcat.home}"/>
  </java>
 </target>

 <target name="tomcat-stop">
  <java jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
   <jvmarg value="-Dcatalina.home=${tomcat.home}"/>
   <arg line="stop"/>
  </java>
 </target>
 <target name="Full">
  <antcall target="deploy">
  </antcall>
  <antcall target="clean">
  </antcall>
  <antcall target="tomcat-stop">
  </antcall>
  <antcall target="browser">
  </antcall>
  <antcall target="tomcat-start">
  </antcall>

 </target>
 <target name="browser">
  <exec executable="C:/Arquivos de programas/Internet Explorer/iexplore.exe">
   <arg value="http://localhost:8080/${app.name}"/>
  </exec>
 </target>




 <target name="war">
  <jar destfile="ROOT.war">
   <fileset dir="www">
    <include name="**" />
   </fileset>
  </jar>
 </target>

 <target name="create-schedule">
  <jar destfile="GPadrao_ExtracaoContatos.jar">
   <manifest>
    <attribute name="Main-class" value="com.mdsb.gpadrao.contato.business.exportacoes.ExportaContatos" />
   </manifest>
   <fileset dir="${classes.dir}">
    <include name="**/*.*" />
    <include name="**/META_INF" />
   </fileset>
  </jar>
  <delete dir="${basedir}/extacao_contato/lib"/>
  <copydir dest="${basedir}/extacao_contato/lib" src="${basedir}/www/WEB-INF/lib">
  </copydir>
  <move file="${basedir}/GPadrao_ExtracaoContatos.jar" todir="${basedir}/extacao_contato/" />
  <copy file="${basedir}/connectionpool.xml" todir="${basedir}/extacao_contato" />
  <copy file="${basedir}/exporta_contato.bat" todir="${basedir}/extacao_contato" />

 </target>

</project>

segunda-feira, 25 de junho de 2012

cass-path webservices com AXIS2

Class-path webservice com AXIS2
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
 <classpathentry kind="src" path="src"/>
 <classpathentry including="activation.jar|ajaxtags-1.1.5.jar|antlr-2.7.6.jar|asm.jar|bonecp-0.7.1.RELEASE.jar|bonecp-provider-0.7.1-rc2.jar|cglib-2.1.3.jar|commons-beanutils.jar|commons-collections-3.2.jar|commons-fileupload-1.2.1-javadoc.jar|commons-fileupload-1.2.1-sources.jar|commons-fileupload-1.2.1.jar|commons-httpclient-3.0.1.jar|commons-io-1.4-javadoc.jar|commons-io-1.4-sources.jar|commons-io-1.4.jar|commons-lang-2.2.jar|commons-logging-1.0.4.jar|commons-logging-api.jar|commons-logging.jar|cos.jar|displaytag-1.1.jar|dom4j-1.6.1.jar|ehcache-1.2.3.jar|ejb3-persistence.jar|framework.jar|gson-1.7.1.jar|guava-11.0.1.jar|hibernate-annotations.jar|hibernate-commons-annotations.jar|hibernate-entitymanager.jar|hibernate3.jar|imap.jar|javassist.jar|jboss-archive-browsing.jar|jcommon-1.0.13.jar|jfreechart-1.0.10-experimental.jar|jfreechart-1.0.10.jar|jsdk-24.jar|jsdk23.jar|jstl.jar|jta.jar|jtds-1.2.jar|log4j-1.2.14.jar|mail.jar|mailapi.jar|mssqlserver.jar|poi-3.6-20091214.jar|poi-ooxml-3.6-20091214.jar|seguranca.jar|segurancaBI.jar|slf4j-api-1.6.4.jar|slf4j-log4j12-1.6.4.jar|smtp.jar|standard.jar|tbutils-wcf.jar|uploadbean.jar|wcf.jar|webutil.jar" kind="src" path="lib"/>
 <classpathentry kind="src" path="Test"/>
 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0"/>
 <classpathentry kind="lib" path="lib/bonecp-0.7.1.RELEASE.jar"/>
 <classpathentry kind="lib" path="lib/bonecp-provider-0.7.1-rc2.jar"/>
 <classpathentry kind="lib" path="lib/cglib-2.1.3.jar"/>
 <classpathentry kind="lib" path="lib/commons-beanutils.jar"/>
 <classpathentry kind="lib" path="lib/commons-io-1.4.jar"/>
 <classpathentry kind="lib" path="lib/commons-lang-2.2.jar"/>
 <classpathentry kind="lib" path="lib/ehcache-1.2.3.jar"/>
 <classpathentry kind="lib" path="lib/ejb3-persistence.jar"/>
 <classpathentry kind="lib" path="lib/framework.jar"/>
 <classpathentry kind="lib" path="lib/hibernate-annotations.jar"/>
 <classpathentry kind="lib" path="lib/hibernate-commons-annotations.jar"/>
 <classpathentry kind="lib" path="lib/hibernate-entitymanager.jar"/>
 <classpathentry kind="lib" path="lib/hibernate3.jar"/>
 <classpathentry kind="lib" path="lib/jta.jar"/>
 <classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/>
 <classpathentry kind="lib" path="lib/webutil.jar"/>
 <classpathentry kind="lib" path="lib/ojdbc14.jar"/>
 <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
 <classpathentry kind="lib" path="lib/asm.jar"/>
 <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 <classpathentry kind="lib" path="/SolicitacoesNissan/WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar"/>
 <classpathentry kind="lib" path="/SolicitacoesNissan/WebRoot/WEB-INF/lib/commons-collections-2.1.1.jar"/>
 <classpathentry kind="output" path="classes"/>
</classpath>

terça-feira, 29 de maio de 2012

Criando o arquivo services.xml para criação de webservices com Axis2

Criando o arquivo services.xml para criação de webservices com Axis2 


services.xml 
 
<serviceGroup>  
 <service name="OfertasWs" >
  <description>
   Web Services  Ofertas
  </description>
  <messageReceivers>
   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
   <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
  </messageReceivers>
  <!--Classe que contém os métodos do webservice-->
  <parameter name="ServiceClass">br.com.md.cielo.ws.service.OfertasWs</parameter> 
 </service>
</serviceGroup>
 
Este aruivo deve estar no diretório web-inf do arquivo aar 

segunda-feira, 21 de maio de 2012

Colocando as intruções do Hibernate usando log4j

Para colocar as instruções do Hibernate no console e num arquivo de log do seu projeto. será necessário a importação do jar log4j.jar e a criação do do arquivo log4j.propertis do diretório src.
log4j.properties:

log4j.rootLogger=INFO, FILE, CONSOLE

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.File=${catalina.home}\\logs\\CieloWS.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} : %-5p : %m%n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c - %m%n

log4j.logger.br.com=INFO
log4j.logger.org.hibernate.SQL=DEBUG
# Root logger option
#log4j.rootLogger=INFO, FILE

# Log everything. Good for troubleshooting
log4j.logger.org.hibernate=INFO

# Log all JDBC parameters
log4j.logger.org.hibernate.type=ALL

quarta-feira, 9 de maio de 2012

Pesistência com hibernate conectando com SqlServer

Exemplo de pesistência com hibernate conectando com SqlServer
Jares necessários hibernate3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar

SessionFactory
import org.apache.log4j.Logger;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration; 


public class HibernateSessionFactory { 

private static Logger log = Logger.getLogger(HibernateSessionFactory.class);


private static SessionFactory sessionFactory;

static {

rebuildSessionFactory();

}


public static SessionFactory getSessionFactory() {

return sessionFactory;

}


public static void setSessionFactory(SessionFactory sessionFactory) {

HibernateSessionFactory.sessionFactory = sessionFactory;

}


private HibernateSessionFactory() {

}


public static Session getSession() {

Session session = null;

try { 

session = sessionFactory.getCurrentSession();

} catch (Exception e) {

log.info("Abrindo nova sessão: "+ e.getMessage());

session = sessionFactory.openSession();

}

if (session == null || !session.isOpen()) {

session = sessionFactory.openSession();

}

return session;

}

public static void rebuildSessionFactory() {

try {

PoolProperties poolProperties = new PoolProperties("MyProjetct");

poolProperties.read();


AnnotationConfiguration configuration = (AnnotationConfiguration) new AnnotationConfiguration()

.configure("hibernate.cfg.xml");

sessionFactory = configuration

.setProperty("hibernate.connection.url","jdbc:jtds:sqlserver://localhost:1433/MyProject")

.setProperty("hibernate.connection.username", "user")

.setProperty("hibernate.connection.password", "password")

.setProperty("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect")

.setProperty("hibernate.connection.driver_class","net.sourceforge.jtds.jdbc.Driver")

.setProperty("hibernate.connection.pool_size", "10")

.setProperty("hibernate.hbm2ddl.auto", "validate")

.setProperty("hibernate.cache.provider_class",

"org.hibernate.cache.EhCacheProvider")

//.setProperty("hibernate.show_sql", "true") 

//.setProperty("hibernate.hbm2ddl.auto", "update")

// .setProperty("hibernate.archive.autodetection","class, hbm")

.buildSessionFactory();

} catch (Exception e) {

log.error("Erro ao ler as propriedades do hibernate.cfg.xml", e);

}


}


}


 hibernate config com o mapeamento de classes

HIBERNATE.CFG.XML

hibernate-configuration>
<session-factory><property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="hibernate.connection.provider_class">com.jolbox.bonecp.provider.BoneCPConnectionProvider</property> <property name="bonecp.idleMaxAgeInMinutes">4</property> <property name="bonecp.idleConnectionTestPeriodInMinutes">1</property> <property name="bonecp.partitionCount">3</property> <property name="bonecp.acquireIncrement">5</property> <property name="bonecp.maxConnectionsPerPartition">10</property> <property name="bonecp.minConnectionsPerPartition">1</property> <property name="bonecp.statementsCacheSize">50</property> <property name="bonecp.releaseHelperThreads">3</property> <property name="current_session_context_class">thread</property> <mapping class="com..model.Logradouro"></session-factory> </hibernate-configuration>
 

 

 

 

Xml do pool de conexões

 

CONNECTIONPOOL.XML

 

<databaseconnectionpool>

<default>

<driver>net.sourceforge.jtds.jdbc.Driver</driver>

<maxconnections>15</maxconnections>

<initconnections>8</initconnections>

<timeoutinterval>360</timeoutinterval>

<validationquery>SELECT RTRIM('')</validationquery>

<checkinterval>30</checkinterval>

</default>

<pool id="MyProjetct">

<conexao>

<url>jdbc:jtds:sqlserver://LOCALHOST:1433/MyProjetct</url> 

<user>desenvolvimento</user>

<password>==gdD6bpWZsUL8DHGGArGEB5</password>

<maxconnections>5</maxconnections>

<initconnections>2</initconnections>

<timeoutinterval>1440</timeoutinterval>

<validationquery>SELECT RTRIM('MarketData')</validationquery>

</conexao>

</pool>

</databaseconnectionpool> 

 

Aqui utilzaremos um filtro para gerenciar a abertura e fechamento de conexões

SESSIONFILTER

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;


import org.apache.log4j.Logger;

import org.hibernate.Session;


import com.mdsb.gpadrao.exception.DataAccessLayerException;


public class HibernateSessionFilter implements Filter {

private static Logger log = Logger.getLogger(HibernateSessionFilter.class);


public void init(FilterConfig arg0) throws ServletException {

}


public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws ServletException {

Session session = HibernateSessionFactory.getSession();

try {

if (session.isOpen()) {

session.beginTransaction();

try {

chain.doFilter(request, response);

} catch (Exception e) {

log.error(e.getMessage(), e);

session.getTransaction().rollback(); 

throw new ServletException(e);

}


if (request.getAttribute("validationError") != null

&& ((Boolean) request.getAttribute("validationError"))) {

session.getTransaction().rollback();

} else {

session.flush();

session.getTransaction().commit();

}


} else {

log.debug("FALHA - A sessão do hibernate não está aberta.");

((HttpServletRequest) request).getRequestDispatcher(

"/login.jsp").forward(request, response);

}

} catch (DataAccessLayerException e) {

log.error(e.getMessage(), e);

session.getTransaction().rollback();

throw new ServletException(e);

} catch (Exception e) {

log.error(e.getMessage(), e);

session.getTransaction().rollback();

throw new ServletException(e);

} finally {

if(session.isOpen()){

session.close();

}

session =null;

}

}


public void destroy() {

}


}

 

executando oc comandos salvar e remover

 

AbstractDAOImpl 

import org.apache.log4j.Logger;

import org.hibernate.HibernateException;

import org.hibernate.Session;


import com.mdsb.framework.taglibs.filter.integration.DAOException;

import com.mdsb.gpadrao.hibernate.HibernateSessionFactory;


public abstract class AbstractDAOImpl {

private static Logger logger = Logger.getLogger(Thread.currentThread().getClass().getName());

private Session session;


public AbstractDAOImpl() {

this.session = HibernateSessionFactory.getSession();

}


protected org.hibernate.Session getHibernateSession() {

if(!session.isOpen()){

session = HibernateSessionFactory.getSession();

}

return session;

}
public Object salvar(Object o) throws DAOException{

try {

Session session = getHibernateSession();

Object obj = session.merge(o);

return obj;

}catch(HibernateException e) {

logger.error("[AbstractDAOImpl.salvar] - EXCEPTION ", e);

throw new DAOException(e);

}

}


@SuppressWarnings("finally")

public boolean remover(Object o) throws DAOException{

boolean result = false;

try {

getHibernateSession().delete(o);

result = true;

}catch(HibernateException e) {

logger.error("[AbstractDAOImpl.remover] - EXCEPTION ",e);

throw new DAOException(e);

} finally {

return result;

}

}

public Contato obtemContatoPorId(Integer idContato) {

Criteria c = getHibernateSession().createCriteria(Contato.class);

c.add(Restrictions.eq("idContato", idContato));

c.setMaxResults(1);

return (Contato) c.uniqueResult();

}

private List findHistoricoByDate(FiltroPesquisa filtro) {

StringBuilder sb = new StringBuilder();


sb.append(" SELECT h.idHistoricoContato \n");

sb.append(" FROM HistoricoContatoEmpresa h \n");

sb.append(" inner join contato c on c.idContato = h.idContato \n");

sb.append(" inner join ( \n");

sb.append(" select distinct he.idContato, max(he.dataAtualizacao) as ultimaData \n");

sb.append(" from HistoricoContatoEmpresa he \n");

sb.append(" group by he.idContato \n");

sb.append(" ) ultimoHistorico on (ultimoHistorico.idContato = h.idContato and \n");

sb.append(" ultimoHistorico.ultimaData = h.dataAtualizacao ) \n");

sb.append(" where 1=1 \n");

if(filtro.getDataInicio() != null){

sb.append("and h.dataAtualizacao >= isnull(?, h.dataAtualizacao)");

}

if(filtro.getDataFim() != null){

sb.append(" and h.dataAtualizacao < ? \n");

}


Query q = getHibernateSession().createSQLQuery(sb.toString());

int idx = -1;

if(filtro.getDataInicio() != null){

try{

q.setDate(++idx, filtro.getDataInicio());

}catch(Exception e){}

}

if(filtro.getDataFim() != null){

try {

q.setDate(++idx, DateUtil.alteraData(filtro.getDataFim(), 1, Calendar.DAY_OF_MONTH));

}

catch (Exception e){}

}

return q.list();

}

public void closeSession(){

System.out.println("fechando conexão");

if(this.session!=null){

this.session.close();

}


}

}