/*This code was generated using the UMPLE modeling language! Date of generation: 2008/07/30 10:29:32*/ /*This class drives: PartOfPublication*/ package library.core; import java.util.*; import java.sql.Date; import library.*; import library.json.*; public class PartOfPublication { //Class datatypes private String title; private String pageNumber; //Class association variables private List subpartss; private PartOfPublication partOfPublication; private EditionOrIssue editionOrIssue; //Registry of our system. LibraryRegistry registry = LibraryRegistry.getInstance(); //Constructor public PartOfPublication(String aTitle, String aPageNumber, PartOfPublication aPartOfPublication, EditionOrIssue aEditionOrIssue) { title = aTitle; pageNumber = aPageNumber; subpartss = new ArrayList(); registry.add(subpartss); partOfPublication = aPartOfPublication; partOfPublication.addSubparts(this); editionOrIssue = aEditionOrIssue; editionOrIssue.addTableOfContents(this); } public boolean setTitle(String aTitle) { title = aTitle; return true; } public boolean setPageNumber(String aPageNumber) { pageNumber = aPageNumber; return true; } public String getTitle() { return title; } public String getPageNumber() { return pageNumber; } public List getSubpartss() { return subpartss; } public PartOfPublication getPartOfPublication() { return partOfPublication; } public EditionOrIssue getEditionOrIssue() { return editionOrIssue; } public PartOfPublication addSubparts(String aTitle, String aPageNumber, PartOfPublication aPartOfPublication, EditionOrIssue aEditionOrIssue) { PartOfPublication newPartOfPublication; newPartOfPublication = new PartOfPublication(aTitle, aPageNumber, this, aEditionOrIssue); if (!subpartss.contains(newPartOfPublication)) { registry.add(newPartOfPublication); subpartss.add(newPartOfPublication); } return newPartOfPublication; } public PartOfPublication addSubparts(PartOfPublication aSubparts) { if (!subpartss.contains(aSubparts)) subpartss.add(aSubparts); return aSubparts; } /* This class does not drive PartOfPublication and therefore sets the association unidirectionally.*/ public void setPartOfPublication(PartOfPublication aPartOfPublication) { partOfPublication = aPartOfPublication; } /* This class does not drive EditionOrIssue and therefore sets the association unidirectionally.*/ public void setEditionOrIssue(EditionOrIssue aEditionOrIssue) { editionOrIssue = aEditionOrIssue; } public void delete() { //Delete all many ends first. for (PartOfPublication aPartOfPublication : subpartss) { aPartOfPublication.delete(); } subpartss.clear(); //Delete all 1 ends. partOfPublication.deleteSubparts(this); editionOrIssue.deleteTableOfContents(this); } public void deleteSubparts(PartOfPublication aPartOfPublication) { if (subpartss.contains(aPartOfPublication)) { subpartss.remove(aPartOfPublication); //registry.removeObj(registry.getKey(aPartOfPublication)); } else //Throw an UmpleException .. to be implemented. { } } public boolean areManyEndsNull() { if (subpartss.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("title", getTitle()); obj.put("pageNumber", getPageNumber()); return obj; } }