1 16 17 package org.apache.jetspeed.modules.actions.portlets; 18 19 import java.util.ArrayList ; 20 import java.util.HashSet ; 21 import java.util.Iterator ; 22 import java.util.List ; 23 import java.util.TreeMap ; 24 25 import org.apache.jetspeed.om.registry.PortletEntry; 26 import org.apache.jetspeed.om.registry.base.BaseCategory; 27 import org.apache.jetspeed.services.Registry; 28 import org.apache.jetspeed.services.logging.JetspeedLogFactoryService; 29 import org.apache.jetspeed.services.logging.JetspeedLogger; 30 31 37 public abstract class PortletFilter 38 { 39 42 private static final JetspeedLogger logger = 43 JetspeedLogFactoryService.getLogger(PortletFilter.class.getName()); 44 45 53 public static List filterPortlets( 54 List portlets, 55 String field, 56 String value) 57 { 58 String [] fields = { field }; 59 String [] values = { value }; 60 61 return filterPortlets(portlets, fields, values); 62 } 63 64 72 public static List filterPortlets( 73 List portlets, 74 String [] fields, 75 String [] values) 76 { 77 List filteredPortlets = new ArrayList (); 78 79 Iterator portletIter = portlets.iterator(); 80 while (portletIter.hasNext()) 81 { 82 PortletEntry entry = (PortletEntry) portletIter.next(); 83 if (isFilteredIn(entry, fields, values)) 84 { 85 filteredPortlets.add(entry); 86 } 87 } 88 89 return filteredPortlets; 90 } 91 92 101 private static boolean isFilteredIn( 102 PortletEntry entry, 103 String [] fields, 104 String [] values) 105 { 106 boolean result = true; 107 108 if (fields != null && values != null && fields.length == values.length) 109 { 110 for (int i = 0; i < fields.length && result; i++) 111 { 112 String field = fields[i]; 113 String value = values[i]; 114 115 if (field == null 116 || value == null 117 || field.length() == 0 118 || value.length() == 0) 119 { 120 } 122 else if (field.equals("category")) 123 { 124 result = result && entry.hasCategory(value); 125 } 126 else if (field.equals("media_type")) 127 { 128 result = result && entry.hasMediaType(value); 129 } 130 else if (field.equals("parent")) 131 { 132 if (entry.getParent() != null) 133 { 134 result = result && entry.getParent().equals(value); 135 } 136 else 137 { 138 result = false; 139 } 140 } 141 else if (field.equals("type")) 142 { 143 if (entry.getType() != null) 144 { 145 result = result && entry.getType().equals(value); 146 } 147 else 148 { 149 result = false; 150 } 151 } 152 160 else 161 { 162 logger.warn("Invalid filter " + field + " attempted"); 163 } 164 } 165 } 166 167 return result; 168 } 169 170 176 public static List buildCategoryList(List portlets) 177 { 178 TreeMap catMap = new TreeMap (); 179 Iterator pItr = portlets.iterator(); 180 while (pItr.hasNext()) 181 { 182 PortletEntry entry = (PortletEntry) pItr.next(); 183 184 Iterator cItr = entry.listCategories(); 185 while (cItr.hasNext()) 186 { 187 BaseCategory cat = (BaseCategory) cItr.next(); 188 catMap.put(cat.getName(), cat); 189 } 190 } 191 192 return new ArrayList (catMap.values()); 193 } 194 195 200 public static List getAllPortlets() 201 { 202 List regEntries = new ArrayList (); 203 204 Iterator iter = Registry.get(Registry.PORTLET).listEntryNames(); 205 while (iter.hasNext()) 206 { 207 String entryName = (String ) iter.next(); 208 regEntries.add(Registry.getEntry(Registry.PORTLET, entryName)); 209 } 210 211 return regEntries; 212 } 213 214 220 public static List buildParentList(List portlets) 221 { 222 HashSet parentSet = new HashSet (); 223 224 Iterator portletIter = portlets.iterator(); 225 while (portletIter.hasNext()) 226 { 227 PortletEntry regEntry = (PortletEntry) portletIter.next(); 228 229 String regType = regEntry.getType(); 230 if (regType.equalsIgnoreCase(PortletEntry.TYPE_ABSTRACT)) 231 { 232 parentSet.add(regEntry); 233 } 234 } 235 236 return new ArrayList (parentSet); 237 } 238 239 } 240 | Popular Tags |