package com.cadrlife.devsearch.cvsnavigator;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import org.netbeans.lib.cvsclient.CVSRoot;
import org.netbeans.lib.cvsclient.Client;
import org.netbeans.lib.cvsclient.admin.StandardAdminHandler;
import org.netbeans.lib.cvsclient.connection.PServerConnection;
import org.netbeans.lib.cvsclient.connection.StandardScrambler;
public class CvsConnection {
public CvsConnection() {
}
private static void overrideWarning(Client client) {
try {
Field field = Client.class.getDeclaredField("warned");
field.setAccessible(true);
field.set(client, true);
} catch(Exception e) {
e.printStackTrace();
}
}
public static PServerConnection openCvsConnection(String cvsRoot, String cvsPasswd) {
PServerConnection connection = new PServerConnection(CVSRoot.parse(cvsRoot));
connection.setEncodedPassword(StandardScrambler.getInstance().scramble(cvsPasswd));
return connection;
}
public static Client openClient(String cvsRoot, String cvsPasswd, String localPath) {
Client client = new Client(openCvsConnection(cvsRoot,cvsPasswd), new StandardAdminHandler());
client.setLocalPath(localPath);
overrideWarning(client);
return client;
}
public static void enableLogging(String logDirectory) {
System.setProperty("cvsClientLog", new File(logDirectory, "protocol").getAbsolutePath());
}
protected void closeConnection(PServerConnection connection) {
if (null != connection) {
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}