You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2015/12/16 20:26:56 UTC

sqoop git commit: SQOOP-2735: Sqoop2: Use job name in MSubmission

Repository: sqoop
Updated Branches:
  refs/heads/sqoop2 060be9049 -> 0ab7c05e1


SQOOP-2735: Sqoop2: Use job name in MSubmission

(Colin Ma via Jarek Jarcec Cecho)


Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/0ab7c05e
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/0ab7c05e
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/0ab7c05e

Branch: refs/heads/sqoop2
Commit: 0ab7c05e114d40903abe982ff9f2d59f1452d2f1
Parents: 060be90
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Wed Dec 16 20:26:15 2015 +0100
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Wed Dec 16 20:26:15 2015 +0100

----------------------------------------------------------------------
 .../org/apache/sqoop/json/SubmissionBean.java   | 13 ++-------
 .../org/apache/sqoop/model/MSubmission.java     | 30 ++++++++++----------
 .../apache/sqoop/json/TestSubmissionBean.java   | 12 ++++----
 .../org/apache/sqoop/driver/JobManager.java     | 21 +++-----------
 .../org/apache/sqoop/driver/TestJobManager.java | 12 ++++----
 .../common/CommonRepositoryHandler.java         | 23 +++++++++++++--
 ...RepositoryInsertUpdateDeleteSelectQuery.java | 24 ++++++++++++++--
 .../derby/TestSubmissionHandling.java           |  8 +++---
 .../repository/mysql/MySqlTestCase.java         |  2 +-
 .../mysql/TestSubmissionHandling.java           |  8 +++---
 .../postgresql/PostgresqlTestCase.java          |  2 +-
 .../postgresql/TestSubmissionHandling.java      |  8 +++---
 .../authorization/AuthorizationEngine.java      |  3 +-
 .../apache/sqoop/handler/JobRequestHandler.java |  2 +-
 .../sqoop/shell/ShowSubmissionFunction.java     |  4 +--
 .../org/apache/sqoop/shell/core/Constants.java  |  8 +++---
 .../sqoop/shell/utils/SubmissionDisplayer.java  |  4 +--
 .../main/resources/shell-resource.properties    |  4 +--
 .../org/apache/sqoop/shell/TestShowCommand.java | 12 ++++----
 19 files changed, 106 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java b/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
