Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.lib / src / main / java / org / gvsig / tools / resourcesstorage / AbstractResourcesStorage.java @ 1993

History | View | Annotate | Download (3.31 KB)

1
package org.gvsig.tools.resourcesstorage;
2

    
3
import java.util.ArrayList;
4
import java.util.List;
5
import java.util.Locale;
6
import org.gvsig.tools.ToolsLocator;
7
import org.gvsig.tools.i18n.I18nManager;
8

    
9
/**
10
 *
11
 * @author jjdelcerro
12
 */
13
public abstract class AbstractResourcesStorage implements ResourcesStorage {
14

    
15

    
16
    @Override
17
    public String getSeparator() {
18
        return ".";
19
    }
20
    
21
    @Override
22
    public boolean isEmpty() {
23
        return false;
24
    }
25

    
26
    @Override
27
    public boolean isReadOnly() {
28
        return false;
29
    }
30
    
31
    @Override
32
    public List<Resource> getResources(String resourceName) {
33
        if( this.isEmpty() ) {
34
            return null;
35
        }
36
        List<ResourcesStorage.Resource>ress = new ArrayList<>();
37
        int n = 0;
38
        while(true) {
39
            String multiresourceName;
40
            if( n==0 ) {
41
                multiresourceName = resourceName;
42
            } else {
43
                multiresourceName = String.valueOf(n) + this.getSeparator() + resourceName ;
44
            }
45
            Resource res = this.getResource(multiresourceName);
46
            if( !res.exists() ) {
47
                break;
48
            }
49
            ress.add(res);
50
            n++;
51
        }
52
        if( ress.isEmpty() ) {
53
            return null;
54
        }
55
        return ress;
56
    }
57

    
58
    @Override
59
    public boolean exists(String name) {
60
        if( this.isEmpty() ) {
61
            return false;
62
        }
63
        Resource res = null;
64
        try {
65
            res = this.getResource(name);
66
            return res.exists();
67
        } finally {
68
            if( res !=null ) {
69
                res.close();
70
            }
71
        }
72
    }
73

    
74
    @Override
75
    public Resource getLocalizedResource(String resourceName) {
76
        I18nManager i18n = ToolsLocator.getI18nManager();
77
        Locale currentlocale = i18n.getCurrentLocale();
78
        if( currentlocale != null ) {
79
            String localizedName = currentlocale.getLanguage() + this.getSeparator() + resourceName;
80
            if( this.exists(localizedName) ) {
81
                return this.getResource(localizedName);
82
            }
83
            List<Locale> locales = i18n.getPreferredLocales();
84
            if( locales!=null ) {
85
                for (Locale locale : locales) {
86
                    localizedName = locale.getLanguage() + this.getSeparator() + resourceName;
87
                    if( this.exists(localizedName) ) {
88
                        return this.getResource(localizedName);
89
                    }
90
                }
91
            }
92
        }
93
        return this.getResource(resourceName);
94
    }
95
    
96
    @Override
97
    public List<Resource> getLocalizedResources(String resourceName) {
98
        if( this.isEmpty() ) {
99
            return null;
100
        }
101
        List<ResourcesStorage.Resource>ress = new ArrayList<>();
102
        int n = 0;
103
        while(true) {
104
            String multiresourceName;
105
            if( n==0 ) {
106
                multiresourceName = resourceName;
107
            } else {
108
                multiresourceName = resourceName + this.getSeparator() + String.valueOf(n);
109
            }
110
            Resource res = this.getLocalizedResource(multiresourceName);
111
            if( !res.exists() ) {
112
                break;
113
            }
114
            ress.add(res);
115
            n++;
116
        }
117
        if( ress.isEmpty() ) {
118
            return null;
119
        }
120
        return ress;
121
    }
122

    
123
}