Buscar este blog

martes, 5 de julio de 2016

Crear tabla con dblink en otra db - PHP


Suponemos que en este punto estamos conectados a la base de datos A.

1) Abrir conexión a DB donde queremos crear la tabla.

$conexion = new ConnPostgres($conn->host, $conn->port, $conn->data_base, $conn->user, $conn->password);

2) Crear la SQL donde creamos una tabla a partir de una select sobre otra tabla.

$sql = 'create table '.$nombreTabla.' as select q.NOMBRECAMPO/OS from dblink('.'\'dbname=NOMBREDB user=USER password=PASSWORD'.'\', '.'\'select NOMBRECAMPO/OS
from TABLA where
xxxxx='.$xxxxx.'\')as q (NOMBRECAMPO/OS, NOMBRECAMPO character varying(25))';

3)Lanzar query.

$conexion->query($sql);

martes, 17 de mayo de 2016

NVL PL/SQL de Oracle

La función NVL forma parte del lenguaje PL/SQL de Oracle.
NVL( Expresión1, Expresión2 )
 Si Expresión1 es null, se devolverá valor de Expresión2, util para operaciones.

 Por ejemplo:
1SHOW NVL( NULL, 'Es nulo' )
2Es nulo         

Envio de email. javax.mail

    public static void enviarCorreo(List emailsDestinatarios,String pAsunto,String pMensaje) {
           try {
                   if (emailsDestinatarios.size()>0){
                   log.info("Creando el correo a enviar...");
                   InternetAddress from = new InternetAddress(mailConfig.getProperty(MAIL_SENDER));
                   from.setPersonal(mailConfig.getProperty(MAIL_ALIAS), "iso-8859-1");

                  
                   MimeMessage message = new MimeMessage(session);  
                   message.setFrom(from);   
                   message.addRecipients(Message.RecipientType.BCC, emailsDestinatarios.toArray(new InternetAddress[emailsDestinatarios.size()]));
                   message.setSubject(pAsunto);  
                   message.setSentDate(new Date());
                  
                   MimeBodyPart cuerpoEmail = new MimeBodyPart();
                   cuerpoEmail.setText(pMensaje, "us-ascii");
                   cuerpoEmail.setHeader("Content-Type", "text/html");
                   MimeMultipart contenido = new MimeMultipart();
                   contenido.addBodyPart(cuerpoEmail);
                   message.setContent(contenido);
                  
                   log.info("Correo a enviar creado.");
                   log.info("Enviando el correo...");
                   Transport.send(message);
                   log.info("Correo enviado.");
                }else
                    log.info("No hay destinatarios válidos.");             
           } catch (MessagingException me) {
               log.error("Se ha producido un error en el envío del correo.", me);
           } catch (UnsupportedEncodingException ue) {
               log.error("Se ha producido un error con el encoding del correo.", ue);
           }catch (Exception mex) {
                mex.printStackTrace();
                log.error("No se pudo enviar el correo." + mex.getMessage());
           }
       }

Columnas autoSize Export Excel

Importante a la hora de exportar en excel, será siempre necesario adaptar el ancho de las celdas al texto que hay en ella.


                    //Recorremos las columnas (l) y ajustamos el ancho
                    for (int i = 0; i <= l; i++) {
                        sheet.autoSizeColumn(i);
                    }

No facerlo solo en la cabezera, es frecuente esto de realizarlo solo a la fila 0.

Literales numéricos

Java 7. Liempieza en código, buena práctica

int variableUno = 1000000;
int variableDos= 1_000_000; // mucho mejor!!

NO UTILIZAR _ para iniciar la variable
int lit1 = _1_000_000; //ERROR
int lit2= 10_0000_0; // Esta permitido.

Helper para funciones más habituales


Declarar componente Helper, que se utilizará en toda la aplicación.

@Component
public class Helper {
   private static final String POSTERIOR = "posterior";
    private static final String ANTERIOR = "anterior";
   
    private static final Logger log = Logger.getLogger("Helper");

    public static String getFileName(String nombre) {
        return nombre.substring(nombre.lastIndexOf('/')+1);   
    }
    public static String getProperty(String key){
        return ApplicationContextProvider.getContext().getMessage(key, null, null);
    }
    public static void showGlobalError(String claveSumario,String claveDetalle){
        showGlobalMsg(null, FacesMessage.SEVERITY_ERROR, claveSumario,claveDetalle);       
    }
    public static boolean isPostback() {
        return FacesContext.getCurrentInstance().isPostback();
    }

}

En cualquier clase, usar

import com.eon.plinv.util.Helper;
Helper.isPostback();

Helper.getProperty(APP_INFORMES_DIRECTORIOINFORMES) donde DIRECTORIOINFORMES es
private static final String APP_INFORMES_DIRECTORIOINFORMES = "app.informes.directorioinformes";