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

Commit

Permalink
update cleanup operation
Browse files Browse the repository at this point in the history
  • Loading branch information
vwiencek committed Sep 3, 2014
1 parent db304ae commit 3b6dcbf
Show file tree
Hide file tree
Showing 6 changed files with 171 additions and 8 deletions.
60 changes: 55 additions & 5 deletions syncany-cli/src/main/java/org/syncany/cli/CommandLineClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,15 @@
import org.syncany.config.Logging;
import org.syncany.config.UserConfig;
import org.syncany.config.to.PortTO;
import org.syncany.operations.cleanup.CleanupOperationOptions;
import org.syncany.operations.daemon.DaemonOperation;
import org.syncany.operations.daemon.messages.CleanUpRequest;
import org.syncany.operations.daemon.messages.CliResponse;
import org.syncany.operations.daemon.messages.MessageFactory;
import org.syncany.operations.daemon.messages.Request;
import org.syncany.operations.daemon.messages.Response;
import org.syncany.operations.daemon.messages.StatusRequest;
import org.syncany.operations.status.StatusOperationOptions;
import org.syncany.util.EnvironmentUtil;
import org.syncany.util.PidFileUtil;

Expand Down Expand Up @@ -315,7 +320,7 @@ private int runCommand(Command command, String commandName, String[] commandArgs
portFile = config.getPortFile();
}

