package PS4; import javax.swing.*; public class TelecomTest { public static void main(String[] args) { int countFailed= 0; TelecomDevice[] device= new TelecomDevice[20]; System.out.println("Failed devices"); for (int i=0; i < 20; i++) { if (i < 12) device[i]= new T1("CAS"); else device[i]= new FW("LMDS"); device[i].computeStatus(); if (device[i].getStatus().equals("Failed")) { System.out.println(device[i].getID() + " " + device[i].getStatus()); countFailed++; } } System.out.println(" "); while (countFailed > 0) { String input= JOptionPane.showInputDialog("Enter ID to clear failure"); int id= Integer.parseInt(input); for (int j=0; j< 20; j++) { if (device[j].getID()== id) { device[j].printData(); if (device[j].getStatus().equals("Failed")) { device[j].setStatus("Active"); System.out.println("Set active\n"); countFailed--; } break; } } } System.out.println("All network devices active"); System.exit(0); } } abstract class TelecomDevice { private int ID; private String status; private String functionalType; private String type; private static int nextID= 0; public TelecomDevice() { ID= nextID++; status= "Active"; } public String getStatus() { return status; } public int getID() { return ID; } public abstract void computeStatus(); public void setStatus(String s) { status= s; } public void setType(String t ) { type= t; } public void setFunctionalType(String f) { functionalType= f; } public void printData() { System.out.println("ID: " + ID); System.out.println("Type: " + type); System.out.println("Status: " + status); System.out.println("Functional type:" + functionalType); } } abstract class Access extends TelecomDevice { private double nominalBandwidth; private double actualBandwidth; private int channels; private double errorRate; private double errorThreshold; public Access(double nb, double ab, int ch, double er, double et) { super(); nominalBandwidth= nb; actualBandwidth= ab; channels= ch; errorRate= er; errorThreshold= et; super.setFunctionalType("Access"); } public void computeStatus() { if (errorRate > errorThreshold) setStatus("Failed"); } public double getBandwidth() { return actualBandwidth; } public void printData() { super.printData(); System.out.println(" Nominal bandwidth " + nominalBandwidth); System.out.println(" Actual bandwidth " + actualBandwidth); System.out.println(" Channels " + channels); System.out.println(" Error rate " + errorRate); System.out.println(" Error threshold " + errorThreshold); } } class T1 extends Access { private String signaling; public T1(String sig) { super(1.5, 1.5, 24, 12.0*Math.random(), 10.0); setType("T1"); signaling= sig; } public void printData() { super.printData(); System.out.println(" Signaling " + signaling); } } class FW extends Access { private String tech; public FW(String t) { super(64.0, 64.0*Math.random(), 2, 100.0*Math.random(), 50.0); super.setType("FW"); tech= t; } public void computeStatus() { super.computeStatus(); if ((getBandwidth() < 8.0 && tech.equals("MMDS")) || (getBandwidth() < 16.0 && tech.equals("LMDS")) || (getBandwidth() < 32.0 && tech.equals("NB"))) setStatus("Failed"); } public void printData() { super.printData(); System.out.println(" Technology " + tech); } }