Páginas

Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

27 de abril de 2015

llamada a procedimientos sql desde java




para llamar desde java a procedimientos sql, este seria el codigo.

   java.sql.Connection connection //hay que crearse una funcion
   java.sql.PreparedStatement ps ps=connection.prepareCall("CALL NOMBRE_PAQUETE.NOMBRE_PROCEDIMIENTO('TMP')");
   ps.execute();


SVN KIT comparar entre dos revisiones



SVNKIT son unas librerias para poder realizar commit o rolback desde java. Estas librerias no tienes un java doc muy bueno por ese motivo. quiero compartir como se puede sacar toda la informacion de dos revisiones.  

Esta funciona newInstance de la clase SVNClientManager. devuelve una lista de revisiones y por lo tanto una lista de los cambios que se han producido.

el objeto que devuelve arg0 tiene toda la información de la revision , numero, cambios y mensaje del commit.


SVNClientManager.newInstance(new DefaultSVNOptions(), "lectura", "lectura").getLogClient().doLog( SVNURL.parseURIEncoded(rama.getUrlv()+"/"+vIncio),//URL null,//path SVNRevision.HEAD,//pagRevision SVNRevision.create(referencia),//starRevision SVNRevision.HEAD,//endRevision false,//stop on copi false,//div change 50L,//log limiet new org.tmatesoft.svn.core.ISVNLogEntryHandler(){//handler public void handleLogEntry(SVNLogEntry arg0) throws SVNException { //System.out.println(arg0.getRevision()); } });

13 de febrero de 2014

cargar la información cuando selecciona el tab


para cargar la información cuando esta la pestaña seleccionada


display.getTabItem().addListener(Events.Select, new Listener(){

@Override
public void handleEvent(BaseEvent be) {

Tools.loadingContainerSetVisible(true);
cargar();
}

});

cambia de color la fila en grid


/**
* Función que cambia de color la fila
*
*/
public class GVC extends GridViewConfig{
@Override
        public String getRowStyle(ModelData model, int rowIndex, ListStore ds){

    if (rowIndex%2==0){
    return "coloreador-grid-row-impar";
    }
    else
            return "";
    }
        
    }

GridView view = new GridView(); 
view.setViewConfig(new GVC());

grid.setView(view);

presenter

this.display.getGrid().getView().setViewConfig(new GridViewConfig() {
@Override
public String getRowStyle(ModelData model, int rowIndex,
ListStore ds) {
if (model != null) {

if (model.get("id") == null){
return "coloreador-grid-row-nuevo";
}
else{
if (model.get("colorea") != null && (Boolean) model.get("colorea")) {
return "coloreador-grid-row-borrado";
} else {
return "coloreador-grid-row-sincolor";
}
}

}
return "";
}

});


en  css 

.coloreador-grid-row-sincolor {
background-color: #FFFFFF !important;
}

2 de septiembre de 2013

para mostrar código en html o javascript en paginas web


Para este problem que parce algo trivil hay al menos tres soluciones
que yo he encotrado.

"<" comillas entre los signos de mayor y menos , sirve sobre todo para codigo JS o que tenga alguan etiqueta

"<"pre">" codigo a mostrar "<"/pre">" sobre todo vale para cuando quieres mostrar para html

"<"code">"  codigo a mostrar "<"/code">" sobre todo vale para cuando quieres mostrar para html

31 de agosto de 2013

descarga de ficheros desde aplicación con GWT


Os comento a continuación una forma de detectar la descarga de ficheros desde aplicación.

Este método es compatible con todos los navegadores empleando JQuery 1.x y un par de extensiones del mismo: BlockUI y Cookie. La idea se basa en generar un token de descarga que se escribe en una cookie una vez el fichero ha sido descargado: la aplicación queda a la espera de este token leyendo las cookies cada cierto tiempo.

La implementación es sencilla:

1. Preparar para la descarga de ficheros un iframe vacío en la página index (o la que se emplee como montaje de la aplicación):


"<"iframe src="javascript:''" id="__gwt_downloadFrame" tabIndex='-1'
        style="position: absolute; width: 0; height: 0; border: 0"">""<"/iframe">"


2. Llamar a fichero a descargar. Llamamos a un servlet que genera el documento indicando un token que en el fondo es un UID o número aleatorio:
"
String UID = Math.random()*1000*Math.random()*10000;
String url = GWT.getHostPageBaseURL() + "/tools/XXXXXXXX" + "&UID=" + UID;
iniciarProcesoCheckDownload (UID);
DOM.setElementAttribute(RootPanel.get("__gwt_downloadFrame").getElement(),"src", url); 
"
Donde se invoca una función javascript antes de la descarga para comunicar el token (UID):
"
public static native void iniciarProcesoCheckDownload(String token) /*-{
    $wnd.programarEscuchaFichero (token);
}-*/;
"
3. En este proceso estamos llamando a una función de Javascript que realiza el bloqueo de la pantalla y la espera de lectura de cookie, donde hemos incluido un control por tiempo como mecanismo de control. Este código requiere de las librerías JS de JQuery:

"<"script src="js/jquery-1.10.2.min.js" ">""<"/script">"
"<"script src="js/jquery.cookie.js">"<"/script">"
"<"script src="js/jquery.blockUI.js"">""<"/script">"
"
var fileDownloadCheckTimer;
var downloadToken;
var startTime;

function ocultarDivDescarga() {
    $.unblockUI();
    window.clearInterval(fileDownloadCheckTimer);
    window.status = '';
}

function programarEscuchaFichero(token) {
    
    downloadToken = token;
    $.blockUI({baseZ: 3000, message: '"<"h1">"Espere mientras se prepara la descarga ... "<"br/">""<"br/">" "<"img src="custom/LoadingProgressBar.gif" border="0" width="100"/">" "<"/h1">"' });
    startTime = new Date();
    
    fileDownloadCheckTimer = window.setInterval(function () {
      var cookieValue = $.cookie('FileCookie');
      if (cookieValue == downloadToken) {
          ocultarDivDescarga();
      }
      else {
          var endTime = new Date();
          var secondsOpen = Math.floor((endTime - startTime) / 1000);
          if (secondsOpen> 60*2) { // 2 minutos
              // Salimos por tiempo, medida de seguridad
              ocultarDivDescarga();
                window.alert ('La descarga no se completó en el tiempo esperado, por favor verifique si ha obtenido el fichero solicitado o inténtelo de nuevo.');
          }
          else
          {
              window.status = 'Espere mientras se prepara la descarga ... ('+secondsOpen + ' segundos )';
          }
      }
    }, 1000);
  }
"

4. En la parte servidora, solo tenemos que recoger el token de la petición:

String token = request.getParameter("UID");

5. Y al descargar el fichero incluir una cookie con el token, para que el cliente (navegador web) salga de la espera cuando la lea. Hay que poner la ruta raiz así como un tiempo de expiración no demasiado bajo (problemas con diferencia de hora con servidor, zona horaria, etc.):

// indicar token para control de descarga:
Cookie thecookie = new Cookie("FileCookie", token);
thecookie.setMaxAge(60 * 60 * 4); // 4 horas de vida TOPS
thecookie.setPath("/");
response.addCookie(thecookie);

// Escribir binario en salida
response.setContentType ("application/xls");
response.setHeader ("Content-Disposition", "attachment;filename=" + sArchivo);
OutputStream ostSalida = response.getOutputStream();
"["..."]"


La fuente original de la solución es la siguiente: 

http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx

Local el acceso a OID desde la aplicación


  • Configurar en Glassfish el recurso de Realm (dominio contra el que valida Galssfish usuarios)

  • Configurar recurso ldap\eLDAP en Glassfish (para la gestión de usuarios y grupos de OID)

  • Configurar recurso usuarioldap en Glassfish con los datos:
    • Resource TYpe: com.rura.paquete.modelo.ConfiguracionUsuario
    • Factory: com..rura.paquete..seguridad.jndi.ConfiguracionUsuarioObjectFactory

  • En la opción de Security, fijar como realm por defecto el recién creado



3 de julio de 2013

borrar handlers de las ventanas

((ToolButton)display.getWindow().getHeader().getTool(this.display.getWindow().getHeader().getTools().size()-1)).addSelectionListener(new SelectionListener() {
@Override
public void componentSelected(IconButtonEvent ce) {
for (HandlerRegistration hr: registeredHandlers) {
hr.removeHandler();
}
}
}));

