Using A Timer...
Hello, Ive to use a Timer to indicate on System.out.println when two deadlines (to be inputted by user) have been reached. Ive been reading about it for the past hour but ideas would be appreciated, heres my code...
import java.io.*;
import java.net.*;
import java.text.DecimalFormat;
import java.util.*;
publicclass BiddingServer
{
privatestatic ServerSocket servSocket;
privatestaticfinalint PORT = 1234;
publicstatic Scanner keyboard =new Scanner(System.in);
publicstatic String itemDescripOne ="TV", itemCodeOne ="123";
publicstatic String itemDescripTwo ="Toaster", itemCodeTwo ="321";
publicstaticfloat itemPriceOne = 100, itemPriceTwo = 200;
publicstatic Calendar deadlineOne;
publicstatic Calendar deadlineTwo;
publicstaticint clientCount =0;
publicstaticvoid main(String[] args)throws IOException
{
{
Calendar start = Calendar.getInstance();
int date = start.get(Calendar.DATE);
int month = start.get(Calendar.MONTH);
int year = start.get(Calendar.YEAR);
Timer timer;
// what follows is the entry of the deadlines
// that need to be indicated when finished
System.out.printf("\nEnter First Item's finishing bid time");
String timeString = BiddingServer.keyboard.nextLine();
String hourString = timeString.substring(0,2);
int hour = Integer.parseInt(hourString);
String minString = timeString.substring(3,5);
int minute = Integer.parseInt(minString);
BiddingServer.deadlineOne = Calendar.getInstance();//Set up Calendar object to hold deadline time...
BiddingServer.deadlineOne.set(year,month,date,hour,minute,0);
System.out.println("\nEnter Second Item's finishing bid time:\n");
String timeString1 = BiddingServer.keyboard.nextLine();
String hourString1 = timeString1.substring(0,2);
int hour1 = Integer.parseInt(hourString1);
String minString1 = timeString1.substring(3,5);
int minute1 = Integer.parseInt(minString1);
BiddingServer.deadlineTwo = Calendar.getInstance();//Set up Calendar object to hold deadline time...
BiddingServer.deadlineTwo.set(year,month,date,hour1,minute1,0);
}
System.out.println("Opening port...\n");
try
{
servSocket =new ServerSocket(PORT);
}
catch (IOException e)
{
System.out.println("\nUnable to set up port!");
System.exit(1);
}
do
{
Socket client = servSocket.accept();
clientCount++;
//Wait for client.
System.out.println("\nNew bidder accepted.\n");
ClientHandler handler =new ClientHandler(client, clientCount);
handler.start();
}while (true);
}
}
class ClientHandlerextends Thread
{
private Socket client;
private Scanner input, keyboard;
private PrintWriter output;
int clientNumber;
public ClientHandler(Socket socket,int count)throws IOException, NumberFormatException
{
client = socket;
clientNumber = count;
keyboard =new Scanner(System.in);
input =new Scanner(client.getInputStream());
output =new PrintWriter(client.getOutputStream(),true);
}
publicvoid run()
{
String userInput;
float price, priceTwo ;
output.println(BiddingServer.itemDescripOne);
output.println(BiddingServer.itemCodeOne);
output.println(getDateTime(BiddingServer.deadlineOne));
output.println(BiddingServer.itemDescripTwo);
output.println(BiddingServer.itemCodeTwo);
output.println(getDateTime(BiddingServer.deadlineTwo));
do
{
userInput = input.nextLine();
Calendar now = Calendar.getInstance();
if (userInput.startsWith("number of bidders"))
{
System.out.println("Number of Bidders Online " + clientNumber);
output.println(clientNumber);
}
if ((userInput.startsWith(BiddingServer.itemCodeOne)) && (userInput.endsWith("Status")) && (now.before(BiddingServer.deadlineOne)))
{
System.out.println("item price one");
output.println(BiddingServer.itemPriceOne);
}
elseif ((userInput.startsWith(BiddingServer.itemCodeOne)) && (userInput.endsWith("Status")) && (now.after(BiddingServer.deadlineOne)))
{
System.out.println("-1, bidding for item ended");
output.println("-1");
}
elseif (userInput.startsWith(BiddingServer.itemCodeOne))
{
price = Float.parseFloat(userInput.substring(BiddingServer.itemCodeOne.length() +1));
if ((price > BiddingServer.itemPriceOne) && (now.before(BiddingServer.deadlineOne)))
{
//bidForItem();
System.out.println("Bid Accepted");
output.println("Bid Accepted");
BiddingServer.itemPriceOne = price;
}elseif (now.after(BiddingServer.deadlineOne))
{
System.out.println("Late Bid");
output.println("Late Bid");
}elseif ((price <= BiddingServer.itemPriceOne) && (now.before(BiddingServer.deadlineOne)))
{
System.out.println("Low Bid");
output.println("Low Bid");
}
}
if ((userInput.startsWith(BiddingServer.itemCodeTwo)) && (userInput.endsWith("Status"))&& (now.before(BiddingServer.deadlineTwo)))
{
System.out.println("item price Two");
output.println(BiddingServer.itemPriceTwo);
}
elseif ((userInput.startsWith(BiddingServer.itemCodeTwo)) && (userInput.endsWith("Status")) && (now.after(BiddingServer.deadlineTwo)))
{
System.out.println("-1, bidding for item ended");
output.println("-1");
}
elseif (userInput.startsWith(BiddingServer.itemCodeTwo))
{
priceTwo = Float.parseFloat(userInput.substring(BiddingServer.itemCodeTwo.length() +1));
if ((priceTwo > BiddingServer.itemPriceTwo) && (now.before(BiddingServer.deadlineTwo)))
{
System.out.println("Bid Accepted");
output.println("Bid Accepted");
BiddingServer.itemPriceTwo = priceTwo;
}
elseif (now.after(BiddingServer.deadlineTwo))
{
System.out.println("Late Bid");
output.println("Late Bid");
}
elseif ((priceTwo <= BiddingServer.itemPriceTwo) && (now.before(BiddingServer.deadlineTwo)))
{
System.out.println("Low Bid");
output.println("Low Bid");
}
}
}while (true);
}
public String getDateTime(Calendar dateTime)
{
//Create DecimalFormat object to ensure 2 dec places...
DecimalFormat decFormat =new DecimalFormat("00");
//Now extract hours and minutes, each with 2 digits
//(i.e., with leading zeroes if needed)...
String hour2Digits =
decFormat.format(dateTime.get(Calendar.HOUR_OF_DAY));
String min2Digits =
decFormat.format(dateTime.get(Calendar.MINUTE));
return(dateTime.get(Calendar.DATE) +"/"
+ (dateTime.get(Calendar.MONTH)+1) +"/"
+ dateTime.get(Calendar.YEAR) +" "
+ hour2Digits +":" + min2Digits);
}
}

