Revision 42591
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/propertypage/impl/DefaultPropertiesPageManager.java | ||
---|---|---|
1 |
|
|
2 |
|
|
3 | 1 |
package org.gvsig.propertypage.impl; |
4 | 2 |
|
5 | 3 |
import java.util.ArrayList; |
... | ... | |
11 | 9 |
import org.gvsig.propertypage.PropertiesPage; |
12 | 10 |
import org.gvsig.propertypage.PropertiesPageFactory; |
13 | 11 |
import org.gvsig.propertypage.PropertiesPageManager; |
12 |
import org.gvsig.tools.ToolsLocator; |
|
13 |
import org.gvsig.tools.identitymanagement.SimpleIdentity; |
|
14 |
import org.gvsig.tools.identitymanagement.SimpleIdentityManager; |
|
14 | 15 |
import org.slf4j.Logger; |
15 | 16 |
import org.slf4j.LoggerFactory; |
16 | 17 |
|
18 |
public class DefaultPropertiesPageManager implements PropertiesPageManager { |
|
17 | 19 |
|
18 |
public class DefaultPropertiesPageManager implements PropertiesPageManager { |
|
20 |
public static final String ACCESS_PAGE_AUTHORIZATION = "propertypage-access"; |
|
21 |
|
|
19 | 22 |
private static final Logger logger = LoggerFactory.getLogger(DefaultPropertiesPageManager.class); |
20 |
|
|
21 |
private final Map<String, List<PropertiesPageFactory>> groups = new HashMap<String, List<PropertiesPageFactory>>();
|
|
22 |
|
|
23 |
|
|
24 |
private final Map<String, List<PropertiesPageFactory>> groups = new HashMap<>(); |
|
25 |
|
|
23 | 26 |
public DefaultPropertiesPageManager() { |
24 |
|
|
27 |
|
|
25 | 28 |
} |
26 | 29 |
|
30 |
@Override |
|
27 | 31 |
public void registerFactory(PropertiesPageFactory factory) { |
28 |
logger.info("Register PropertisPageFactory "+factory.getClass().getName()+" , groupID="+factory.getGroupID()+" ("+factory.toString()+").");
|
|
32 |
logger.info("Register PropertisPageFactory " + factory.getClass().getName() + " , groupID=" + factory.getGroupID() + " (" + factory.toString() + ").");
|
|
29 | 33 |
List<PropertiesPageFactory> group = this.getFactories(factory.getGroupID()); |
30 | 34 |
group.add(factory); |
31 | 35 |
} |
32 |
|
|
36 |
|
|
33 | 37 |
private List<PropertiesPageFactory> getFactories(String groupID) { |
34 |
logger.info("get propeties page factories for groupID '"+groupID+"'");
|
|
38 |
logger.info("get propeties page factories for groupID '" + groupID + "'");
|
|
35 | 39 |
List<PropertiesPageFactory> group = this.groups.get(groupID); |
36 |
if( group == null ) {
|
|
37 |
group = new ArrayList<PropertiesPageFactory>();
|
|
40 |
if (group == null) {
|
|
41 |
group = new ArrayList<>(); |
|
38 | 42 |
this.groups.put(groupID, group); |
39 | 43 |
} |
40 | 44 |
return group; |
41 | 45 |
} |
42 |
|
|
46 |
|
|
47 |
@Override |
|
43 | 48 |
public List<PropertiesPage> getPages(String groupID, Object obj) { |
44 |
logger.info("get propeties page for groupID '"+groupID+"', and object '"+obj.toString()+"'."); |
|
49 |
logger.info("get propeties page for groupID '" + groupID + "', and object '" + obj.toString() + "'."); |
|
50 |
List<PropertiesPage> pages = new ArrayList<>(); |
|
51 |
SimpleIdentityManager identityManager = ToolsLocator.getIdentityManager(); |
|
52 |
SimpleIdentity currentUser = identityManager.getCurrentIdentity(); |
|
53 |
if (!currentUser.isAuthorized(ACCESS_PAGE_AUTHORIZATION,null,groupID ) ) { |
|
54 |
return pages; // Empty list, no access to pages authoriced |
|
55 |
} |
|
56 |
|
|
45 | 57 |
List<PropertiesPageFactory> factories = this.getFactories(groupID); |
46 |
List<PropertiesPage> pages = new ArrayList<PropertiesPage>(); |
|
47 |
for ( PropertiesPageFactory factory : factories ) { |
|
48 |
if( factory.isVisible(obj) ) { |
|
49 |
pages.add(factory.create(obj)); |
|
58 |
String authorizationId = ACCESS_PAGE_AUTHORIZATION+"-"+groupID; |
|
59 |
for (PropertiesPageFactory factory : factories) { |
|
60 |
if (factory.isVisible(obj)) { |
|
61 |
PropertiesPage page = factory.create(obj); |
|
62 |
if (currentUser.isAuthorized(authorizationId,page, page.getTitle()) ) { |
|
63 |
pages.add(page); |
|
64 |
} |
|
50 | 65 |
} |
51 | 66 |
} |
52 | 67 |
Collections.sort(pages, new Comparator<PropertiesPage>() { |
53 | 68 |
public int compare(PropertiesPage f1, PropertiesPage f2) { |
54 | 69 |
int n = f2.getPriority() - f1.getPriority(); |
55 |
if( n != 0 ) {
|
|
70 |
if (n != 0) {
|
|
56 | 71 |
return n; |
57 | 72 |
} |
58 |
if( f1.getTitle()==null || f2.getTitle()==null ) {
|
|
73 |
if (f1.getTitle() == null || f2.getTitle() == null) {
|
|
59 | 74 |
// Mas que nada para que no pete, y aunque el orden |
60 | 75 |
// no sea correcto muestre algo al usuario. |
61 | 76 |
return 0; |
... | ... | |
65 | 80 |
}); |
66 | 81 |
return pages; |
67 | 82 |
} |
68 |
|
|
69 |
|
|
83 |
|
|
70 | 84 |
} |
Also available in: Unified diff