View Javadoc

1   /*
2    * Created on 12.07.2004
3    *
4    * @author buntekuh
5    */
6   package net.stff.ical.persistance.hibernate;
7   
8   import java.util.Collections;
9   import java.util.Date;
10  import java.util.Iterator;
11  import java.util.List;
12  import java.util.Vector;
13  
14  import net.stff.ical.beans.ICal;
15  import net.stff.ical.beans.IEvent;
16  import net.stff.ical.persistance.ICalDAO;
17  
18  import org.springframework.orm.hibernate.support.HibernateDaoSupport;
19  /***
20   * @author buntekuh
21   *
22   */
23  public class HibernateICalDAO extends HibernateDaoSupport implements ICalDAO {
24  
25  	/* (non-Javadoc)
26  	 * @see net.stff.ical.persistence.ICalDAO#getCalendars()
27  	 */
28  	public List getCalendars(String user){
29  		return getHibernateTemplate().find("from ICal where user=?", user);
30  	}
31  
32  	/* (non-Javadoc)
33  	 * @see net.stff.ical.persistence.ICalDAO#getCalendarNames()
34  	 */
35  	public List getCalendarNames(String user){
36  		return getHibernateTemplate().find("select cal.name from ICal as cal where user='"+user+"'");
37  	}
38  
39  	/* (non-Javadoc)
40  	 * @see net.stff.ical.persistence.ICalDAO#addCalendar(java.lang.String)
41  	 * 
42  	 */
43  	public Long addCalendar(String key, String user){
44  		return (Long)getHibernateTemplate().save(new ICal(key, user));
45  	}
46  
47  	/* (non-Javadoc)
48  	 * @see net.stff.ical.persistence.ICalDAO#addCalendar(net.stff.ical.beans.ICal)
49  	 */
50  	public Long addCalendar(ICal cal){
51  		return (Long)getHibernateTemplate().save(cal);
52  	}
53  
54  	/* (non-Javadoc)
55  	 * @see net.stff.ical.persistence.ICalDAO#getCalendar(java.lang.String)
56  	 */
57  	public ICal getCalendar(String key, String user){
58  		List l= getHibernateTemplate().find("from ICal where name='"+key+"' and user='"+user+"'");
59  		if ((l == null) || (l.size() != 1)) return null;
60  		return (ICal)l.get(0);
61  	}
62  
63  	/* (non-Javadoc)
64  	 * @see net.stff.ical.persistence.ICalDAO#removeCalendar(java.lang.String)
65  	 */
66  	public void removeCalendar(ICal cal){
67  	    getHibernateTemplate().delete(cal);
68  	    getHibernateTemplate().deleteAll(cal.getEvents());
69  	    
70  		/*Session session= this.getSession();
71  		Iterator i= cal.getEvents().iterator();
72  		try {
73  			while (i.hasNext()){
74  				IEvent event= (IEvent)i.next();
75  				session.delete(event);
76  			}
77  			session.delete(cal);
78  			session.flush();
79  			session.close();
80  		} catch (HibernateException e) {
81  			System.out.println(e.getMessage());
82  			e.printStackTrace();
83  		}*/
84  	}
85  
86  	/* (non-Javadoc)
87  	 * @see net.stff.ical.persistence.ICalDAO#getEventsForPeriod(java.util.Date, java.util.Date)
88  	 */
89  	public List getEventsForPeriod(Date s, Date e, String user, int which){
90  		List v= new Vector();
91  		List list= getHibernateTemplate().find("from ICal where shown=1 and user='"+user+"'");
92  		if (list == null) return null;
93  		Iterator i= list.iterator();
94  	    while (i.hasNext()){
95  	        ICal cal= (ICal)i.next();
96  	        v.addAll(cal.getEventsForPeriod(s, e, which));
97  	    }		
98  	    Collections.sort(v);
99  		return v;
100 	}
101 	/* (non-Javadoc)
102 	 * @see net.stff.ical.persistence.ICalDAO#updateEvent(java.lang.String)
103 	 */
104 	public void updateEvent(IEvent event){
105 		//getHibernateTemplate().saveOrUpdate(event);
106 		
107 		IEvent test= getEvent(event.getUid());
108 
109 		if (test != null){
110 			getHibernateTemplate().update(event);
111 		}
112 		else{
113 			getHibernateTemplate().save(event);
114 		}
115 		getHibernateTemplate().update(event.getCalendar());
116 		
117 	}
118 
119 	/* (non-Javadoc)
120 	 * @see net.stff.ical.persistence.ICalDAO#getEvent(java.lang.String)
121 	 */
122 	public IEvent getEvent(String id){
123 		return (IEvent)getHibernateTemplate().get(IEvent.class, id);
124 	}
125 	/* (non-Javadoc)
126 	 * @see net.stff.ical.persistence.ICalDAO#setShown(java.lang.String, boolean)
127 	 */
128 	
129 	public void removeEvent(IEvent event){
130 		getHibernateTemplate().delete(event);
131 	}
132 	
133 	public void updateCalendar(String key, String user){
134 		ICal cal= getCalendar(key, user);
135 		getHibernateTemplate().saveOrUpdate(cal);
136 	}
137 
138 	
139 	public void updateCalendar(ICal cal){
140 		getHibernateTemplate().saveOrUpdate(cal);
141 	}
142 
143 
144 }