19 de septiembre de 2012

error de mybatis


si os sales este error

...
Falta el parámetro IN o OUT en el índice:: 1
...


es en las fusiones de inserción o actualización es porque el modelo no tiene el paramentro que estas ponienos en el xml del mybatis

en el xml deberia de tener tambie esta estructura


<select statementType="CALLABLE" id="nombre_procedimiento" parameterType="tipo" resultMap="resMapTipo">


20 de agosto de 2012

& no variable sino texto script pl/sql



para evitar que los textos con el simbolo '&' te los coja como variable en un script

cuando escribas el script debes de poner esta sentencias al principio

set define off

23 de mayo de 2012

no muestra datos en store cuando no esta vacío con scarol




conter_panel_grid.setScrollMode(Scroll.AUTOX);


en el sert data del grid deberiamos hacer un reconfigure
grid.reconfigure(gridBalance.getStore(), gridBalance.getColumnModel());
grid.getLayoutData();
conter_panel_grid.layout();

ASPOSE COLOR CELL


una manera


colorlineas = cellsSiniestro.getCell(indice-1,31).getStyle();
color = colorlineas.getColor();
color.setBlue(255);
color.setGreen(205);
color.setRed(205);
colorlineas.setColor(color);
cellsSiniestro.getCell(indice-1, 31).setStyle(colorlineas);

