viernes, 7 de junio de 2013

Nueva Pega + Nuevos Proyectos + Recordando Netbeans

A casi 2 meses de iniciar en una nueva pega, he tenido que lidiar con Netbeans. En mis tiempos de desarrollo, contadas con una mano habian sido las veces que me toco programar en netbeans hasta que llegue a FX3, donde ocupo día a día este IDE.

Se parece un poco a Eclipse, sin embargo no cambio Eclipse.

Dentro de los cambios uno es la creación de proyectos java con maven, que Netbeans lo trae incorporado en el IDE y es facil de configurar.


Dentro de los detalles tengo el siguiente.

Cree un proyecto java con maven, al cabo de 3, me los comenzó a crear sin la carpeta Other Sources, el problema es que dentro de ésta carpeta se coloca en el package <default package> el archivo de configuración del log4j, por éste motivo el proyecto no me mostraba el log en consola ni en el archivo donde estoy almacenando el log. Lo que tuve que hacer fue buscar en google y halle la siguiente solución que me sirvió.

I would place it in src/main/resources and the problem would disappear. 
Como no existía la carpeta resources la creé en la carpeta main dentro del proyecto, coloqué el archivo log4j.properties dentro y voilá.




 


martes, 8 de enero de 2013

Obtener las Categorías de un DLFileEntry


Haciendo un portlet para obtener los documentos almacenados en una determinada carpeta inicialmente obtenía los documentos por categorías, me solicitaron adicionalmente las categorías asignadas al documento.


Para obtener las categorías es necesario saber el Vocabulario almacenado, en mi caso "Biblioteca de Documentos".

  • Una vez teniendo el tipo de vocabulario:
 long tipo = Long.parseLong(portletPreferences.getValue("tipo", ""));


  • Obtengo la lista de documentos.
List<DLFileEntry> fileEntrys = DLFileEntryLocalServiceUtil.getFileEntries(themeDisplay.getScopeGroupId(), tipo);
  • Con un ciclo for recorro la lista y obtengo cada objeto:

DLFileEntry doc = fileEntrys.get(i);

  • Luego obtengo el AssetEntry asociado al documento.
AssetEntry ae = AssetEntryLocalServiceUtil.getEntry(DLFileEntry.class.getName(), doc.getFileEntryId());




  • Finalmente obtengo la(s) categoría(s) asociada(s) al documento:
            List<AssetCategory> aCat = AssetCategoryLocalServiceUtil.getEntryCategories(ae.getEntryId());





miércoles, 5 de diciembre de 2012

TRUNCATE TABLES - Con llaves foráneas

Hace poco estuve tratando de truncar una tabla para reiniciar el contador del ID de las filas, sin embargo no podía, porque? porque tenia referencias de la tabla en otra tabla...



El problema era que queria reinciar el contador en la tabla tipo_contrato
pero navicat no me dejaba porque tenia referancia en la tabla relacion y a su vez ésta tenia referencia en contrato_relacion la solución, eliminé los datos y trate de truncar...


Esperé...
Y me salió...

ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint...

 Como no resultó traté con la tabla relacion ...
Y Nuevamente...
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint


 Finalmente googleando encontré la solución y se realiza de la siguiente forma:

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE contrato_relacion;
TRUNCATE relacion; 
TRUNCATE tipo_contrato;
SET FOREIGN_KEY_CHECKS=1;
 
 Y voilá!
 
 
 
 
Y su música correspondiente...  


martes, 2 de octubre de 2012

getChileanTime

Método para obtener la hora en formato GTM-4 desde una hora String hh:mm en formato UTC

    public static String getChileanTime(String hora){
           
            StringTokenizer saca = new StringTokenizer(hora, ":");
            // saca: contiene la hora sin los delimitadores ":"
            int num = saca.countTokens();
            // num=2 corresponde al numero de tokens (porciones de string)
            // que quedaron en la variable saca en este caso hh, mm

            String cadena[] = new String[num];
            // se crea un objeto tipo arreglo,cadena[] de largo "num"
            // se llenara cadena[] con los 3 tokens de "saca"
            for (int x = 0; x < num; x++) {
                cadena[x] = saca.nextToken();// llena cadena
            }
            // A continuacion se convierten los string a integer :
            int hh  = Integer.valueOf(cadena[0]).intValue();
            int mm = Integer.valueOf(cadena[1]).intValue();
            SimpleDateFormat sdf = new SimpleDateFormat("kk:mm");
            java.util.Date date = new java.util.Date();
            date.setHours(hh);
            date.setMinutes(mm);
            sdf.setTimeZone (TimeZone.getTimeZone("GMT-4")); 
            String resultado = sdf.format(date);
            return resultado;
        }




Que mejor que solucionar cachos junto a AC/DC
AC/DC - Are you ready


lunes, 16 de abril de 2012

OBTENER COMENTARIOS PARA CUALQUIER OBJETO

Hace ya algunas semanas me salió un problema creando un portlet... Como obtener los comentarios de un determinado journal?. Despues de busquedas incansables me encontré con el siguiente código el cual puede ser adaptado para obtener comentarios de cualquier tipo de objeto (JournalArticle, IGImage, etc...).

/*Primero obtenemos la lista de mensajes del tipo MBMessage
   En el caso del ejemplo necesito obtener los comentarios para una imagen por lo cual obtengo el nombre de la clase IGImage y finalmente le paso el id de la imágen.
*/
List<MBMessage> mensajes = MBMessageLocalServiceUtil.getMessages(IGImage.class.getName(), imagen.getImageId(), 0);

/* A continuación con un ciclo recorro la lista y obtengo la información por mensaje.
    A continuación se imprime:
    href = contiene la url que lleva hacia el perfil del usuario que realizó el comentario.
    mensaje.getUserName() = quien posteo
    mensaje.getBody() = texto del mensaje
*/


<%
for (int i = 0; i<tamanioLista; i++) {
   MBMessage mensaje = mensajes.get(i);
   if(mensaje.getParentMessageId()>0){
%>
      <div class="item_comentario">
   <h5>
      <a href="<%=urlDst + "/web/" + themeDisplay.getUser().getScreenName()%>">
                 <%=mensaje.getUserName() %>
               </a>
            </h5>
    <%=mensaje.getBody() %>
        </div>
<% }
}%>

Y que mejor que colocar unos temas de Guns'n Roses...


jueves, 5 de abril de 2012

COMO OBTENER JOURNALS POR TIPO

A continuación se muestra el código para obtener una lista JournalArticle del tipo que uno necesite, para ésto es necesario saber el tipo de journal a buscar  (tipoArticulo).


Junto a Faith No More - Epic (1990)



DynamicQuery dq2 = DynamicQueryFactoryUtil.getDynamicQueryFactory()
.forClass(JournalArticle.class, cl);

Criterion crit = PropertyFactoryUtil.forName("type").eq(tipoArticulo);

Criterion crit2 = PropertyFactoryUtil.forName("status").eq(0);
dq2.add(crit);
dq2.add(crit2);
dq2.addOrder(OrderFactoryUtil.desc("createDate"));
List lista = null;
lista = JournalArticleLocalServiceUtil.dynamicQuery(dq2);
List allArticles = (List) lista;