KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > comparators > WebAssetMapComparator


1 package com.dotmarketing.comparators;
2
3 import java.util.Comparator JavaDoc;
4 import java.util.Date JavaDoc;
5 import java.util.Map JavaDoc;
6
7 import com.dotmarketing.cms.factories.PublicUserFactory;
8 import com.liferay.portal.model.User;
9
10 /**
11  * @author David
12  */

13 public class WebAssetMapComparator implements Comparator JavaDoc<Map JavaDoc<String JavaDoc, Object JavaDoc>> {
14
15     private String JavaDoc orderField = "name";
16     private int orderDirection = 1;
17
18     public WebAssetMapComparator(String JavaDoc field, boolean orderDescending) {
19         super();
20         if (orderDescending)
21             this.orderDirection = -1;
22         this.orderField = field;
23     }
24
25     public int compare(Map JavaDoc map1, Map JavaDoc map2) {
26
27         if(map1.get("type").equals("folder") && map2.get("type").equals("folder")) {
28             return orderDirection * ((String JavaDoc)map1.get("name")).compareTo((String JavaDoc)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 JavaDoc c1 = map1.get(orderField);
36         Object JavaDoc 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 JavaDoc)c1).compareTo((String JavaDoc)c2);
55             } else if (orderField.equals("modUser")) {
56                 String JavaDoc userId1 = (String JavaDoc)c1;
57                 String JavaDoc userId2 = (String JavaDoc)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 JavaDoc)c1).compareTo((Date JavaDoc)c2);
63             } else if (orderField.equals("sortOrder")) {
64                 int c1int = (int)((Integer JavaDoc)c1);
65                 int c2int = (int)((Integer JavaDoc)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