package supermarketline; import java.util.PriorityQueue; import java.util.Random
ID: 3531857 • Letter: P
Question
package supermarketline;
import java.util.PriorityQueue;
import java.util.Random;
import java.util.ArrayList;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class MarketLine {
//Fields
private PriorityQueue<Integer> queue = new PriorityQueue<Integer>();
private Random rand = new Random();
private Date date = new Date();
private DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd - hh:mm:ss a");
private ArrayList<String> timeStamp = new ArrayList<String>();
private int Customers;
private long startTime = System.nanoTime();
private long simulationTime = 1;
private long waitTime = generateWaitTime();
private long serviceCustomerAt;
//Constuctor
public MarketLine() {
System.out.println("Instantiated at: "
+ dateFormat.format(date) + " ");
}
public void run(){
try {
Thread.sleep(waitTime);
System.out.println("Delay until first customer: " + waitTime);
newCustomer(Customers);
serveCustomer();
} catch (InterruptedException e){/*Catch*/}
while((System.nanoTime()-startTime)<=(simulationTime*60000000000L)-waitTime) {
for(int minute = 0; minute < 720; minute++){
}
System.out.println("Exit");
System.exit(0);
}
}
public String toString() {
return this.queue.toString();
}
private void serveCustomer() {
long elapsedTime = System.nanoTime()-startTime;
while((elapsedTime)<(serviceCustomerAt)){
elapsedTime += System.nanoTime()/10000000;
}
if(queue.size()!=0){
System.out.println("Dequeued customer at: " + dateFormat.format(new Date()));
queue.poll();
} else {
System.out.println("Queue is empty!");
}
}
private void newCustomer(int ID){
long elapsedTime = System.nanoTime()-startTime;
long waitTime = (long)generateWaitTime()*1000000;
long generateAt = elapsedTime+waitTime;
while((elapsedTime)<(generateAt)){/*Wait*/
elapsedTime = System.nanoTime()-startTime;
}
serviceCustomerAt = 0;
System.out.println("Customer # " + Customers + " added to queue. . .");
Customers++;
queue.offer(ID);
System.out.println("Queue size: " + queue.size());
assignTimestamp(ID);
//The time until the customer is served.
waitTime = (long)generateWaitTime()*1000000;
elapsedTime = System.nanoTime()-startTime;
serviceCustomerAt = elapsedTime + waitTime;
System.out.println("Service delay: " + waitTime/1000000);
}
private void assignTimestamp(int ID) {
timeStamp.add(ID + ": " + dateFormat.format(new Date()));
System.out.println(timeStamp.get(Customers-1));
}
private int generateWaitTime(){
//Local variables
int Low = 1000;
int High = 4000;
return rand.nextInt(High-Low) + Low;
}
}
Explanation / Answer
(line means it's part of a package. You may run into problems if you remove that as it might not recognize stuff that might be in other classes that the tutorial might be using that are in that package. package supermarket.checkout; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.Reader; import java.io.Writer; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Date; import java.util.ArrayList; import java.util.Calendar; import java.util.Iterator; import java.util.List; import supermarket.checkout.Item; import supermarket.checkout.Transaction; import supermarket.checkout.TransactionReader; import supermarket.checkout.TransactionsList; import supermarket.prices.Article; import supermarket.prices.ArticleChecker; import supermarket.auth.DatabaseAuthorizer; public class Checkout { private int id; private Connection databaseConnection; private float moneyBalance; private DatabaseAuthorizer databaseAuthorizer; private ArticleChecker articleChecker; private Transaction currentTransaction; private TransactionsList transactionsList; public Checkout(ArticleChecker ac, DatabaseAuthorizer da) { articleChecker = ac; databaseAuthorizer = da; databaseConnection = da.getConnection(); try { databaseConnection.setAutoCommit(false); } catch (SQLException e) { } transactionsList = new TransactionsList(databaseConnection, ac); loadConfiguration(); } public Transaction createTransaction() { int transactionID = 0; Date date = new Date(Calendar.getInstance().getTime().getTime()); String query = )
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.