Tug’s Blog

Redis, NoSQL and more…

HTML/Javascript Tip: Refreshing an Image Not the Full Page

| Comments

I was discussing with a friend about the creation of a monitoring dashboard in HTML. As any monitoring tool you want to be able to see the information in real-time, so you need to refresh the content….

One way of doing it is to refresh the whole page and this is easy, just use the meta tag: <META HTTP-EQUIV="Refresh" CONTENT="5; URL=http://www.grallandco.com/" > where 5 is the number of seconds between each refresh.

Javascript allows you to easily refresh a specific image of your page (a chart for example):

1
2
3
4
5
6
7
8
9
10
11
<img src="myChartServlet" name="chart1"/>
<script language="JavaScript">
  function loadImage() {
    var now = new Date();
    if (document.images) {
      document.images.chart1.src = 'myChartServlet?time='+now.getTime(); // add the time to avoid caching
    }
    setTimeout('loadImage()',1000);
  }
  setTimeout('loadImage()',1000);
</script>

You can obviously make the whole think dynamic and configurable…

Mike Keith About Java2 5.0 Annotations

| Comments

Mike Keith,architect for Oracle Containers for J2EE (OC4J) and TopLink products and currently represents Oracle in the EJB 3.0 expert group, has published an interesting article about Annotations in Java 5.0:.

To Annotate or Not? focused on the usage of Annotation or XML as metadata language. Mike provides sample code and explain the pros and cons of the annotation using use cases.

New Dynamic Menu for OracleAS Portal 10g

| Comments

Ronaldo Viscuso has just released a new version of his DHTML Menu Portlet. This portlet generates a DHTML menu for site navigation, with links to pages and subpages from a selected page group.

Stylesheet, height, width, mouse-over behavior, etc. are all configurable via the “Edit Defaults” page, which allows for complete customization for pretty much any desired look & feel….

The portlet, screen shots and installation document are available on the Portal Knowledge Exchange.

Jive Portlets for OracleAS Portal

| Comments

An Oracle Application Server (OracleAS) Provider for Jive Forums is now available to download from the Portal Integration Solutions page on OTN.

The Oracle Application Server (OracleAS) Provider for Jive Forums contains portlets that allow users and administrators to:

  • View topics posted on their favorite forums
  • Create a new topic or post a reply to one
  • Search the forums
  • View the hot topics across all forums
  • View all topics, forums, categories and users being watched by the user
  • View top reward points earners
  • Administer the Jive Forums Application

Good Taste Tool: del.icio.us

| Comments

I am starting to use del.icio.us. A great way to manage your own bookmarks but also to share them with others…

It is fun to see how many people are sharing the same bookmarks as you, and help you to find information related to the different categories…

Also the integration with Firefox using the delicious plugin make the usage of the bookmark manager very easy. You can also use the Apple Mac OS X client for del.icio.us.

Here my bookmarks… still working on it.

Sample Code: BLOB Insertion in Oracle10g

| Comments

Responding to a customer question about Blob insertion in Oracle 10g DB using the JDBC 3.0 driver. Very Simple application. Download Java Source See insertBlob method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package demo;

import java.sql.*;
import java.io.*;
import java.sql.PreparedStatement;
import java.util.*;

import oracle.jdbc.driver.*;
import oracle.sql.BLOB;



/**
* Insert record in the MEDIA table
*   MEDIA (file_name varchar2(256), file_content BLOB);
*/
public class BlobOracle
{
  private final static String hostname = "localhost";
  private final static String port = "1521";
  private final static String sid = "ORCL";
  private final static String username = "scott";
  private final static String password = "tiger";
  private static String fileLocation;
  private static Connection connection;

  public BlobOracle()
  {
  }

  /**
  *
  * @param args
  */
  public static void main(String[] args)
  {
    try
    {
      if (args.length == 0)
      {
        System.out.println("\n\n  Usage demo.BlobOracle ");
        System.exit(0);
      }

      fileLocation = args[0];

      setConnection();
      insertBLOB();

    } catch (Exception ex)
    {
      ex.printStackTrace();
      } finally
      {
      }
    }


    private static void setConnection() throws SQLException
    {
      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
      connection = DriverManager.getConnection("jdbc:oracle:thin:@"+hostname+ ":"+ port +":"+ sid , username , password);
      connection.setAutoCommit(false); // we must control the commit
    }

    private static void insertBLOB() throws SQLException, Exception
    {
      BLOB blob;
      File file ;
      FileInputStream is;
      OutputStream os;

      long ts1 = System.currentTimeMillis();


      //Create a statement.
      PreparedStatement pstmt = connection.prepareStatement("insert into media (file_name, file_content) values (?,empty_blob())");
      file = new File(fileLocation);
      String fileName = file.getName();
      //Set the file name and execute the query
      pstmt.setString(1, fileName);
      pstmt.execute();

      //Take back the record for update (we will insert the blob)
      //supposely the file name is the PK
      pstmt = connection.prepareStatement("select file_content from media where file_name = ? for update");
      pstmt.setString(1, fileName);

      //Execute the query, and we must have one record so take it
      ResultSet rset = pstmt.executeQuery();
      rset.next();

      //Use the OracleDriver resultset, we take the blob locator
      blob = ((OracleResultSet)rset).getBLOB("file_content");

      is = new FileInputStream(file); //Create a stream from the file
      // JDBC 2.0
      //os = blob.getBinaryOutputStream(); //get the output stream from the Blob to insert it
      // JDBC 3.0
      os = blob.setBinaryStream(0); //get the output stream from the Blob to insert it

      //Read the file by chuncks and insert them in the Blob. The chunk size come from the blob
      byte[] chunk = new byte[blob.getChunkSize()];
      int i=-1;
      System.out.println("Inserting the Blob");
      while((i = is.read(chunk))!=-1)
      {
        os.write(chunk,0,i); //Write the chunk
        System.out.print('.'); // print progression
      }

      // When done close the streams
      is.close();
      os.close();

      //Close the statement and commit
      pstmt.close();
      long ts2 = System.currentTimeMillis();

      connection.commit();
      connection.close();

      System.out.println("\n"+ (ts2 - ts1) +" ms" );


    }


  }