Saturday, November 15, 2014

Uploading Image in jsp, java, Netbeans

i had spent a lot of time for uploading an image in jsp page.so to help you guys i am writing this blog.
the way to upload the desired image is as below(neteans project)

1. Put the image file in web folder(where all the web pages are placed.)
2. Wright the code

 <%String s=request.getContextPath() + "/abc.JPG";%>

<img src="<%=s%>" width = "500" hight = "600" aligh = "center" />
3. Mention the extensions of image carefully i.e(.jpeg, jpg are not treated as same)

for any other query keep posting.
Good Luck!!!

Monday, November 10, 2014

Create and display dynamic Chart in JSP using Database inputs(jFreeChart Library)

 JSP code that generates chart of database(Time-Speed  which was my application requirement) and returns chart image whenever called

<%// required packages  %>

<%@ page import="java.awt.Image" %>

<%@ page import="java.awt.*"%>

<%@ page import="java.text.SimpleDateFormat"%>

<%@ page import="java.awt.BasicStroke"%>

<%@ page import ="org.jfree.ui.ApplicationFrame"%>

<%@ page import="java.io.*" %>

<%@ page import="java.io.File"%>

<%@ page import="org.jfree.chart.*" %>

<%@ page import="org.jfree.chart.axis.*" %>

<%@ page import="org.jfree.chart.entity.*" %>

<%@ page import="org.jfree.chart.labels.*" %>

<%@ page import="org.jfree.chart.plot.*" %>

<%@ page import="org.jfree.chart.renderer.category.*" %>

<%@ page import="org.jfree.chart.urls.*" %>

<%@ page import="org.jfree.data.category.*" %>

<%@ page import="org.jfree.data.general.*" %>

<%@ page import="org.jfree.data.time.Minute"%>

<%@ page import="org.jfree.data.time.Hour"%>

<%@ page import="org.jfree.data.time.TimeSeries"%>

<%@ page import="org.jfree.data.time.TimeSeriesCollection"%>

<%@ page import="org.jfree.data.xy.XYDataset"%>

<%@ page import="org.jfree.chart.plot.XYPlot"%>

<%@ page import="org.jfree.chart.renderer.xy.StandardXYItemRenderer"%>

<%@ page import="org.jfree.chart.renderer.xy.XYItemRenderer"%>

 <%@ page import=  "java.sql.Connection" %>

<%@ page import  ="java.sql.DriverManager" %>

<%@ page import = "java.sql.SQLException" %>

<%@ page import = "java.sql.PreparedStatement" %>

<%@ page import = "java.sql.ResultSet" %>

<%@ page import = "java.sql.Statement" %>

 <%@ page import=  "javax.servlet.*" %>

<%@ page import  ="javax.servlet.http.*" %>



<%@ page import="java.awt.image.BufferedImage"%>

<%

 try

 {

 File image = File.createTempFile("image", "tmp");



 //chart class instance

Fms fm = new Fms("Graph");



JFreeChart chart = fm.createChart(fm.dataset);

 ChartUtilities.saveChartAsPNG(image, chart, 500, 400);

//get input stream

 FileInputStream fileInStream = new FileInputStream(image);

//output stream foe returning chart as image

 OutputStream outStream = response.getOutputStream(); 

 long fileLength;

 byte[] byteStream;

 fileLength = image.length();

 byteStream = new byte[(int)fileLength];

//read chart image

 fileInStream.read(byteStream, 0, (int)fileLength);

//returns chart image whenever called

 response.setContentType("image/png");

 response.setContentLength((int)fileLength);

 response.setHeader("Cache-Control","no-store,no-cache, must-revalidate, post-check=0, pre-check=0");

 response.setHeader("Pragma", "no-cache");

 fileInStream.close();

 outStream.write(byteStream);

 outStream.flush();

 outStream.close();

 }

 catch (IOException e)

 {

 System.err.println("Problem occurred creating chart.");

 }

%>

