import java.io.IOException;
import org.netbeans.lib.cvsclient.Client;
import org.netbeans.lib.cvsclient.admin.StandardAdminHandler;
import org.netbeans.lib.cvsclient.command.CommandAbortedException;
import org.netbeans.lib.cvsclient.command.CommandException;
import org.netbeans.lib.cvsclient.command.DefaultFileInfoContainer;
import org.netbeans.lib.cvsclient.command.FileInfoContainer;
import org.netbeans.lib.cvsclient.command.GlobalOptions;
import org.netbeans.lib.cvsclient.command.checkout.CheckoutCommand;
import org.netbeans.lib.cvsclient.command.log.LogInformation;
import org.netbeans.lib.cvsclient.command.log.LogInformation.Revision;
import org.netbeans.lib.cvsclient.command.log.RlogCommand;
import org.netbeans.lib.cvsclient.connection.AuthenticationException;
import org.netbeans.lib.cvsclient.connection.PServerConnection;
import org.netbeans.lib.cvsclient.connection.StandardScrambler;
import org.netbeans.lib.cvsclient.event.BinaryMessageEvent;
import org.netbeans.lib.cvsclient.event.CVSAdapter;
import org.netbeans.lib.cvsclient.event.CVSListener;
import org.netbeans.lib.cvsclient.event.FileAddedEvent;
import org.netbeans.lib.cvsclient.event.FileInfoEvent;
import org.netbeans.lib.cvsclient.event.FileRemovedEvent;
import org.netbeans.lib.cvsclient.event.FileToRemoveEvent;
import org.netbeans.lib.cvsclient.event.FileUpdatedEvent;
import org.netbeans.lib.cvsclient.event.MessageEvent;
import org.netbeans.lib.cvsclient.event.ModuleExpansionEvent;
import org.netbeans.lib.cvsclient.event.TerminationEvent;
public class Main {
public static void main(String[] args) {
// PServerとの接続
PServerConnection c = new PServerConnection();
// c.setHostName("jedit.cvs.sourceforge.net"); // PServerのホスト名またはIP(jEdit)
// c.setRepository("/cvsroot/jedit"); // 接続するするリポジトリ名(jEdit)
c.setHostName("jhotdraw.cvs.sourceforge.net"); // PServerのホスト名またはIP(JHotDraw)
c.setRepository("/cvsroot/jhotdraw"); // 接続するするリポジトリ名(JHotDraw)
Client client = openConnection(c);
client.setLocalPath("./tmp");
CVSAdapter adapter = new CVSAdapter() {
@Override
public void commandTerminated(TerminationEvent arg0) {
super.commandTerminated(arg0);
}
@Override
public void fileAdded(FileAddedEvent arg0) {
super.fileAdded(arg0);
}
@Override
public void fileInfoGenerated(FileInfoEvent fileInfoEvent) {
FileInfoContainer fileInfoContainer = fileInfoEvent.getInfoContainer();
if (fileInfoContainer instanceof DefaultFileInfoContainer) {
} else if (fileInfoContainer instanceof LogInformation) {
LogInformation logInfo = (LogInformation) fileInfoContainer;
int length = Integer.parseInt(logInfo.getTotalRevisions());
for (int i = 0; i < length; i++) {
Revision rev = (Revision) logInfo.getRevisionList().get(i);
System.out.println("---------------------");
System.out.println("File:" + logInfo.getRepositoryFilename());
System.out.println("Author:" + rev.getAuthor());
System.out.println("CommitID:" + rev.getCommitID());
System.out.println("Number:" + rev.getNumber());
System.out.println("Message:" + rev.getMessage());
System.out.println("Lines:" + rev.getLines());
System.out.println("Date:" + rev.getDateString());
}
}
}
@Override
public void fileRemoved(FileRemovedEvent arg0) {
super.fileRemoved(arg0);
}
@Override
public void fileToRemove(FileToRemoveEvent arg0) {
super.fileToRemove(arg0);
}
@Override
public void fileUpdated(FileUpdatedEvent arg0) {
super.fileUpdated(arg0);
}
@Override
public void messageSent(MessageEvent arg0) {
super.messageSent(arg0);
}
@Override
public void messageSent(BinaryMessageEvent arg0) {
super.messageSent(arg0);
}
@Override
public void moduleExpanded(ModuleExpansionEvent arg0) {
super.moduleExpanded(arg0);
}
};
// チェックアウト
// CheckoutCommand checkoutCommand = new CheckoutCommand();
//// checkoutCommand.setModule("plugins"); // モジュール名(jEdit)
// checkoutCommand.setModule("JHotDraw"); // モジュール名(JHotDraw)
// try {
// client.getEventManager().addCVSListener(adapter);
// client.executeCommand(checkoutCommand, new GlobalOptions());
// } catch (CommandException | AuthenticationException e) {
// e.printStackTrace();
// }
// ログ
RlogCommand rlogCommand = new RlogCommand();
// rlogCommand.setModule("plugins"); // モジュール名(jEdit)
rlogCommand.setModule("JHotDraw"); // モジュール名(JHotDraw)
try {
client.getEventManager().addCVSListener(adapter);
client.executeCommand(rlogCommand, new GlobalOptions());
} catch (CommandException | AuthenticationException e) {
e.printStackTrace();
}
closeConnection(c);
}
private static Client openConnection(PServerConnection c) {
c.setUserName("anonymous");
c.setEncodedPassword(StandardScrambler.getInstance().scramble(""));
try {
c.open();
return new Client(c, new StandardAdminHandler());
} catch (CommandAbortedException | AuthenticationException e) {
e.printStackTrace();
}
return null;
}
private static void closeConnection(PServerConnection c) {
try {
c.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}