public synchronized StockList getStockList(){
		//1. from memory
		if(stocklist!=null){
			return stocklist;
		}
		
		//2. from internal storage
		stocklist = (StockList) SDCardStorageManager.getInstance()
				                              .getItem(null, StockList.ID, StockList.class);
		if(stocklist!=null){
			return stocklist;
		}
	
		//3. from assets last
		//use default stock list in assets
		//AssetManager manager = context.getAssets();
		try {
			//InputStream mInput = manager.open("stock_list");
			File dataFile = new File("stock_list");
			if(!dataFile.exists()){
				return null;
			}
			
			//InputStream mInput = manager.open("daily_list");
			FileInputStream mInput =  new FileInputStream(dataFile);
			
			// myData.txt can't be more than 2 gigs.
            //int size = mInput.available();
            //byte[] buffer = new byte[size];
            //mInput.read(buffer);

			byte[] buffer = new byte[1024];
			ByteArrayBuffer ba = new ByteArrayBuffer(1024);
			int len = 0;
			while ((len = mInput.read(buffer)) != -1) {
				ba.append(buffer, 0, len);
			}
 
            // byte buffer into a string
            String text = new String(ba.toByteArray());
            
            
            Gson gson = new Gson();
            stocklist = gson.fromJson(text, StockList.class);
			
            mInput.close();
            
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		return stocklist;
	}