Question: change the non preemptive scheduling processor to preemptive scheduling package covid.file; / * 2 1 4 0 7 6 7 8 4 - Keenan Husselmann

change the non preemptive scheduling processor to preemptive scheduling
package covid.file;
/*214076784- Keenan Husselmann
*/
import java.io.*;
import java.util.*;
//********************************************************************************************************************//
class Patient {
public String name;
public int age;
public String status;
// Constructor to initialize the patient object with name, age, and status
public Patient(String name, int age, String status){
this.name = name;
this.age = age;
this.status = status;
}
}
class CovidFile {
public String cityName;
public int arrivalTime;
List patients = new ArrayList<>();
// Constructor to initialize the CovidFile object with the city name and arrival time
public CovidFile(String cityName, int arrivalTime){
this.cityName = cityName;
this.arrivalTime = arrivalTime;
}
// Method to add a patient to this Covid file
public void addPatient(Patient patient){
patients.add(patient);
}
public double calculateAverageAge(){
/* Method to calculate the Average Age of patients in this file
int sum = patients.stream().mapToInt(p -> p.age).sum();
Here, patients is patient objects.
.stream() converts the collection into a stream.
Then mapToInt(p -> p.age) maps each patient object to its age, creating an IntStream of ages.
Finally, .sum() calculates the sum of all ages in the stream and assigns it to the variable sum
*/
int sum = patients.stream().mapToInt(p -> p.age).sum();
return (double) sum / patients.size();
}
//Method to find the minimum age among the patients
public int findMinimumAge(){
return patients.stream().mapToInt(p -> p.age).min().orElse(-1);
}
//Method to find the maximum age among the patients
public int findMaximumAge(){
return patients.stream().mapToInt(p -> p.age).max().orElse(-1);
}
//Method to count the number of patients per status category
public Map countPatientsByStatus(){
/*This line initializes a HashMap named statusCount where the keys are strings (representing statuses)
and the values are integers (representing counts).*/
Map statusCount = new HashMap<>();
for (Patient p : patients){
/*This line starts a loop that iterates over each Patient object in the patients collection
Inside the loop, this line merges the information of the patient's status into the statusCount map.
The merge method is used to combine the value (count) associated with a given status in the map*/
statusCount.merge(p.status, 1, Integer::sum);
}
return statusCount;
}
}
public class Scheduler {
public static void main(String[] args) throws IOException {
List files = new ArrayList<>();
readFiles(files);
Collections.sort(files, Comparator.comparingInt(f -> f.arrivalTime));
/*Sort files by arrival time for processing (First Come, First Served Scheduling)
The next line sorts the files list based on the arrivalTime property of CovidFile objects.
It uses the Collections.sort method along with an expression f ->,to specify the sorting criteria.
The expression f -> f.arrivalTime extracts the arrival time of each CovidFile object.*/
processFiles(files);
}
private static void readFiles(List files) throws IOException {
/*Simulated file paths and arrival times for each city
This method takes a List of CovidFile objects as input and reads data from CSV files into these objects.
It may throw an IOException if there's an issue with file reading
*/
String[] fileNames ={"src\\NewYork.csv","src\\London.csv","src\\Lagos.csv","src\\Johannesburg.csv","src\\Windhoek.csv","src\\Shanghai.csv","src\\Delhi.csv"};
int[] arrivalTimes ={0,20,25,30,35,50,55};
/*This section defines simulated file paths (fileNames) and arrival times (arrivalTimes) for each city.
Each file corresponds to a city's COVID-19 data, and arrivalTimes indicate when the data for each city arrives.
*/
for (int i =0; i < fileNames.length; i++){
/*The code iterates over each file in the fileNames array.
For each file, it creates a new CovidFile object, initializing it with the city name and arrival time.
It then creates a File object from the file path and initializes a BufferedReader to read the CSV file.
It reads each line of the CSV file, splits it by commas, and checks if it contains at least six elements.
If the line has enough data, it creates a Patient object with relevant data (name, age, and other information from the CSV) and adds it to the CovidFile object.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!