Quotes MIDlet : Ticker « J2ME « Java

Home
Java
1.2D Graphics GUI
2.3D
3.Advanced Graphics
4.Ant
5.Apache Common
6.Chart
7.Class
8.Collections Data Structure
9.Data Type
10.Database SQL JDBC
11.Design Pattern
12.Development Class
13.EJB3
14.Email
15.Event
16.File Input Output
17.Game
18.Generics
19.GWT
20.Hibernate
21.I18N
22.J2EE
23.J2ME
24.JavaFX
25.JDK 6
26.JDK 7
27.JNDI LDAP
28.JPA
29.JSP
30.JSTL
31.Language Basics
32.Network Protocol
33.PDF RTF
34.Reflection
35.Regular Expressions
36.Scripting
37.Security
38.Servlets
39.Spring
40.Swing Components
41.Swing JFC
42.SWT JFace Eclipse
43.Threads
44.Tiny Application
45.Velocity
46.Web Services SOA
47.XML
Java » J2ME » Ticker 




Quotes MIDlet
Quotes MIDlet

/*
Learning Wireless Java
Help for New J2ME Developers
By Qusay Mahmoud
ISBN: 0-596-00243-2

*/
import java.util.Enumeration;

import javax.microedition.rms.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import java.io.*;

public class QuotesMIDlet extends MIDlet implements CommandListener {
   Display display = null;
   List menu = null// main menu
   List choose = null;
   TextBox input = null;
   Ticker ticker = new Ticker("Database Application");
   String quoteServer = 
   "http://quote.yahoo.com/d/quotes.csv?s=";
   String quoteFormat = "&f=slc1wop"// The only quote format supported

   static final Command backCommand = new Command("Back", Command.BACK, 0);
   static final Command mainMenuCommand = new Command("Main", Command.SCREEN, 1);
   static final Command saveCommand = new Command("Save", Command.OK, 2);
   static final Command exitCommand = new Command("Exit", Command.STOP, 3);
   String currentMenu = null;

   // Stock data
   String name, date, price;
    
   // record store
   StockDB db = null;

   public QuotesMIDlet() { // constructor
   }

