From f22a0633d08e38ac4bf92b5165a708e11b4d6598 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 03 Oct 2012 17:31:37 -0400 Subject: [PATCH] Implemented support for toggling User.canFork in Manager --- src/com/gitblit/models/PathModel.java | 45 +++++++++++++++++++++++++++++++-------------- 1 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/com/gitblit/models/PathModel.java b/src/com/gitblit/models/PathModel.java index 17a7971..8692359 100644 --- a/src/com/gitblit/models/PathModel.java +++ b/src/com/gitblit/models/PathModel.java @@ -20,6 +20,13 @@ import org.eclipse.jgit.diff.DiffEntry.ChangeType; import org.eclipse.jgit.lib.FileMode; +/** + * PathModel is a serializable model class that represents a file or a folder, + * including all its metadata and associated commit id. + * + * @author James Moger + * + */ public class PathModel implements Serializable, Comparable<PathModel> { private static final long serialVersionUID = 1L; @@ -28,29 +35,25 @@ public final String path; public final long size; public final int mode; + public final String objectId; public final String commitId; public boolean isParentPath; - public PathModel(String name, String path, long size, int mode, String commitId) { + public PathModel(String name, String path, long size, int mode, String objectId, String commitId) { this.name = name; this.path = path; this.size = size; this.mode = mode; + this.objectId = objectId; this.commitId = commitId; } + public boolean isSubmodule() { + return FileMode.GITLINK.equals(mode); + } + public boolean isTree() { return FileMode.TREE.equals(mode); - } - - public static PathModel getParentPath(String basePath, String commitId) { - String parentPath = null; - if (basePath.lastIndexOf('/') > -1) { - parentPath = basePath.substring(0, basePath.lastIndexOf('/')); - } - PathModel model = new PathModel("..", parentPath, 0, 40000, commitId); - model.isParentPath = true; - return model; } @Override @@ -74,6 +77,13 @@ if (isTree && otherTree) { return path.compareTo(o.path); } else if (!isTree && !otherTree) { + if (isSubmodule() && o.isSubmodule()) { + return path.compareTo(o.path); + } else if (isSubmodule()) { + return -1; + } else if (o.isSubmodule()) { + return 1; + } return path.compareTo(o.path); } else if (isTree && !otherTree) { return -1; @@ -81,15 +91,22 @@ return 1; } + /** + * PathChangeModel is a serializable class that represents a file changed in + * a commit. + * + * @author James Moger + * + */ public static class PathChangeModel extends PathModel { private static final long serialVersionUID = 1L; public final ChangeType changeType; - public PathChangeModel(String name, String path, long size, int mode, String commitId, - ChangeType type) { - super(name, path, size, mode, commitId); + public PathChangeModel(String name, String path, long size, int mode, String objectId, + String commitId, ChangeType type) { + super(name, path, size, mode, objectId, commitId); this.changeType = type; } -- Gitblit v1.9.1