001    package org.tynamo.components;
002    
003    import org.apache.tapestry5.annotations.Property;
004    import org.apache.tapestry5.ioc.Messages;
005    import org.apache.tapestry5.ioc.annotations.Inject;
006    import org.tynamo.descriptor.TynamoClassDescriptor;
007    import org.tynamo.services.DescriptorService;
008    import org.tynamo.util.DisplayNameUtils;
009    
010    import java.util.ArrayList;
011    import java.util.Collections;
012    import java.util.Comparator;
013    import java.util.List;
014    
015    public class ListPageLinkList
016    {
017            @Inject
018            private DescriptorService descriptorService;
019    
020            @Property
021            private TynamoClassDescriptor descriptorIterator;
022    
023            @Inject
024            private Messages messages;
025    
026            public List<TynamoClassDescriptor> getAllDescriptors()
027            {
028                    List<TynamoClassDescriptor> descriptors = descriptorService.getAllDescriptors();
029    
030                    List<TynamoClassDescriptor> result = new ArrayList<TynamoClassDescriptor>(descriptors.size());
031    
032                    for (TynamoClassDescriptor descriptor : descriptors)
033                    {
034                            if (!descriptor.isHidden())
035                            {
036                                    result.add(descriptor);
037                            }
038                    }
039    
040                    Collections.sort(result, new Comparator<TynamoClassDescriptor>()
041                    {
042                            public int compare(TynamoClassDescriptor o1, TynamoClassDescriptor o2)
043                            {
044                                    return DisplayNameUtils.getDisplayName(o1, messages).compareTo(DisplayNameUtils.getDisplayName(o2, messages));
045                            }
046                    });
047    
048                    return result;
049            }
050    
051            public String getListAllLinkMessage()
052            {
053                    return messages.format("org.tynamo.component.listalllink", DisplayNameUtils.getPluralDisplayName(descriptorIterator, messages));
054            }
055    
056    }