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:
1 | SHOW NVL( NULL , 'Es nulo' ) |
2 | Es 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());
}
}
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.
//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.
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";
Suscribirse a:
Comentarios (Atom)