1 package com.dotmarketing.comparators; 2 3 import java.util.Comparator ; 4 import java.util.Date ; 5 import java.util.Map ; 6 7 import com.dotmarketing.cms.factories.PublicUserFactory; 8 import com.liferay.portal.model.User; 9 10 13 public class WebAssetMapComparator implements Comparator <Map <String , Object >> { 14 15 private String orderField = "name"; 16 private int orderDirection = 1; 17 18 public WebAssetMapComparator(String field, boolean orderDescending) { 19 super(); 20 if (orderDescending) 21 this.orderDirection = -1; 22 this.orderField = field; 23 } 24 25 public int compare(Map map1, Map map2) { 26 27 if(map1.get("type").equals("folder") && map2.get("type").equals("folder")) { 28 return orderDirection * ((String )map1.get("name")).compareTo((String )map2.get("name")); 29 } else if (map1.get("type").equals("folder")) { 30 return -orderDirection; 31 } else if (map2.get("type").equals("folder")) { 32 return orderDirection; 33 } 34 35 Object c1 = map1.get(orderField); 36 Object c2 = map2.get(orderField); 37 if (orderField.equals("name")) { 38 if (map1.get("type").equals("htmlpage")) 39 c1 = map1.get("pageUrl"); 40 else if (map1.get("type").equals("file_asset")) 41 c1 = map1.get("fileName"); 42 else if (map1.get("type").equals("link")) 43 c1 = map1.get("title"); 44 45 if (map2.get("type").equals("htmlpage")) 46 c2 = map2.get("pageUrl"); 47 else if (map2.get("type").equals("file_asset")) 48 c2 = map2.get("fileName"); 49 else if (map2.get("type").equals("link")) 50 c2 = map2.get("title"); 51 } 52 if (c1 != null && c2 != null) { 53 if (orderField.equals("name")) { 54 return orderDirection * ((String )c1).compareTo((String )c2); 55 } else if (orderField.equals("modUser")) { 56 String userId1 = (String )c1; 57 String userId2 = (String )c2; 58 User user1 = PublicUserFactory.getUserByUserId(userId1); 59 User user2 = PublicUserFactory.getUserByUserId(userId2); 60 return orderDirection * (user1.getFullName()).compareTo(user2.getFullName()); 61 } else if (orderField.equals("modDate")) { 62 return orderDirection * ((Date )c1).compareTo((Date )c2); 63 } else if (orderField.equals("sortOrder")) { 64 int c1int = (int)((Integer )c1); 65 int c2int = (int)((Integer )c2); 66 int result = (c1int) > (c2int)?1:(c1int) < (c2int)?-1:0; 67 return orderDirection * result; 68 } 69 } 70 71 return 0; 72 } 73 }
| Popular Tags
|