Revision a845b044 src/gr/grnet/pithos/web/client/tagtree/TagTreeViewModel.java

b/src/gr/grnet/pithos/web/client/tagtree/TagTreeViewModel.java
38 38
import com.google.gwt.cell.client.AbstractCell;
39 39
import com.google.gwt.cell.client.Cell;
40 40
import com.google.gwt.cell.client.TextCell;
41
import com.google.gwt.core.client.GWT;
42
import com.google.gwt.core.client.Scheduler;
43
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
41 44
import com.google.gwt.event.dom.client.ContextMenuEvent;
42 45
import com.google.gwt.safehtml.shared.SafeHtml;
43 46
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
......
48 51
import com.google.gwt.view.client.TreeViewModel;
49 52
import gr.grnet.pithos.web.client.Pithos;
50 53
import gr.grnet.pithos.web.client.foldertree.AccountResource;
54
import gr.grnet.pithos.web.client.foldertree.File;
51 55
import gr.grnet.pithos.web.client.foldertree.Folder;
56
import gr.grnet.pithos.web.client.rest.GetRequest;
57
import gr.grnet.pithos.web.client.rest.RestException;
52 58
import gr.grnet.pithos.web.client.tagtree.TagTreeView.Templates;
59
import java.util.ArrayList;
53 60
import java.util.Arrays;
54 61
import java.util.Iterator;
62
import java.util.LinkedHashSet;
55 63
import java.util.List;
56 64
import java.util.Set;
57 65

  
......
86 94
    @Override
87 95
    public <T> NodeInfo<?> getNodeInfo(T value) {
88 96
        if (value == null) {
89
//            rootDataProvider.getList().add("Tags");
90 97
            return new DefaultNodeInfo<String>(rootDataProvider, new TextCell(new SafeHtmlRenderer<String>() {
91 98
                @Override
92 99
                public SafeHtml render(String object) {
......
101 108
                    builder.appendHtmlConstant(html);
102 109
                    builder.append(Templates.INSTANCE.nameSpan(object));
103 110
                }
104
            }), new SingleSelectionModel<String>(), null);
111
            }), null, null);
105 112
        }
106 113
        else if (value instanceof String) {
107 114
            //fetchAllTags();
......
157 164
    }
158 165

  
159 166
    public void updateTag(Tag tag) {
160
//        if (dataProviderMap.get(tag) == null) {
161
//            dataProviderMap.put(tag, new ListDataProvider<Tag>());
162
//        }
163
//        final ListDataProvider<Tag> dataProvider = dataProviderMap.get(tag);
164
//        if (!tag.isTrash())
165
//            fetchFolder(tag, dataProvider);
166
//        else
167
//            Pithos.get().showFiles(tag);
167
        fetchTag(tag);
168 168
    }
169 169

  
170
//    public void fetchFolder(final Tag f, final ListDataProvider<Tag> dataProvider) {
171
//        dataProvider.flush();
172
//        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
173
//            @Override
174
//            public void execute() {
175
//                final Pithos app = Pithos.get();
176
//                String path = app.getApiPath() + app.getUsername() + "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
177
//                GetRequest<Tag> getFolder = new GetRequest<Tag>(Tag.class, path, f) {
178
//                    @Override
179
//                    public void onSuccess(Tag result) {
180
//                        app.showFiles(result);
181
//                        Iterator<Tag> iter = result.getSubfolders().iterator();
182
//                        fetchFolder(iter, dataProvider, result.getSubfolders());
183
//                    }
184
//
185
//                    @Override
186
//                    public void onError(Throwable t) {
187
//                        GWT.log("Error getting folder", t);
188
//                        if (t instanceof RestException)
189
//                            Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
190
//                        else
191
//                            Pithos.get().displayError("System error fetching folder: " + t.getMessage());
192
//                    }
193
//                };
194
//                getFolder.setHeader("X-Auth-Token", app.getToken());
195
//                Scheduler.get().scheduleDeferred(getFolder);
196
//            }
197
//        });
198
//    }
170
    public void fetchTag(Tag t) {
171
        Pithos app = Pithos.get();
172
        AccountResource account = app.getAccount();
173
        Iterator<Folder> iter = account.getContainers().iterator();
174
        fetchTag(iter, t, new LinkedHashSet<File>());
175
    }
176

  
177
    private void fetchTag(final Iterator<Folder> iter, final Tag t, final Set<File> files) {
178
        final Pithos app = Pithos.get();
179
        if (iter.hasNext()) {
180
            Folder f = iter.next();
181
            String path = app.getApiPath() + app.getUsername() + f.getUri() + "?format=json&meta=" + t.getName();
182
            GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, path) {
183
                @Override
184
                public void onSuccess(Folder result) {
185
                    files.addAll(result.getFiles());
186
                    fetchTag(iter, t, files);
187
                }
188

  
189
                @Override
190
                public void onError(Throwable t) {
191
                    GWT.log("Error getting folder", t);
192
                    if (t instanceof RestException)
193
                        Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
194
                    else
195
                        Pithos.get().displayError("System error fetching folder: " + t.getMessage());
196
                }
197
            };
198
            getFolder.setHeader("X-Auth-Token", app.getToken());
199
            Scheduler.get().scheduleDeferred(getFolder);
200
        }
201
        else {
202
            app.showFiles(files);
203
        }
204
    }
199 205

  
200 206
    public void initialize(AccountResource account) {
201 207
        List<Tag> tagList = tagDataProvider.getList();

Also available in: Unified diff