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    import org.tynamo.util.Utils;
010    
011    import java.util.ArrayList;
012    import java.util.Collections;
013    import java.util.Comparator;
014    import java.util.List;
015    
016    public class ListPageLinkList
017    {
018            @Inject
019            private DescriptorService descriptorService;
020    
021            @Property
022            private TynamoClassDescriptor descriptorIterator;
023    
024            @Inject
025            private Messages messages;
026    
027            public List<TynamoClassDescriptor> getAllDescriptors()
028            {
029                    List<TynamoClassDescriptor> descriptors = descriptorService.getAllDescriptors();
030    
031                    List<TynamoClassDescriptor> result = new ArrayList<TynamoClassDescriptor>(descriptors.size());
032    
033                    for (TynamoClassDescriptor descriptor : descriptors)
034                    {
035                            if (!descriptor.isNonVisual())
036                            {
037                                    result.add(descriptor);
038                            }
039                    }
040    
041                    Collections.sort(result, new Comparator<TynamoClassDescriptor>()
042                    {
043                            public int compare(TynamoClassDescriptor o1, TynamoClassDescriptor o2)
044                            {
045                                    return DisplayNameUtils.getDisplayName(o1, messages).compareTo(DisplayNameUtils.getDisplayName(o2, messages));
046                            }
047                    });
048    
049                    return result;
050            }
051    
052            public String getListAllLinkMessage()
053            {
054                    return messages.format(Utils.LISTALL_LINK_MESSAGE,
055                                    DisplayNameUtils.getPluralDisplayName(descriptorIterator, messages));
056            }
057    
058    }