001 package org.tynamo.hibernate.pages;
002
003 import org.apache.tapestry5.annotations.Property;
004 import org.apache.tapestry5.beaneditor.BeanModel;
005 import org.apache.tapestry5.ioc.Messages;
006 import org.apache.tapestry5.ioc.annotations.Inject;
007 import org.apache.tapestry5.ioc.services.PropertyAccess;
008 import org.apache.tapestry5.services.BeanModelSource;
009 import org.tynamo.descriptor.TynamoClassDescriptor;
010 import org.tynamo.services.DescriptorService;
011 import org.tynamo.services.PersistenceService;
012 import org.tynamo.util.BeanModelUtils;
013 import org.tynamo.util.DisplayNameUtils;
014 import org.tynamo.util.Utils;
015
016 public class HibernateListPage
017 {
018
019 @Inject
020 private PersistenceService persitenceService;
021
022 @Inject
023 private DescriptorService descriptorService;
024
025 @Inject
026 private Messages messages;
027
028 @Inject
029 private PropertyAccess propertyAccess;
030
031 @Inject
032 private BeanModelSource beanModelSource;
033
034 @Property(read = false)
035 private Object bean;
036
037 private TynamoClassDescriptor classDescriptor;
038
039 private BeanModel beanModel;
040
041 protected void onActivate(Class clazz) throws Exception
042 {
043 classDescriptor = descriptorService.getClassDescriptor(clazz);
044 beanModel = beanModelSource.createDisplayModel(clazz, messages);
045 BeanModelUtils.exclude(beanModel, classDescriptor);
046 }
047
048 protected Object[] onPassivate()
049 {
050 return new Object[]{classDescriptor.getType()};
051 }
052
053 public java.util.List getInstances()
054 {
055 return persitenceService.getInstances(classDescriptor.getType());
056 }
057
058 public Object[] getEditPageContext()
059 {
060 return new Object[]{classDescriptor.getType(), bean};
061 }
062
063 public String getTitle()
064 {
065 return messages.format(Utils.LIST_MESSAGE, DisplayNameUtils.getPluralDisplayName(classDescriptor, messages));
066 }
067
068 public String getNewLinkMessage()
069 {
070 return messages.format(Utils.NEW_MESSAGE, DisplayNameUtils.getDisplayName(classDescriptor, messages));
071 }
072
073 public final String getModelId()
074 {
075 return propertyAccess.get(bean, classDescriptor.getIdentifierDescriptor().getName()).toString();
076 }
077
078
079 public final TynamoClassDescriptor getClassDescriptor()
080 {
081 return classDescriptor;
082 }
083
084 public final BeanModel getBeanModel()
085 {
086 return beanModel;
087 }
088
089 public final Object getBean()
090 {
091 return bean;
092 }
093 }