changeset 691:d4ef6a366768

extract code to utility
author eugene.petrenko@gmail.com
date Thu, 19 Dec 2013 19:10:00 +0100
parents e6d203e5c6e3
children dd11376b5f4a
files mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataFactory.java
diffstat 2 files changed, 88 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java	Wed Dec 18 13:45:08 2013 +0100
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java	Thu Dec 19 19:10:00 2013 +0100
@@ -204,72 +204,15 @@
     }
   }
 
-
-  private ModificationData createModificationData(@NotNull OperationContext ctx,
+  private ModificationData createModificationData(@NotNull final OperationContext ctx,
                                                   @NotNull final ChangeSet cset,
                                                   @NotNull final VcsRoot root,
                                                   @NotNull final CheckoutRules checkoutRules) throws VcsException {
-    List<ChangeSetRevision> parents = cset.getParents();
-    if (parents.isEmpty())
-      throw new IllegalStateException("Commit " + cset.getId() + " has no parents");
-    String version = ctx.getStringFromPool(cset.getId());
-    List<VcsChange> files = toVcsChanges(ctx, cset.getModifiedFiles(), ctx.getStringFromPool(parents.get(0).getId()), version, checkoutRules);
-    final ModificationData result = new ModificationData(cset.getTimestamp(), files, cset.getDescription(),
-            ctx.getStringFromPool(cset.getUser()), root, version, version);
-    for (ChangeSetRevision parent : parents) {
-      result.addParentRevision(ctx.getStringFromPool(parent.getId()));
-    }
-    setCanBeIgnored(result, cset);
+    final ModificationData result = ModificationDataFactory.createModificationData(ctx, cset, root, checkoutRules);
     result.setAttributes(getAttributes(ctx, root, result));
     return result;
   }
 
-
-  private void setCanBeIgnored(@NotNull ModificationData md, @NotNull ChangeSet cset) {
-    if (md.getParentRevisions().size() > 1) {
-      //don't ignore merge commits
-      md.setCanBeIgnored(false);
-    } else if (cset.getModifiedFiles().isEmpty()) {
-      //don't ignore empty commits
-      md.setCanBeIgnored(false);
-    }
-  }
-
-
-  private List<VcsChange> toVcsChanges(@NotNull OperationContext ctx,
-                                       @NotNull List<FileStatus> modifiedFiles,
-                                       @NotNull String prevVer,
-                                       @NotNull String curVer,
-                                       @NotNull CheckoutRules rules) {
-    List<VcsChange> files = new ArrayList<VcsChange>(0);
-    for (FileStatus mf: modifiedFiles) {
-      if (rules.map(mf.getPath()) == null)
-        continue;
-      String normalizedPath = PathUtil.normalizeSeparator(mf.getPath());
-      VcsChangeInfo.Type changeType = getChangeType(mf.getStatus());
-      if (changeType == null) {
-        Loggers.VCS.warn("Unable to convert status: " + mf.getStatus() + " to VCS change type");
-        changeType = VcsChangeInfo.Type.NOT_CHANGED;
-      }
-      String path = ctx.getStringFromPool(normalizedPath);
-      files.add(new VcsChange(changeType, mf.getStatus().getName(), path, path, prevVer, curVer));
-    }
-    if (files.isEmpty())
-      return emptyList();
-    return files;
-  }
-
-
-  private VcsChangeInfo.Type getChangeType(final Status status) {
-    switch (status) {
-      case ADDED:return VcsChangeInfo.Type.ADDED;
-      case MODIFIED:return VcsChangeInfo.Type.CHANGED;
-      case REMOVED:return VcsChangeInfo.Type.REMOVED;
-    }
-    return null;
-  }
-
-
   @NotNull
   private List<ModificationData> getSubrepoChanges(@NotNull OperationContext ctx, @NotNull VcsRoot root, @NotNull List<ModificationData> changes) throws VcsException {
     if (changes.isEmpty())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataFactory.java	Thu Dec 19 19:10:00 2013 +0100
@@ -0,0 +1,86 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ChangeSet;
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ChangeSetRevision;
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.FileStatus;
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.Status;
+import jetbrains.buildServer.log.Loggers;
+import jetbrains.buildServer.vcs.*;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static java.util.Collections.emptyList;
+
+/**
+ * Created 19.12.13 19:05
+ *
+ * @author Eugene Petrenko (eugene.petrenko@jetbrains.com)
+ */
+public class ModificationDataFactory {
+  @NotNull
+  public static ModificationData createModificationData(@NotNull final OperationContext ctx,
+                                                        @NotNull final ChangeSet cset,
+                                                        @NotNull final VcsRoot root,
+                                                        @NotNull final CheckoutRules checkoutRules) throws VcsException {
+    final List<ChangeSetRevision> parents = cset.getParents();
+    if (parents.isEmpty()) throw new IllegalStateException("Commit " + cset.getId() + " has no parents");
+
+    final String version = ctx.getStringFromPool(cset.getId());
+    final List<VcsChange> files = toVcsChanges(ctx, cset.getModifiedFiles(), ctx.getStringFromPool(parents.get(0).getId()), version, checkoutRules);
+    final ModificationData result = new ModificationData(cset.getTimestamp(), files, cset.getDescription(), ctx.getStringFromPool(cset.getUser()), root, version, version);
+
+    for (ChangeSetRevision parent : parents) {
+      result.addParentRevision(ctx.getStringFromPool(parent.getId()));
+    }
+    setCanBeIgnored(result, cset);
+    return result;
+  }
+
+  private static void setCanBeIgnored(@NotNull final ModificationData md,
+                                      @NotNull final ChangeSet cset) {
+    if (md.getParentRevisions().size() > 1) {
+      //don't ignore merge commits
+      md.setCanBeIgnored(false);
+    } else if (cset.getModifiedFiles().isEmpty()) {
+      //don't ignore empty commits
+      md.setCanBeIgnored(false);
+    }
+  }
+
+
+  @NotNull
+  public static List<VcsChange> toVcsChanges(@NotNull OperationContext ctx,
+                                             @NotNull List<FileStatus> modifiedFiles,
+                                             @NotNull String prevVer,
+                                             @NotNull String curVer,
+                                             @NotNull CheckoutRules rules) {
+    final List<VcsChange> files = new ArrayList<VcsChange>(0);
+    for (FileStatus mf : modifiedFiles) {
+      if (rules.map(mf.getPath()) == null) continue;
+
+      final String normalizedPath = PathUtil.normalizeSeparator(mf.getPath());
+      final String path = ctx.getStringFromPool(normalizedPath);
+      files.add(new VcsChange(getChangeType(mf.getStatus()), mf.getStatus().getName(), path, path, prevVer, curVer));
+    }
+
+    if (files.isEmpty()) return emptyList();
+    return files;
+  }
+
+  @NotNull
+  private static VcsChangeInfo.Type getChangeType(final Status status) {
+    switch (status) {
+      case ADDED:
+        return VcsChangeInfo.Type.ADDED;
+      case MODIFIED:
+        return VcsChangeInfo.Type.CHANGED;
+      case REMOVED:
+        return VcsChangeInfo.Type.REMOVED;
+      default:
+        Loggers.VCS.warn("Unable to convert status: " + status + " to VCS change type");
+        return VcsChangeInfo.Type.NOT_CHANGED;
+    }
+  }
+}