<%! public class Fms extends ApplicationFrame {   

//Main class

   XYDataset dataset= null;

   public Fms(final String title) {

        super(title);

      dataset= createDataset();

        final JFreeChart chart = createChart(dataset);

        final ChartPanel chartPanel = new ChartPanel(chart);

        chartPanel.setPreferredSize(new java.awt.Dimension(700, 570));

        chartPanel.setMouseZoomable(true, false);

        setContentPane(chartPanel);

    } 

//chart creation method

   JFreeChart createChart(final XYDataset dataset) {

        final JFreeChart chart = ChartFactory.createTimeSeriesChart(

            "Speed Chart",

            "Time",

            "Speed",

            dataset,

            true,

            true,

            false

        );

        chart.setBackgroundPaint(Color.white);

       final XYPlot plot = chart.getXYPlot();

        plot.setBackgroundPaint(Color.lightGray);

        plot.setDomainGridlinePaint(Color.white);

        plot.setRangeGridlinePaint(Color.white);

        plot.setDomainCrosshairVisible(true);

        plot.setRangeCrosshairVisible(false);

        final XYItemRenderer renderer = plot.getRenderer();

        if (renderer instanceof StandardXYItemRenderer) {

            final StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;

            rr.setShapesFilled(true);

            renderer.setSeriesStroke(0, new BasicStroke(1.0f));

            renderer.setSeriesStroke(1, new BasicStroke(1.0f));

           }       

        final DateAxis axis = (DateAxis) plot.getDomainAxis();

        axis.setDateFormatOverride(new SimpleDateFormat("dd:MM")); 

        try{

        final ChartRenderingInfo info = new ChartRenderingInfo

(new StandardEntityCollection());

final File file1 = new File("c:/Documents and Settings/accounts/WebApplication2/web/barchart.png");

ChartUtilities.saveChartAsPNG(file1, chart, 600, 400, info);

        }catch(Exception e){}

        return chart;

    }   

//data set generation method

    private XYDataset createDataset() {

        final TimeSeriesCollection dataset = new TimeSeriesCollection();

        dataset.setDomainIsPointsInTime(true);       

        final TimeSeries s1 = new TimeSeries("Series 1", Minute.class);

         int str = 0;

         int i =0,j= 0 ;

         String str1 = null;

        try{             

      Class.forName("sun.jdbc.odbc.JdbcOdbc"); 

      Connection con=DriverManager.getConnection("jdbc:odbc:FMSDB",null,null);

      PreparedStatement st;   

      Statement stmt = con.createStatement(); 

      String query = "Select * from Job_Status";

      stmt.executeQuery(query);

       ResultSet rs = stmt.executeQuery(query);       

           while( rs.next() )

        {                 

         str1= rs.getString("Time");

         String sa = str1.substring(11,13);

         String ha = str1.substring(14,16);

        str= rs.getInt("Speed"); 

        j=Integer.parseInt(sa);

        i=Integer.parseInt(ha);

        String date = rs.getString("Date");

        String y = date.substring(0,4);

         String m = date.substring(5,7);

          String d = date.substring(8,10);

         s1.add(new Minute(i, j, Integer.parseInt(d), Integer.parseInt(m), Integer.parseInt(y)), str);

          }

          }

          catch(Exception e)

          {             

          }

         System.out.println(str1.substring(11,13));

          System.out.println(str1.substring(14,16)+"\t"+str1);                 

        dataset.addSeries(s1);   

        return dataset;

    }

    }

%>
HTML Code for calling this JSP file
exp.jsp is the name of above jsp code file in my application
<html>

<body>

<img src="exp.jsp" alt="Progress chart" />

</body>

</html>
Note: To implement this code you will need jFreeChart Library from jFree Org.

Tuesday, November 4, 2014

Reading Data from comm port in Java

This code first write 0x80 to COM port () then it reads 0x32 from COM port and then sends 6 more bytes and to terminate the packet it receives  0x70 form COM port.

