lunes, 12 de mayo de 2014

Estoy agregando una imagen a un archivo de Excel, cuando lo ejecuto desde eclipse, la imagen se agrega correctamente. Pero al generar el jar lanza una excepción indicando que no puede encontrar el recurso. Aquí el código para hacer la inserción. Agregar una imagen desde un jar.
 public void agregarImagenEncabezado(Sheet hoja, double x, double y,
   double width, double heigh, String rutaImagen)
   throws WriteException, IOException {

  InputStream is = this.getClass().getResourceAsStream(rutaImagen);

  // add picture data to this workbook.
  byte[] bytes = IOUtils.toByteArray(is);
  int pictureIdx = libro.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
  is.close();

  CreationHelper helper = libro.getCreationHelper();

  // Create the drawing patriarch. This is the top level container for all
  // shapes.
  Drawing drawing = hoja.createDrawingPatriarch();

  // add a picture shape
  ClientAnchor anchor = helper.createClientAnchor();
  // set top-left corner of the picture,
  // subsequent call of Picture#resize() will operate relative to it
  anchor.setCol1((int)x);
  anchor.setRow1((int)y);
  Picture pict = drawing.createPicture(anchor, pictureIdx);

  // auto-size picture relative to its top-left corner
  pict.resize();
 }

miércoles, 19 de marzo de 2014

Hibernate is not mapped

Trabajando en una aplicación que por azares del destino está con varias tecnologías de persistencia, entre algunos sabores: JDBC, Hibernate y ultimamente JPA, no me pregunten porqué, pero se tienen dos lugares donde se crean Entities, uno legado y otro donde se quiere unificar y poner orden. Una de las tareas fue migrar un Entity para que poco a poco se vayan teniendo en un sólo lugar dentro de la Nueva estructura, sin embargo al ejecutar la aplicación lanzaba este problema:
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: andres is not mapped [SELECT CC FROM andres CC WHERE CC.gubernamentales=:guber  AND CC.mercado=:mercado]
 at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1364)
 at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1300)
 at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:309)
 at asar.analitics.db.hibernate.dao.impl.CalifConsarDAOImpl.getAllInstrumentoNoGubernamental(CalifConsarDAOImpl.java:232)
 at asar.analitics.service.impl.CalifConsarServiceImpl.getAllCalifConsarNoGubernamental(CalifConsarServiceImpl.java:50)
 at asar.analitics.vista.regimen.EsperanzaPerdidaScroolPane.calculaEsperanzaPerdida(EsperanzaPerdidaScroolPane.java:201)
 at asar.analitics.vista.regimen.EsperanzaPerdidaScroolPane.calculateAll(EsperanzaPerdidaScroolPane.java:169)
 at asar.analitics.vista.regimen.EsperanzaPerdidaScroolPane.getTablaEsperanzaPerdida(EsperanzaPerdidaScroolPane.java:323)
 at asar.analitics.Regimen.initComponents(Regimen.java:20911)
 at asar.analitics.Regimen.(Regimen.java:672)
 at asar.analitics.Menu$105.actionPerformed(Menu.java:1811)
 at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
 at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
 at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
 at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
 at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
 at java.awt.Component.processMouseEvent(Unknown Source)
 at javax.swing.JComponent.processMouseEvent(Unknown Source)
 at java.awt.Component.processEvent(Unknown Source)
 at java.awt.Container.processEvent(Unknown Source)
 at java.awt.Component.dispatchEventImpl(Unknown Source)
 at java.awt.Container.dispatchEventImpl(Unknown Source)
 at java.awt.Component.dispatchEvent(Unknown Source)
 at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
 at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
 at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
 at java.awt.Container.dispatchEventImpl(Unknown Source)
 at java.awt.Window.dispatchEventImpl(Unknown Source)
 at java.awt.Component.dispatchEvent(Unknown Source)
 at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
 at java.awt.EventQueue.access$200(Unknown Source)
 at java.awt.EventQueue$3.run(Unknown Source)
 at java.awt.EventQueue$3.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
 at java.awt.EventQueue$4.run(Unknown Source)
 at java.awt.EventQueue$4.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
 at java.awt.EventQueue.dispatchEvent(Unknown Source)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
 at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
 at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: andres is not mapped [SELECT CC FROM andres CC WHERE CC.gubernamentales=:guber  AND CC.mercado=:mercado]
 at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
 at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
 at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
 at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
 at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3291)
 at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3180)
 at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
 at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
 at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
 at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
 at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
 at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
 at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
 at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:105)
 at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:80)
 at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
 at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
 at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
 at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735)
 at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:301)
 ... 44 more
