package org.tynamo.pages;
import org.apache.tapestry5.Block;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.PropertyOutputContext;
import org.tynamo.components.Download;
import org.tynamo.components.internal.Composition;
import org.tynamo.descriptor.TynamoPropertyDescriptor;
import org.tynamo.services.DescriptorService;
import org.tynamo.services.TynamoBeanContext;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class PropertyDisplayBlocks
{
@Inject
private DescriptorService descriptorService;
@Inject
private Locale locale;
@Environmental
@Property(write = false)
private PropertyOutputContext context;
@Environmental(false)
@Property(write = false)
private TynamoBeanContext tynamoBeanContext;
@Component
private Composition composition;
@Component(parameters = {"model=tynamoBeanContext.beanInstance", "propertyDescriptor=propertyDescriptor"})
private Download download;
@Inject
@Property
private Block missingAdvisor;
private final DateFormat defaultDateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
private final NumberFormat defaultNumberFormat = NumberFormat.getInstance(locale);
public TynamoPropertyDescriptor getPropertyDescriptor()
{
return descriptorService.getClassDescriptor(tynamoBeanContext.getBeanType())
.getPropertyDescriptor(context.getPropertyId());
}
public DateFormat getDateFormat()
{
if (!isBeanModelAdvisorMixinUsed()) return defaultDateFormat;
String format = getPropertyDescriptor().getFormat();
return format != null ? new SimpleDateFormat(format) : defaultDateFormat;
}
public NumberFormat getNumberFormat()
{
if (!isBeanModelAdvisorMixinUsed()) return defaultNumberFormat;
String format = getPropertyDescriptor().getFormat();
return format != null ? new DecimalFormat(format) : defaultNumberFormat;
}
private boolean isBeanModelAdvisorMixinUsed()
{
return tynamoBeanContext != null;
}
}