diff --git a/BasicServlet.java b/BasicServlet.java new file mode 100644 index 0000000..3d99766 --- /dev/null +++ b/BasicServlet.java @@ -0,0 +1,32 @@ +package com.origamisoftware.teach.advanced.services; + +import com.origamisoftware.teach.advanced.model.StockQuote; +import com.origamisoftware.teach.advanced.util.Interval; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Calendar; +import java.util.List; +import javax.servlet.http.*; + +/** + * BasicServlet request data from the web service that is used by the WebStockService + */ +public class BasicServlet extends HttpServlet{ + private String symbol; + private Calendar date; + + public BasicServlet(String symbol, Calendar date){ + this.symbol = symbol; + this.date = date; + } + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { + + PrintWriter out = response.getWriter(); + out.println(""); + out.println(""); + out.println("http://finance.yahoo.com/d/quotes.csv?s="+ symbol + "d2=" + date); + out.println(""); + out.println(""); + } +} \ No newline at end of file diff --git a/ServiceFactory.java b/ServiceFactory.java new file mode 100644 index 0000000..58312b0 --- /dev/null +++ b/ServiceFactory.java @@ -0,0 +1,28 @@ +package com.origamisoftware.teach.advanced.services; + +/** + * A factory that returns a Services. + */ +public class ServiceFactory { + + /** + * Prevent instantiations + */ + private ServiceFactory() {} + + /** + * + * @return get a StockService instance + */ + public static WebStockService getStockService() { + return new WebStockService(); + } + + /** + * + * @return get a UserService instance + */ + public static UserService getUserService() { + return new DatabaseUserService(); + } +} diff --git a/WebServiceTest.java b/WebServiceTest.java new file mode 100644 index 0000000..bdb32e4 --- /dev/null +++ b/WebServiceTest.java @@ -0,0 +1,14 @@ +package com.origamisoftware.teach.advanced.services; + + +import org.junit.Test; +import static org.junit.Assert.assertNotNull; + +public class WebServiceTest { + + @Test + public void testGetStockServiceInstance() { + WebStockService webStockService = ServiceFactory.getStockService(); + assertNotNull(webStockService); + } +} diff --git a/WebStockService.java b/WebStockService.java new file mode 100644 index 0000000..8e39fe1 --- /dev/null +++ b/WebStockService.java @@ -0,0 +1,46 @@ +package com.origamisoftware.teach.advanced.services; + +import com.origamisoftware.teach.advanced.model.StockQuote; +import com.origamisoftware.teach.advanced.util.Interval; +import yahoofinance.Stock; +import yahoofinance.YahooFinance; + +import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * I assume this interacts with the YF API directly? + * not needing the servlet + * I made a simple servlet but couldn't understand how to + * integrate it into the WenStockService + */ +public class WebStockService implements StockService { + private Stock stock; + + @Override + public StockQuote getQuote(String symbol) throws StockServiceException, IOException { + stock = YahooFinance.get(symbol); + String yfSymbol = stock.toString(); + + return new StockQuote(new BigDecimal(100), Calendar.getInstance().getTime(), yfSymbol); + } + + @Override + public List getQuote(String symbol, Calendar from, Calendar until, Interval interval) throws StockServiceException, IOException { + List stockQuotes = new ArrayList<>(); + + stock = YahooFinance.get(symbol, from, until); + BigDecimal price = stock.getQuote().getPrice(); + Date aDay = (Date) stock.getHistory(); + String yfSymbol = stock.getSymbol(); + + stockQuotes.add(new StockQuote(price, aDay, yfSymbol)); + + return stockQuotes; + } +} +