All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.scm.SubversionChangeLogSet Maven / Gradle / Ivy

package hudson.scm;

import hudson.model.Build;
import hudson.model.User;
import hudson.scm.SubversionChangeLogSet.LogEntry;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Iterator;

/**
 * {@link ChangeLogSet} for Subversion.
 *
 * @author Kohsuke Kawaguchi
 */
public final class SubversionChangeLogSet extends ChangeLogSet {
    private final List logs;
    private final Build build;

    /**
     * @GuardedBy this
     */
    private Map revisionMap;

    /*package*/ SubversionChangeLogSet(Build build, List logs) {
        this.build = build;
        this.logs = Collections.unmodifiableList(logs);
    }

    public boolean isEmptySet() {
        return logs.isEmpty();
    }

    public List getLogs() {
        return logs;
    }


    public Iterator iterator() {
        return logs.iterator();
    }

    public synchronized Map getRevisionMap() throws IOException {
        if(revisionMap==null)
            revisionMap = SubversionSCM.parseRevisionFile(build);
        return revisionMap;
    }

    /**
     * One commit.
     */
    public static class LogEntry extends ChangeLogSet.Entry {
        private int revision;
        private User author;
        private String date;
        private String msg;
        private List paths = new ArrayList();

        public int getRevision() {
            return revision;
        }

        public void setRevision(int revision) {
            this.revision = revision;
        }

        public User getAuthor() {
            return author;
        }

        public void setUser(String author) {
            this.author = User.get(author);
        }

        public String getUser() {// digester wants read/write property, even though it never reads. Duh.
            return author.getDisplayName();
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }

        public String getMsg() {
            return msg;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }

        public void addPath( Path p ) {
            paths.add(p);
        }

        public List getPaths() {
            return paths;
        }
    }

    public static class Path {
        private char action;
        private String value;

        public void setAction(String action) {
            this.action = action.charAt(0);
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }

        public EditType getEditType() {
            if( action=='A' )
                return EditType.ADD;
            if( action=='D' )
                return EditType.DELETE;
            return EditType.EDIT;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy