/* * Created on 23.11.2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package kirjasto; import org.nakedobjects.object.AbstractNakedObject; import org.nakedobjects.object.NakedObject; import org.nakedobjects.object.Title; import org.nakedobjects.object.value.TextString; /** * @author rakentaja * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class Kommentti extends AbstractNakedObject { public static final long serialVersionUID = 2L; private final TextString kommentti; private final Title omatitle = new Title("Kommentti"); private NakedObject olio; // viite olioon, johon tämä kommentti liittyy // "Rakenteellinen" rakennin public Kommentti() { kommentti = new TextString(); } // "Toiminnallinen" rakennin public void created() { // ... } public TextString getKommentti() { return kommentti; } /** * Tallennetaan sisäinen viite, joka estää kommentin * liittämisen useaan olioon. * Todo: tälle pitäis saada myös about, joka disabloi tarvittaessa... * @param o */ public void associateOlio(NakedObject o) { //resolve(olio); // selvitä, onko jo liitetty jonnekin if (! allowAssociation(o) ) return; this.olio = o; } /** * Poistetaan kommentti * @return */ public void dissociateOlio(NakedObject o) { if (this.olio == null) return; // katkaisee rekursion this.olio = null; // ei voida luottaa siihen, että o:lla olisi kommentin // poistava metodi... joten katsotaan, onko oliolla // dissociateKommentti -metodia, ja kutsutaan sitä... Class c = o.getClass(); try { java.lang.reflect.Method m = c.getMethod("dissociateKommentti", new Class[] {Kommentti.class}); if (m != null) m.invoke(o, new Object[] {this}); } catch (Exception exp) {} } // Yksinkertaisen otsikon rakentimet // (englannille tarpeettomat usein) public static String singularName() { return "Kommentti"; } public static String pluralName() { return "Kommentit"; } public Title title() { // erikoisemman otsikon rakennin return kommentti.title().toString().equals("")?omatitle:kommentti.title(); } /** * Kommentin voi assosioida vain, jos siihen ei vielä liity oliota, * tai mikäli assisiaatiota "uusitaan" samaan olioon. * Tämän olion kutsu pitäsi tehdä pakolliseksi... * @param o * @return */ public boolean allowAssociation(NakedObject o) { if (o == null) return true; // poistaminen on myös sallittua if (this.olio == null) return true; return o == this.olio; } }