Advertisement
LeeSeng

TaskSchedulingSystemApp

Aug 17th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1. package system.ui;
  2.  
  3. import system.domain.*;
  4.  
  5. import java.io.BufferedReader;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileReader;
  8. import java.io.IOException;
  9. import java.util.*;
  10.  
  11. public class TaskSchedulingSystemApp {
  12.    
  13.     private static ArrayList<Job> jobList;
  14.     private static Sequencer sequencer;
  15.     private static ArrayList<Worker> workerList;
  16.     private static int totalProfitAfterScheduled;
  17.     private static int totalWastedResources;
  18.  
  19.     public static void main(String[] args) {
  20.         jobList = new ArrayList<>();
  21.         sequencer = new Sequencer();
  22.         workerList = new ArrayList<>();
  23.         totalProfitAfterScheduled = 0;
  24.         totalWastedResources = 0;
  25.        
  26.         String csvFile = "jobs.txt",
  27.                 line = "",
  28.                 csvSplitBy = ", ";
  29.         BufferedReader br = null;
  30.        
  31.         try {
  32.             br = new BufferedReader(new FileReader(csvFile));
  33.            
  34.             while ((line = br.readLine()) != null) {
  35.                 // use comma as separator
  36.                 String[] job = line.split(csvSplitBy);
  37.                 int job_id =  Integer.parseInt(job[0]);
  38.                 int job_start = Integer.parseInt(job[1]);
  39.                 int job_end = Integer.parseInt(job[2]);
  40.                 int job_profit = Integer.parseInt(job[3]);
  41.                 jobList.add(new Job(job_id, job_start, job_end, job_profit));
  42.             }
  43.            
  44.             /**
  45.              * Use sequencer to help us sequence the job
  46.              */
  47.             sequencer.setJobList(jobList);
  48.             sequencer.calculateMaxProfitAndSequencingJob();
  49.            
  50.         }
  51.         catch (TimeConstraintException err) {
  52.             err.printStackTrace();
  53.         }
  54.         catch (ProfitNegativeException err) {
  55.             err.printStackTrace();
  56.         }
  57.         catch (FileNotFoundException err) {
  58.             err.printStackTrace();
  59.         }
  60.         catch (IOException err) {
  61.             err.printStackTrace();
  62.         }
  63.         finally {
  64.             if (br != null) {
  65.                 try {
  66.                     br.close();
  67.                 } catch (IOException e) {
  68.                     e.printStackTrace();
  69.                 }
  70.             }
  71.         }
  72.        
  73.         Scheduling();
  74.        
  75.         System.out.println("Total Profit we made: " + totalProfitAfterScheduled);
  76.         System.out.println("Total resources we wasted: " + totalWastedResources);
  77.     }
  78.    
  79.     private static void Scheduling() {
  80.         /**
  81.          * Worker will be initialize here
  82.          * The number of workers is depends on how many
  83.          * jobSequnced we have, then assign to them
  84.          */
  85.         for (int i = 0; i < sequencer.getCounter(); i++) {
  86.             LinkedList<Job> jobSequenced = sequencer.getSpecifiedJobSequenced(i);
  87.             int maxProfit = sequencer.getSpecifiedMaxProfit(i);
  88.             Worker worker = new Worker(i);
  89.             worker.assginJob(jobSequenced, maxProfit);
  90.             workerList.add(worker);
  91.         }
  92.        
  93.         /**
  94.          * The result we want is total profit after we scheduled,
  95.          * the total resources we wasted and maybe the worker's time schedule.
  96.          */
  97.         for (Worker worker : workerList) {
  98.             totalProfitAfterScheduled += worker.getProfitWorkerMade();
  99.             totalWastedResources += worker.getIdleTime();
  100.             System.out.println(worker.toString());
  101.         }
  102.     }
  103.  
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement