/*
* Copyright 2005 Joe Walker
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.dwr.gidemo;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
/**
* An object representing the stock price of a corporation.
* @author Joe Walker [joe at getahead dot ltd dot uk]
*/
public class Corporation
{
/**
* @param jsxid
* @param name
*/
public Corporation(String jsxid, String name)
{
this.jsxid = jsxid;
this.name = name;
float temp = random.nextFloat() * 100.0F;
last = new BigDecimal(Math.round(temp * 100.0F) / 100.0F);
last = last.setScale(2, BigDecimal.ROUND_UP);
time = new Date();
change = new BigDecimal(0.0F);
change = change.setScale(2, BigDecimal.ROUND_UP);
max = last;
min = last;
}
private String jsxid;
private String name;
private BigDecimal last;
private Date time;
private BigDecimal change;
private BigDecimal max;
private BigDecimal min;
private static final Random random = new Random();
/**
* @return the jsxid
*/
public String getJsxid()
{
return jsxid;
}
/**
* @return the name
*/
public String getName()
{
return name;
}
/**
* @return the last
*/
public BigDecimal getLast()
{
return last;
}
/**
* @return the time
*/
public String getTime()
{
return FORMAT.format(time);
}
/**
* @return the change
*/
public BigDecimal getChange()
{
return change;
}
/**
* @return the max
*/
public BigDecimal getMax()
{
return max;
}
/**
* @return the min
*/
public BigDecimal getMin()
{
return min;
}
/**
* Alter the stock price
*/
public void change()
{
float newChange = (random.nextFloat() * 4) - 2;
newChange = Math.round(newChange * 100.0F) / 100.0F;
if (last.floatValue() + newChange < 9)
{
newChange = -newChange;
}
change = new BigDecimal(newChange);
change = change.setScale(2, BigDecimal.ROUND_UP);
last = last.add(change);
if (last.compareTo(max) > 0)
{
max = last;
}
if (last.compareTo(min) < 0)
{
min = last;
}
time = new Date();
}
private static final SimpleDateFormat FORMAT = new SimpleDateFormat("hh:MM:ss");
}