La solución fue poner en el persistence XML las siguientes lineas:

             org.hibernate.ejb.HibernatePersistence
             
             entities.CalifConsarEnt
             entities.CalifEmisorEnt
             entities.CatGruposEmisorEnt
             
             
                    
                    
                    
                    
                    
                    
             
       
Puesto que las entidades van anotadas, las lineas entities.CalifConsarEnt, hacen que el EntityManager reconozca la ubicación de la nuevas clases, pues de manera automática no sabe donde encontrarlas.
@Entity
@Table(name="CALIF_CONSAR")
public class CalifConsarEnt {
 @Id
 @Column(name="INSTRUMENTO")
.
.
.
Espero que la solución le sirva. Cortesía de Vianey Reyes @VianeyItzayana

viernes, 20 de diciembre de 2013

Uso jzy3d en JFrame y JPanel

Ejemplo de uso de jzy3d en un panel, en este caso utilicé versión jzy3d-api-0.9.2-SNAPSHOT para generar una gráfica de superficie.
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.border.MatteBorder;

import org.jzy3d.chart.Chart;
import org.jzy3d.chart.controllers.keyboard.camera.AWTCameraKeyController;
import org.jzy3d.chart.factories.SwingChartComponentFactory;
import org.jzy3d.colors.ColorMapper;
import org.jzy3d.colors.colormaps.ColorMapRBG;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.Point;
import org.jzy3d.plot3d.primitives.Polygon;
import org.jzy3d.plot3d.primitives.Shape;
import org.jzy3d.plot3d.rendering.canvas.Quality;

public class GraficaPerdidasPorEscenarios {

