Revision 33b61be6 web_client/src/gr/grnet/pithos/web/client/GSS.java
b/web_client/src/gr/grnet/pithos/web/client/GSS.java | ||
---|---|---|
46 | 46 |
import com.google.gwt.json.client.JSONParser; |
47 | 47 |
import com.google.gwt.json.client.JSONString; |
48 | 48 |
import com.google.gwt.json.client.JSONValue; |
49 |
import com.google.gwt.user.client.Command; |
|
49 | 50 |
import com.google.gwt.view.client.SelectionChangeEvent; |
50 | 51 |
import com.google.gwt.view.client.SingleSelectionModel; |
51 | 52 |
import gr.grnet.pithos.web.client.commands.GetUserCommand; |
... | ... | |
57 | 58 |
import gr.grnet.pithos.web.client.foldertree.Resource; |
58 | 59 |
import gr.grnet.pithos.web.client.rest.DeleteRequest; |
59 | 60 |
import gr.grnet.pithos.web.client.rest.GetRequest; |
61 |
import gr.grnet.pithos.web.client.rest.PutRequest; |
|
60 | 62 |
import gr.grnet.pithos.web.client.rest.RestException; |
61 | 63 |
import gr.grnet.pithos.web.client.rest.resource.FileResource; |
62 | 64 |
import gr.grnet.pithos.web.client.rest.resource.OtherUserResource; |
... | ... | |
918 | 920 |
public FolderTreeView getFolderTreeView() { |
919 | 921 |
return folderTreeView; |
920 | 922 |
} |
923 |
|
|
924 |
public void copyFiles(final Iterator<File> iter, final String targetUri, final Command callback) { |
|
925 |
if (iter.hasNext()) { |
|
926 |
File file = iter.next(); |
|
927 |
String path = getApiPath() + getUsername() + targetUri + "/" + file.getName(); |
|
928 |
PutRequest copyFile = new PutRequest(path) { |
|
929 |
@Override |
|
930 |
public void onSuccess(Resource result) { |
|
931 |
copyFiles(iter, targetUri, callback); |
|
932 |
} |
|
933 |
|
|
934 |
@Override |
|
935 |
public void onError(Throwable t) { |
|
936 |
GWT.log("", t); |
|
937 |
if (t instanceof RestException) { |
|
938 |
GSS.get().displayError("Unable to copy file: " + ((RestException) t).getHttpStatusText()); |
|
939 |
} |
|
940 |
else |
|
941 |
GSS.get().displayError("System error unable to copy file: "+t.getMessage()); |
|
942 |
} |
|
943 |
}; |
|
944 |
copyFile.setHeader("X-Auth-Token", getToken()); |
|
945 |
copyFile.setHeader("X-Copy-From", file.getUri()); |
|
946 |
Scheduler.get().scheduleDeferred(copyFile); |
|
947 |
} |
|
948 |
else if (callback != null) { |
|
949 |
callback.execute(); |
|
950 |
} |
|
951 |
} |
|
952 |
|
|
953 |
public void copySubfolders(final Iterator<Folder> iter, final String targetUri, final Command callback) { |
|
954 |
if (iter.hasNext()) { |
|
955 |
final Folder f = iter.next(); |
|
956 |
copyFolder(f, targetUri, callback); |
|
957 |
} |
|
958 |
else if (callback != null) { |
|
959 |
callback.execute(); |
|
960 |
} |
|
961 |
} |
|
962 |
|
|
963 |
public void copyFolder(final Folder f, final String targetUri, final Command callback) { |
|
964 |
String path = getApiPath() + getUsername() + targetUri + "/" + f.getName(); |
|
965 |
PutRequest createFolder = new PutRequest(path) { |
|
966 |
@Override |
|
967 |
public void onSuccess(Resource result) { |
|
968 |
Iterator<File> iter = f.getFiles().iterator(); |
|
969 |
copyFiles(iter, targetUri + "/" + f.getName(), new Command() { |
|
970 |
@Override |
|
971 |
public void execute() { |
|
972 |
Iterator<Folder> iterf = f.getSubfolders().iterator(); |
|
973 |
copySubfolders(iterf, targetUri + "/" + f.getName(), new Command() { |
|
974 |
@Override |
|
975 |
public void execute() { |
|
976 |
callback.execute(); |
|
977 |
} |
|
978 |
}); |
|
979 |
} |
|
980 |
}); |
|
981 |
} |
|
982 |
|
|
983 |
@Override |
|
984 |
public void onError(Throwable t) { |
|
985 |
GWT.log("", t); |
|
986 |
if (t instanceof RestException) { |
|
987 |
displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText()); |
|
988 |
} |
|
989 |
else |
|
990 |
displayError("System error creating folder:" + t.getMessage()); |
|
991 |
} |
|
992 |
}; |
|
993 |
createFolder.setHeader("X-Auth-Token", getToken()); |
|
994 |
createFolder.setHeader("Accept", "*/*"); |
|
995 |
createFolder.setHeader("Content-Length", "0"); |
|
996 |
createFolder.setHeader("Content-Type", "application/folder"); |
|
997 |
Scheduler.get().scheduleDeferred(createFolder); |
|
998 |
} |
|
921 | 999 |
} |
Also available in: Unified diff