import javax.imageio.*;
import javax.imageio.stream.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.io.*;
import oracle.jdbc.driver.*;
import oracle.ord.im.*;
import java.awt.event.*;
import javax.swing.border.Border;
public class HelloDBImage implements ActionListener{
Principal p = new Principal(null);
OracleConnection con = null;
JLabel label = null;
public String textFieldString = "Entre el Id de la Imagen:";
public String mimeType,formato,ancho,alto,sig;
public void actionPerformed(ActionEvent e)
{
String prefix = "Usted Escribio \"";
if (e.getActionCommand().equals(textFieldString))
{
JTextField source = (JTextField)e.getSource();
ImageIcon imgIcon = createImageIcon(source.getText());
if (null != imgIcon)
{
// Create image Label
label.setText(null);
label.setIcon(imgIcon);
}
else
{
label.setIcon(null);
label.setText("Imagen no Encontra! ");
}
source.setText("");
label.repaint();
//actionLabel.setText(prefix + source.getText() + "\"");
}
}
public ImageIcon createImageIcon(String key)
{
Image image = null;
ImageIcon imgIcon = null;
try
{
// Connect to the database if necessary
if (null == con) con = connect();
// Create Input Stream from DB image.
InputStream is = new BufferedInputStream(getDBInputStream(con, key));
if (null != is){
// Create Image from Image Input Stream
ImageInputStream iis = ImageIO.createImageInputStream(is);
image = ImageIO.read(iis);
// Create Image Icon from ImageInputStream
if (null != image) imgIcon = new ImageIcon(image);
}
} catch (Exception e)
{
System.out.println("exception raised " + e);
e.printStackTrace();
}
return imgIcon;
}
public Component createPanelAndContents(String key)
{
// Create the image label
ImageIcon imgIcon = createImageIcon(key);
if (null != imgIcon)
{// Create image Label
label = new JLabel(imgIcon);
}else{
label = new JLabel("Imagen no Encontrada! ");
}
// Create layout
GridBagLayout gridBag = new GridBagLayout();
// Create panel to draw in
JPanel pane = new JPanel();
pane.setLayout(gridBag);
GridBagConstraints c = new GridBagConstraints();
JScrollPane scrollPane = new JScrollPane(label,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
c.weighty = 1.0;
gridBag.setConstraints(scrollPane, c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.HORIZONTAL;
scrollPane.setMinimumSize(new Dimension(300, 300));
pane.add(scrollPane, c);
// Add a text field and label to get anoter image
JTextField textField = new JTextField(10);
textField.setActionCommand(textFieldString);
textField.addActionListener(this);
// Add fields for input
JLabel promptLabel = new JLabel("Por Favor Entre un ID de Imagen :");
pane.add(promptLabel);
pane.add(textField, c);
System.out.println("add jpanel: "+key);
return pane;
}
public static void main(String[] args){
String key = "152";
try{
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) { }
//Create the top-level container and add contents to it.
JFrame frame = new JFrame("Aplicacion Visualizacion de Imagenes.");
HelloDBImage app = new HelloDBImage();
if ((args.length > 0) && (args[0] != null)) key = args[0];
System.out.print("length= " + args.length + "/" );
if (args.length > 0) System.out.println(args[0]);
Component contents = app.createPanelAndContents(key);
frame.getContentPane().add(contents, BorderLayout.CENTER);
//Finish setting up the frame, and show it.
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
ImageIcon icon = app.createImageIcon("152");
JLabel label= new JLabel("A default label", icon, JLabel.LEFT);
Border border = BorderFactory.createLineBorder(Color.BLACK);
label.setBorder(border);
frame.add(label);
frame.pack();
frame.setVisible(true);
}
public InputStream getDBInputStream(OracleConnection con, String key)
{
InputStream is = null;
try
{
int index = 0;
Statement s = con.createStatement();
oracle.jdbc.OracleResultSet rs =
(oracle.jdbc.OracleResultSet)s.executeQuery("SELECT * FROM imagenes_objeto " +
"WHERE idimagenes="+ key );
if (rs.next()) // Just get first image if more than 1.
{
index = rs.getInt(2);
System.out.println("select "+index);
OrdImage imgObj = (OrdImage) rs.getCustomDatum(1, OrdImage.getFactory());
OrdImageSignature imgObjSign = (OrdImageSignature)rs.getORAData("firma_imagen", OrdImageSignature.getORADataFactory());
System.out.println("Signature : " + imgObjSign.toString());
mimeType= imgObj.getMimeType();
formato= imgObj.getCompressionFormat();
ancho = ""+imgObj.getWidth();
alto = ""+imgObj.getHeight();
sig = ""+imgObjSign.toString();
System.out.println("mimeType: " + imgObj.getMimeType());
System.out.println("height: " + imgObj.getHeight());
System.out.println("width: " + imgObj.getWidth());
System.out.println("contentLength: " + imgObj.getContentLength());
System.out.println("contentFormat: " + imgObj.getContentFormat());
System.out.println("compressionFormat: " + imgObj.getCompressionFormat());
System.out.println("source type: " + imgObj.getSourceType());
System.out.println("source loc: " + imgObj.getSourceLocation());
System.out.println("source name: " + imgObj.getSourceName());
System.out.println("source : " + imgObj.getSource());
is = imgObj.getContent().getBinaryStream();
}
}
catch(Exception e)
{
System.out.println("exception raised " + e);
e.printStackTrace();
}
return is;
}
public OracleConnection connect() throws Exception
{
String connectString;
Class.forName ("oracle.jdbc.driver.OracleDriver");
//connectString = "jdbc:oracle:oci8:@192.168.100.9:1521:prometeo";
connectString = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
OracleConnection con = (OracleConnection)
DriverManager.getConnection(connectString,"samariles","samariles");
con.setAutoCommit(false);
return con;
}
}