Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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 = )