|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.lib.cvsclient.command.commit;
import java.io.*;
import org.netbeans.lib.cvsclient.command.*;
import org.netbeans.lib.cvsclient.event.*;
/**
* Handles the building of update information object and the firing of
* events when complete objects are built.
*
* @author Milos Kleint
*/
public class CommitBuilder
implements Builder {
/**
* Parsing constants.
*/
public static final String UNKNOWN = "commit: nothing known about `"; //NOI18N
public static final String EXAM_DIR = ": Examining"; //NOI18N
public static final String CHECKING_IN = "Checking in "; //NOI18N
public static final String REMOVING = "Removing "; //NOI18N
public static final String NEW_REVISION = "new revision:"; //NOI18N
public static final String INITIAL_REVISION = "initial revision:"; //NOI18N
public static final String DONE = "done"; //NOI18N
public static final String RCS_FILE = "RCS file: "; //NOI18N
public static final String ADD = "commit: use `cvs add' to create an entry for "; //NOI18N
/**
* The status object that is currently being built.
*/
private CommitInformation commitInformation;
/**
* The directory in which the file being processed lives. This is
* relative to the local directory
*/
private String fileDirectory;
/**
* The event manager to use.
*/
private final EventManager eventManager;
private final String localPath;
private boolean isAdding;
public CommitBuilder(EventManager eventManager, String localPath) {
this.eventManager = eventManager;
this.localPath = localPath;
}
public void outputDone() {
if (commitInformation != null) {
eventManager.fireCVSEvent(new FileInfoEvent(this, commitInformation));
commitInformation = null;
}
}
public void parseLine(String line, boolean isErrorMessage) {
if (line.indexOf(UNKNOWN) >= 0) {
processUnknownFile(line.substring(line.indexOf(UNKNOWN) + UNKNOWN.length()).trim());
}
else if (line.indexOf(ADD) > 0) {
processToAddFile(line.substring(line.indexOf(ADD) + ADD.length()).trim());
}
else if (line.startsWith(CHECKING_IN)) {
// - 1 means to cut the ';' character
processFile(line.substring(CHECKING_IN.length(), line.length() - 1));
if (isAdding) {
commitInformation.setType(commitInformation.ADDED);
isAdding = false;
}
else {
commitInformation.setType(commitInformation.CHANGED);
}
}
else if (line.startsWith(REMOVING)) {
processFile(line.substring(REMOVING.length(), line.length() - 1));
// - 1 means to cut the ';' character
commitInformation.setType(commitInformation.REMOVED);
}
else if (line.indexOf(EXAM_DIR) >= 0) {
fileDirectory = line.substring(line.indexOf(EXAM_DIR) + EXAM_DIR.length()).trim();
}
else if (line.startsWith(RCS_FILE)) {
isAdding = true;
}
else if (line.startsWith(DONE)) {
outputDone();
}
else if (line.startsWith(INITIAL_REVISION)) {
processRevision(line.substring(INITIAL_REVISION.length()));
}
else if (line.startsWith(NEW_REVISION)) {
processRevision(line.substring(NEW_REVISION.length()));
}
}
private File createFile(String fileName) {
return new File(localPath, fileName);
}
private void processUnknownFile(String line) {
commitInformation = new CommitInformation();
commitInformation.setType(commitInformation.UNKNOWN);
int index = line.indexOf('\'');
String fileName = line.substring(0, index - 1).trim();
commitInformation.setFile(createFile(fileName));
outputDone();
}
private void processToAddFile(String line) {
commitInformation = new CommitInformation();
commitInformation.setType(commitInformation.TO_ADD);
String fileName = line.trim();
if (fileName.endsWith(";")) { //NOI18N
fileName = fileName.substring(0, fileName.length() - 2);
}
commitInformation.setFile(createFile(fileName));
outputDone();
}
private void processFile(String filename) {
if (commitInformation == null) {
commitInformation = new CommitInformation();
}
if (filename.startsWith("no file")) { //NOI18N
filename = filename.substring(8);
}
commitInformation.setFile(createFile(filename));
}
private void processRevision(String revision) {
int index = revision.indexOf(';');
if (index >= 0) {
revision = revision.substring(0, index);
}
commitInformation.setRevision(revision.trim());
}
public void parseEnhancedMessage(String key, Object value) {
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.