-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBuilding.java
More file actions
106 lines (90 loc) · 3.43 KB
/
Building.java
File metadata and controls
106 lines (90 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import java.io.IOException;
import java.util.ArrayList;
import java.util.Objects;
import java.io.BufferedWriter;
import java.io.FileWriter;
public class Building {
public redBlackTree rbTree;
public MinHeap heap;
public int jobID;
ArrayList<String> executedBuildingsOutput;
public Building()
{
this.executedBuildingsOutput = new ArrayList<String>();
this.heap = new MinHeap();
this.rbTree = new redBlackTree();
}
public void WritetoOutput()
{
try{
BufferedWriter buildingsWriter=new BufferedWriter(new FileWriter("output_file.txt"));
for(int i=0; i<executedBuildingsOutput.size(); i++){
buildingsWriter.append(executedBuildingsOutput.get(i));
buildingsWriter.append('\n');
}
buildingsWriter.close();
}
catch(IOException err)
{
err.printStackTrace();
}
}
// public void NextBuilding(int ID){
// redBlackBuildingNode newNode=rbTree.insertIntoRedBlackTree(rbTree.NextBuildingInTree(ID), rbTree.root);
// executedBuildingsOutput.add("("+rbTree.NextBuildingInTree(ID)+","+newNode.building_ExecutionTime+","+newNode.totalBuildingTime+")");
// }
//
// public void previousBuilding(int ID){
// redBlackBuildingNode newNode=rbTree.insertIntoRedBlackTree(rbTree.prevBuildingInTree(ID), rbTree.root);
// executedBuildingsOutput.add("("+rbTree.prevBuildingInTree(ID)+","+newNode.building_ExecutionTime+","+newNode.totalBuildingTime+")");
// }
public void insertBuildingInfo(int buildingNum, int totalBuildingTime, int executionTime) {
if(rbTree.isBuildingIdPresent(buildingNum, rbTree.root) == 0) {
rbTree.insertIntoRedBlackTree(buildingNum, totalBuildingTime, executionTime);
redBlackBuildingNode newNode = rbTree.SearchRBTree(buildingNum, rbTree.root);
heap.insertIntoMinHeap(totalBuildingTime, executionTime, newNode);
}
else {
executedBuildingsOutput.add("Building - "+ buildingNum + " already exits in the System. It is a duplicate Entry ");
WritetoOutput();
System.exit(1);
}
}
public void PrintWayneBuilding(int buildingNum) {
redBlackBuildingNode newNode = rbTree.SearchRBTree(buildingNum, rbTree.root);
if(!newNode.isEmpty())
{
executedBuildingsOutput.add("(" + rbTree.fetchBuildings(buildingNum) + "," + newNode.building_ExecutionTime + "," + newNode.totalBuildingTime + ")");
}
else {
executedBuildingsOutput.add("(0,0,0)");
}
}
public void printWayneDeletedBuilding(int buildingNum, long completed_time) {
executedBuildingsOutput.add("("+buildingNum+","+completed_time+")");
}
public void PrintWayneBuilding(int buildingNum1, int buildingNum2) {
ArrayList<Integer>buildingsList = rbTree.fetchBuildings(buildingNum1, buildingNum2);
String buildingsListString ="";
if(buildingsList.size()!=0) {
for(int i = 0; i < buildingsList.size(); i++) {
if(buildingsList.get(i) != 0) {
redBlackBuildingNode newNode = rbTree.SearchRBTree(buildingsList.get(i), rbTree.root);
buildingsListString += "(" + buildingsList.get(i) + "," + newNode.building_ExecutionTime + "," + newNode.totalBuildingTime + ")";
if (i != buildingsList.size() - 1) {
buildingsListString += ",";
}
}
}
char[] buildingsListArray = buildingsListString.toCharArray();
if(buildingsListArray[buildingsListArray.length-1] == ','){
buildingsListString=buildingsListString.substring(0,buildingsListArray.length-1);
}
executedBuildingsOutput.add(buildingsListString);
}
else {
buildingsListString+= "(0,0,0)";
executedBuildingsOutput.add(buildingsListString);
}
}
}