Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.lib / src / main / java / org / gvsig / tools / bookmarksandhistory / impl / BaseBookmarks.java @ 2142

History | View | Annotate | Download (3.71 KB)

1
package org.gvsig.tools.bookmarksandhistory.impl;
2

    
3
import java.util.ArrayList;
4
import java.util.Collections;
5
import java.util.Date;
6
import java.util.Iterator;
7
import java.util.List;
8
import java.util.function.Predicate;
9
import org.apache.commons.lang3.StringUtils;
10
import org.gvsig.tools.bookmarksandhistory.Bookmark;
11
import org.gvsig.tools.bookmarksandhistory.Bookmarks;
12
import org.gvsig.tools.util.LabeledValue;
13
import org.gvsig.tools.util.LabeledValueImpl;
14

    
15
/**
16
 *
17
 * @author jjdelcerro
18
 * @param <T>
19
 */
20
public class BaseBookmarks<T>
21
        implements Bookmarks<T>
22
    {
23

    
24
    public class BaseBookmark 
25
            extends LabeledValueImpl<T>
26
            implements Bookmark<T>
27
        {
28

    
29
        private long lastUse;
30
        private boolean global;
31
        
32
        public BaseBookmark(String name, T value) {
33
            super(name, value);
34
            this.used();
35
        }
36
        
37
        @Override
38
        public boolean isGlobal() {
39
          return global;
40
        }
41

    
42
        @Override
43
        public void setGlobal(boolean global) {
44
          this.global = global;
45
        }
46

    
47
        @Override
48
        public final void used() {
49
            this.lastUse = new Date().getTime();
50
        }
51
        
52
        @Override
53
        public long getLastUse() {
54
            return this.lastUse;
55
        }
56

    
57
        @Override
58
        public void setName(String name) {
59
            this.label = name;
60
        }
61

    
62
        @Override
63
        public String getName() {
64
            return this.label;
65
        }
66

    
67
        @Override
68
        public String toString() {
69
            return this.label;
70
        }
71
    }
72
    
73
    private final List<Bookmark<T>> bookmarks;
74

    
75
    public BaseBookmarks() {
76
        this.bookmarks = new ArrayList<>();
77
    }
78
    
79
    @Override
80
    public boolean remove(String bookmarkName) {
81
        for (int i = 0; i < this.bookmarks.size(); i++) {
82
            Bookmark bookmark = this.bookmarks.get(i);
83
            if( StringUtils.equalsIgnoreCase(bookmarkName, bookmark.getName()) ) {
84
                this.bookmarks.remove(i);
85
                return true;
86
            }
87
        }
88
        return false;
89
    }
90

    
91
    @Override
92
    public List<Bookmark<T>> toList() {
93
        return this.bookmarks; 
94
    }
95

    
96
    @Override
97
    public boolean remove(Bookmark bookmark) {
98
        return this.bookmarks.remove(bookmark);
99
    }
100

    
101
    @Override
102
    public Bookmark add(T value) {
103
        String name;
104
        if( value instanceof LabeledValue ) {
105
            name = StringUtils.abbreviate(((LabeledValue)value).getLabel(), 45);
106
        } else {
107
            name = StringUtils.abbreviate(value.toString(), 45);
108
        }
109
        Date now = new Date();
110
        name = String.format(
111
                "%tF %tR %s",
112
                now, now,
113
                name
114
        );
115
        return this.add(name, value);
116
    }
117
    
118
    @Override
119
    public Bookmark add(String name, T value) {
120
        BaseBookmark bookmark = new BaseBookmark(name, value);
121
        this.bookmarks.add(bookmark);
122
        return bookmark;
123
    }
124

    
125
    @Override
126
    public boolean isEmpty() {
127
        return this.bookmarks.isEmpty();
128
    }
129

    
130
    @Override
131
    public int size() {
132
        return this.bookmarks.size();
133
    }
134

    
135
    @Override
136
    public Iterator<Bookmark<T>> iterator() {
137
        return this.bookmarks.iterator();
138
    }
139

    
140
    @Override
141
    public Bookmark get(int position) {
142
        return this.bookmarks.get(position);
143
    }
144

    
145
    @Override
146
    public List<Bookmark<T>> filter(Predicate<Bookmark<T>> filter) {
147
        if (filter==null) {
148
            return Collections.EMPTY_LIST;
149
        }
150
        List l = new ArrayList();
151
        for (Bookmark<T> bookmark : this.bookmarks) {
152
            if (filter.test(bookmark)) {
153
                l.add(bookmark);
154
            }
155
        }
156
        return l;               
157
    }
158
    
159
}