This code can be very helpful to communicate with embedded devices which communicate with PC through COM port.

// library import

import java.io.*;
import java.util.*;
import javax.comm.*;
import java.sql.Connection;
import  java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class Fms implements Runnable{ 
static Enumeration portList;
static CommPortIdentifier portId;
static SerialPort serialPort;
static OutputStream outputStream;
static InputStream inputStream;
static Thread readThread,dataBase;
static int crf;
static int cwf;
static byte cxc[] = new byte[4];
static int cxm = 128;//0x80
static byte[] creadBuffer;//1byte read
static int creadBuff[]; 
write rt=new write();
static read rd;   
public void run() {
    };
    public static void main(String[] args) {
        int a=10;
        write wr = new write();
        read rd = new read(1);
         int b = 0;
        int speed=0,tcount=0,jcount=0,status=0;
      while(b!=10){      
       for(int j =0 ; j<=1;j++){
            try{
        wr.cwritemain(a); 
         rd.cmainx(a);          
         readThread.sleep(1000);
            }
            catch(Exception e){}
            if(j==0){
                status =creadBuff[1];
                jcount =creadBuff[5];
          System.out.println("results : "+status +"\t"+jcount); 
            }
            if(j==1){
                speed =creadBuff[1]*256+creadBuff[2];//to convert received data in decimal
                tcount =creadBuff[6];
          System.out.println("results : "+speed +"\t"+tcount); 
            }
             }    
    }            
       }
 static class write{        
         public void cwritemain(int m)
{       
             cwf = m;
             cxc[0] = 0x26;
             portList = CommPortIdentifier.getPortIdentifiers();
             System.out.println(portList.hasMoreElements());
while (portList.hasMoreElements()) {                                   
                                        portId = (CommPortIdentifier) portList.nextElement();
                                        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                                    
if (portId.getName().equals("COM1"))
{                                  
try {
serialPort = (SerialPort) portId.open("SimpleWriteApp32", 2000);
                                                  } catch (PortInUseException e) {
}
try {
outputStream = serialPort.getOutputStream();
} catch (Exception e) {
}
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (Exception e) {
}
                                               if(cwf==10){
try {
outputStream.write(cxm);// 0x80 written
serialPort.close();
                                                                outputStream.close();
} catch (Exception e) {
}
                                               }
                                        }
                                }
                        }
         }        
    }   
   static class read implements SerialPortEventListener{
      public read(int s) {}
      public void cmainx(int cp) {
crf = 10;
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals("COM1")) {
try {
                                                    serialPort = (SerialPort) portId.open("readapp32",
2000);
} catch (PortInUseException e) {
System.out.println(e.getMessage());
}
try {
inputStream = serialPort.getInputStream();
} catch (Exception e) {
System.out.println(e);
}
try {
serialPort.addEventListener(this);
} catch (Exception e) {
System.out.println(e);
}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);                                                
} catch (Exception e) {
System.out.println(e);
}
}
}
}                       
}
        public void serialEvent(SerialPortEvent event) {            
            switch (event.getEventType()) {
case SerialPortEvent.DATA_AVAILABLE:
creadBuffer = new byte[8];
                                creadBuff= new int[8];
try {
                                   int i = 0;                               
while (inputStream.available() > 0) { 
                                          creadBuff[i]=inputStream.read();
                                          System.out.println("Data available is: "+creadBuff[i]);                                                  
                                               i++;
}
                                      inputStream.close();
} catch (IOException e) {
}
                                System.out.println("event");
System.out.println("recieved \t"+creadBuffer[0] );
if (creadBuffer[0] == 0x70) {
                                    System.out.println("Got 0x70"+creadBuffer[0] );
serialPort.close();
rd = new read(5);
rd.cmainx(1);// ag
                                }
                                if (creadBuffer[0] == 0x32) {
                                    System.out.println("Got"+creadBuffer[0] );
serialPort.close();                                
                                }
                                serialPort.close();
            }
        }
   }  
   }