otra manera

Style colorlineas = cellsBalance.getCell(fila+1+i, columna+2+(j)).getStyle();
colorlineas.setHAlignment(TextAlignmentType.RIGHT);
colorlineas.setColor(Color.SILVER);
cellsBalance.getCell(fila+1+i, columna+2+(j)).setStyle(colorlineas);



ASPOSE negrita y formato


para alineación la celda

Style colorlineas = cellsBalance.getCell(fila+1+i, columna+2+(j)).getStyle();
colorlineas.setHAlignment(TextAlignmentType.RIGHT);
cellsBalance.getCell(fila+1+i, columna+2+(j)).setStyle(colorlineas);

para negrita de la celda

stiloCelda = cellsContratos.getCell(indice-3, 2).getStyle();
font = stiloCelda.getFont();
font.setBold(true);
stiloCelda.setFont(font);
cellsContratos.getCell(indice-3, 2).setStyle(stiloCelda);

fecha con nombre y mes sql/ oracle


para sacar el nombe del mes de una fecha
select ' el mes de este mes es ' || TO_CHAR(sysdate,'Month')
from scatabla tabla


uso del Between en sql/oracle


Sentencia en oracle sql del between utilizando mybatys.

select tabla.*
from scatabla tabla
tabla.fecha Between #{fecha_inicio,jdbcType=DATE} And #{fecha_fin,jdbcType=DATE}


#{fecha,jdbcType=DATE} -> esto sera la sentencia para mapearlo en el xml

pero si se quiere en una sentencia seria


select tabla.*
from scatabla tabla
tabla.fecha Between to_date('01/01/2012','dd/MM/RR') And to_date('01/06/2012','dd/MM/RR')

o tambien vale

Define fecha_inicio = to_date('01/01/2012','dd/MM/RR')
Define fecha_fin = to_date('01/06/2012','dd/MM/RR')

select tabla.*
from scatabla tabla
tabla.fecha Between &fecha_inicio And &fecha_fin

7 de febrero de 2012

idioma según el navegador [ idioma browser]



para que el idioma de la aplicación gwt sea el mismo que el del navegador debes de:

primero entrar en el archivo nombre_proyecto.gwt.xml habría que quitar las dobles comillas  < y >


 < extend-property name="locale" values="es_ES"/>

extend-property name=" locale" values="en"/>

extend-property name=" locale" values="fr"" />

< set-property-fallback name="locale" value="es_ES" />



en el archivo index.jsp

debes añadir esta linea y habría que quitar las dobles comillas  < y >
< meta name="gwt:property" content="locale=<%= request.getLocale() %/>

28 de septiembre de 2011

llamada entre dos servicios gwt


la llamada desde dos servicios

se hacer  muy simple

lo primoero se crea el objeto serviceImpl

ClassServiceImpl oSI = new ClassServiceImpl();

luego hacer las llamada al oSI.getContext() 

en esta clase te debe de devolver OjetoBeanRemote

asi podras llamar a los metos del servicio que desees

oSI.insertarBBDD();


24 de septiembre de 2011

tooltip grid cell whith messager


y en la creacion de las columnas del grid

    public static GridCellRenderer getTootipCeld(final String str) {
         GridCellRenderer renderer = new GridCellRenderer() {

            @Override
            public Object render(BaseModel model, String property,
                    ColumnData config, int rowIndex, int colIndex,
                    ListStore store, Grid grid) {
               
                Label label = new Label(""+model.get(property));
                label.setToolTip(str);
                return label;
   
            }
       
         };
       
         return renderer;
       
    }



y en la creacion de las columnas del grid

column.setRenderer(ColumnRendered.getTootipCeld("String"));


29 de julio de 2011

java 7

Escribo este post sobre java 7, porque me parece que puede ser intente indiganarme ya que es una palabra tan de moda en esta epoca.

hace algunos meses oracle lanza java 7, para asombro de todos. lo hace su buque insignea lo pavonea por la comunidad informática.

al usarlo se se dan cuenta que hay un error en una optimización de los "loops" osea se en cualquier interacción con array o listas. ( for, whiles .... )

la gente ha debido de abrir incidencias y una de las respuestas que han debido de dar al programador es que ahora oracle esta demasiado ocupado para arreglar el bug...