package net.mms_projects.copy_it.sync_services;
import java.util.Date;
import java.util.concurrent.Executor;
import net.mms_projects.copy_it.SyncListener;
import net.mms_projects.copy_it.api.endpoints.ClipboardContentEndpoint;
public class ApiService implements PullServiceInterface, PushServiceInterface {
protected SyncListener listener;
protected ClipboardContentEndpoint endpoint;
private Executor executor;
public ApiService(SyncListener listener, ClipboardContentEndpoint endpoint) {
this.listener = listener;
this.endpoint = endpoint;
}
public void setEndpoint(ClipboardContentEndpoint endpoint) {
this.endpoint = endpoint;
}
@Override
public String getServiceName() {
return "api";
}
@Override
public void setExecutor(Executor executor) {
this.executor = executor;
}
@Override
public Executor getExecutor() {
return this.executor;
}
@Override
public void activatePush() {
}
@Override
public void deactivatePush() {
}
@Override
public void activatePull() {
}
@Override
public void deactivatePull() {
}
@Override
public void updateRemoteContentAsync(final String content, final Date date) {
this.executor.execute(new Runnable() {
@Override
public void run() {
setRemoteContent(content, date);
}
});
}
@Override
public void requestRemoteContentAsync() {
this.executor.execute(new Runnable() {
@Override
public void run() {
listener.onRemoteContentChange(getRemoteContent(), new Date());
}
});
}
@Override
public boolean isPushActivated() {
return true;
}
@Override
public boolean isPullActivated() {
return true;
}
@Override
public void setRemoteContent(String content, Date date) {
try {
this.endpoint.update(content);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
@Override
public String getRemoteContent() {
try {
return this.endpoint.get();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}