Revision 42591

View differences:

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