Skip to content
This repository has been archived by the owner on Jul 26, 2022. It is now read-only.

Commit

Permalink
Cont'd REST stuff; works now
Browse files Browse the repository at this point in the history
  • Loading branch information
binwiederhier committed Sep 11, 2014
1 parent 53e61aa commit 88a71ac
Show file tree
Hide file tree
Showing 9 changed files with 156 additions and 153 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
package org.syncany.operations.daemon;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
Expand All @@ -35,7 +32,6 @@
import org.syncany.database.DatabaseVersionHeader;
import org.syncany.database.FileContent;
import org.syncany.database.FileVersion;
import org.syncany.database.FileVersion.FileType;
import org.syncany.database.MultiChunkEntry.MultiChunkId;
import org.syncany.database.ObjectId;
import org.syncany.database.PartialFileHistory.FileHistoryId;
Expand All @@ -51,17 +47,10 @@
import org.syncany.operations.daemon.messages.GetFileFolderResponseInternal;
import org.syncany.operations.daemon.messages.GetFileHistoryFolderRequest;
import org.syncany.operations.daemon.messages.GetFileHistoryFolderResponse;
import org.syncany.operations.daemon.messages.GetFileTreeFolderRequest;
import org.syncany.operations.daemon.messages.GetFileTreeFolderResponse;
import org.syncany.operations.daemon.messages.RestoreFileFolderRequest;
import org.syncany.operations.daemon.messages.RestoreFileFolderResponse;
import org.syncany.operations.daemon.messages.WatchEventFolderResponse;
import org.syncany.operations.daemon.messages.api.FolderRequest;
import org.syncany.operations.daemon.messages.api.FolderRequestHandler;
import org.syncany.operations.daemon.messages.api.Response;
import org.syncany.operations.restore.RestoreOperation;
import org.syncany.operations.restore.RestoreOperationOptions;
import org.syncany.operations.restore.RestoreOperationResult;
import org.syncany.operations.watch.WatchOperation;
import org.syncany.operations.watch.WatchOperationListener;
import org.syncany.operations.watch.WatchOperationOptions;
Expand Down Expand Up @@ -170,9 +159,6 @@ public void onRequestReceived(FolderRequest folderRequest) {
}

/*
if (folderRequest instanceof GetFileTreeFolderRequest) {
handleGetFileTreeRequest((GetFileTreeFolderRequest) folderRequest);
}
else if (folderRequest instanceof GetFileHistoryFolderRequest) {
handleGetFileHistoryRequest((GetFileHistoryFolderRequest) folderRequest);
}
Expand All @@ -182,20 +168,12 @@ else if (folderRequest instanceof GetFileFolderRequest) {
else if (folderRequest instanceof GetDatabaseVersionHeadersFolderRequest) {
handleGetDatabaseVersionHeadersRequest((GetDatabaseVersionHeadersFolderRequest) folderRequest);
}
else if (folderRequest instanceof RestoreFileFolderRequest) {
handleRestoreRequest((RestoreFileFolderRequest) folderRequest);
}
else if (folderRequest instanceof StatusFolderRequest) {
handleStatusRequest((StatusFolderRequest) folderRequest);
}
else {
}*/
}
}



