lunes, 25 de febrero de 2013

Configurar pagina maestra de tiles con struts 1.x para css y javascripts

Bueno algunas veces necesitamos agregar javascript o hojas de estilo que no sean propios de la página maestra sino de los hijos, pues bien lo podemos hacer de la siguiente forma.

En tiles-defs.xml

       <definition name="master" path="/jsp/templates/principal.jsp">
  <put name="title" value="Sistema" />
  <put name="body" value="/recursos/html/contenido.html" />
  <putList name="cssList" />
  <putList name="jsFilesList" />
     </definition>


Y ahora en el principal.jsp


  <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

   <tiles:useAttribute id="cssList" name="cssFilesList" classname="java.util.List" />
        <c:forEach var="cssFileName" items="${cssList}">
              <link type='text/css' rel="stylesheet" href="<%=request.getContextPath()%><c:out value='${cssFileName}' />" />
        </c:forEach>
   
   <tiles:useAttribute id="jsList" name="jsFilesList" classname="java.util.List" />
        <c:forEach var="jsFileName" items="${jsList}">
              <script type="text/javascript" src="<%=request.getContextPath()%><c:out value='${jsFileName}' />"></script>
        </c:forEach>

Ya por último los hijos que extiendan de master en su respectivo xml sobreescriben.

<definition name="childPage" path="/child.jsp" extends="master">
        <putList name="cssList">
            <add value="/css/hoja1.css"/>
            <add value="/css/hoja2.css"/>
        </putList>
   <putList name="jsList">
            <add value="/js/Script1.js"/>
            <add value="/js/Script2.js"/>
        </putList>
    </definition>

lunes, 18 de febrero de 2013

Cambiar puertos de oracle xpress edition en windows



 Muchas veces cuando desarrollas en java el xpress edition ocupa el puerto 8080 el cual ocupa jboss o glassfish, entonces si utilizas varios servidores es mas facil cambiar el puerto de oracle que el de los servidores.

Todo esto es por línea de comandos en Windows.

C:\WINDOWS\system32>sqlplus system@xe

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Express Edition Release

SQL> -- ver qaue estatus tienen
SQL> select dbms_xdb.gethttpport as "HTTP-Port"
            , dbms_xdb.getftpport as "FTP-Port" from dual;

HTTP-Port   FTP-Port
---------- ----------
     8080          0


SQL> -- estable el puerto http y ftp

SQL> begin

 2    dbms_xdb.sethttpport('9999');

 3    dbms_xdb.setftpport('2100');

 4  end;

 5  /



PL/SQL procedure successfully completed.



SQL> select dbms_xdb.gethttpport as "HTTP-Port"

            , dbms_xdb.getftpport as "FTP-Port" from dual;



HTTP-Port   FTP-Port

---------- ----------

       80       2100


SQL> -- Deshabilitar el accesos

SQL> begin

 2    dbms_xdb.sethttpport('0');

 3    dbms_xdb.setftpport('0');

 4  end;

 5  /

lunes, 11 de febrero de 2013

OR dinamico en Hibernate

Esta funcion es util cuando se tiene una serie de valores que se pueden ir agregando dinamicamente en Hibernate, por ultimo lo agregamos al criteria.


Disjunction disjunction=Restrictions.disjunction();
            for(Objeto objeto:lista){
                disjunction.add(Restrictions.eq("campo",objeto.getId()));   
            }
criteria.add(disjunction);

Seleccion de registros distintos en Criteria hibernate DISTINCT

Pues bien a veces necesitamos registros distintos.

Tenemos dos formas la primera es seteandole a la proyeccion un distinct, lo malo de hacerlo de esta forma es que solo trae el registro seteado en la proyeccion.

ProjectionList projectionList = Projections.projectionList();
  projectionList.add(Projections.distinct(Projections.property("rfc")));

criteria.setProjection(projectionList);

Y la segunda es mediante el resultTransformer el cual trae la clase persistida en forma completa
equivalente a un distinct de todo *

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);


domingo, 10 de febrero de 2013

Base de datos en javascript

Tengo un buen rato siguiendo las bases de datos del lado del cliente, y aunque html5 ya proporciona almacenamiento del lado del cliente todavía sigue siendo limitado, así que encontré este motor que funciona de lado del cliente :) http://javascriptsql.sourceforge.net

viernes, 28 de diciembre de 2012

Habilitar Xdebug en wamp

Aqui un link por si lo deseas integrar con eclipse http://www.plinky.it/blog/2011/02/14/debug-in-php-activate-xdebug-using-wamp/#axzz2GMxyDYxe, En el php.ini
; XDEBUG Extension

zend_extension = "c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.0-5.4-vc9-x86_64.dll"

[xdebug]
xdebug.remote_enable = on
xdebug.profiler_enable = on
;xdebug.profiler_enable_trigger = on
;xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/wamp/tmp"
xdebug.remote_handle=dbgp

lunes, 10 de diciembre de 2012

Clase util para foliar en excepciones

De esta forma se pueden identificar mas rapido las excepciones, la clase esta basada en el patron de diseño singleton. El metodo me lo paso mi compa oscar grax.

Para llamarla Foliador.getFolio().
public class Foliador {
 
 /** El foliador. */
 private static Foliador foliador;

 /**
  *  
  * Constructor que previene el instanciamiento.
  *
  */
 private Foliador() {
 }

 /**
  * Obtiene la instancia de Foliador.
  *
  * @return instancia unica de Foliador
  */
 public static synchronized String getFolio() {
  if (foliador == null) {
   foliador = new Foliador();
  }
  return foliador.generaFolio();
 }

 /**
  * Sobreescritura del metodo clone
  */
 public Object clone() throws CloneNotSupportedException {
  throw new CloneNotSupportedException();
 }
 
 /**
  * Genera un folio.
  *
  * @return el folio
  */
 private String generaFolio() {
  String folio;
        folio = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        return "Folio de error: " +folio.toString()+" ";
    }
}