package com.perforce.bumble.pending;
import java.util.List;
import com.perforce.bumble.connection.ConnectionService;
import com.perforce.bumble.connection.DefaultService;
import com.perforce.p4java.core.IChangelist;
import com.perforce.p4java.core.file.IFileSpec;
import com.perforce.p4java.exception.P4JavaException;
import com.perforce.p4java.option.client.ReconcileFilesOptions;
import com.perforce.p4java.option.client.RevertFilesOptions;
import com.perforce.p4java.option.client.SyncOptions;
import com.perforce.p4java.server.IOptionsServer;
public class StatusService extends DefaultService {
public StatusService(IOptionsServer p4) throws P4JavaException {
super(p4);
}
public void update() throws P4JavaException {
headSync();
cleanDefault();
}
private void headSync() throws P4JavaException {
SyncOptions opts = new SyncOptions();
List<IFileSpec> status = iclient.sync(spec, opts);
ConnectionService.validate(status, "file(s) up-to-date");
}
private void cleanDefault() throws P4JavaException {
RevertFilesOptions opts = new RevertFilesOptions();
opts.setChangelistId(IChangelist.DEFAULT);
opts.setNoClientRefresh(true);
List<IFileSpec> status = iclient.revertFiles(spec, opts);
ConnectionService.validate(status, "");
status(IChangelist.DEFAULT, spec);
}
private void status(int id, List<IFileSpec> files) throws P4JavaException {
ReconcileFilesOptions opts = new ReconcileFilesOptions();
opts.setUseWildcards(true);
opts.setCheckModTime(true);
opts.setChangelistId(id);
List<IFileSpec> status = iclient.reconcileFiles(files, opts);
ConnectionService.validate(status, "empty, assuming text", "is opened and not being changed",
"no file(s) to reconcile");
}
}