/* * 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.Title; import org.nakedobjects.object.control.ActionAbout; import org.nakedobjects.object.control.About; import org.nakedobjects.object.control.ProgrammableAbout; import org.nakedobjects.object.value.TextString; /** * @author tmpoyhon * @author saelkale * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class Nide extends AbstractNakedObject { //niteen id, joka erottaa sen muista saman teokseni niteistä private TextString id; private Teos teos; private Kommentti kommentti; private Laina laina; public Nide(){ id = new TextString(); } /** Palauttaa niteen id:n (=järjestysnumeron). * * @return */ public TextString getId(){ return id; } public void setId(TextString id){ this.id = id; } //Palauttaa niteen yksilöivän "nimen" = ISBN+niteen nro public Title title(){ if(teos == null) return new Title("Teosta ei tiedetä"); String nimi = teos.getTeoksenNimi().stringValue() ; if (teos.getIsbn().stringValue() != null) nimi += " " + teos.getIsbn().stringValue(); return new Title(nimi).append("_").append(this.id); } // Yksinkertaisen otsikon rakentimet public static String singularName() { return "Nide"; } public static String pluralName() { return "Niteet"; } /* public void setNid(TextString nid){ this.nid = nid; }*/ public Teos getTeos(){ resolve(teos); return teos; } /** * Niteeseen saa sijoittaa vain sen teoksen, joka siinä jo on. * (ja tyhjän tilalle saa aina sijoittaa jotain) * Toista teosta ei saa vaihtaa kesken kaiken. * Ei vain tule koskaan tähän metodiin :( * @param t * @return */ public ActionAbout aboutSetTeos(Teos t) { return (this.teos == null || matchesTeos(t)) ? ActionAbout.ENABLE : ActionAbout.DISABLE; } /** * Onko kyseessä oma teos, vai liittyykö nide jo * johonkin toiseen teokseen * @param t * @return */ public boolean matchesTeos(Teos t) { return this.teos == t; } public void setTeos(Teos te){ if (this.teos != null) return; this.teos = te; if (te == null) return; // niteen poistaminen / poistuminen // id täytyy kysyä teokselta. Seuravan niteen järjestysnumeroa (lukumäärä) // ei voida käyttää, sillä niteitä voidaan poistaa välistä id.setValue(new TextString(teos.getNextID()+"")); te.setNide(this); objectChanged(); } /** * Poistetaan teos * @param t */ public void dissociateTeos(Teos t) { t.dissociateNiteet(this); setTeos(null); } public void setKommentti(Kommentti kommentti){ this.kommentti = kommentti; objectChanged(); } public Kommentti getKommentti(){ resolve(kommentti); return kommentti; } public Laina getLaina(){ resolve(laina); return laina; } public void setLaina(Laina lai){ laina = lai; objectChanged(); } public void associateLaina(Laina n) { if(laina != null) return; //on jo lainassa if(n == null) return; //lainaa ei ole olemassa this.setLaina(n); //tämä nide asetetaan lainatuksi n.setNide(this); //kerrotaan lainalle, että sillä on nide } public void dissociateLaina(Laina n) { if(!n.equals(laina)) return; this.setLaina(null); if(n == null) return; n.setNide(null); } /** About-teksti ei tule näkyviin minnekään. * * */ public About aboutActionLainaa(Laina n) { ProgrammableAbout a = new ProgrammableAbout(); System.out.println("kalle"); a.setDescription("Nide on jo lainassa!"); a.makeAvailableOnCondition(laina!=null, "Nide on jo lainassa!"); return a; } public void actionLainaa(Laina n){ associateLaina(n); } }