Revision 86432004

b/src/gr/grnet/pithos/web/client/Const.java
23 23
    public static final String TRASH_CONTAINER = "trash";
24 24
    public static final RegExp EMAIL_REGEX = RegExp.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+[.][A-Z]{2,4}$", "i");
25 25
    public static final String X_ACCOUNT_GROUP_ = "X-Account-Group-";
26
    public static final String NL = "\n";
26 27

  
27 28
    private Const() {}
28 29

  
b/src/gr/grnet/pithos/web/client/Pithos.java
337 337
    }-*/;
338 338

  
339 339
    public static void LOG(Object ...args) {
340
        final StringBuilder sb = new StringBuilder();
341
        for(Object arg : args) {
342
            sb.append(arg);
343
        }
344
        if(sb.length() > 0) {
345
            __ConsoleLog(sb.toString());
340
        if(false) {
341
            final StringBuilder sb = new StringBuilder();
342
            for(Object arg : args) {
343
                sb.append(arg);
344
            }
345
            if(sb.length() > 0) {
346
                __ConsoleLog(sb.toString());
347
            }
346 348
        }
347 349
    }
348 350

  
......
500 502
        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
501 503
            @Override
502 504
            public void execute() {
505
                LOG("Pithos::initialize() Calling Pithos::fetchAccount()");
503 506
                fetchAccount(new Command() {
504 507

  
505 508
                    @Override
......
723 726
                final List<String> memberIDs = new ArrayList<String>();
724 727
                final List<Group> groups = account.getGroups();
725 728
                for(Group group : groups) {
726
                    LOG("Group ", group);
729
//                    LOG("Group ", group);
727 730
                    for(String member: group.getMemberIDs()) {
728
                        LOG("      ", member);
731
//                        LOG("      ", member);
729 732
                        memberIDs.add(member);
730 733
                    }
731 734
                }
......
1182 1185
    }
1183 1186

  
1184 1187
    void createMySharedTree() {
1188
        LOG("Pithos::createMySharedTree()");
1185 1189
        mysharedTreeSelectionModel = new SingleSelectionModel<Folder>();
1186 1190
        mysharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
1187 1191
            @Override
......
1218 1222
    }
1219 1223

  
1220 1224
    void createOtherSharedTree() {
1225
        LOG("Pithos::createOtherSharedTree()");
1221 1226
        otherSharedTreeSelectionModel = new SingleSelectionModel<Folder>();
1222 1227
        otherSharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
1223 1228
            @Override
......
1240 1245
        });
1241 1246
        selectionModels.add(otherSharedTreeSelectionModel);
1242 1247
        otherSharedTreeViewModel = new OtherSharedTreeViewModel(Pithos.this, otherSharedTreeSelectionModel);
1248
        LOG("Pithos::createOtherSharedTree(), initializing otherSharedTreeViewModel with a callback");
1243 1249
        otherSharedTreeViewModel.initialize(new Command() {
1244

  
1245 1250
            @Override
1246 1251
            public void execute() {
1247 1252
                otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
......
1252 1257
        });
1253 1258
    }
1254 1259

  
1255
    public native void log1(String message)/*-{
1256
      $wnd.console.log(message);
1257
    }-*/;
1258

  
1259 1260
    public String getErrorData() {
1260
        if(error != null) {
1261
            return error.toString();
1261
        final StringBuilder sb = new StringBuilder();
1262
        final String NL = Const.NL;
1263
        Throwable t = this.error;
1264
        while(t != null) {
1265
            sb.append(t.toString());
1266
            sb.append(NL);
1267
            StackTraceElement[] traces = t.getStackTrace();
1268
            for(StackTraceElement trace : traces) {
1269
                sb.append("  [");
1270
                sb.append(trace.getClassName());
1271
                sb.append("::");
1272
                sb.append(trace.getMethodName());
1273
                sb.append("() at ");
1274
                sb.append(trace.getFileName());
1275
                sb.append(":");
1276
                sb.append(trace.getLineNumber());
1277
                sb.append("]");
1278
                sb.append(NL);
1279
            }
1280
            t = t.getCause();
1262 1281
        }
1263
        return "";
1282

  
1283
        return sb.toString();
1264 1284
    }
1265 1285

  
1266 1286
    public void setError(Throwable t) {
b/src/gr/grnet/pithos/web/client/catalog/UpdateUserCatalogs.java
33 33

  
34 34
    public void onSuccess(UserCatalogs requestedUserCatalogs, UserCatalogs updatedUserCatalogs) {
35 35
        for(Map.Entry<String, String> uc : requestedUserCatalogs) {
36
            app.LOG("New displayName ", uc.getValue());
36
//            app.LOG("New displayName ", uc.getValue());
37 37
        }
38 38
    }
39 39

  
b/src/gr/grnet/pithos/web/client/foldertree/Folder.java
322 322
				return true;
323 323
		return false;
324 324
	}
325

  
326
    @Override
327
    public String toString() {
328
        return "Folder(container="+container+", name="+name+", prefix="+prefix+")";
329
    }
325 330
}
b/src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java
35 35

  
36 36
package gr.grnet.pithos.web.client.mysharedtree;
37 37

  
38
import gr.grnet.pithos.web.client.Const;
38 39
import gr.grnet.pithos.web.client.FolderContextMenu;
39 40
import gr.grnet.pithos.web.client.Pithos;
40 41
import gr.grnet.pithos.web.client.foldertree.AccountResource;
......
118 119
    }
119 120

  
120 121
	private void fetchSharedContainers(final Command callback) {
122
        app.LOG("MysharedTreeViewModel::fetchSharedContainers(), callback=", callback);
121 123
        String path = "?format=json&shared=&public=";
122 124
        GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), app.getUserID(), path) {
123 125
            @Override
......
131 133
                }
