blob: 7c429c33047e41848be10f04e4111b94ff175977 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.ant.svn;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
public class SvnEntry {
private final Date date;
private final String revision;
private String author;
private final String message;
private final ArrayList paths = new ArrayList();
/**
* Creates a new instance of a SvnEntry
* @param date the date
* @param author the author
* @param message a message to be added to the revision
*/
public SvnEntry(final Date date, final String revision,
final String author, final String message) {
this(date, revision, author, message, Collections.EMPTY_LIST);
}
/**
* Creates a new instance of a SvnEntry
* @param date the date
* @param author the author
* @param message a message to be added to the revision
*/
public SvnEntry(final Date date, final String revision,
final String author, final String message,
final Collection paths) {
this.date = date;
this.revision = revision;
this.author = author;
this.message = message;
this.paths.addAll(paths);
}
/**
* Adds a path to the SvnEntry
* @param path the path to add
* @param revision the revision
*/
public void addPath(final String name, final char action) {
paths.add(new Path(name, action));
}
/**
* Gets the date of the SvnEntry
* @return the date
*/
public Date getDate() {
return date;
}
/**
* Gets the revision of the SvnEntry
* @return the date
*/
public String getRevision() {
return revision;
}
/**
* Sets the author of the SvnEntry
* @param author the author
*/
public void setAuthor(final String author) {
this.author = author;
}
/**
* Gets the author of the SvnEntry
* @return the author
*/
public String getAuthor() {
return author;
}
/**
* Gets the message for the SvnEntry
* @return the message
*/
public String getMessage() {
return message;
}
/**
* Gets the paths in this SvnEntry
* @return the files
*/
public Path[] getPaths() {
return (Path[]) paths.toArray(new Path[paths.size()]);
}
public static class Path {
private static final char ADDED_MARKER = 'A';
private static final char MODIFIED_MARKER = 'M';
private static final char DELETED_MARKER = 'D';
public static final int ADDED = 0;
public static final int MODIFIED = 1;
public static final int DELETED = 2;
private static final String[] ACTIONS = {
"added", "modified", "deleted",
};
private final String name;
private final int action;
public Path(final String name, final char actionChar) {
this.name = name;
switch (actionChar) {
case ADDED_MARKER:
action = ADDED;
break;
case MODIFIED_MARKER:
action = MODIFIED;
break;
case DELETED_MARKER:
action = DELETED;
break;
default:
throw new IllegalArgumentException("Unkown action; "
+ actionChar);
}
}
public Path(final String name, final int action) {
this.name = name;
if (action != ADDED && action != DELETED && action != MODIFIED) {
throw new IllegalArgumentException("Unkown action; " + action);
}
this.action = action;
}
public String getName() {
return name;
}
public int getAction() {
return action;
}
public String getActionDescription() {
return ACTIONS[action];
}
}
}