/*This code was generated using the UMPLE modeling language! Date of generation: 2008/07/30 11:46:04*/ /*This class drives: TelephoneNumber, Telephone*/ package telesystem.core; import java.util.*; import telesystem.*; import telesystem.json.*; public class PhoneLine { //Class datatypes private String location; private String digOrAnalog; //Class association variables private List telephoneNumbers; private Telephone telephone; //Registry of our system. TelesystemRegistry registry = TelesystemRegistry.getInstance(); //Constructor public PhoneLine(String aLocation, String aDigOrAnalog) { location = aLocation; digOrAnalog = aDigOrAnalog; telephoneNumbers = new ArrayList(); registry.add(telephoneNumbers); } public boolean setLocation(String aLocation) { location = aLocation; return true; } public boolean setDigOrAnalog(String aDigOrAnalog) { digOrAnalog = aDigOrAnalog; return true; } public String getLocation() { return location; } public String getDigOrAnalog() { return digOrAnalog; } public List getTelephoneNumbers() { return telephoneNumbers; } public Telephone getTelephone() { return telephone; } public TelephoneNumber addTelephoneNumber(String aDigits, VoiceMailBox aVoiceMailBox) { TelephoneNumber newTelephoneNumber; newTelephoneNumber = new TelephoneNumber(aDigits, aVoiceMailBox); if (!telephoneNumbers.contains(newTelephoneNumber)) { registry.add(newTelephoneNumber); telephoneNumbers.add(newTelephoneNumber); } return newTelephoneNumber; } public TelephoneNumber addTelephoneNumber(TelephoneNumber aTelephoneNumber) { if (!telephoneNumbers.contains(aTelephoneNumber)) telephoneNumbers.add(aTelephoneNumber); return aTelephoneNumber; } /* This class does not drive Telephone and therefore sets the association unidirectionally.*/ public void setTelephone(Telephone aTelephone) { telephone = aTelephone; } public void delete() { //Delete all many ends first. for (TelephoneNumber aTelephoneNumber : telephoneNumbers) { aTelephoneNumber.delete(); } telephoneNumbers.clear(); //Delete all 1 ends. telephone.delete(); } public void deleteTelephoneNumber(TelephoneNumber aTelephoneNumber) { if (telephoneNumbers.contains(aTelephoneNumber)) { telephoneNumbers.remove(aTelephoneNumber); //registry.removeObj(registry.getKey(aTelephoneNumber)); } else //Throw an UmpleException .. to be implemented. { } } public void deleteTelephone(Telephone aTelephone) { if (aTelephone.equals(telephone)) { telephone = null; registry.removeObj(registry.getKey(aTelephone)); } else //Throw an UmpleException .. to be implemented. { } } public boolean areManyEndsNull() { if (telephoneNumbers.size() == 0) { return true; } else return false; } /*********************************** * Returns the attribute list along with the * class ID in JSON format. ***********************************/ public JSONObject getAttributes() throws JSONException { JSONObject obj = new JSONObject(); obj.put("CLASS_ID", registry.getKey(this)); obj.put("location", getLocation()); obj.put("digOrAnalog", getDigOrAnalog()); return obj; } }