Archivo
De propósitos, denuncias y ánimos
Como no sólo de tecnología vive este blog os enlazo y comento brevemente dos posts que he leído durante este fin de semana en un momento de aburrimiento/desidia/dejadez. Han caído en mis manos de repente, uno tras del otro, y parecería coincidencia pero están tan ligados con las inquietudes que llevo manifestando durante los últimos tiempos en mi entorno (laboral y personal) que me maravillo de la fluidez, suavidad y naturalidad de esa coincidencia. Y también me doy cuenta de que a veces lo obvio han de señalartelo otras personas, y te asombras por darte cuenta de que siendo tan obvio ¿porque no lo habías visto tú antes?.
Basta de retórica. Vayamos al grano.
El primer post que leí es de Javier Perez y se titula Tenemos derecho a cumplir con nuestros deberes.
Pego aquí un par de párrafos de esta áltamente recomendable lectura.
“..Una de las causas de esta crisis sea posiblemente la obcecación con los derechos mientras nos olvidábamos de nuestros deberes, cuando ambos conceptos en su justo equilibrio es lo que sustenta a una sociedad avanzada.“
O por ejemplo, ”Yo siempre me he sentido un “bicho raro” en toda empresa donde he estado precisamente por sentirme con la obligación y deber de contribuir a la mejora de la productividad. Algo que a menudo se ha malinterpretado por mis propios compañeros de trabajo, o incluso digo más allá, se ha tomado como una auténtica amenaza...”
Este bloguero dice verdades como puños, o al menos eso es lo que pienso yo. De verdad os recomiendo encarecidamente la lectura de este post. Javier Perez ya queda añadido a mi lista de blogs interesantes, seguro que hablaremos más de este compañero bloguero.
Tras leer este post y sentirme al 200% identificado con lo que decía Javier Perez ya podía haber dejado de leer más de mi agregador rss. Pero seguí y encontré inmediatamente otra perla.
En este caso hablo de Thinkwasabi, oro viejo. El post en cuestión llamó mi atención por el título: Una aplicación para descansar entre tareas. Es importante saber descansar entre tareas. Mejora la productividad pero a veces se nos olvida. Yo mismo instalaré en el ordenador del trabajo algunas de las aplicaciones indicadas en ese post y seguiré los consejos que Berto Pena (el autor del blog) señala en el mismo post. Disfrutando con la lectura de ese post se encuentra un enlace a su resumen de hábitos del 2009 que se enmarcan dentro de la mejora de la productividad (esa palabra tan de moda últimamente en España). Berto Pena es un “escritor especializado en Organización, Gestión Personal y Productividad.”. Y Thinkwasabi es su interesantísimo blog.
No hace falta decir que seguiré los 10 hábitos de Berto Pena desde hoy mismo. Y digo seguiré porque si digo intentaré, me dejo alguno en el camino. Y son todos, desde mi punto de vista, necesarios.
Pero bueno, ¿este post no era para hablar de mis propósitos para el 2010?. Y he hablado de muchos de ellos. Los 10 puntos de Berto Pena quedan asimilados inmediatamente. También el propósito de continuar siendo curioso, mantener el placer del aprendizaje, inconformista, luchar por el trabajo tal y como lo concibo. Y perder peso jeje, pero eso ya pertenece al ámbito más personal (eterna lucha contra el sobrepeso).
Fatwire Content Server. Conocer el número de elementos retornados con AssetDataManager antes de iterar sobre ellos
Esta mañana mantenía una conversación con un querido amigo de un anterior trabajo y me planteaba una duda muy interesante.
No sabía como obtener el número de elementos de una query que se ejecutaba con AssetDataManager antes de iterar sobre los datos devueltos. La cuestión era interesante porque yo tampoco lo sabía (aunque dije que sí se podía antes de cerciorarme, esta vez hubo suerte).
Lo primero que hice fue buscar en los manuales un ejemplo de ese tipo de querys con AssetDataManager, ya que en la aplicación en la que estoy actualmente no hay código parecido. Una vez localizado, ejecuté un Kit de Desarrollo personal para pasar del dicho al hecho y hacer las pruebas pertinentes.
El código sería algo parecido a esto
Session ses = SessionFactory.getSession();
AssetDataManager mgr =AssetDataManager) ses.getManager( AssetDataManager.class.getName() );
Query q = new SimpleQuery(“TIPO_CONTENIDO”, SUBTIPO_CONTENIDO”, null, Collections.singletonList(“ATRIBUTO”) );
Y luego el for (aquí deberíamos conocer el número de elementos devueltos por AssetDataManager, antes del for)
for( AssetData data : mgr.read( q ) )
Mirando en la documentación, compruebo que la sentencia mgr.read(q) devuelve un objeto de tipo AssetData y que este implementa la interfaz Iterable. De ahí la sintaxis del for, un poco alejada de la clásica (¿me estaré volviendo clásico/viejo?) for(inicialización; comprobación de la condición;cambio de valor de la variable que forma la condición), que se aprovecha de la interfaz Iterable para recorrer hasta el final el objeto devuelto.
Entonces vamos a recuperar el susodicho objeto
Iterable <AssetData> aData = mgr.read( q );
Ok. Ahora quiero conocer su tamaño (size()). Sin embargo ni la clase AssetData ni el interfaz Iterable implementan dicho método. He de intentar tener un objeto que lo tenga.
Mirando la api de java compruebo que el interfaz Iterable tiene un conjunto de SubInterfaces entre los que se encuentra Collection. Ese interfaz estoy más acostumbrado a usarlo.
De nuevo voy a mirar el API de java, en este caso a ver que pista me puede dar Collection. Veo que el objeto Vector implementa el interfaz Collection, que a su vez es un SubInterfaz de Iterable..Bingo. Al mirar el API de Vector para comprobar de que manera se relaciona Vector con Collection veo que uno de los constructores de Vector tiene como parámetro un objeto que implemente Collection…Esto está hecho entonces.
El código que me falta es el siguiente:
Vector vcData = new Vector((Collection)aData);
Hecho, ya se puede averiguar el número de elementos.
vcData.size();
Por tanto finalmente el código quedaría de la siguiente manera:
Session ses = SessionFactory.getSession();
AssetDataManager mgr =AssetDataManager) ses.getManager( AssetDataManager.class.getName() );
Query q = new SimpleQuery(“TIPO_CONTENIDO”, SUBTIPO_CONTENIDO”, null, Collections.singletonList(“ATRIBUTO”) );
Iterable <AssetData> aData = mgr.read( q );
Vector vcData = new Vector((Collection)aData);
out.println(“elementos= ” + vcData.size());
//Y ya vendría el for
for( AssetData data : mgr.read( q ) )
No se si habrá otra manera de hacerlo, si es así estaría muy interesado en saberla.
El conocimiento es colectivo. Saludos