Right, it was fubar'ed, SimpleScheduleModel wasn't meant for extending :) This works - you use like you tried at the beginning - create entry, set id and you can remove it. BTW: I think your bean should be session, not request, unless you intended so.
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package ########### import java.io.Serializable; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.TreeSet; import org.apache.myfaces.custom.schedule.model.AbstractScheduleModel; import org.apache.myfaces.custom.schedule.model.Day; import org.apache.myfaces.custom.schedule.model.DefaultScheduleEntry; import org.apache.myfaces.custom.schedule.model.ScheduleEntry; import org.apache.myfaces.custom.schedule.util.ScheduleEntryComparator; /** * <p> * A simple implementation of the ScheduleModel, not backed by any kind of * datasource: entries have to be added manually. * </p> * * @author Jurgen Lust (latest modification by $Author: werpu $) * @version $Revision: 371736 $ */ public class ExtendedScheduleModel extends AbstractScheduleModel implements Serializable { // TEST // public static void main(String [] args) // { // ExtendedScheduleModel foo = new ExtendedScheduleModel(); // DefaultScheduleEntry bar = new DefaultScheduleEntry(); // bar.setId("1"); // foo.addEntry(bar); // DefaultScheduleEntry bar2 = new DefaultScheduleEntry(); // bar2.setId("1"); // // foo.removeEntry(bar2); // } private static final long serialVersionUID = 1L; protected final TreeSet entries; protected final HashMap holidays; protected final DateFormat holidayFormat = new SimpleDateFormat("yyyyMMdd"); public ExtendedScheduleModel() { this.entries = new TreeSet(new ScheduleEntryComparator()); this.holidays = new HashMap(); } /** * Set the name of a holiday. * * @param date * the date * @param holidayName * the name of the holiday */ public void setHoliday(Date date, String holidayName) { if (date == null) { return; } String key = holidayFormat.format(date); holidays.put(key, holidayName); } /** * Add an entry to the model. * * @param entry * the entry to add */ public void addEntry(ScheduleEntry entry) { entries.add(entry); } /** * Remove an entry from the model. * * @param entry * the entry to remove */ public void removeEntry(ScheduleEntry entry) { if(entries.remove(entry)) return; if(entry != null && entry.getId() != null) removeEntry(entry.getId()); } /** * @see org.apache.myfaces.custom.schedule.model.ScheduleModel#removeSelectedEntry() */ public void removeSelectedEntry() { if (!isEntrySelected()) return; removeEntry(getSelectedEntry()); setSelectedEntry(null); refresh(); } /** * @see org.apache.myfaces.custom.schedule.model.AbstractScheduleModel#loadEntries(java.util.Date, * java.util.Date) */ protected Collection loadEntries(Date startDate, Date endDate) { ArrayList selection = new ArrayList(); for (Iterator entryIterator = entries.iterator(); entryIterator .hasNext();) { ScheduleEntry entry = (ScheduleEntry) entryIterator.next(); if (entry.getEndTime().before(startDate) || entry.getStartTime().after(endDate)) { continue; } selection.add(entry); } return selection; } /** * @see org.apache.myfaces.custom.schedule.model.AbstractScheduleModel#loadDayAttributes(org.apache.myfaces.custom.schedule.model.Day) */ protected void loadDayAttributes(Day day) { if (day == null) return; String key = holidayFormat.format(day.getDate()); String holiday = (String) holidays.get(key); if (holiday != null) { day.setSpecialDayName(holiday); day.setWorkingDay(false); } else { day.setSpecialDayName(null); day.setWorkingDay(true); } } /** * Remove entry from model * <br /><br /> * @param <b>id</b> identifier of entry to be removed * <br /><br /> * @return true on success and false on failure (in case entry with specified id wasn't found) * */ protected boolean removeEntry(String id) { ScheduleEntry entry = null; String currentId = null; for(ScheduleEntry se : (TreeSet<ScheduleEntry>)entries) { if((currentId = se.getId()) != null && currentId.equals(id)) { entry = se; break; } } if(entry != null) { entries.remove(entry); entry = null; return true; } return false; } } On 17/08/07, ignicolist <[EMAIL PROTECTED]> wrote: > > i have the class correct without errors. But when i call it show a blank > page! > > ExtendedScheduleModel x = new ExtendedScheduleModel(); > x.Remove2("8"); > > I call the class like that. I think its correct! so why the blank page? if i > put thouse two code lines in comments dont have the blank page, so the > problem is the class! :-(( > > > > > > > Michał 'Gandalf' Stawicki wrote: > > > > Try this, remember to set valid package: > > > > #####SET ME package #####SET ME > > > > import java.util.TreeSet; > > import org.apache.myfaces.custom.schedule.model.ScheduleEntry; > > import org.apache.myfaces.custom.schedule.model.SimpleScheduleModel; > > > > /** > > * @author mstawick > > */ > > public class ExtendedScheduleModel extends SimpleScheduleModel > > { > > > > /** Creates a new instance of ExtendedScheduleModel */ > > public ExtendedScheduleModel() > > { > > super(); > > } > > > > /** > > * Remove entry from model > > * <br /><br /> > > * @param id identifier of entry to be removed > > * <br /><br /> > > * @return true on success and false on failure (in case entry with > > specified id wasn't found) > > * > > */ > > public boolean removeEntry(String id) > > { > > ScheduleEntry entry = null; > > String currentId = null; > > > > for(ScheduleEntry se : entries) > > { > > if((currentId = se.getId()) != null && > > currentId.equals(id)) > > { > > entry = se; > > break; > > } > > } > > > > if(entry != null) > > { > > entries.remove(entry); > > entry = null; > > > > return true; > > } > > > > return false; > > } > > > > private TreeSet<ScheduleEntry> entries; > > } > > > > > > On 17/08/07, ignicolist <[EMAIL PROTECTED]> wrote: > >> > >> Sorry to bee so boring and noob, but i realy need to do this, i need a > >> funcionality to show and occult calendars, and i have a entry associate > >> to a > >> calendar, so when i need occult the calendar i need to remove the > >> entries > >> of that calendar from the model. everything working, just need remove the > >> entries. > >> > >> > >> > >> ignicolist wrote: > >> > > >> > Well i am a litle noob to all these, so i cant put your ideas to work! > >> > :-(( > >> > > >> > So i am using SimpleScheduleModel, so you say to create that class in > >> the > >> > component Schedule or in my aplication? > >> > Because i create the class in my aplication and don´t work. Dam this is > >> so > >> > complicated... > >> > > >> > > >> > > >> > Michał 'Gandalf' Stawicki wrote: > >> >> > >> >> I wrote the code in 'on the fly' just to give you idea how should it > >> >> look, I didn't try it > >> >> > >> >> On 17/08/07, Michał 'Gandalf' Stawicki <[EMAIL PROTECTED]> wrote: > >> >>> Simply casting it should be fine: > >> >>> > >> >>> for(ScheduleEntry e : (TreeSet<ScheduleEntry>)entries) > >> >>> > >> >>> > >> >>> On 17/08/07, ignicolist <[EMAIL PROTECTED]> wrote: > >> >>> > > >> >>> > I try what you say but give me a error in: for(ScheduleEntry e : > >> >>> entries) > >> >>> > The Error: Type mismatch: cannot convert from element type Object > >> to > >> >>> > ScheduleEntry > >> >>> > > >> >>> > Any idea? > >> >>> > > >> >>> > > >> >>> > > >> >>> > Michał 'Gandalf' Stawicki wrote: > >> >>> > > > >> >>> > > From SimpleScheduleModel.java > >> >>> > > > >> >>> > > /** > >> >>> > > * Remove an entry from the model. > >> >>> > > * > >> >>> > > * @param entry > >> >>> > > * the entry to remove > >> >>> > > */ > >> >>> > > public void removeEntry(ScheduleEntry entry) > >> >>> > > { > >> >>> > > entries.remove(entry); > >> >>> > > } > >> >>> > > > >> >>> > > ... > >> >>> > > > >> >>> > > private final TreeSet entries; > >> >>> > > > >> >>> > > I don't know which model your using, but if it is > >> >>> SimpleScheduleModel > >> >>> > > than you should extend it and implement your own method, ex; > >> >>> > > > >> >>> > > public boolean removeEntry(String id) > >> >>> > > { > >> >>> > > ScheduleEntry entry = null; > >> >>> > > > >> >>> > > if(entries != null && id != null) > >> >>> > > for(ScheduleEntry e : entries) > >> >>> > > { > >> >>> > > if(e.getId() != null && e.getId().equals(id)) > >> >>> > > { > >> >>> > > entry = e; > >> >>> > > break; > >> >>> > > } > >> >>> > > } > >> >>> > > > >> >>> > > if(entry != null) > >> >>> > > { > >> >>> > > entries.remove(entry); > >> >>> > > return true; > >> >>> > > } > >> >>> > > > >> >>> > > return false; > >> >>> > > } > >> >>> > > > >> >>> > > > >> >>> > > > >> >>> > > On 17/08/07, Michał 'Gandalf' Stawicki <[EMAIL PROTECTED]> > >> wrote: > >> >>> > >> I believe you have to pass exact reference to object that was > >> added > >> >>> to > >> >>> > >> schedule, not some other object containing same data, example: > >> >>> > >> > >> >>> > >> ScheduleEntry foo = new MyScheduleEntry("bar"); > >> >>> > >> ScheduleEntry foo2 = new MyScheduleEntry("bar"); > >> >>> > >> > >> >>> > >> model.addEntry(foo); > >> >>> > >> > >> >>> > >> model.removeEntry(foo2); // wrong > >> >>> > >> mode.removeEntry(foo); //ok > >> >>> > >> > >> >>> > >> > >> >>> > >> > >> >>> > >> On 17/08/07, ignicolist <[EMAIL PROTECTED]> wrote: > >> >>> > >> > > >> >>> > >> > Yes, because the entry when i select it remove with > >> >>> > >> > model.removeSelectedEntry(); but if i specify his id: > >> >>> > >> entry.setId("1"); > >> >>> > >> > model.removeEntry(entry); dont eliminate. And ids are the same > >> in > >> >>> the > >> >>> > >> two > >> >>> > >> > situacions. > >> >>> > >> > > >> >>> > >> > > >> >>> > >> > > >> >>> > >> > > >> >>> > >> > Jurgen Lust-2 wrote: > >> >>> > >> > > > >> >>> > >> > > In your model implementation, do you load the persistent > >> entry > >> >>> from > >> >>> > >> the > >> >>> > >> > > database, using the supplied id, before you delete it? > >> >>> > >> > > > >> >>> > >> > > Jurgen > >> >>> > >> > > > >> >>> > >> > > Op donderdag 16-08-2007 om 14:01 uur [tijdzone -0700], > >> schreef > >> >>> > >> > > ignicolist: > >> >>> > >> > >> Its what i am doing but don´t work! > >> >>> > >> > >> > >> >>> > >> > >> an example: > >> >>> > >> > >> > >> >>> > >> > >> DefaultScheduleEntry entry = new DefaultScheduleEntry(); > >> >>> > >> > >> > >> >>> > >> > >> entry.setId("1"); > >> >>> > >> > >> model.removeEntry(entry); > >> >>> > >> > >> > >> >>> > >> > >> this code is supose to remove the entry from de model with > >> id > >> >>> 1 no? > >> >>> > >> i > >> >>> > >> > >> just > >> >>> > >> > >> want remove de entry from the model, but a entry specify by > >> >>> me. > >> >>> > >> > >> > >> >>> > >> > >> > >> >>> > >> > >> > >> >>> > >> > >> > >> >>> > >> > >> > >> >>> > >> > >> Jurgen Lust-2 wrote: > >> >>> > >> > >> > > >> >>> > >> > >> > The ScheduleModel.removeEntry() method expects a > >> >>> ScheduleEntry as > >> >>> > >> > >> > parameter. I suppose you use Hibernate for database > >> access, > >> >>> so > >> >>> > >> what you > >> >>> > >> > >> > should do is retrieve the ScheduleEntry from the > >> database, > >> >>> using > >> >>> > >> the > >> >>> > >> > >> id, > >> >>> > >> > >> > and feed the result to the removeEntry method. In that > >> >>> removeEntry > >> >>> > >> > >> > method, you just delete it with your Hibernate DAO. > >> >>> > >> > >> > You could of course add a method > >> >>> removeEntry(String/Long/Whatever > >> >>> > >> id) > >> >>> > >> > >> > that does all of this. > >> >>> > >> > >> > > >> >>> > >> > >> > Jurgen > >> >>> > >> > >> > > >> >>> > >> > >> > > >> >>> > >> > >> > > >> >>> > >> > >> > Op donderdag 16-08-2007 om 11:20 uur [tijdzone -0700], > >> >>> schreef > >> >>> > >> > >> > ignicolist: > >> >>> > >> > >> >> Hi to all, i want to eliminate a especific entry in a > >> model > >> >>> of > >> >>> > >> > >> schedule > >> >>> > >> > >> >> tomahawk. the example in remove a selected entry work > >> fine, > >> >>> but > >> >>> > >> how to > >> >>> > >> > >> >> eliminate a determinated entry? > >> >>> > >> > >> >> > >> >>> > >> > >> >> > >> >>> > >> > >> >> i try with this code: > >> >>> > >> > >> >> > >> >>> > >> > >> >> > >> >>> > >> > >> >> DefaultScheduleEntry entry = new DefaultScheduleEntry(); > >> >>> > >> > >> >> > >> >>> > >> > >> >> entry.setId(select); > >> >>> > >> > >> >> entry.setStartTime(start); > >> >>> > >> > >> >> entry.setEndTime(end); > >> >>> > >> > >> >> entry.setTitle(select7); > >> >>> > >> > >> >> entry.setDescription(select2); > >> >>> > >> > >> >> > >> >>> > >> > >> >> model.removeEntry(entry); > >> >>> > >> > >> >> model.refresh(); > >> >>> > >> > >> >> > >> >>> > >> > >> >> i defined every value for the entry, and then i want to > >> >>> remove > >> >>> > >> that > >> >>> > >> > >> >> entry! > >> >>> > >> > >> >> Any help please! > >> >>> > >> > >> >> > >> >>> > >> > >> >> Tks for all. > >> >>> > >> > >> > -- > >> >>> > >> > >> > Jurgen Lust <[EMAIL PROTECTED]> > >> >>> > >> > >> > > >> >>> > >> > >> > > >> >>> > >> > >> > > >> >>> > >> > >> > >> >>> > >> > > -- > >> >>> > >> > > Jurgen Lust <[EMAIL PROTECTED]> > >> >>> > >> > > > >> >>> > >> > > > >> >>> > >> > > > >> >>> > >> > > >> >>> > >> > -- > >> >>> > >> > View this message in context: > >> >>> > >> > >> >>> > >> http://www.nabble.com/Re%3A-Remove-Entry-from-schedule-Tomahawk-tf4281655.html#a12198391 > >> >>> > >> > Sent from the MyFaces - Users mailing list archive at > >> Nabble.com. > >> >>> > >> > > >> >>> > >> > > >> >>> > >> > >> >>> > >> > >> >>> > >> -- > >> >>> > >> Michał Stawicki > >> >>> > >> > >> >>> > >> [EMAIL PROTECTED] > >> >>> > >> http://stawicki.jasliska.pl > >> >>> > >> > >> >>> > > > >> >>> > > > >> >>> > > -- > >> >>> > > Michał Stawicki > >> >>> > > > >> >>> > > [EMAIL PROTECTED] > >> >>> > > http://stawicki.jasliska.pl > >> >>> > > > >> >>> > > > >> >>> > > >> >>> > -- > >> >>> > View this message in context: > >> >>> > >> http://www.nabble.com/Re%3A-Remove-Entry-from-schedule-Tomahawk-tf4281655.html#a12200949 > >> >>> > Sent from the MyFaces - Users mailing list archive at Nabble.com. > >> >>> > > >> >>> > > >> >>> > >> >>> > >> >>> -- > >> >>> Michał Stawicki > >> >>> > >> >>> [EMAIL PROTECTED] > >> >>> http://stawicki.jasliska.pl > >> >>> > >> >> > >> >> > >> >> -- > >> >> Michał Stawicki > >> >> > >> >> [EMAIL PROTECTED] > >> >> http://stawicki.jasliska.pl > >> >> > >> >> > >> > > >> > > >> > >> -- > >> View this message in context: > >> http://www.nabble.com/Re%3A-Remove-Entry-from-schedule-Tomahawk-tf4281655.html#a12201958 > >> Sent from the MyFaces - Users mailing list archive at Nabble.com. > >> > >> > > > > > > -- > > Michał Stawicki > > > > [EMAIL PROTECTED] > > http://stawicki.jasliska.pl > > > > > > -- > View this message in context: > http://www.nabble.com/Re%3A-Remove-Entry-from-schedule-Tomahawk-tf4281655.html#a12206017 > Sent from the MyFaces - Users mailing list archive at Nabble.com. > > -- Michał Stawicki [EMAIL PROTECTED] http://stawicki.jasliska.pl