/*
* Licensed Materials - Property of Perforce Software, Inc.
* © Copyright Perforce Software, Inc. 2014, 2021
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
package thinstock.faces.bean;
import java.util.Calendar;
import java.util.Date;
import java.util.StringTokenizer;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import ilog.views.chart.faces.dhtml.component.IlvChartDHTMLView;
import ilog.views.util.IlvLocaleUtil;
import ilog.views.util.IlvResourceUtil;
import ilog.views.util.time.IlvCalendarFactory;
import thinstock.StockDemo;
import thinstock.StockDemoApp;
import thinstock.faces.component.MinorChartView;
public class StockBean {
private String lower1Indicator = "0";
private String lower2Indicator = "1";
private String[] upperIndicators = new String[0];
private String symbol = "";
private String secSymbols = "";
private String apiKey = "";
private String frequency = "0";
private String duration = "4";
private IlvChartDHTMLView chartView = new IlvChartDHTMLView();
private MinorChartView lower1 = new MinorChartView();
private MinorChartView lower2 = new MinorChartView();
protected StockDemoApp getApp(HttpServletRequest request) throws ServletException {
if (request != null) {
StockDemoApp app = null;
synchronized (request.getSession(true)) {
// Use the page identifier to retrieve the StockDemoApp
// in order to support multiple browser pages.
app = (StockDemoApp) StockDemo.getSessionAttribute(request, StockDemo.APP_SESSION_KEY);
}
if (app != null)
return app;
else {
String msg = IlvResourceUtil.getCurrentLocaleString(StockBean.class, "notRetriveAppFromSession");
throw new ServletException(msg);
}
}
String msg = IlvResourceUtil.getCurrentLocaleString(StockBean.class, "notRetriveAppFromSession");
throw new ServletException(msg);
}
protected StockDemoApp getApp() throws ServletException {
return getApp((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest());
}
public String loadQuotes() {
Calendar c = IlvCalendarFactory.createInstance(IlvLocaleUtil.getCurrentULocale());
Date to = c.getTime();
switch ((Integer.valueOf(duration)).intValue()) {
case 0:
c.add(Calendar.MONTH, -1);
break;
case 1:
c.add(Calendar.MONTH, -2);
break;
case 2:
c.add(Calendar.MONTH, -3);
break;
case 3:
c.add(Calendar.MONTH, -6);
break;
case 4:
c.add(Calendar.YEAR, -1);
break;
case 5:
c.add(Calendar.YEAR, -2);
break;
case 6:
c.add(Calendar.YEAR, -3);
break;
case 7:
c.add(Calendar.YEAR, -5);
break;
case 8:
c.add(Calendar.YEAR, -10);
break;
default:
}
// Pass the API key down to the data source.
try {
getApp().setAPIKey(getApiKey());
} catch (ServletException e) {
e.printStackTrace();
}
Date from = c.getTime();
loadQuotes(from, to);
return "";
}
private void loadQuotes(Date from, Date to) {
try {
StockDemoApp demo = getApp();
String lSym = symbol;
String[] ss = extractSecSymbols();
if (demo.loadQuotes(lSym, from, to, (Integer.valueOf(frequency)).intValue(), ss)) {
demo.primaryDataLoaded(lSym, ss);
chartView.setDefaultChartVisibleWindow();
}
} catch (ServletException e) {
e.printStackTrace();
}
}
protected String[] extractSecSymbols() {
StringTokenizer stk = new StringTokenizer(getSecSymbols(), " ");
String[] res = new String[stk.countTokens()];
int i = 0;
while (stk.hasMoreTokens()) {
String token = stk.nextToken();
if (token != null) {
res[i++] = token;
}
}
return res;
}
/**
* @return Returns the lower1Indicator.
*/
public String getLower1Indicator() {
return lower1Indicator;
}
/**
* @param lower1Indicator
* The lower1Indicator to set.
*/
public void setLower1Indicator(String lower1Indicator) {
this.lower1Indicator = lower1Indicator;
setMinorIndicator(0, lower1Indicator);
}
/**
* @return Returns the lower2Indicator.
*/
public String getLower2Indicator() {
return lower2Indicator;
}
/**
* @param lower2Indicator
* The lower2Indicator to set.
*/
public void setLower2Indicator(String lower2Indicator) {
this.lower2Indicator = lower2Indicator;
setMinorIndicator(1, lower2Indicator);
}
/**
* @return Returns the upperIndicators.
*/
public String[] getUpperIndicators() {
return upperIndicators;
}
/**
* @param upperIndicators
* The upperIndicators to set.
*/
public void setUpperIndicators(String[] upperIndicators) {
this.upperIndicators = upperIndicators;
try {
StockDemoApp demo = getApp();
if (upperIndicators != null) {
int[] upIndics = new int[upperIndicators.length];
for (int i = 0; i < upperIndicators.length; i++)
upIndics[i] = Integer.parseInt(upperIndicators[i]);
demo.setUpperIndicators(upIndics);
} else {
demo.setUpperIndicators(new int[0]);
}
} catch (ServletException e) {
e.printStackTrace();
}
}
public void setMinorIndicator(int chartIdx, String indicator) {
try {
getApp().setLowerIndicator(chartIdx, Integer.parseInt(indicator));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (ServletException e) {
e.printStackTrace();
}
}
/**
* @return Returns the secSymbol.
*/
public String getSecSymbols() {
return secSymbols;
}
/**
* @param secSymbol
* The secSymbol to set.
*/
public void setSecSymbols(String secSymbols) {
this.secSymbols = secSymbols;
}
/**
* @return Returns the symbol.
*/
public String getSymbol() {
return symbol;
}
/**
* @param symbol
* The symbol to set.
*/
public void setSymbol(String symbol) {
this.symbol = symbol;
}
/**
* @return Returns the API key.
*/
public String getApiKey() {
return apiKey;
}
/**
* Sets the API key.
*
* @param apiKey String
*/
public void setApiKey(String apiKey) {
this.apiKey = apiKey;
}
/**
* @return Returns the duration.
*/
public String getDuration() {
return duration;
}
/**
* @param duration
* The duration to set.
*/
public void setDuration(String duration) {
this.duration = duration;
}
/**
* @return Returns the frequency.
*/
public String getFrequency() {
return frequency;
}
/**
* @param frequency
* The frequency to set.
*/
public void setFrequency(String frequency) {
this.frequency = frequency;
}
/**
* @return Returns the chartView.
*/
public IlvChartDHTMLView getChartView() {
return chartView;
}
/**
* @param chartView
* The chartView to set.
*/
public void setChartView(IlvChartDHTMLView chartView) {
this.chartView = chartView;
}
public MinorChartView getLower1() {
return lower1;
}
public void setLower1(MinorChartView lower1) {
this.lower1 = lower1;
}
public MinorChartView getLower2() {
return lower2;
}
public void setLower2(MinorChartView lower2) {
this.lower2 = lower2;
}
public boolean isErrorOccured() {
return FacesContext.getCurrentInstance().getMessages().hasNext();
}
}