/*This code was generated using the UMPLE modeling language! Date of generation: 2008/07/30 11:46:04*/ /*This class drives: TelephoneNumber*/ package telesystem.core; import java.util.*; import telesystem.*; import telesystem.json.*; public class PhoneCall { //Class datatypes private String isOnHold; private String startTime; private String duration; //Class association variables private TelephoneNumber originator; private List partiess; //Registry of our system. TelesystemRegistry registry = TelesystemRegistry.getInstance(); //Constructor public PhoneCall(String aIsOnHold, String aStartTime, String aDuration, TelephoneNumber aOriginator) { isOnHold = aIsOnHold; startTime = aStartTime; duration = aDuration; originator = aOriginator; originator.addBelongsTo(this); partiess = new ArrayList(); registry.add(partiess); } public boolean setIsOnHold(String aIsOnHold) { isOnHold = aIsOnHold; return true; } public boolean setStartTime(String aStartTime) { startTime = aStartTime; return true; } public boolean setDuration(String aDuration) { duration = aDuration; return true; } public String getIsOnHold() { return isOnHold; } public String getStartTime() { return startTime; } public String getDuration() { return duration; } public TelephoneNumber getOriginator() { return originator; } public List getPartiess() { return partiess; } public TelephoneNumber addParties(String aDigits, VoiceMailBox aVoiceMailBox) { TelephoneNumber newTelephoneNumber; newTelephoneNumber = new TelephoneNumber(aDigits, aVoiceMailBox); if (!partiess.contains(newTelephoneNumber)) { registry.add(newTelephoneNumber); partiess.add(newTelephoneNumber); } return newTelephoneNumber; } public TelephoneNumber addParties(TelephoneNumber aParties) { if (!partiess.contains(aParties)) partiess.add(aParties); return aParties; } /* This class does not drive TelephoneNumber and therefore sets the association unidirectionally.*/ public void setOriginator(TelephoneNumber aOriginator) { originator = aOriginator; } public void delete() { //Delete all many ends first. for (TelephoneNumber aTelephoneNumber : partiess) { aTelephoneNumber.delete(); } partiess.clear(); //Delete all 1 ends. originator.deleteBelongsTo(this); } public void deleteParties(TelephoneNumber aTelephoneNumber) { if (partiess.contains(aTelephoneNumber)) { partiess.remove(aTelephoneNumber); //registry.removeObj(registry.getKey(aTelephoneNumber)); } else //Throw an UmpleException .. to be implemented. { } } public boolean areManyEndsNull() { if (partiess.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("isOnHold", getIsOnHold()); obj.put("startTime", getStartTime()); obj.put("duration", getDuration()); return obj; } }