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

Reply via email to