// Path: src/hk/reality/stock/Constants.java
// public interface Constants {
//     static String USER_AGENT = "Agile Stock / 0.1";
// }
// 
// Path: src/hk/reality/stock/model/Stock.java
// public class Stock implements Serializable {
// 	private static final long serialVersionUID = -6452165113616479803L;
// 	private String name;
// 	private String quote;
//     private StockDetail detail; 
// 
//     /**
//      * @return the quote
//      */
//     public String getQuote() {
//         return quote;
//     }
// 
//     /**
//      * @param quote
//      *            the quote to set
//      */
//     public void setQuote(String quote) {
//         this.quote = quote;
//     }
// 
//     /**
//      * @return the detail
//      */
//     public StockDetail getDetail() {
//         return detail;
//     }
// 
//     /**
//      * @param detail the detail to set
//      */
//     public void setDetail(StockDetail detail) {
//         this.detail = detail;
//     }
// 
//     /**
//      * @return the name
//      */
//     public String getName() {
//         return name;
//     }
// 
//     /**
//      * @param name the name to set
//      */
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#hashCode()
//      */
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((quote == null) ? 0 : quote.hashCode());
//         return result;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#equals(java.lang.Object)
//      */
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         Stock other = (Stock) obj;
//         if (quote == null) {
//             if (other.quote != null)
//                 return false;
//         } else if (!quote.equals(other.quote))
//             return false;
//         return true;
//     }
// }
// 
// Path: src/hk/reality/stock/service/Lang.java
// public enum Lang {
//     ENG, CHI
// }
// 
// Path: src/hk/reality/stock/service/exception/DownloadException.java
// public class DownloadException extends RuntimeException {
// 
//     public DownloadException() {
//         // TODO Auto-generated constructor stub
//     }
// 
//     public DownloadException(String detailMessage) {
//         super(detailMessage);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public DownloadException(Throwable throwable) {
//         super(throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public DownloadException(String detailMessage, Throwable throwable) {
//         super(detailMessage, throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
// }
// 
// Path: src/hk/reality/stock/service/exception/ParseException.java
// public class ParseException extends RuntimeException {
// 
//     public ParseException() {
//         // TODO Auto-generated constructor stub
//     }
// 
//     public ParseException(String detailMessage) {
//         super(detailMessage);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public ParseException(Throwable throwable) {
//         super(throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public ParseException(String detailMessage, Throwable throwable) {
//         super(detailMessage, throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
// }


import hk.reality.stock.Constants;
import hk.reality.stock.model.Stock;
import hk.reality.stock.service.Lang;
import hk.reality.stock.service.exception.DownloadException;
import hk.reality.stock.service.exception.ParseException;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.util.EntityUtils;
import android.util.Log;

                    Stock s = new Stock();
                    s.setName(name);
                    s.setQuote(quoteNumber);
                    return s;
                } else {
                    Log.w(TAG, "result text not match target pattern " );
                }
            } else {
                Log.w(TAG, "begin or end not found " + begin + ", " + end );
            }
        } catch (ClientProtocolException e) {
            throw new DownloadException("error searching stock", e);
        } catch (IOException e) {
            throw new DownloadException("error searching stock", e);
        }
        throw new ParseException("stock quote not found");
    }
    
    /**
     * @return the language
     */
    public Lang getLanguage() {
        return language;
    }

    /**
     * @param language the language to set
     */
    public void setLanguage(Lang language) {
// Path: src/hk/reality/stock/Constants.java
// public interface Constants {
//     static String USER_AGENT = "Agile Stock / 0.1";
// }
// 
// Path: src/hk/reality/stock/model/Stock.java
// public class Stock implements Serializable {
// 	private static final long serialVersionUID = -6452165113616479803L;
// 	private String name;
// 	private String quote;
//     private StockDetail detail; 
// 
//     /**
//      * @return the quote
//      */
//     public String getQuote() {
//         return quote;
//     }
// 
//     /**
//      * @param quote
//      *            the quote to set
//      */
//     public void setQuote(String quote) {
//         this.quote = quote;
//     }
// 
//     /**
//      * @return the detail
//      */
//     public StockDetail getDetail() {
//         return detail;
//     }
// 
//     /**
//      * @param detail the detail to set
//      */
//     public void setDetail(StockDetail detail) {
//         this.detail = detail;
//     }
// 
//     /**
//      * @return the name
//      */
//     public String getName() {
//         return name;
//     }
// 
//     /**
//      * @param name the name to set
//      */
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#hashCode()
//      */
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((quote == null) ? 0 : quote.hashCode());
//         return result;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Object#equals(java.lang.Object)
//      */
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         Stock other = (Stock) obj;
//         if (quote == null) {
//             if (other.quote != null)
//                 return false;
//         } else if (!quote.equals(other.quote))
//             return false;
//         return true;
//     }
// }
// 
// Path: src/hk/reality/stock/service/Lang.java
// public enum Lang {
//     ENG, CHI
// }
// 
// Path: src/hk/reality/stock/service/exception/DownloadException.java
// public class DownloadException extends RuntimeException {
// 
//     public DownloadException() {
//         // TODO Auto-generated constructor stub
//     }
// 
//     public DownloadException(String detailMessage) {
//         super(detailMessage);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public DownloadException(Throwable throwable) {
//         super(throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public DownloadException(String detailMessage, Throwable throwable) {
//         super(detailMessage, throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
// }
// 
// Path: src/hk/reality/stock/service/exception/ParseException.java
// public class ParseException extends RuntimeException {
// 
//     public ParseException() {
//         // TODO Auto-generated constructor stub
//     }
// 
//     public ParseException(String detailMessage) {
//         super(detailMessage);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public ParseException(Throwable throwable) {
//         super(throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
//     public ParseException(String detailMessage, Throwable throwable) {
//         super(detailMessage, throwable);
//         // TODO Auto-generated constructor stub
//     }
// 
// }


// Path: src/hk/reality/stock/service/searcher/HkexStockSearcher.java
import hk.reality.stock.Constants;
import hk.reality.stock.model.Stock;
import hk.reality.stock.service.Lang;
import hk.reality.stock.service.exception.DownloadException;
import hk.reality.stock.service.exception.ParseException;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.util.EntityUtils;
import android.util.Log;


                    Stock s = new Stock();
                    s.setName(name);
                    s.setQuote(quoteNumber);
                    return s;
                } else {
                    Log.w(TAG, "result text not match target pattern " );
                }
            } else {
                Log.w(TAG, "begin or end not found " + begin + ", " + end );
            }
        } catch (ClientProtocolException e) {
            throw new DownloadException("error searching stock", e);
        } catch (IOException e) {
            throw new DownloadException("error searching stock", e);
        }
        throw new ParseException("stock quote not found");
    }
    
    /**
     * @return the language
     */
    public Lang getLanguage() {
        return language;
    }

    /**
     * @param language the language to set
     */
    public void setLanguage(Lang language) {
        this.language = language;