001    /**
002     * 
003     */
004    package de.jw.cloud42.webapp.tree;
005    
006    import com.xerox.amazonws.ec2.GroupDescription;
007    import com.xerox.amazonws.ec2.GroupDescription.IpPermission;
008    
009    /**
010     * 
011     * Represents a tree node holding a IpPermission object.
012     * Returns a proper toString message for the associated permission.
013     * 
014     * 
015     * @author Frank
016     *
017     */
018    public class PermissionTreeNode {
019            
020                    
021            
022            /**
023             * The actual IpPermission.
024             */
025            private IpPermission ipPermission;
026            
027            /**
028             * The group that the actual permission belongs to
029             */
030            private GroupDescription group;
031            
032            
033            /**
034             * @return the group
035             */
036            public GroupDescription getGroup() {
037                    return group;
038            }
039    
040            /**
041             * Use constructor to pass represented IpPermission.
042             * @param forGroup
043             */
044            public PermissionTreeNode(GroupDescription group, IpPermission forPermission){
045                    this.group = group;
046                    ipPermission = forPermission;
047            }
048    
049            public IpPermission getIpPermission() {
050                    return ipPermission;
051            }
052            
053    
054            /**
055             * Return permission details as readable string.
056             */
057            public String toString(){
058                    
059                    String result = ipPermission.getProtocol().toUpperCase() + ": from port " + 
060                    ipPermission.getFromPort() + " to " + ipPermission.getToPort();
061                    
062                    //check source mode
063                    if (ipPermission.getIpRanges() != null && ipPermission.getIpRanges().size()>0){
064                            String cidranges = "";
065                            for (String cidr : ipPermission.getIpRanges()){
066                                    cidranges = cidranges  + cidr + ", ";
067                            }
068                                    
069                            result = result + " (Source CIDR " + cidranges.substring(0, cidranges.length()-2) + ")";
070                            
071                    } else {
072                            //Group Source mode
073                            String pairs = "";
074                            for (String[] pair : ipPermission.getUidGroupPairs()){
075                                    pairs = pairs + pair[0] + ":" + pair[1] + ", ";
076                                    
077                            }
078                            result = result + " (Source (User:Group) " + pairs.substring(0, pairs.length()-2) + ")";
079                                    
080                    }
081                    
082                    
083                    return result;
084                    
085            }
086            
087            
088            
089            
090    }