132 134
                if (firstLevelDataProvider.getList().isEmpty())
133 135
                	firstLevelDataProvider.getList().add(dummy);
134
				if (callback != null)
135
					callback.execute();
136
				if (callback != null) {
137
                    app.LOG("MysharedTreeViewModel::fetchSharedContainers(), executing callback");
138
                    callback.execute();
139
                }
136 140
            }
137 141

  
138 142
            @Override
......
150 154
				app.sessionExpired();
151 155
			}
152 156
        };
153
        getAccount.setHeader("X-Auth-Token", app.getUserToken());
157
        getAccount.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
154 158
        Scheduler.get().scheduleDeferred(getAccount);
155 159
	}
156 160

  
......
160 164
			return firstLevelDataProvider.getList().isEmpty();
161 165
		return true;
162 166
    }
163
	
164
	private native void log(String msg) /*-{
165
		$wnd.console.log(msg);
166
	}-*/;
167 167

  
168 168
    protected void fetchFolder(final Iterator<Folder> iter, final Command callback) {
169
        app.LOG("MysharedTreeViewModel::fetchFolder(), iter=", iter.hasNext(), ", callback=", callback);
169 170
        if (iter.hasNext()) {
170 171
            final Folder f = iter.next();
171 172

  
......
191 192
					app.sessionExpired();
192 193
				}
193 194
            };
194
            getFolder.setHeader("X-Auth-Token", app.getUserToken());
195
            getFolder.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
195 196
            Scheduler.get().scheduleDeferred(getFolder);
196 197
        }
197
        else if (callback != null)
198
        else if(callback != null) {
198 199
            callback.execute();
200
        }
199 201
    }
200 202

  
201 203
    public Folder getSelection() {
......
207 209
    }
208 210

  
209 211
    public void fetchFolder(final Folder f, final boolean showfiles, final Command callback) {
212
        app.LOG("MysharedTreeViewModel::fetchFolder(), folder=", f, ", showfiles=", showfiles, ", callback=", callback);
210 213
        String path = "/" + f.getContainer() + "?format=json&shared=&public=" + URL.encodeQueryString(f.getPrefix());
211 214
        GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwnerID(), path, f) {
212 215
            @Override
b/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java
53 53
import com.google.gwt.view.client.ListDataProvider;
54 54
import com.google.gwt.view.client.SingleSelectionModel;
55 55
import com.google.gwt.view.client.TreeViewModel;
56
import gr.grnet.pithos.web.client.Const;
56 57
import gr.grnet.pithos.web.client.FolderContextMenu;
57 58
import gr.grnet.pithos.web.client.Pithos;
58 59
import gr.grnet.pithos.web.client.SharingUsers;
......
79 80

  
80 81
        @Override
81 82
        public void render(Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
83
//            app.LOG("OtherSharedTreeViewModel::render(), folder=", folder);
82 84
            String html = AbstractImagePrototype.create(OtherSharedTreeView.images.folderYellow()).getHTML();
83 85
            safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant("&nbsp;");
84 86
            safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName()));