 public JPanel generarGrafica(double[][] distDataProp){
  List polygons = new ArrayList();
  final JPanel panel = new JPanel();
  panel.setLayout(new BorderLayout()); // Use BorderLayout
  panel.setBounds(10, 10, 100, 100);
  for (int i = 0; i < distDataProp.length - 1; i++) {
   for (int j = 0; j < distDataProp[i].length - 1; j++) {
    Polygon polygon = new Polygon();
    polygon.add(new Point(new Coord3d(i, j, distDataProp[i][j])));
    polygon.add(new Point(new Coord3d(i, j + 1,distDataProp[i][j + 1])));
    polygon.add(new Point(new Coord3d(i + 1, j + 1,distDataProp[i + 1][j + 1])));
    polygon.add(new Point(new Coord3d(i + 1, j,distDataProp[i + 1][j])));
    polygons.add(polygon);
   }
  }

  Shape surface = new Shape(polygons);
  surface.setColorMapper(new ColorMapper(new ColorMapRBG(), surface.getBounds().getZmin(), surface.getBounds().getZmax(),new org.jzy3d.colors.Color(1, 1, 1, 1f)));
  surface.setWireframeDisplayed(true);
  surface.setWireframeColor(org.jzy3d.colors.Color.BLACK);
  Chart chart = SwingChartComponentFactory.chart(Quality.Advanced);
  chart.getScene().getGraph().add(surface);
  chart.addController(new  AWTCameraKeyController());
  JComponent grafica = (JComponent)chart.getCanvas();
  panel.add(grafica);
  return panel;
 }
}

miércoles, 4 de mayo de 2011

Errores en desarrollo web

Estos son algunos de los errores comunes que he encontrado en mi desarrollo web y cómo los he solucionado.

NoClassFoundDefinition
Solución
Generalmente este mensaje está asociado con la clase que no encuentra. Primero encárguense de verificar que la clase no la está agregando. En eclipse pueden navegar las librerías que está importando a través de sus paquetes (que también señala la excepción).
Así es que en su Project Explorer, vayan a su proyecto y en Libraries, pueden abrir los jars que vienen para explorar los paquetes y a su vez las clases que están importando. Puesto que son archivo .class no podrán ver el código, sólo los nombres de las clases.
Si no está la clase que buscan deben agregarla bien, ya sea con ANT copiándolas a su carpeta lib o con MAVEN trayendo las dependencias que buscan.

Tip: Si no saben en que jar está la clase que buscan pueden usar esta página:
http://www.findjar.com/index.x
En su buscador escriban la clase y les buscará los posibles jars en los que puedan estar.
Cuando la localizaron pueden ir a:
http://jarhalla.com/
Para copiar el código y descargar la dependencia desde MAVEN y creo que otras herramientas.

Si ya están bien seguros de que agregaron todas las clases que necesitan pero sigue sin funcionar y sobre todo si llevan algunas horas moviéndole al Tomcat y al proyecto, reinicien la computadora y vuelvan a probar.
Es tonto pero cierto. Las computadoras son tontas y a veces no encuentran un recurso que ustedes podrían hallar muy fácil.

Esto lo tengo probado sólo para la primera vez (instalan tomcat, lidian con las dependencias) no sé si funcione en otras ocasiones.

Espero que les sirva esto o pregunten, tal vez les pueda ayudar un poco. Saludos!!

Mis primeros pasos con MAVEN

Estos son algunos de los comandos que he aprendido de MAVEN


Crear un proyecto nuevo

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=app



Crear un proyecto web

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-webapp




Actualizar la estructura de nuestro proyecto creado desde la consola en el IDE Eclipse.

mvn eclipse:eclipse



Actualizar nuestro proyecto web para que puede deployarse en tomcat (el 1.5 es de la version de tomcat 5.5)


mvn eclipse:eclipse -Dwtpversion=1.5



Generar el JAR, WAR  de un poyecto.
Digamos que tengo mi proyecto en:
C:\proyectos\my-app\
Entonces tengo que estar ubicado dentro de esa carpeta

C:\proyectos\my-app> mvn clean install




Esto generará el artefacto JAR o WAR de la aplicación y lo instalará -si es el caso- en el proyecto asociado.

Algo que busqué por mucho tiempo es la creación de subproyectos en MAVEN. Como tal no hay un comando, sólo hay que seguir estos pasos.
1. Con tu proyecto general creado, entra al POM y cambia el tipo de empaquetamiento por POM.
2. Dentro de tu proyecto tienes que ejecutar el comando de crear un nuevo proyecto.
De esta manera se generarán los modules que son los "subproyectos" de tu proyecto padre.

lunes, 31 de enero de 2011

Usando MAVEN2 con Eclipse

Siguiendo el ejemplo de una colega, empezaré a colgar toda la información que recupero de los tutoriales en mi recorrido por el aprendizaje de java.

En esta ocasión es la instalación de MAVEN(r)  para eclipse. Una alternativa al ANT.

De su web oficial sólo traduzco los pasos a seguir.


m2eclipse Core Update Site: http://m2eclipse.sonatype.org/sites/m2e
To install this plugin in the Eclipse IDE:
  1. Select Help > Install New Software. This should display the "Install" dialog.
  2. Paste the Update Site URL into the field named "Work with:" and press Enter. Pressing Enter should cause Eclipse to update list of available plugins and components.
  3. Choose the component listed under m2eclipse: "Maven Integration for Eclipse (Required)".
  4. Click Next. Eclipse will then check to see if there are any issues which would prevent a successful installation.
  5. Click Next and agree to the terms of the Eclipse Public License v1.0.
  6. Click Finish to begin the installation process. Eclipse will then download and install the necessary components.
  7. Once the installation process is finished, Eclipse will ask you if you want to restart the IDE. Sonatype strongly recommends that you restart your IDE after installing m2eclipse.

TRADUCCIÓN.

1. Selecciona Help > Install New Software.
2. Pega la url proporcionada arriba dentro del campo "Work with" presiona Enter. Eso ocasionará que Eclipse liste las actualizaciones disponibles para la búsqueda que has entrado.
3. Escoge el componente listad debajo de m2eclipse "Mave Integration for Eclipse (Required).
4. Click en Next. 
5. Acepta los términos de uso.
6. Click en Finish para empezar el proceso de instalación.
7. Reinicia el IDE de eclipse(R).

domingo, 21 de noviembre de 2010

Windows 7 doesn’t recognize my DVD unit.

Hi fellas! Well in order to improve my English lessons, I’ll write this entry on English. I hope that this entry is well understood. Should doesn’t please let me know.

I had this trouble since I installed Windows 7 on my PC. After of found and read the solution of erase the Upper and Lower Filters, but without works for me. I found that exists a controller for Windows called ATA/ATAPI which is who provides information required about the Optical Units to the Operative System, and I discovered that is necessary update it in Windows 7.

This is the link from you can download the best ATA/ATAPI controller for your PC.

http://catalog.update.microsoft.com/v7/site/Install.aspx?q=ITEIT8211 ATA/ATAPI Controller&referringpage=Search.aspx

In which you can search and download the best driver for your case, if you use Intel or AMD. This will do that Windows recognize your optical unit.

It worked fine for me and I hope the same for you.

If you have questions let me know. Greetings!!