private void handleGetFileRequest(GetFileFolderRequest fileRequest) {
try {
FileHistoryId fileHistoryId = FileHistoryId.parseFileId(fileRequest.getFileHistoryId());
Expand Down Expand Up @@ -224,55 +202,6 @@ private void handleGetFileRequest(GetFileFolderRequest fileRequest) {
eventBus.post(new BadRequestResponse(fileRequest.getId(), "Cannot reassemble file."));
}
}

private void handleRestoreRequest(RestoreFileFolderRequest restoreRequest) {
RestoreOperationOptions restoreOptions = new RestoreOperationOptions();

restoreOptions.setFileHistoryId(FileHistoryId.parseFileId(restoreRequest.getFileHistoryId()));
restoreOptions.setFileVersion(restoreRequest.getVersion());

try {
RestoreOperationResult restoreResult = new RestoreOperation(config, restoreOptions).execute();

RestoreFileFolderResponse restoreResponse = new RestoreFileFolderResponse(restoreRequest.getId(), restoreResult.getTargetFile());
eventBus.post(restoreResponse);
}
catch (Exception e) {
logger.log(Level.WARNING, "BadRequestResponse: Cannot restore file.");
eventBus.post(new BadRequestResponse(restoreRequest.getId(), "Cannot restore file."));
}
}

// private void handleCliRequest(CliRequest cliRequest) {
// if (watchOperation.isSyncRunning() || watchOperation.isSyncRequested()) {
// handleCliRequestSyncRunning(cliRequest);
// }
// else {
// watchOperation.pause();
// handleCliRequestNoSyncRunning(cliRequest);
// watchOperation.resume();
// }
// }

// private void handleCliRequestSyncRunning(CliRequest cliRequest) {
// CliResponse cliResponse = new CliResponse(cliRequest.getId(), "Cannot run CLI commands while sync is running or requested.\n");
// eventBus.post(cliResponse);
// }

private void handleGetFileTreeRequest(GetFileTreeFolderRequest fileTreeRequest) {
try {
String prefixLikeQuery = fileTreeRequest.getPrefix() + "%";
Date date = (fileTreeRequest.getDate() != null) ? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ").parse(fileTreeRequest.getDate()) : null;

Map<String, FileVersion> fileTree = localDatabase.getFileTree(prefixLikeQuery, date, false, (FileType[]) null);
GetFileTreeFolderResponse fileTreeResponse = new GetFileTreeFolderResponse(fileTreeRequest.getId(), fileTreeRequest.getRoot(), fileTreeRequest.getPrefix(), new ArrayList<FileVersion>(fileTree.values()));

eventBus.post(fileTreeResponse);
}
catch (Exception e) {
eventBus.post(new BadRequestResponse(fileTreeRequest.getId(), "Invalid request: " + e.getMessage()));
}
}

private void handleGetFileHistoryRequest(GetFileHistoryFolderRequest fileHistoryRequest) {
FileHistoryId fileHistoryId = FileHistoryId.parseFileId(fileHistoryRequest.getFileHistoryId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,40 +18,19 @@
package org.syncany.operations.daemon.messages;

import org.simpleframework.xml.Element;
import org.syncany.database.FileVersion.FileType;
import org.syncany.operations.OperationOptions;
import org.syncany.operations.daemon.messages.api.FolderRequest;
import org.syncany.operations.ls.LsOperationOptions;

public class GetFileTreeFolderRequest extends FolderRequest {
public class LsFolderRequest extends FolderRequest {
@Element(required = false)
private String prefix = "";

@Element(required = false)
private FileType type = null;

@Element(required = false)
private String date = null;

public String getPrefix() {
return prefix;
}

public void setPrefix(String prefix) {
this.prefix = prefix;
}

public FileType getType() {
return type;
}

public void setType(FileType type) {
this.type = type;
}
private LsOperationOptions options;

public String getDate() {
return date;
public LsOperationOptions getOptions() {
return options;
}

public void setDate(String date) {
this.date = date;
public void setOptions(OperationOptions options) {
this.options = (LsOperationOptions)options;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Syncany, www.syncany.org
* Copyright (C) 2011-2014 Philipp C. Heckel <philipp.heckel@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.syncany.operations.daemon.messages;

import java.util.logging.Level;

import org.syncany.config.Config;
import org.syncany.operations.daemon.messages.api.FolderRequest;
import org.syncany.operations.daemon.messages.api.FolderRequestHandler;
import org.syncany.operations.daemon.messages.api.Response;
import org.syncany.operations.ls.LsOperation;
import org.syncany.operations.ls.LsOperationResult;

public class LsFolderRequestHandler extends FolderRequestHandler {
public LsFolderRequestHandler(Config config) {
super(config);
}

@Override
public Response handleRequest(FolderRequest request) {
LsFolderRequest concreteRequest = (LsFolderRequest) request;

try {
LsOperation operation = new LsOperation(config, concreteRequest.getOptions());
LsOperationResult operationResult = operation.execute();
LsFolderResponse response = new LsFolderResponse(operationResult, request.getId());

return response;
}
catch (Exception e) {
logger.log(Level.WARNING, "Cannot obtain status.", e);
return new BadRequestResponse(request.getId(), "Cannot execute operation: " + e.getMessage());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,33 +17,29 @@
*/
package org.syncany.operations.daemon.messages;

import java.util.ArrayList;
import java.util.List;

import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.syncany.database.FileVersion;
import org.syncany.operations.daemon.messages.api.FolderResponse;
import org.syncany.operations.ls.LsOperationResult;

public class GetFileTreeFolderResponse extends FolderResponse {
@Element(required = true)
private String root;

public class LsFolderResponse extends FolderResponse {
@Element(required = true)
private String prefix;

@ElementList(required = true, entry="file")
private ArrayList<FileVersion> files;
private LsOperationResult result;

public LsFolderResponse() {
// Nothing
}

public GetFileTreeFolderResponse(int requestId, String root, String prefix, List<FileVersion> files) {
public LsFolderResponse(LsOperationResult result, int requestId) {
super(200, requestId, null);

this.root = root;
this.prefix = prefix;
this.files = new ArrayList<FileVersion>(files);
}

public List<FileVersion> getFiles() {
return files;
this.result = result;
}

@Override
public LsOperationResult getResult() {
return result;
}

public void setResult(LsOperationResult result) {
this.result = result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,18 @@
*/
package org.syncany.operations.daemon.messages;

import org.simpleframework.xml.Element;
import org.syncany.operations.OperationOptions;
import org.syncany.operations.daemon.messages.api.FolderRequest;
import org.syncany.operations.restore.RestoreOperationOptions;

public class RestoreFileFolderRequest extends FolderRequest {
@Element(required = true)
private String fileHistoryId;

@Element(required = true)
private int version;
private RestoreOperationOptions options;

public String getFileHistoryId() {
return fileHistoryId;
public RestoreOperationOptions getOptions() {
return options;
}

public int getVersion() {
return version;
}

public void setFileHistoryId(String fileHistoryId) {
this.fileHistoryId = fileHistoryId;
}

public void setVersion(int version) {
this.version = version;
public void setOptions(OperationOptions options) {
this.options = (RestoreOperationOptions)options;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Syncany, www.syncany.org
* Copyright (C) 2011-2014 Philipp C. Heckel <philipp.heckel@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.syncany.operations.daemon.messages;

import java.util.logging.Level;

import org.syncany.config.Config;
import org.syncany.operations.daemon.messages.api.FolderRequest;
import org.syncany.operations.daemon.messages.api.FolderRequestHandler;
import org.syncany.operations.daemon.messages.api.Response;
import org.syncany.operations.restore.RestoreOperation;
import org.syncany.operations.restore.RestoreOperationResult;

public class RestoreFileFolderRequestHandler extends FolderRequestHandler {
public RestoreFileFolderRequestHandler(Config config) {
super(config);
}

@Override
public Response handleRequest(FolderRequest request) {
RestoreFileFolderRequest concreteRequest = (RestoreFileFolderRequest) request;

try {
RestoreOperation operation = new RestoreOperation(config, concreteRequest.getOptions());
RestoreOperationResult operationResult = operation.execute();
RestoreFileFolderResponse response = new RestoreFileFolderResponse(operationResult, request.getId());

return response;
}
catch (Exception e) {
logger.log(Level.WARNING, "Cannot obtain status.", e);
return new BadRequestResponse(request.getId(), "Cannot execute operation: " + e.getMessage());
}
}
}

0 comments on commit 88a71ac

Please sign in to comment.