......
86 88

  
87 89
        @Override
88 90
        public void onBrowserEvent(Context context, com.google.gwt.dom.client.Element parent, final Folder folder, com.google.gwt.dom.client.NativeEvent event, ValueUpdater<Folder> valueUpdater) {
91
            app.LOG("OtherSharedTreeViewModel::render(), folder=", folder, ", parent=", parent.getString());
89 92
            if(event.getType().equals(ContextMenuEvent.getType().getName())) {
90 93
                final int x = event.getClientX();
91 94
                final int y = event.getClientY();
......
104 107
    };
105 108

  
106 109
    protected ListDataProvider<String> userLevelDataProviderForIDs = new ListDataProvider<String>();
107
//    protected ListDataProvider<String> userLevelDataProviderForDisplayNames = new ListDataProvider<String>();
108 110

  
109 111
    protected Map<String, ListDataProvider<Folder>> userDataProviderMap = new HashMap<String, ListDataProvider<Folder>>();
110 112
    private Map<Folder, ListDataProvider<Folder>> dataProviderMap = new HashMap<Folder, ListDataProvider<Folder>>();
......
119 121
    @Override
120 122
    public <T> NodeInfo<?> getNodeInfo(T value) {
121 123
        if(value == null) {
122
//            LOG("getNodeInfo(null), calling fetchSharingUsers(null)");
124
            app.LOG("OtherSharedTreeViewModel::getNodeInfo(null), calling fetchSharingUsers(null)");
123 125
            fetchSharingUsers(null);
124
//            LOG("getNodeInfo(null), called fetchSharingUsers(null)");
126
            app.LOG("OtherSharedTreeViewModel::getNodeInfo(null), called fetchSharingUsers(null)");
125 127
            return new DefaultNodeInfo<String>(userLevelDataProviderForIDs, new TextCell(new SafeHtmlRenderer<String>() {
126 128
                @Override
127 129
                public SafeHtml render(String object) {
128 130
                    final String displayName = app.getDisplayNameForUserID(object);
129
//                    LOG("render(userID = "+object+"), displayName = " + displayName);
131
                    app.LOG("OtherSharedTreeViewModel::(getNodeInfo)render(String ", object, "), parameter is userID, displayName=", displayName);
130 132
                    SafeHtmlBuilder builder = new SafeHtmlBuilder();
131 133
                    render(displayName, builder);
132 134
                    return builder.toSafeHtml();
......
135 137
                @Override
136 138
                public void render(String object, SafeHtmlBuilder builder) {
137 139
                    if(!object.equals(dummy)) {
138
//                        LOG("render(userID [not dummy] = "+object+")");
140
                        app.LOG("OtherSharedTreeViewModel::(getNodeInfo)render(String ", object, ") parameter is not [dummy]");
139 141
                        String html = AbstractImagePrototype.create(OtherSharedTreeView.images.myShared()).getHTML();
140 142
                        builder.appendHtmlConstant(html).appendHtmlConstant("&nbsp;");
141 143
                    }
142
                    final String displayName = app.getDisplayNameForUserID(object);
143 144
                    builder.append(OtherSharedTreeView.Templates.INSTANCE.nameSpan(object));
144 145
                }
145 146
            }), null, null);
146 147
        }
147 148
        else if(value instanceof String) {
148
//            LOG("getNodeInfo(String "+value+"), called with userID");
149
            app.LOG("OtherSharedTreeViewModel::getNodeInfo(String ", value, "), parameter is userID");
149 150
            final String userID = (String) value;
150 151

  
151 152
            if(userDataProviderMap.get(userID) == null) {
......
157 158
            return new DefaultNodeInfo<Folder>(userIDDataProvider, folderCell, selectionModel, null);
158 159
        }
159 160
        else {
160
//            LOG("getNodeInfo(Folder "+value+"), called with a folder");
161
            app.LOG("OtherSharedTreeViewModel::getNodeInfo(Folder ", value, ")");
161 162
            final Folder f = (Folder) value;
162 163
            if(dataProviderMap.get(f) == null) {
163 164
                dataProviderMap.put(f, new ListDataProvider<Folder>());
......
168 169
        }
169 170
    }
170 171

  
171
//    native void LOG(String message) /*-{
172
//      console.log(message );
173
//    }-*/;
174

  
175 172
    private void fetchSharingUsers(final Command callback) {
173
        app.LOG("OtherSharedTreeViewModel::fetchSharingUsers() callback=", callback);
176 174
        GetRequest<SharingUsers> getSharingUsers = new GetRequest<SharingUsers>(SharingUsers.class, app.getApiPath(), "", "?format=json") {
177 175
            @Override
178 176
            public void onSuccess(final SharingUsers _result) {
179 177
                userLevelDataProviderForIDs.getList().clear();
180 178

  
181 179
                final List<String> userIDs = _result.getUserIDs();
182
//                for(String userID : userIDs) {
183
//                    LOG("fetchSharingUsers(): userID =" + userID);
184
//                }
180
                for(String userID : userIDs) {
181
                    app.LOG("OtherSharedTreeViewModel::fetchSharingUsers()::onSuccess() Sharing userID=", userID);
182
                }
185 183
                final List<String> userIDsWithUnknownDisplayNames = app.filterUserIDsWithUnknownDisplayName(userIDs);
186 184
//                for(String userID : userIDsWithUnknownDisplayNames) {
187
//                    LOG("fetchSharingUsers(): userID (with unknown name) =" + userID);
185
//                    app.LOG("OtherSharedTreeViewModel::fetchSharingUsers(): userID (with unknown name) =" + userID);
188 186
//                }
189 187

  
190 188
                userLevelDataProviderForIDs.getList().addAll(userIDs);
191 189
                if(userLevelDataProviderForIDs.getList().isEmpty()) {
192 190
                    userLevelDataProviderForIDs.getList().add(dummy);
193
//                    userLevelDataProviderForDisplayNames.getList().add(dummy);
194
                } else {
195
//                    userLevelDataProviderForDisplayNames.getList().addAll(app.getUserDisplayNamesForIDs(userIDs));
191
                    app.LOG("OtherSharedTreeViewModel::fetchSharingUsers()::onSuccess() NO sharing users, adding [dummy]=\"", dummy, "\"");
192
                    return; // Only the dummy node is present, nothing to fetch from the server
196 193
                }
197 194

  
198 195
                if(userIDsWithUnknownDisplayNames.size() == 0) {
......
232 229
                app.sessionExpired();
233 230
            }
234 231
        };
235
        getSharingUsers.setHeader("X-Auth-Token", app.getUserToken());
232
        getSharingUsers.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
236 233
        Scheduler.get().scheduleDeferred(getSharingUsers);
237 234
    }
238 235

  
239 236
    protected void fetchSharedContainers(final Iterator<String> userIDsIterator, final Command callback) {
237
        app.LOG("OtherSharedTreeViewModel::fetchSharedContainers(), userIDsIterator=", userIDsIterator.hasNext(), ", callback=", callback);
240 238
        if(userIDsIterator.hasNext()) {
241 239
            String userID = userIDsIterator.next();
242 240
            if(userDataProviderMap.get(userID) == null) {
......
261 259
    public boolean isLeaf(Object o) {
262 260
        if(o == null) {
263 261
            boolean result =  userLevelDataProviderForIDs.getList().isEmpty();
264
//            LOG("isLeaf(null) ==> " + result);
262
//            app.LOG("isLeaf(null) ==> " + result);
265 263
            return result;
266 264
        }
267 265
        else if(o instanceof Folder) {
268 266
            Folder folder = (Folder) o;
269 267
            boolean result = folder.getSubfolders().isEmpty();
270
//            LOG("isLeaf(Folder "+folder+") ==> " + result);
268
//            app.LOG("isLeaf(Folder "+folder+") ==> " + result);
271 269
            return result;
272 270
        }
273 271
        else {
274 272
            ListDataProvider<Folder> dp = userDataProviderMap.get(o);
275 273
            if(dp != null) {
276 274
                boolean result =  dp.getList().isEmpty();
277
//                LOG("isLeaf("+o.getClass().getName()+" "+o+") ==> " + result);
275
//                app.LOG("isLeaf("+o.getClass().getName()+" "+o+") ==> " + result);
278 276
                return result;
279 277
            }
280
//            LOG("isLeaf("+o.getClass().getName()+" "+o+") ==> (true)");
278
//            app.LOG("isLeaf("+o.getClass().getName()+" "+o+") ==> (true)");
281 279
            return true;
282 280
        }
283 281
    }
284 282

  
285 283
    private void fetchSharedContainers(final String userID, final ListDataProvider<Folder> dataProvider, final Command callback) {
284
        app.LOG("OtherSharedTreeViewModel::fetchSharedContainers(), userID=", userID, ", callback=", callback);
286 285
        GetRequest<AccountResource> getUserSharedContainers = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), userID, "?format=json") {
287 286

  
288 287
            @Override
......
319 318
                app.sessionExpired();
320 319
            }
321 320
        };
322
        getUserSharedContainers.setHeader("X-Auth-Token", app.getUserToken());
321
        getUserSharedContainers.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
323 322
        Scheduler.get().scheduleDeferred(getUserSharedContainers);
324 323
    }
325 324

  
326 325
    protected void fetchFolder(final String userID, final Iterator<Folder> folderIterator, final ListDataProvider<Folder> dataProvider, final Command callback) {
326
        app.LOG("OtherSharedTreeViewModel::fetchFolder(), userID=", userID, " folderIterator=", folderIterator.hasNext(), ", callback=", callback);
327 327
        if(folderIterator.hasNext()) {
328 328
            final Folder f = folderIterator.next();
329 329

  
......
352 352
                    app.sessionExpired();
353 353
                }
354 354
            };
355
            getFolder.setHeader("X-Auth-Token", app.getUserToken());
355
            getFolder.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
356 356
            Scheduler.get().scheduleDeferred(getFolder);
357 357
        }
358 358
        else if(callback != null) {
......
365 365
    }
366 366

  
367 367
    public void updateFolder(Folder folder, boolean showfiles, Command callback) {
368
        app.LOG("OtherSharedTreeViewModel::updateFolder(), folder=", folder, ", showfiles=", showfiles, ", callback=", callback);
368 369
        if(dataProviderMap.get(folder) == null) {
369 370
            dataProviderMap.put(folder, new ListDataProvider<Folder>());
370 371
        }
......
373 374
    }
374 375

  
375 376
    public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles, final Command callback) {
377
        app.LOG("OtherSharedTreeViewModel::fetchFolder(), folder=", f, ", showfiles=", showfiles, ", callback=", callback);
376 378
        String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix());
377 379
        GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwnerID(), path, f) {
378 380
            @Override
......
411 413
                app.sessionExpired();
412 414
            }
413 415
        };
414
        getFolder.setHeader("X-Auth-Token", app.getUserToken());
416
        getFolder.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
415 417
        Scheduler.get().scheduleDeferred(getFolder);
416 418
    }
