|
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.update;
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, Thomas Singer
*/
public class UpdateBuilder
implements Builder {
/**
* Parsing constants..
*/
public static final String UNKNOWN = ": nothing known about"; //NOI18N
public static final String EXAM_DIR = ": Updating"; //NOI18N
public static final String TO_ADD = ": use `cvs add' to create an entry for"; //NOI18N
public static final String STATES = "U P A R M C ? "; //NOI18N
public static final String WARNING = ": warning: "; //NOI18N
public static final String SERVER = "server: "; //NOI18N
public static final String PERTINENT = "is not (any longer) pertinent"; //NOI18N
public static final String MERGING = "Merging differences between "; //NOI18N
public static final String CONFLICTS = "rcsmerge: warning: conflicts during merge"; //NOI18N
public static final String NOT_IN_REPOSITORY = "is no longer in the repository"; //NOI18N;
/**
* The status object that is currently being built.
*/
private DefaultFileInfoContainer fileInfoContainer;
/**
* The event manager to use.
*/
private EventManager eventManager;
/**
* The local path the command run in.
*/
private String localPath;
public UpdateBuilder(EventManager eventManager, String localPath) {
this.eventManager = eventManager;
this.localPath = localPath;
}
public void outputDone() {
if (fileInfoContainer != null) {
eventManager.fireCVSEvent(new FileInfoEvent(this, fileInfoContainer));
fileInfoContainer = null;
}
}
public void parseLine(String line, boolean isErrorMessage) {
if (line.indexOf(UNKNOWN) >= 0) {
processUnknownFile(line, line.indexOf(UNKNOWN) + UNKNOWN.length());
}
else if (line.indexOf(TO_ADD) >= 0) {
processUnknownFile(line, line.indexOf(TO_ADD) + TO_ADD.length());
}
else if (line.indexOf(EXAM_DIR) >= 0) {
return;
}
else if (line.startsWith(MERGING)) {
outputDone();
if (fileInfoContainer == null) {
fileInfoContainer = new DefaultFileInfoContainer();
}
fileInfoContainer.setType(DefaultFileInfoContainer.MERGED_FILE);
}
else if (line.startsWith(CONFLICTS)) {
if (fileInfoContainer != null) {
fileInfoContainer.setType("C"); //NOI18N
}
}
else if (line.indexOf(WARNING) >= 0) {
if (line.indexOf(PERTINENT) > 0) {
String filename = line.substring(line.indexOf(WARNING) + WARNING.length(),
line.indexOf(PERTINENT)).trim();
processNotPertinent(filename);
}
return;
}
else if (line.indexOf(NOT_IN_REPOSITORY) > 0) {
String filename = line.substring(line.indexOf(SERVER) + SERVER.length(),
line.indexOf(NOT_IN_REPOSITORY)).trim();
processNotPertinent(filename);
return;
}
else {
// otherwise
if (line.length() > 2) {
String firstChar = line.substring(0, 2);
if (STATES.indexOf(firstChar) >= 0) {
processFile(line);
return;
}
}
}
}
private File createFile(String fileName) {
return new File(localPath, fileName);
}
private void ensureExistingFileInfoContainer() {
if (fileInfoContainer != null) {
return;
}
fileInfoContainer = new DefaultFileInfoContainer();
}
private void processUnknownFile(String line, int index) {
outputDone();
fileInfoContainer = new DefaultFileInfoContainer();
fileInfoContainer.setType("?"); //NOI18N
String fileName = (line.substring(index)).trim();
fileInfoContainer.setFile(createFile(fileName));
}
private void processFile(String line) {
String fileName = line.substring(2).trim();
if (fileName.startsWith("no file")) { //NOI18N
fileName = fileName.substring(8);
}
if (fileName.startsWith("./")) { //NOI18N
fileName = fileName.substring(2);
}
File file = createFile(fileName);
if (fileInfoContainer != null) {
// sometimes (when locally modified.. the merged response is followed by mesage M
|
| ... 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.