index e6b300d..4040688 100644
--- a/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
+++ b/common/src/main/java/org/apache/sqoop/json/SubmissionBean.java
@@ -44,9 +44,7 @@ import org.json.simple.JSONObject;
 public class SubmissionBean implements JsonBean {
 
   private static final String SUBMISSION = "submission";
-  @Deprecated
-  private static final String JOB = "job";
-  private static final String JOB_ID = "job-id";
+  private static final String JOB_NAME = "job-name";
   private static final String CREATION_USER = "creation-user";
   private static final String CREATION_DATE = "creation-date";
   private static final String LAST_UPDATE_USER = "last-udpate-user";
@@ -104,8 +102,7 @@ public class SubmissionBean implements JsonBean {
   private JSONObject extractSubmission(MSubmission submission) {
     JSONObject object = new JSONObject();
 
-    object.put(JOB, submission.getJobId());
-    object.put(JOB_ID, submission.getJobId());
+    object.put(JOB_NAME, submission.getJobName());
     object.put(STATUS, submission.getStatus().name());
     object.put(PROGRESS, submission.getProgress());
 
@@ -176,11 +173,7 @@ public class SubmissionBean implements JsonBean {
   private MSubmission restoreSubmission(Object obj) {
     JSONObject object = (JSONObject) obj;
     MSubmission submission = new MSubmission();
-    Long jobId = JSONUtils.getLong(object, JOB_ID);
-    if (jobId == null) {
-      jobId = JSONUtils.getLong(object, JOB);
-    }
-    submission.setJobId(jobId);
+    submission.setJobName(JSONUtils.getString(object, JOB_NAME));
     submission.setStatus(SubmissionStatus.valueOf(JSONUtils.getString(object, STATUS)));
     submission.setProgress(JSONUtils.getDouble(object, PROGRESS));
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/common/src/main/java/org/apache/sqoop/model/MSubmission.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/model/MSubmission.java b/common/src/main/java/org/apache/sqoop/model/MSubmission.java
index 11110ae..44250c3 100644
--- a/common/src/main/java/org/apache/sqoop/model/MSubmission.java
+++ b/common/src/main/java/org/apache/sqoop/model/MSubmission.java
@@ -37,11 +37,11 @@ import java.util.Date;
 public class MSubmission extends MAccountableEntity {
 
   /**
-   * Job id that this submission object belongs.
+   * Job name that this submission object belongs.
    *
    * This property is required and will be always present.
    */
-  private long jobId;
+  private String jobName;
 
   /**
    * Last known submission status.
@@ -122,36 +122,36 @@ public class MSubmission extends MAccountableEntity {
     progress = -1;
   }
 
-  public MSubmission(long jobId, Date creationDate, SubmissionStatus status) {
+  public MSubmission(String jobName, Date creationDate, SubmissionStatus status) {
     this();
-    this.jobId = jobId;
+    this.jobName = jobName;
     this.status = status;
     setCreationDate(creationDate);
   }
 
-  public MSubmission(long jobId) {
-    this(jobId, new Date(), SubmissionStatus.BOOTING);
+  public MSubmission(String jobName) {
+    this(jobName, new Date(), SubmissionStatus.BOOTING);
   }
 
-  public MSubmission(long jobId, Date creationDate, SubmissionStatus status,
+  public MSubmission(String jobName, Date creationDate, SubmissionStatus status,
                      String externalId) {
-    this(jobId, creationDate, status);
+    this(jobName, creationDate, status);
     this.externalJobId = externalId;
   }
 
-  public MSubmission(long jobId, Date creationDate, SubmissionStatus status,
+  public MSubmission(String jobName, Date creationDate, SubmissionStatus status,
                      String externalId, String externalLink, Counters counters){
-    this(jobId, creationDate, status, externalId);
+    this(jobName, creationDate, status, externalId);
     this.externalLink = externalLink;
     this.counters = counters;
   }
 
-  public void setJobId(long jobId) {
-    this.jobId = jobId;
+  public String getJobName() {
+    return jobName;
   }
 
-  public long getJobId() {
-    return jobId;
+  public void setJobName(String jobName) {
+    this.jobName = jobName;
   }
 
   public void setStatus(SubmissionStatus status) {
@@ -247,7 +247,7 @@ public class MSubmission extends MAccountableEntity {
 
   @Override
   public String toString() {
-    return "MSubmission [jobId=" + jobId + ", status=" + status + ", externalId=" + externalJobId
+    return "MSubmission [jobName=" + jobName + ", status=" + status + ", externalId=" + externalJobId
         + ", progress=" + progress + ", counters=" + counters + ", externalLink=" + externalLink
         + ", error=" + error + ", fromSchema=" + fromSchema + ", toSchema=" + toSchema + "]";
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/common/src/test/java/org/apache/sqoop/json/TestSubmissionBean.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/sqoop/json/TestSubmissionBean.java b/common/src/test/java/org/apache/sqoop/json/TestSubmissionBean.java
index 1fc2ae2..204c1de 100644
--- a/common/src/test/java/org/apache/sqoop/json/TestSubmissionBean.java
+++ b/common/src/test/java/org/apache/sqoop/json/TestSubmissionBean.java
@@ -54,24 +54,24 @@ public class TestSubmissionBean {
   @Test
   public void testTransferJobId() {
     MSubmission source = new MSubmission();
-    source.setJobId(666);
+    source.setJobName("jobName1");
 
     MSubmission target = transfer(source);
-    assertEquals(666, target.getJobId());
+    assertEquals("jobName1", target.getJobName());
 
     List<MSubmission> sources = new ArrayList<MSubmission>();
     MSubmission sourcex = new MSubmission();
-    sourcex.setJobId(777);
+    sourcex.setJobName("jobName2");
     sources.add(sourcex);
     MSubmission sourcey = new MSubmission();
-    sourcey.setJobId(888);
+    sourcey.setJobName("jobName3");
     sources.add(sourcey);
 
     List<MSubmission> targets = transfer(sources);
     assertNotNull(targets.get(0));
-    assertEquals(777, targets.get(0).getJobId());
+    assertEquals("jobName2", targets.get(0).getJobName());
     assertNotNull(targets.get(1));
-    assertEquals(888, targets.get(1).getJobId());
+    assertEquals("jobName3", targets.get(1).getJobName());
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/core/src/main/java/org/apache/sqoop/driver/JobManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/sqoop/driver/JobManager.java b/core/src/main/java/org/apache/sqoop/driver/JobManager.java
index 4f4b9d3..d3a750e 100644
--- a/core/src/main/java/org/apache/sqoop/driver/JobManager.java
+++ b/core/src/main/java/org/apache/sqoop/driver/JobManager.java
@@ -311,7 +311,7 @@ public class JobManager implements Reconfigurable {
     if (!job.getEnabled()) {
       throw new SqoopException(DriverError.DRIVER_0009, "Job: " + jobName);
     }
-    MSubmission mSubmission = createJobSubmission(ctx, job.getPersistenceId());
+    MSubmission mSubmission = createJobSubmission(ctx, job.getName());
     JobRequest jobRequest = createJobRequest(mSubmission, job);
     // Bootstrap job to execute in the configured execution engine
     prepareJob(jobRequest);
@@ -463,8 +463,8 @@ public class JobManager implements Reconfigurable {
     }
   }
 
-  MSubmission createJobSubmission(HttpEventContext ctx, long jobId) {
-    MSubmission summary = new MSubmission(jobId);
+  MSubmission createJobSubmission(HttpEventContext ctx, String jobName) {
+    MSubmission summary = new MSubmission(jobName);
     summary.setCreationUser(ctx.getUsername());
     summary.setLastUpdateUser(ctx.getUsername());
     return summary;
@@ -496,19 +496,6 @@ public class JobManager implements Reconfigurable {
     return link;
   }
 
-  // TODO: this method should be removed when MSubmission link job with jobName
-  MJob getJob(long jobId) {
-    MJob job = RepositoryManager.getInstance().getRepository().findJob(jobId);
-    if (job == null) {
-      throw new SqoopException(DriverError.DRIVER_0004, "Unknown job id: " + jobId);
-    }
-
-    if (!job.getEnabled()) {
-      throw new SqoopException(DriverError.DRIVER_0009, "Job: " + job.getName());
-    }
-    return job;
-  }
-
   MJob getJob(String jobName) {
     MJob job = RepositoryManager.getInstance().getRepository().findJob(jobName);
     if (job == null) {
@@ -580,7 +567,7 @@ public class JobManager implements Reconfigurable {
 
   void invokeDestroyerOnJobSuccess(MSubmission submission) {
     try {
-      MJob job = getJob(submission.getJobId());
+      MJob job = getJob(submission.getJobName());
 
       SqoopConnector fromConnector = getSqoopConnector(job.getFromConnectorName());
       SqoopConnector toConnector = getSqoopConnector(job.getToConnectorName());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/core/src/test/java/org/apache/sqoop/driver/TestJobManager.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/sqoop/driver/TestJobManager.java b/core/src/test/java/org/apache/sqoop/driver/TestJobManager.java
index 8da759e..ee88ddc 100644
--- a/core/src/test/java/org/apache/sqoop/driver/TestJobManager.java
+++ b/core/src/test/java/org/apache/sqoop/driver/TestJobManager.java
@@ -74,7 +74,7 @@ public class TestJobManager {
 
     HttpEventContext testCtx = new HttpEventContext();
     testCtx.setUsername("testUser");
-    MSubmission jobSubmission = jobManager.createJobSubmission(testCtx, 1234L);
+    MSubmission jobSubmission = jobManager.createJobSubmission(testCtx, "jobName");
     assertEquals(jobSubmission.getCreationUser(), "testUser");
     assertEquals(jobSubmission.getLastUpdateUser(), "testUser");
   }
@@ -173,17 +173,15 @@ public class TestJobManager {
 
   @Test
   public void testUnknownJob() {
-    long testJobId = 555l;
-    SqoopException exception = new SqoopException(DriverError.DRIVER_0004, "Unknown job id: "
-        + testJobId);
+    SqoopException exception = new SqoopException(DriverError.DRIVER_0004, "Unknown job name: testJobName");
     when(repositoryManagerMock.getRepository()).thenReturn(jdbcRepoMock);
-    when(jdbcRepoMock.findJob(testJobId)).thenReturn(null);
+    when(jdbcRepoMock.findJob("testJobName")).thenReturn(null);
     try {
-      jobManager.getJob(testJobId);
+      jobManager.getJob("testJobName");
     } catch (SqoopException ex) {
       assertEquals(ex.getMessage(), exception.getMessage());
       verify(repositoryManagerMock, times(1)).getRepository();
-      verify(jdbcRepoMock, times(1)).findJob(testJobId);
+      verify(jdbcRepoMock, times(1)).findJob("testJobName");
     }
   }
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
----------------------------------------------------------------------
diff --git a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
index 13d8242..efbd533 100644
--- a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
+++ b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryHandler.java
@@ -636,7 +636,23 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler {
       }
     } catch (SQLException ex) {
       logException(ex);
-      throw new SqoopException(CommonRepositoryError.COMMON_0036, ex);
+      throw new SqoopException(CommonRepositoryError.COMMON_0000, ex);
+    }
+  }
+
+  public Long findJobIdByName(String jobName, Connection conn) {
+    try (PreparedStatement stmt = conn.prepareStatement(crudQueries.getStmtSelectJobIdByName())) {
+      stmt.setString(1,jobName);
+      try (ResultSet rs = stmt.executeQuery()) {
+        if (rs.next()) {
+          return rs.getLong(1);
+        } else {
+          throw new SqoopException(CommonRepositoryError.COMMON_0028);
+        }
+      }
+    } catch (SQLException ex) {
+      logException(ex);
+      throw new SqoopException(CommonRepositoryError.COMMON_0000, ex);
     }
   }
 
@@ -888,9 +904,10 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler {
   @Override
   public void createSubmission(MSubmission submission, Connection conn) {
     int result;
+    Long jobId = findJobIdByName(submission.getJobName(), conn);
     try (PreparedStatement stmt = conn.prepareStatement(crudQueries.getStmtInsertSubmission(),
           Statement.RETURN_GENERATED_KEYS)) {
-      stmt.setLong(1, submission.getJobId());
+      stmt.setLong(1, jobId);
       stmt.setString(2, submission.getStatus().name());
       stmt.setString(3, submission.getCreationUser());
       stmt.setTimestamp(4, new Timestamp(submission.getCreationDate().getTime()));
@@ -1367,7 +1384,7 @@ public abstract class CommonRepositoryHandler extends JdbcRepositoryHandler {
     MSubmission submission = new MSubmission();
 
     submission.setPersistenceId(rs.getLong(1));
-    submission.setJobId(rs.getLong(2));
+    submission.setJobName(rs.getString(12));
     submission.setStatus(SubmissionStatus.valueOf(rs.getString(3)));
     submission.setCreationUser(rs.getString(4));
     submission.setCreationDate(rs.getTimestamp(5));

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java
----------------------------------------------------------------------
diff --git a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java
index fa5a1c1..e1e23e2 100644
--- a/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java
+++ b/repository/repository-common/src/main/java/org/apache/sqoop/repository/common/CommonRepositoryInsertUpdateDeleteSelectQuery.java
@@ -536,8 +536,11 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery {
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_EXTERNAL_ID) + ", "
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_EXTERNAL_LINK) + ", "
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_SUMMARY) + ", "
-          + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_DETAILS)
+          + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_DETAILS) + ", "
+          + CommonRepoUtils.escapeColumnName(COLUMN_SQB_NAME)
           + " FROM " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_SUBMISSION_NAME)
+          + " INNER JOIN " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_JOB_NAME)
+          + " ON " + CommonRepoUtils.escapeColumnName(COLUMN_SQS_JOB) + " = " + CommonRepoUtils.escapeColumnName(COLUMN_SQB_ID)
           + " WHERE " + CommonRepoUtils.escapeColumnName(COLUMN_SQS_STATUS) + " = ?";
 
   // DML : Get all submissions
@@ -553,8 +556,11 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery {
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_EXTERNAL_ID) + ", "
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_EXTERNAL_LINK) + ", "
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_SUMMARY) + ", "
-          + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_DETAILS)
+          + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_DETAILS) + ", "
+          + CommonRepoUtils.escapeColumnName(COLUMN_SQB_NAME)
           + " FROM " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_SUBMISSION_NAME)
+          + " INNER JOIN " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_JOB_NAME)
+          + " ON " + CommonRepoUtils.escapeColumnName(COLUMN_SQS_JOB) + " = " + CommonRepoUtils.escapeColumnName(COLUMN_SQB_ID)
           + " ORDER BY " + CommonRepoUtils.escapeColumnName(COLUMN_SQS_UPDATE_DATE) + " DESC";
 
   // DML: Get submissions for a job
@@ -570,7 +576,8 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery {
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_EXTERNAL_ID) + ", "
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_EXTERNAL_LINK) + ", "
           + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_SUMMARY) + ", "
-          + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_DETAILS)
+          + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ERROR_DETAILS) + ", "
+          + CommonRepoUtils.escapeColumnName(COLUMN_SQB_NAME)
           + " FROM " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_SUBMISSION_NAME)
           + " INNER JOIN " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_JOB_NAME)
           + " ON " + CommonRepoUtils.escapeColumnName(COLUMN_SQS_JOB) + " = " + CommonRepoUtils.escapeColumnName(COLUMN_SQB_ID)
@@ -578,6 +585,13 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery {
           + " ORDER BY " + CommonRepoUtils.escapeColumnName(COLUMN_SQS_UPDATE_DATE) + "DESC ,"
             + CommonRepoUtils.escapeColumnName(COLUMN_SQS_ID) + " DESC";
 
+  // DML Select link id by name
+  private static final String STMT_SELECT_JOB_ID_BY_NAME =
+      "SELECT "
+          + CommonRepoUtils.escapeColumnName(COLUMN_SQB_ID)
+          + " FROM " + CommonRepoUtils.getTableName(SCHEMA_SQOOP, TABLE_SQ_JOB_NAME)
+          + " WHERE " + CommonRepoUtils.escapeColumnName(COLUMN_SQB_NAME) + " = ?";
+
   // DML: Select context type
   private static final String STMT_SELECT_CONTEXT_TYPE =
       "SELECT "
@@ -811,6 +825,10 @@ public class CommonRepositoryInsertUpdateDeleteSelectQuery {
 
   public String getStmtSelectLinkIdByName() {return STMT_SELECT_LINK_ID_BY_NAME;}
 
+  public String getStmtSelectJobIdByName() {
+    return STMT_SELECT_JOB_ID_BY_NAME;
+  }
+
   public String getStmtSelectLinkAll() {
     return STMT_SELECT_LINK_ALL;
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestSubmissionHandling.java
----------------------------------------------------------------------
diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestSubmissionHandling.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestSubmissionHandling.java
index 621d4e1..e2c3eae 100644
--- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestSubmissionHandling.java
+++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestSubmissionHandling.java
@@ -117,7 +117,7 @@ public class TestSubmissionHandling extends DerbyTestCase {
     driverContext.setString("driver2", "value2");
 
     MSubmission submission = new MSubmission();
-    submission.setJobId(1);
+    submission.setJobName("JA0");
     submission.setStatus(SubmissionStatus.RUNNING);
     submission.setCreationDate(creationDate);
     submission.setLastUpdateDate(updateDate);
@@ -141,7 +141,7 @@ public class TestSubmissionHandling extends DerbyTestCase {
 
     submission = submissions.get(0);
 
-    assertEquals(1, submission.getJobId());
+    assertEquals("JA0", submission.getJobName());
     assertEquals(SubmissionStatus.RUNNING, submission.getStatus());
     assertEquals(creationDate.getTime(), submission.getCreationDate().getTime());
     assertEquals(updateDate.getTime(), submission.getLastUpdateDate().getTime());
@@ -188,7 +188,7 @@ public class TestSubmissionHandling extends DerbyTestCase {
     assertEquals(submission.getDriverContext().getString("driver2"), "value2");
 
     // Let's create second (simpler) connection
-    submission = new MSubmission(1, new Date(), SubmissionStatus.SUCCEEDED, "job-x");
+    submission = new MSubmission("JA0", new Date(), SubmissionStatus.SUCCEEDED, "job-x");
     handler.createSubmission(submission, getDerbyDatabaseConnection());
 
     assertEquals(2, submission.getPersistenceId());
@@ -229,7 +229,7 @@ public class TestSubmissionHandling extends DerbyTestCase {
         + " it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happe"
         + "nsYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happens";
     MSubmission submission = new MSubmission();
-    submission.setJobId(1);
+    submission.setJobName("JA0");
     submission.setStatus(SubmissionStatus.RUNNING);
     submission.setCreationDate(new Date());
     submission.setLastUpdateDate(new Date());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
----------------------------------------------------------------------
diff --git a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
index ede930f..1d4ceb7 100644
--- a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
+++ b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/MySqlTestCase.java
@@ -117,7 +117,7 @@ abstract public class MySqlTestCase {
 
   protected MSubmission getSubmission(MJob job,
       SubmissionStatus submissionStatus) {
-    MSubmission submission = new MSubmission(job.getPersistenceId(),
+    MSubmission submission = new MSubmission(job.getName(),
         new Date(), submissionStatus);
     fillSubmission(submission);
     return submission;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestSubmissionHandling.java
----------------------------------------------------------------------
diff --git a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestSubmissionHandling.java b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestSubmissionHandling.java
index b4f34b6..b9a1392 100644
--- a/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestSubmissionHandling.java
+++ b/repository/repository-mysql/src/test/java/org/apache/sqoop/integration/repository/mysql/TestSubmissionHandling.java
@@ -157,7 +157,7 @@ public class TestSubmissionHandling extends MySqlTestCase {
     driverContext.setString("driver2", "value2");
 
     MSubmission submission = new MSubmission();
-    submission.setJobId(1);
+    submission.setJobName(JOB_A_NAME);
     submission.setStatus(SubmissionStatus.RUNNING);
     submission.setCreationDate(creationDate);
     submission.setLastUpdateDate(updateDate);
@@ -183,7 +183,7 @@ public class TestSubmissionHandling extends MySqlTestCase {
 
     submission = submissions.get(0);
 
-    assertEquals(1, submission.getJobId());
+    assertEquals(JOB_A_NAME, submission.getJobName());
     assertEquals(SubmissionStatus.RUNNING, submission.getStatus());
     long exceptedData = creationDate.getTime();
     long actualData = submission.getCreationDate().getTime();
@@ -240,7 +240,7 @@ public class TestSubmissionHandling extends MySqlTestCase {
     assertEquals(submission.getDriverContext().getString("driver2"), "value2");
 
     // Let's create second (simpler) connection
-    submission = new MSubmission(1, new Date(), SubmissionStatus.SUCCEEDED,
+    submission = new MSubmission(JOB_A_NAME, new Date(), SubmissionStatus.SUCCEEDED,
         "job-x");
     handler.createSubmission(submission, provider.getConnection());
 
@@ -285,7 +285,7 @@ public class TestSubmissionHandling extends MySqlTestCase {
         + " it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happe"
         + "nsYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happens";
     MSubmission submission = new MSubmission();
-    submission.setJobId(1);
+    submission.setJobName(JOB_A_NAME);
     submission.setStatus(SubmissionStatus.RUNNING);
     submission.setCreationDate(new Date());
     submission.setLastUpdateDate(new Date());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
----------------------------------------------------------------------
diff --git a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
index 1bab548..2311f8b 100644
--- a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
+++ b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/PostgresqlTestCase.java
@@ -106,7 +106,7 @@ abstract public class PostgresqlTestCase {
   }
 
   protected MSubmission getSubmission(MJob job, SubmissionStatus submissionStatus) {
-    MSubmission submission = new MSubmission(job.getPersistenceId(), new Date(), submissionStatus);
+    MSubmission submission = new MSubmission(job.getName(), new Date(), submissionStatus);
     fillSubmission(submission);
     return submission;
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestSubmissionHandling.java
----------------------------------------------------------------------
diff --git a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestSubmissionHandling.java b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestSubmissionHandling.java
index cd3367e..5a5c70e 100644
--- a/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestSubmissionHandling.java
+++ b/repository/repository-postgresql/src/test/java/org/apache/sqoop/integration/repository/postgresql/TestSubmissionHandling.java
@@ -152,7 +152,7 @@ public class TestSubmissionHandling extends PostgresqlTestCase {
     driverContext.setString("driver2", "value2");
 
     MSubmission submission = new MSubmission();
-    submission.setJobId(1);
+    submission.setJobName(JOB_A_NAME);
     submission.setStatus(SubmissionStatus.RUNNING);
     submission.setCreationDate(creationDate);
     submission.setLastUpdateDate(updateDate);
@@ -177,7 +177,7 @@ public class TestSubmissionHandling extends PostgresqlTestCase {
 
     submission = submissions.get(0);
 
-    assertEquals(1, submission.getJobId());
+    assertEquals(JOB_A_NAME, submission.getJobName());
     assertEquals(SubmissionStatus.RUNNING, submission.getStatus());
     assertEquals(creationDate, submission.getCreationDate());
     assertEquals(updateDate, submission.getLastUpdateDate());
@@ -224,7 +224,7 @@ public class TestSubmissionHandling extends PostgresqlTestCase {
     assertEquals(submission.getDriverContext().getString("driver2"), "value2");
 
     // Let's create second (simpler) connection
-    submission = new MSubmission(1, new Date(), SubmissionStatus.SUCCEEDED, "job-x");
+    submission = new MSubmission(JOB_A_NAME, new Date(), SubmissionStatus.SUCCEEDED, "job-x");
     handler.createSubmission(submission, provider.getConnection());
 
     assertEquals(2, submission.getPersistenceId());
@@ -265,7 +265,7 @@ public class TestSubmissionHandling extends PostgresqlTestCase {
         + " it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happe"
         + "nsYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happensYeah it happens";
     MSubmission submission = new MSubmission();
-    submission.setJobId(1);
+    submission.setJobName(JOB_A_NAME);
     submission.setStatus(SubmissionStatus.RUNNING);
     submission.setCreationDate(new Date());
     submission.setLastUpdateDate(new Date());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
----------------------------------------------------------------------
diff --git a/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java b/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
index e7b7dac..091d1c4 100644
--- a/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
+++ b/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
@@ -149,8 +149,7 @@ public class AuthorizationEngine {
       @Override
       public boolean apply(MSubmission input) {
         try {
-          String jobName = getResourceName(MResource.TYPE.JOB, input.getJobId());
-          checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.READ));
+          checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, input.getJobName(), MPrivilege.ACTION.READ));
           // add valid submission
           return true;
         } catch (RuntimeException e) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java b/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
index 01516ed..7fa6a3b 100644
--- a/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
@@ -407,7 +407,7 @@ public class JobRequestHandler implements RequestHandler {
         ctx.getRequest().getRemoteAddr(), "status", "job", jobName);
     MSubmission submission = JobManager.getInstance().status(jobName);
     if (submission == null) {
-      submission = new MSubmission(job.getPersistenceId(), new Date(), SubmissionStatus.NEVER_EXECUTED);
+      submission = new MSubmission(job.getName(), new Date(), SubmissionStatus.NEVER_EXECUTED);
     }
 
     return new SubmissionBean(submission);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/shell/src/main/java/org/apache/sqoop/shell/ShowSubmissionFunction.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/sqoop/shell/ShowSubmissionFunction.java b/shell/src/main/java/org/apache/sqoop/shell/ShowSubmissionFunction.java
index 45f3bdd..aeac76a 100644
--- a/shell/src/main/java/org/apache/sqoop/shell/ShowSubmissionFunction.java
+++ b/shell/src/main/java/org/apache/sqoop/shell/ShowSubmissionFunction.java
@@ -74,7 +74,7 @@ public class ShowSubmissionFunction extends SqoopFunction {
     }
 
     List<String> header = new LinkedList<String>();
-    header.add(resourceString(Constants.RES_TABLE_HEADER_JOB_ID));
+    header.add(resourceString(Constants.RES_TABLE_HEADER_JOB_NAME));
     header.add(resourceString(Constants.RES_TABLE_HEADER_EXTERNAL_ID));
     header.add(resourceString(Constants.RES_TABLE_HEADER_STATUS));
     header.add(resourceString(Constants.RES_TABLE_HEADER_DATE));
@@ -85,7 +85,7 @@ public class ShowSubmissionFunction extends SqoopFunction {
     List<String> dates = new LinkedList<String>();
 
     for (MSubmission submission : submissions) {
-      jids.add(String.valueOf(submission.getJobId()));
+      jids.add(String.valueOf(submission.getJobName()));
       eids.add(String.valueOf(submission.getExternalJobId()));
       status.add(submission.getStatus().toString());
       dates.add(submission.getLastUpdateDate().toString());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/shell/src/main/java/org/apache/sqoop/shell/core/Constants.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/sqoop/shell/core/Constants.java b/shell/src/main/java/org/apache/sqoop/shell/core/Constants.java
index c516ea7..9c57a2e 100644
--- a/shell/src/main/java/org/apache/sqoop/shell/core/Constants.java
+++ b/shell/src/main/java/org/apache/sqoop/shell/core/Constants.java
@@ -369,8 +369,8 @@ public class Constants {
       "table.header.connector.from";
   public static final String RES_TABLE_HEADER_TO_CONNECTOR =
       "table.header.connector.to";
-  public static final String RES_TABLE_HEADER_JOB_ID =
-      "table.header.jid";
+  public static final String RES_TABLE_HEADER_JOB_NAME =
+      "table.header.job.name";
   public static final String RES_TABLE_HEADER_EXTERNAL_ID =
       "table.header.eid";
   public static final String RES_TABLE_HEADER_STATUS =
@@ -430,8 +430,8 @@ public class Constants {
 
   public static final String RES_SUBMISSION_SUBMISSION_DETAIL =
       "submission.submission_detail";
-  public static final String RES_SUBMISSION_JOB_ID =
-      "submission.job_id";
+  public static final String RES_SUBMISSION_JOB_NAME =
+      "submission.job_name";
   public static final String RES_SUBMISSION_CREATION_USER =
       "submission.creation_user";
   public static final String RES_SUBMISSION_CREATION_DATE =

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/shell/src/main/java/org/apache/sqoop/shell/utils/SubmissionDisplayer.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/sqoop/shell/utils/SubmissionDisplayer.java b/shell/src/main/java/org/apache/sqoop/shell/utils/SubmissionDisplayer.java
index 3a78371..8be3715 100644
--- a/shell/src/main/java/org/apache/sqoop/shell/utils/SubmissionDisplayer.java
+++ b/shell/src/main/java/org/apache/sqoop/shell/utils/SubmissionDisplayer.java
@@ -43,8 +43,8 @@ public final class SubmissionDisplayer {
     SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
     println("@|bold "+ resourceString(Constants.RES_SUBMISSION_SUBMISSION_DETAIL) +"|@");
 
-    print(resourceString(Constants.RES_SUBMISSION_JOB_ID)+": ");
-    println(submission.getJobId());
+    print(resourceString(Constants.RES_SUBMISSION_JOB_NAME)+": ");
+    println(submission.getJobName());
 
     print(resourceString(Constants.RES_SUBMISSION_SERVER_URL)+": ");
     println(getServerUrl());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/shell/src/main/resources/shell-resource.properties
----------------------------------------------------------------------
diff --git a/shell/src/main/resources/shell-resource.properties b/shell/src/main/resources/shell-resource.properties
index df3e7f1..630c31d 100644
--- a/shell/src/main/resources/shell-resource.properties
+++ b/shell/src/main/resources/shell-resource.properties
@@ -216,7 +216,7 @@ table.header.supported_directions = Supported Directions
 table.header.connector.name = Connector Name
 table.header.connector.from = From Connector
 table.header.connector.to = To Connector
-table.header.jid = Job Id
+table.header.job.name = Job Name
 table.header.eid = External Id
 table.header.status = Status
 table.header.date = Last Update Date
@@ -249,7 +249,7 @@ config.displayer.input_sensitive = This input is sensitive
 config.displayer.warning_message = There were warnings while create or update, but saved successfully.
 
 submission.submission_detail = Submission details
-submission.job_id = Job ID
+submission.job_name = Job Name
 submission.creation_user = Created by
 submission.creation_date = Creation date
 submission.update_user = Lastly updated by

http://git-wip-us.apache.org/repos/asf/sqoop/blob/0ab7c05e/shell/src/test/java/org/apache/sqoop/shell/TestShowCommand.java
----------------------------------------------------------------------
diff --git a/shell/src/test/java/org/apache/sqoop/shell/TestShowCommand.java b/shell/src/test/java/org/apache/sqoop/shell/TestShowCommand.java
index 000f518..8f8d3db 100644
--- a/shell/src/test/java/org/apache/sqoop/shell/TestShowCommand.java
+++ b/shell/src/test/java/org/apache/sqoop/shell/TestShowCommand.java
@@ -278,12 +278,12 @@ public class TestShowCommand {
 
   @Test
   public void testShowSubmission() {
-    when(client.getSubmissions()).thenReturn(Arrays.asList(new MSubmission(1L)));
-    when(client.getSubmissionsForJob(any(String.class))).thenReturn(Arrays.asList(new MSubmission(1L)));
+    when(client.getSubmissions()).thenReturn(Arrays.asList(new MSubmission("jobName")));
+    when(client.getSubmissionsForJob(any(String.class))).thenReturn(Arrays.asList(new MSubmission("jobName")));
 
-    // show submission -details -name jobName
+    // show submission -details -job jobName
     out.reset();
-    Status status = (Status) showCmd.execute(Arrays.asList(Constants.FN_SUBMISSION, "-detail", "-name", "jobName"));
+    Status status = (Status) showCmd.execute(Arrays.asList(Constants.FN_SUBMISSION, "-detail", "-job", "jobName"));
     Assert.assertTrue(status != null && status == Status.OK);
     String str = new String(out.toByteArray());
     Assert.assertTrue(str.contains("Submission details"));
@@ -300,7 +300,7 @@ public class TestShowCommand {
     status = (Status) showCmd.execute(Arrays.asList(Constants.FN_SUBMISSION, "-job", "jobName"));
     Assert.assertTrue(status != null && status == Status.OK);
     str = new String(out.toByteArray());
-    Assert.assertTrue(str.contains("Job Id"));
+    Assert.assertTrue(str.contains("Job Name"));
     Assert.assertTrue(str.contains("External Id"));
     Assert.assertTrue(str.contains("Status"));
     Assert.assertTrue(str.contains("Last Update Date"));
@@ -310,7 +310,7 @@ public class TestShowCommand {
     status = (Status) showCmd.execute(Arrays.asList(Constants.FN_SUBMISSION));
     Assert.assertTrue(status != null && status == Status.OK);
     str = new String(out.toByteArray());
-    Assert.assertTrue(str.contains("Job Id"));
+    Assert.assertTrue(str.contains("Job Name"));
     Assert.assertTrue(str.contains("External Id"));
     Assert.assertTrue(str.contains("Status"));
     Assert.assertTrue(str.contains("Last Update Date"));