417 419

  
418 420
    public void initialize(Command callback) {
421
        app.LOG("OtherSharedTreeViewModel::initialize(), callback=", callback);
419 422
        fetchSharingUsers(callback);
420 423
    }
421 424
}
b/src/gr/grnet/pithos/web/client/rest/GetRequest.java
82 82

  
83 83
    public GetRequest(Class<T> resourceClass, String api, String owner, String path) {
84 84
        this(resourceClass, api, owner, path, -1, null);
85
        LOG("GetRequest() resourceClass = ", resourceClass.getName(), ", api=", api, ", owner=", owner, ", path=", path);
85 86
    }
86 87

  
87 88
    public GetRequest(Class<T> resourceClass, String api, String owner, String path, T result) {
88 89
        this(resourceClass, api, owner, path, -1, result);
89 90
    }
90 91

  
92
    static native void __ConsoleLog(String message) /*-{
93
      try {
94
        console.log(message);
95
      } catch (e) {
96
      }
97
    }-*/;
98

  
99
    public static void LOG(Object ...args) {
100
        if(false) {
101
            final StringBuilder sb = new StringBuilder();
102
            for(Object arg : args) {
103
                sb.append(arg);
104
            }
105
            if(sb.length() > 0) {
106
                __ConsoleLog(sb.toString());
107
            }
108
        }
109
    }
110

  
91 111
    @Override
92 112
    public void execute() {
93 113
    	if (path.contains("?"))
94 114
    		path += "&t=" + System.currentTimeMillis();
95 115
    	else
96 116
    		path += "?t=" + System.currentTimeMillis();
117
        LOG("GET api = ", api, ", owner = ", owner, ", path = ", path);
118
        LOG("   ==> ", api + owner + path);
97 119
        RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, api + owner + path);
98 120

  
99 121
        for (String header : headers.keySet()) {
......
131 153
            retries++;
132 154
        }
133 155
        catch (RequestException e) {
156
            LOG("Error in GetRequest: ", e.toString());
134 157
        }
135 158
    }
136 159

  

Also available in: Unified diff