   // start the MIDlet
   public void startApp() throws MIDletStateChangeException {
      display = Display.getDisplay(this);
      // open a db stock file
      try {
         db = new StockDB("mystocks");
      catch(Exception e) {}
         menu = new List("Stocks Database", Choice.IMPLICIT);
         menu.append("List Stocks"null);
         menu.append("Add A New Stock"null);
         menu.addCommand(exitCommand);
         menu.setCommandListener(this);
         menu.setTicker(ticker);

         mainMenu();
   }

   public void pauseApp() {
      display = null;
      choose = null;
      menu = null;
      ticker = null;
       
      try {
         db.close();
         db = null;
      catch(Exception e) {}
   }

   public void destroyApp(boolean unconditional) {
      try {
         db.close();
      catch(Exception e) {}
      notifyDestroyed();
   }

   void mainMenu() {
      display.setCurrent(menu);
      currentMenu = "Main"
   }

   // Construct a running ticker 
   // with stock names and prices
   public String tickerString() {
      StringBuffer ticks = null;
      try {
         RecordEnumeration e = db.enumerate();
         ticks = new StringBuffer();
         while(e.hasNextElement()) {
            String stock1 = new String(e.nextRecord());
            ticks.append(Stock.getName(stock1));
            ticks.append(" @ ");
            ticks.append(Stock.getPrice(stock1));
            ticks.append("    ");
         }
      catch(Exception ex) {}
         return (ticks.toString());
   }

   // Add a new stock to the record store 
   // by calling StockDB.addNewStock()
   public void addStock() {
      input = new TextBox("Enter a Stock Name:"""5, TextField.ANY);
      input.setTicker(ticker);
      input.addCommand(saveCommand);
      input.addCommand(backCommand);
      input.setCommandListener(this);
      input.setString("");
      display.setCurrent(input);
      currentMenu = "Add";
   }

   // Connect to quote.yahoo.com and 
   // retrieve the data for a given 
   // stock symbol.
   public String getQuote(String inputthrows IOException, NumberFormatException {
      String url = quoteServer + input + quoteFormat;
      StreamConnection c = (StreamConnection)Connector.open(
                            url, Connector.READ_WRITE);
      InputStream is = c.openInputStream();
      StringBuffer sb = new StringBuffer();
      int ch;
      while((ch = is.read()) != -1) {
        sb.append((char)ch);
      }
      return(sb.toString());
   }
   
   // List the stocks in the record store
   public void listStocks() {
      choose = new List("Choose Stocks", Choice.MULTIPLE);
      choose.setTicker(new Ticker(tickerString()));
      choose.addCommand(backCommand);
      choose.setCommandListener(this);
      try {
         RecordEnumeration re = db.enumerate();
         while(re.hasNextElement()) {
            String theStock = new String(re.nextRecord());
            choose.append(Stock.getName(theStock)+" @ " +
                          Stock.getPrice(theStock),null);
         }
      catch(Exception ex) {}
      display.setCurrent(choose);
      currentMenu = "List"
   }
 
   // Handle command events 
   public void commandAction(Command c, Displayable d) {
      String label = c.getLabel();
      if (label.equals("Exit")) {
         destroyApp(true);
      else if (label.equals("Save")) {
         if(currentMenu.equals("Add")) {
            // add it to database
            try {
               String userInput = input.getString();
              String pr = getQuote(userInput);
              db.addNewStock(pr);
              ticker.setString(tickerString())
            catch(IOException e) {
            catch(NumberFormatException se) {
            }
            mainMenu();
          
      else if (label.equals("Back")) {
         if(currentMenu.equals("List")) {
            // go back to menu
            mainMenu();
         else if(currentMenu.equals("Add")) {
            // go back to menu
            mainMenu();
         }
      else {
         List down = (List)display.getCurrent();
         switch(down.getSelectedIndex()) {
            case 0: listStocks();break;
            case 1: addStock();break;
         }
      }
   }
}


class StockDB {
   RecordStore recordStore = null;
   public StockDB() {}

   // Open a record store with the given name
   public StockDB(String fileName) {
      try {
         recordStore = RecordStore.openRecordStore(fileName, true);
      catch(RecordStoreException rse) {
         rse.printStackTrace();
      }
   }

   // Close the record store
   public void close() throws RecordStoreNotOpenException,RecordStoreException {
      if (recordStore.getNumRecords() == 0) {
         String fileName = recordStore.getName();
         recordStore.closeRecordStore();
         recordStore.deleteRecordStore(fileName);
      else {
         recordStore.closeRecordStore();
      }
   }

   // Add a new record (stock) 
   // to the record store
   public synchronized void addNewStock(String record) {
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      DataOutputStream outputStream = new DataOutputStream(baos);
      try {
         outputStream.writeUTF(record);
      catch (IOException ioe) {
         System.out.println(ioe);
         ioe.printStackTrace();
      }
      byte[] b = baos.toByteArray();
      try {
         recordStore.addRecord(b, 0, b.length);
      catch (RecordStoreException rse) {
         System.out.println(rse);
         rse.printStackTrace();
      }
   }

   // Enumerate through the records.
   public synchronized RecordEnumeration enumerate() throws
                       RecordStoreNotOpenException {
      return recordStore.enumerateRecords(null, null, false);
   }
}
class Stock {
   private static String name, time, price;
   // Given a quote from the server, 
   // retrieve the name, 
   //price, and date of the stock
   public static void parse(String data) {
      int index = data.indexOf('"')
      name = data.substring(++index,(index = data.indexOf('"', index)));
      index +=3;
      time = data.substring(index, (index = data.indexOf('-', index))-1);
      index +=5;
      price = data.substring(index, (index = data.indexOf('<', index)));
   }

   // Get the name of the stock from 
   // the record store
   public static String getName(String record) {
      parse(record);
      return(name);
   }
  
   // Get the price of the stock from 
   // the record store
   public static String getPrice(String record) {
      parse(record);
      return(price);
   }
}


           
       














Related examples in the same category
1.Shared TickerShared Ticker
2.TickerListTickerList
3.Stock WatcherStock Watcher
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.