package org.tynamo.components;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.func.F;
import org.apache.tapestry5.func.Predicate;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.tynamo.descriptor.TynamoClassDescriptor;
import org.tynamo.services.DescriptorService;
import org.tynamo.util.DisplayNameUtils;
import org.tynamo.util.Utils;
import java.util.Comparator;
import java.util.List;
public class ListPageLinkList
{
@Inject
private DescriptorService descriptorService;
@Inject
private Messages messages;
@Parameter(required = true, allowNull = false, defaultPrefix = "literal")
@Property
private String listPageName;
@Property
private TynamoClassDescriptor descriptorIterator;
public List<TynamoClassDescriptor> getDisplayableDescriptors()
{
return F.flow(descriptorService.getAllDescriptors()).filter(new Predicate<TynamoClassDescriptor>()
{
public boolean accept(TynamoClassDescriptor classDescriptor)
{
return !classDescriptor.isNonVisual();
}
}).sort(new Comparator<TynamoClassDescriptor>()
{
public int compare(TynamoClassDescriptor o1, TynamoClassDescriptor o2)
{
return DisplayNameUtils.getDisplayName(o1, messages).compareTo(DisplayNameUtils.getDisplayName(o2, messages));
}
}).toList();
}
public String getListAllLinkMessage()
{
return messages.format(Utils.LISTALL_LINK_MESSAGE,
DisplayNameUtils.getPluralDisplayName(descriptorIterator, messages));
}
}