| /* |
| * 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]; |
| } |
| } |
| |
| } |