File PIDFile = new File(UserConfig.getUserConfigDir(), "daemon.pid");
File PIDFile = new File(UserConfig.getUserConfigDir(), DaemonOperation.PID_FILE);
boolean localDirHandledInDaemonScope = portFile != null && portFile.exists();
boolean daemonRunning = PidFileUtil.isProcessRunning(PIDFile);
boolean needsToRunInInitializedScope = command.getRequiredCommandScope() == CommandScope.INITIALIZED_LOCALDIR;
Expand Down Expand Up @@ -375,19 +380,64 @@ private int sendToRest(Command command, String commandName, String[] commandArgs

logger.log(Level.INFO, "Sending HTTP Request to: " + SERVER_URI);

Request request = null;

// Create and send HTTP/REST request
switch (commandName.toLowerCase()) {
case "status":
StatusRequest sr = new StatusRequest();
sr.setId(Math.abs(new Random().nextInt()));
sr.setRoot(config.getLocalDir().getAbsolutePath());
post.setEntity(new StringEntity(MessageFactory.toRequest(sr)));
request = new StatusRequest();
request.setId(Math.abs(new Random().nextInt()));
StatusOperationOptions statusOption = ((StatusCommand)command).parseOptions(args);
((StatusRequest)request).setForceChecksum(statusOption.isForceChecksum());
((StatusRequest)request).setRoot(config.getLocalDir().getAbsolutePath());

break;
case "cleanup":
request = new CleanUpRequest();
request.setId(Math.abs(new Random().nextInt()));

// could use a fiel-to-field property copying utility
CleanupOperationOptions cleanupOption = ((CleanupCommand)command).parseOptions(args);
((CleanUpRequest)request).setRoot(config.getLocalDir().getAbsolutePath());
((CleanUpRequest)request).setKeepVersionsCount(cleanupOption.getKeepVersionsCount());
((CleanUpRequest)request).setMaxDatabaseFiles(cleanupOption.getMaxDatabaseFiles());
((CleanUpRequest)request).setMinSecondsBetweenCleanups(cleanupOption.getMinSecondsBetweenCleanups());
((CleanUpRequest)request).setStatusOptions(cleanupOption.getStatusOptions());
((CleanUpRequest)request).setForce(cleanupOption.isForce());
((CleanUpRequest)request).setMergeRemoteFiles(cleanupOption.isMergeRemoteFiles());
((CleanUpRequest)request).setRemoveOldVersions(cleanupOption.isRemoveOldVersions());
break;

case "debug":
break;

case "down":
break;

case "genlink":
break;

case "ls":
break;

case "ls-remote":
break;

case "restore":
break;

case "up":
break;

case "watch":
break;

default:
return 0;
}

post.setEntity(new StringEntity(MessageFactory.toRequest(request)));

// Handle response
HttpResponse httpResponse = client.execute(post);
logger.log(Level.FINE, "Received HttpResponse: " + httpResponse);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
public class DaemonOperation extends Operation {
private static final Logger logger = Logger.getLogger(DaemonOperation.class.getSimpleName());

private static final String PID_FILE = "daemon.pid";
public static final String PID_FILE = "daemon.pid";
private static final String DAEMON_FILE = "daemon.xml";
private static final String DAEMON_EXAMPLE_FILE = "daemon-example.xml";
private static final String DEFAULT_FOLDER = "Syncany";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
import org.syncany.operations.restore.RestoreOperationOptions;
import org.syncany.operations.restore.RestoreOperationResult;
import org.syncany.operations.status.StatusOperation;
import org.syncany.operations.status.StatusOperationOptions;
import org.syncany.operations.status.StatusOperationResult;
import org.syncany.operations.watch.WatchOperation;
import org.syncany.operations.watch.WatchOperationListener;
Expand Down Expand Up @@ -180,7 +181,10 @@ else if (watchRequest instanceof StatusRequest) {

private void handleStatusRequest(StatusRequest statusRequest) {
try {
StatusOperation statusOperation = new StatusOperation(config);
StatusOperationOptions statusOperationOption = new StatusOperationOptions();
statusOperationOption.setForceChecksum(statusRequest.isForceChecksum());

StatusOperation statusOperation = new StatusOperation(config, statusOperationOption);
StatusOperationResult statusOperationResult = statusOperation.execute();
StatusResponse statusResponse = new StatusResponse(statusRequest.getId());

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*
* 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 org.simpleframework.xml.Element;
import org.syncany.operations.status.StatusOperationOptions;


public class CleanUpRequest extends WatchRequest {
@Element(name = "status", required = false)
private StatusOperationOptions statusOptions = new StatusOperationOptions();

@Element(required = false)
private boolean force = false;

@Element(required = false)
private boolean mergeRemoteFiles = true;

@Element(required = false)
private boolean removeOldVersions = true;

@Element(required = false)
private int keepVersionsCount = 5;

@Element(required = false)
private int maxDatabaseFiles = 15;

@Element(required = false)
private long minSecondsBetweenCleanups = 10800;

public CleanUpRequest(){

}

public long getMinSecondsBetweenCleanups() {
return minSecondsBetweenCleanups;
}
public void setMinSecondsBetweenCleanups(long minSecondsBetweenCleanups) {
this.minSecondsBetweenCleanups = minSecondsBetweenCleanups;
}

public int getKeepVersionsCount() {
return keepVersionsCount;
}
public void setKeepVersionsCount(int keepVersionsCount) {
this.keepVersionsCount = keepVersionsCount;
}

public int getMaxDatabaseFiles() {
return maxDatabaseFiles;
}
public void setMaxDatabaseFiles(int maxDatabaseFiles) {
this.maxDatabaseFiles = maxDatabaseFiles;
}

public StatusOperationOptions getStatusOptions() {
return statusOptions;
}
public void setStatusOptions(StatusOperationOptions statusOptions) {
this.statusOptions = statusOptions;
}

public boolean isForce() {
return force;
}
public void setForce(boolean force) {
this.force = force;
}

public boolean isMergeRemoteFiles() {
return mergeRemoteFiles;
}
public void setMergeRemoteFiles(boolean mergeRemoteFiles) {
this.mergeRemoteFiles = mergeRemoteFiles;
}

public boolean isRemoveOldVersions() {
return removeOldVersions;
}
public void setRemoveOldVersions(boolean removeOldVersions) {
this.removeOldVersions = removeOldVersions;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,18 @@
*/
package org.syncany.operations.daemon.messages;

import org.simpleframework.xml.Element;


public class StatusRequest extends WatchRequest {
@Element(required = false)
private boolean forceChecksum = false;

public boolean isForceChecksum() {
return forceChecksum;
}

public void setForceChecksum(boolean forceChecksum) {
this.forceChecksum = forceChecksum;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class StatusResponse extends Response {
private ArrayList<String> deletedFiles;

public StatusResponse() {

// Required default constructor!
}

public StatusResponse(int requestId) {
Expand Down

0 comments on commit 3b6dcbf

Please sign in to comment.