Merge changes from topic "migrate-drafts-2.15" into stable-2.15

* changes:
  Schema_159: Don't set closed changes as WIP/private
  Change default of migrating draft changes to WIP, not private
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_159.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_159.java
index 3bb0e98..f97453e 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_159.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_159.java
@@ -35,26 +35,32 @@
 
   @Override
   protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException {
-    DraftWorkflowMigrationStrategy strategy = DraftWorkflowMigrationStrategy.PRIVATE;
-    if (ui.yesno(
-        false, "Migrate draft changes to work-in-progress changes (default is private)?")) {
-      strategy = DraftWorkflowMigrationStrategy.WORK_IN_PROGRESS;
+    DraftWorkflowMigrationStrategy strategy = DraftWorkflowMigrationStrategy.WORK_IN_PROGRESS;
+    if (ui.yesno(false, "Migrate draft changes to private changes (default is work-in-progress)")) {
+      strategy = DraftWorkflowMigrationStrategy.PRIVATE;
     }
     ui.message(
         String.format("Replace draft changes with %s changes ...", strategy.name().toLowerCase()));
     try (StatementExecutor e = newExecutor(db)) {
       String column =
           strategy == DraftWorkflowMigrationStrategy.PRIVATE ? "is_private" : "work_in_progress";
-      // Mark changes private/wip if changes have status draft or
-      // if they have any draft patch sets.
+      // Mark changes private/WIP and NEW if either:
+      // * they have status DRAFT
+      // * they have status NEW and have any draft patch sets
       e.execute(
           String.format(
-              "UPDATE changes SET %s = 'Y', created_on = created_on WHERE status = 'd' OR "
-                  + "EXISTS (SELECT * FROM patch_sets WHERE "
-                  + "patch_sets.change_id = changes.change_id AND patch_sets.draft = 'Y')",
+              "UPDATE changes "
+                  + "SET %s = 'Y', "
+                  + "    status = 'n', "
+                  + "    created_on = created_on "
+                  + "WHERE status = 'd' "
+                  + "  OR (status = 'n' "
+                  + "      AND EXISTS "
+                  + "        (SELECT * "
+                  + "         FROM patch_sets "
+                  + "         WHERE patch_sets.change_id = changes.change_id "
+                  + "           AND patch_sets.draft = 'Y')) ",
               column));
-      // Change change status from draft to new.
-      e.execute("UPDATE changes SET status = 'n', created_on = created_on WHERE status = 'd'");
     }
     ui.message("done");
   }