1
2 package com.pnpconsult.zeiterfassung.actions;
3
4 import java.io.Serializable;
5
6 import net.sf.hibernate.HibernateException;
7
8 import org.apache.commons.logging.Log;
9 import org.apache.commons.logging.LogFactory;
10 import org.apache.struts.action.ActionForm;
11
12 import com.pnpconsult.zeiterfassung.helper.ArchivableObjectManager;
13 import com.pnpconsult.zeiterfassung.helper.ObjectSupport;
14
15 /***
16 * @author <a href="mailto:powerpete@users.sf.net">M. Petersen </a>
17 * @version $Id: EditForm.java,v 1.7 2004/06/24 20:54:20 powerpete Exp $
18 */
19 public abstract class EditForm extends ActionForm
20 {
21 private static final Log LOG = LogFactory.getLog(EditForm.class);
22
23 protected boolean isNew;
24
25 public boolean isNew()
26 {
27 return isNew;
28 }
29
30 public void setNew(boolean newValue)
31 {
32 this.isNew = newValue;
33 }
34
35 protected abstract void writeToDataObject(Object obj);
36
37 protected abstract void readFromDataObject(Object obj);
38
39 protected abstract Object newDataObject();
40
41 protected abstract Class dataObjectType();
42
43 protected abstract Serializable dataObjectKey();
44
45 public void changeArchived()
46 {
47 Serializable key = dataObjectKey();
48 Class type = dataObjectType();
49 try
50 {
51 new ArchivableObjectManager().changeArchived(type, key);
52 }
53 catch (HibernateException e)
54 {
55 LOG.fatal("Error changing archived flag of object of " + type
56 + " with key " + key, e);
57 }
58 }
59
60 public void load()
61 {
62 Class type = dataObjectType();
63 Serializable key = dataObjectKey();
64 try
65 {
66 readFromDataObject(new ObjectSupport().load(type, key));
67 }
68 catch (HibernateException e)
69 {
70 LOG.fatal("Error loading object of class " + type + " with key "
71 + key, e);
72 }
73 }
74
75 public void update()
76 {
77 Object obj = null;
78 Class type = dataObjectType();
79 Serializable key = dataObjectKey();
80 ObjectSupport support = new ObjectSupport();
81 try
82 {
83 obj = support.load(type, key);
84 writeToDataObject(obj);
85 support.update(obj);
86 }
87 catch (HibernateException e)
88 {
89 LOG.fatal("Error updating object of class " + type.getName()
90 + " with key " + key, e);
91 }
92 }
93
94 /***
95 *
96 */
97 public void save()
98 {
99 try
100 {
101 Object obj = newDataObject();
102 writeToDataObject(obj);
103 new ObjectSupport().save(obj, dataObjectKey());
104 }
105 catch (HibernateException e)
106 {
107 LOG.fatal("Error saving object of class " + dataObjectType()
108 + " with key " + dataObjectKey(), e);
109 }
110 }
111 }