コード例 #1
0
ファイル: TaskData.java プロジェクト: rcernich/jbpm
  @Override
  public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null) return false;
    if (!(obj instanceof TaskData)) return false;
    TaskData other = (TaskData) obj;

    if (actualOwner == null) {
      if (other.actualOwner != null) return false;
    } else if (!actualOwner.equals(other.actualOwner)) {
      return false;
    }

    if (createdBy == null) {
      if (other.createdBy != null) return false;
    } else if (!createdBy.equals(other.createdBy)) {
      return false;
    }

    if (createdOn == null) {
      if (other.createdOn != null) return false;
    } else if (createdOn.getTime() != other.createdOn.getTime()) return false;
    if (expirationTime == null) {
      if (other.expirationTime != null) return false;
    } else if (expirationTime.getTime() != other.expirationTime.getTime()) return false;
    if (skipable != other.skipable) return false;
    if (workItemId != other.workItemId) return false;
    if (status == null) {
      if (other.status != null) return false;
    } else if (!status.equals(other.status)) return false;
    if (previousStatus == null) {
      if (other.previousStatus != null) return false;
    } else if (!previousStatus.equals(other.previousStatus)) return false;
    if (activationTime == null) {
      if (other.activationTime != null) return false;
    } else if (activationTime.getTime() != other.activationTime.getTime()) return false;

    if (workItemId != other.workItemId) return false;

    if (documentAccessType == null) {
      if (other.documentAccessType != null) return false;
    } else if (!documentAccessType.equals(other.documentAccessType)) return false;

    if (documentContentId != other.documentContentId) return false;
    if (documentType == null) {
      if (other.documentType != null) return false;
    } else if (!documentType.equals(other.documentType)) return false;
    // I think this is OK!
    if (parentId != other.parentId) return false;

    return CollectionUtils.equals(attachments, other.attachments)
        && CollectionUtils.equals(comments, other.comments);
  }
コード例 #2
0
ファイル: TaskData.java プロジェクト: rcernich/jbpm
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((activationTime == null) ? 0 : activationTime.hashCode());
   result = prime * result + CollectionUtils.hashCode(attachments);
   result = prime * result + CollectionUtils.hashCode(comments);
   result = prime * result + ((createdOn == null) ? 0 : createdOn.hashCode());
   result = prime * result + ((expirationTime == null) ? 0 : expirationTime.hashCode());
   result = prime * result + (skipable ? 1231 : 1237);
   result = prime * result + ((status == null) ? 0 : status.hashCode());
   result = prime * result + ((previousStatus == null) ? 0 : previousStatus.hashCode());
   result = prime * result + ((workItemId == -1) ? 0 : (int) workItemId);
   // Should I add parentId to this hashCode?
   return result;
 }
コード例 #3
0
  public void testPeopleAssignmentQueries() {
    Map vars = new HashMap();
    vars.put("users", users);
    vars.put("groups", groups);

    Reader reader =
        new InputStreamReader(getClass().getResourceAsStream("../../QueryData_TasksOwned.mvel"));
    List<Task> tasks = (List<Task>) eval(reader, vars);
    for (Task task : tasks) {
      taskSession.addTask(task, null);
    }

    reader =
        new InputStreamReader(
            getClass().getResourceAsStream("../../QueryResults_PeopleAssignmentQuerries.mvel"));
    Map<String, List<TaskSummary>> expected = (Map<String, List<TaskSummary>>) eval(reader, vars);

    List<TaskSummary> actual =
        client.getTasksAssignedAsTaskInitiator(users.get("darth").getId(), "es_CL");
    assertEquals(1, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("darth"), actual));

    actual = client.getTasksAssignedAsBusinessAdministrator(users.get("steve").getId(), "es_CL");
    assertTrue(CollectionUtils.equals(expected.get("steve"), actual));

    actual = client.getTasksAssignedAsExcludedOwner(users.get("liz").getId(), "es_CL");
    assertEquals(2, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("liz"), actual));

    actual = client.getTasksAssignedAsPotentialOwner(users.get("bobba").getId(), "es_CL");
    assertEquals(3, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("bobba"), actual));

    actual = client.getTasksAssignedAsRecipient(users.get("sly").getId(), "es_CL");
    assertEquals(1, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("sly"), actual));
  }
コード例 #4
0
  @SuppressWarnings("unchecked")
  public void testTasksOwnedQueryWithI18N() throws Exception {
    Map<String, Object> vars = new HashMap();
    vars.put("users", users);
    vars.put("groups", groups);

    // Reader reader;
    Reader reader =
        new InputStreamReader(getClass().getResourceAsStream("../../QueryData_TasksOwned.mvel"));
    List<Task> tasks = (List<Task>) eval(reader, vars);
    for (Task task : tasks) {
      client.addTask(task, null);
    }

    // Test UK I18N
    reader =
        new InputStreamReader(
            getClass().getResourceAsStream("../../QueryResults_TasksOwnedInEnglish.mvel"));
    Map<String, List<TaskSummary>> expected = (Map<String, List<TaskSummary>>) eval(reader, vars);

    List<TaskSummary> actual = client.getTasksOwned(users.get("peter").getId(), "es_CL");
    assertEquals(3, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("peter"), actual));

    actual = client.getTasksOwned(users.get("steve").getId(), "es_CL");
    assertEquals(2, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("steve"), actual));

    actual = client.getTasksOwned(users.get("darth").getId(), "es_CL");
    assertEquals(1, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("darth"), actual));

    // Test DK I18N
    reader =
        new InputStreamReader(
            getClass().getResourceAsStream("../../QueryResults_TasksOwnedInGerman.mvel"));
    expected = (Map<String, List<TaskSummary>>) eval(reader, vars);

    actual = client.getTasksOwned(users.get("peter").getId(), "en-DK");
    assertEquals(3, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("peter"), actual));

    actual = client.getTasksOwned(users.get("steve").getId(), "en-DK");
    assertEquals(2, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("steve"), actual));

    actual = client.getTasksOwned(users.get("darth").getId(), "en-DK");
    assertEquals(1, actual.size());
    assertTrue(CollectionUtils.equals(expected.get("darth"), actual));
  }
コード例 #5
0
ファイル: TaskData.java プロジェクト: rcernich/jbpm
  public void writeExternal(ObjectOutput out) throws IOException {
    if (status != null) {
      out.writeBoolean(true);
      out.writeUTF(status.toString());
    } else {
      out.writeBoolean(false);
    }

    if (previousStatus != null) {
      out.writeBoolean(true);
      out.writeUTF(previousStatus.toString());
    } else {
      out.writeBoolean(false);
    }

    if (actualOwner != null) {
      out.writeBoolean(true);
      actualOwner.writeExternal(out);
    } else {
      out.writeBoolean(false);
    }

    if (createdBy != null) {
      out.writeBoolean(true);
      createdBy.writeExternal(out);
    } else {
      out.writeBoolean(false);
    }

    if (createdOn != null) {
      out.writeBoolean(true);
      out.writeLong(createdOn.getTime());
    } else {
      out.writeBoolean(false);
    }

    if (activationTime != null) {
      out.writeBoolean(true);
      out.writeLong(activationTime.getTime());
    } else {
      out.writeBoolean(false);
    }

    if (expirationTime != null) {
      out.writeBoolean(true);
      out.writeLong(expirationTime.getTime());
    } else {
      out.writeBoolean(false);
    }

    out.writeBoolean(skipable);

    if (workItemId != -1) {
      out.writeBoolean(true);
      out.writeLong(workItemId);
    } else {
      out.writeBoolean(false);
    }

    if (processInstanceId != -1) {
      out.writeBoolean(true);
      out.writeLong(processInstanceId);
    } else {
      out.writeBoolean(false);
    }

    if (documentAccessType != null) {
      out.writeBoolean(true);
      out.writeObject(documentAccessType);
    } else {
      out.writeBoolean(false);
    }

    if (documentType != null) {
      out.writeBoolean(true);
      out.writeUTF(documentType);
    } else {
      out.writeBoolean(false);
    }

    if (documentContentId != -1) {
      out.writeBoolean(true);
      out.writeLong(documentContentId);
    } else {
      out.writeBoolean(false);
    }

    if (outputAccessType != null) {
      out.writeBoolean(true);
      out.writeObject(outputAccessType);
    } else {
      out.writeBoolean(false);
    }

    if (outputType != null) {
      out.writeBoolean(true);
      out.writeUTF(outputType);
    } else {
      out.writeBoolean(false);
    }

    if (outputContentId != -1) {
      out.writeBoolean(true);
      out.writeLong(outputContentId);
    } else {
      out.writeBoolean(false);
    }

    if (faultName != null) {
      out.writeBoolean(true);
      out.writeUTF(faultName);
    } else {
      out.writeBoolean(false);
    }

    if (faultAccessType != null) {
      out.writeBoolean(true);
      out.writeObject(faultAccessType);
    } else {
      out.writeBoolean(false);
    }

    if (faultType != null) {
      out.writeBoolean(true);
      out.writeUTF(faultType);
    } else {
      out.writeBoolean(false);
    }

    if (faultContentId != -1) {
      out.writeBoolean(true);
      out.writeLong(faultContentId);
    } else {
      out.writeBoolean(false);
    }

    if (parentId != -1) {
      out.writeBoolean(true);
      out.writeLong(parentId);
    } else {
      out.writeBoolean(false);
    }

    CollectionUtils.writeCommentList(comments, out);
    CollectionUtils.writeAttachmentList(attachments, out);
  }
コード例 #6
0
ファイル: TaskData.java プロジェクト: rcernich/jbpm
  public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
    if (in.readBoolean()) {
      status = Status.valueOf(in.readUTF());
    }

    if (in.readBoolean()) {
      previousStatus = Status.valueOf(in.readUTF());
    }

    if (in.readBoolean()) {
      actualOwner = new User();
      actualOwner.readExternal(in);
    }

    if (in.readBoolean()) {
      createdBy = new User();
      createdBy.readExternal(in);
    }

    if (in.readBoolean()) {
      createdOn = new Date(in.readLong());
    }

    if (in.readBoolean()) {
      activationTime = new Date(in.readLong());
    }

    if (in.readBoolean()) {
      expirationTime = new Date(in.readLong());
    }

    skipable = in.readBoolean();

    if (in.readBoolean()) {
      workItemId = in.readLong();
    }

    if (in.readBoolean()) {
      processInstanceId = in.readLong();
    }

    if (in.readBoolean()) {
      documentAccessType = (AccessType) in.readObject();
    }

    if (in.readBoolean()) {
      documentType = in.readUTF();
    }

    if (in.readBoolean()) {
      documentContentId = in.readLong();
    }

    if (in.readBoolean()) {
      outputAccessType = (AccessType) in.readObject();
    }

    if (in.readBoolean()) {
      outputType = in.readUTF();
    }

    if (in.readBoolean()) {
      outputContentId = in.readLong();
    }

    if (in.readBoolean()) {
      faultName = in.readUTF();
    }

    if (in.readBoolean()) {
      faultAccessType = (AccessType) in.readObject();
    }

    if (in.readBoolean()) {
      faultType = in.readUTF();
    }

    if (in.readBoolean()) {
      faultContentId = in.readLong();
    }

    if (in.readBoolean()) {
      parentId = in.readLong();
    }
    comments = CollectionUtils.readCommentList(in);
    attachments = CollectionUtils.readAttachmentList(in);
  }
コード例 #7
0
  public void testAddRemoveComment() {
    Map vars = new HashMap();
    vars.put("users", users);
    vars.put("groups", groups);
    vars.put("now", new Date());

    String str =
        "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now}), ";
    str += "deadlines = new Deadlines(),";
    str += "delegation = new Delegation(),";
    str += "peopleAssignments = new PeopleAssignments(),";
    str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";

    BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
    Task task = (Task) eval(new StringReader(str), vars);
    client.addTask(task, null, addTaskResponseHandler);

    long taskId = addTaskResponseHandler.getTaskId();

    Comment comment = new Comment();
    Date addedAt = new Date(System.currentTimeMillis());
    comment.setAddedAt(addedAt);
    comment.setAddedBy(users.get("luke"));
    comment.setText("This is my comment1!!!!!");

    BlockingAddCommentResponseHandler addCommentResponseHandler =
        new BlockingAddCommentResponseHandler();
    client.addComment(taskId, comment, addCommentResponseHandler);
    assertTrue(addCommentResponseHandler.getCommentId() != comment.getId());

    BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
    client.getTask(taskId, getTaskResponseHandler);
    Task task1 = getTaskResponseHandler.getTask();
    assertNotSame(task, task1);
    assertFalse(task.equals(task1));

    List<Comment> comments1 = task1.getTaskData().getComments();
    assertEquals(1, comments1.size());
    Comment returnedComment = comments1.get(0);
    assertEquals("This is my comment1!!!!!", returnedComment.getText());
    assertEquals(addedAt, returnedComment.getAddedAt());
    assertEquals(users.get("luke"), returnedComment.getAddedBy());

    assertEquals((long) addCommentResponseHandler.getCommentId(), (long) returnedComment.getId());

    // Make the same as the returned tasks, so we can test equals
    task.getTaskData().setComments(comments1);
    task.getTaskData().setStatus(Status.Created);
    assertEquals(task, task1);

    // test we can have multiple comments
    comment = new Comment();
    addedAt = new Date(System.currentTimeMillis());
    comment.setAddedAt(addedAt);
    comment.setAddedBy(users.get("tony"));
    comment.setText("This is my comment2!!!!!");

    addCommentResponseHandler = new BlockingAddCommentResponseHandler();
    client.addComment(taskId, comment, addCommentResponseHandler);

    getTaskResponseHandler = new BlockingGetTaskResponseHandler();
    client.getTask(taskId, getTaskResponseHandler);
    task1 = getTaskResponseHandler.getTask();
    List<Comment> comments2 = task1.getTaskData().getComments();
    assertEquals(2, comments2.size());

    // make two collections the same and compare
    comments1.add(comment);
    assertTrue(CollectionUtils.equals(comments1, comments2));

    BlockingDeleteCommentResponseHandler deleteCommentResponseHandler =
        new BlockingDeleteCommentResponseHandler();
    client.deleteComment(
        taskId, addCommentResponseHandler.getCommentId(), deleteCommentResponseHandler);
    deleteCommentResponseHandler.waitTillDone(3000);

    getTaskResponseHandler = new BlockingGetTaskResponseHandler();
    client.getTask(taskId, getTaskResponseHandler);
    task1 = getTaskResponseHandler.getTask();
    comments2 = task1.getTaskData().getComments();
    assertEquals(1, comments2.size());

    assertEquals("This is my comment1!!!!!", comments2.get(0).getText());
  }
コード例 #8
0
  public void testAddRemoveAttachment() throws Exception {
    Map vars = new HashMap();
    vars.put("users", users);
    vars.put("groups", groups);
    vars.put("now", new Date());

    String str =
        "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now}), ";
    str += "deadlines = new Deadlines(),";
    str += "delegation = new Delegation(),";
    str += "peopleAssignments = new PeopleAssignments(),";
    str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";

    BlockingAddTaskResponseHandler addTaskResponseHandler = new BlockingAddTaskResponseHandler();
    Task task = (Task) eval(new StringReader(str), vars);
    client.addTask(task, null, addTaskResponseHandler);

    long taskId = addTaskResponseHandler.getTaskId();

    Attachment attachment = new Attachment();
    Date attachedAt = new Date(System.currentTimeMillis());
    attachment.setAttachedAt(attachedAt);
    attachment.setAttachedBy(users.get("luke"));
    attachment.setName("file1.txt");
    attachment.setAccessType(AccessType.Inline);
    attachment.setContentType("txt");

    byte[] bytes = "Ths is my attachment text1".getBytes();
    Content content = new Content();
    content.setContent(bytes);

    BlockingAddAttachmentResponseHandler addAttachmentResponseHandler =
        new BlockingAddAttachmentResponseHandler();
    client.addAttachment(taskId, attachment, content, addAttachmentResponseHandler);
    assertTrue(addAttachmentResponseHandler.getAttachmentId() != attachment.getId());
    assertTrue(addAttachmentResponseHandler.getContentId() != attachment.getAttachmentContentId());

    BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
    client.getTask(taskId, getTaskResponseHandler);
    Task task1 = getTaskResponseHandler.getTask();
    assertNotSame(task, task1);
    assertFalse(task.equals(task1));

    List<Attachment> attachments1 = task1.getTaskData().getAttachments();
    assertEquals(1, attachments1.size());
    Attachment returnedAttachment = attachments1.get(0);
    assertEquals(attachedAt, returnedAttachment.getAttachedAt());
    assertEquals(users.get("luke"), returnedAttachment.getAttachedBy());
    assertEquals(AccessType.Inline, returnedAttachment.getAccessType());
    assertEquals("txt", returnedAttachment.getContentType());
    assertEquals("file1.txt", returnedAttachment.getName());
    assertEquals(bytes.length, returnedAttachment.getSize());

    assertEquals(
        (long) addAttachmentResponseHandler.getAttachmentId(), (long) returnedAttachment.getId());
    assertEquals(
        (long) addAttachmentResponseHandler.getContentId(),
        (long) returnedAttachment.getAttachmentContentId());

    // Make the same as the returned tasks, so we can test equals
    task.getTaskData().setAttachments(attachments1);
    task.getTaskData().setStatus(Status.Created);
    assertEquals(task, task1);

    BlockingGetContentResponseHandler getResponseHandler = new BlockingGetContentResponseHandler();
    client.getContent(returnedAttachment.getAttachmentContentId(), getResponseHandler);
    content = getResponseHandler.getContent();
    assertEquals("Ths is my attachment text1", new String(content.getContent()));

    // test we can have multiple attachments

    attachment = new Attachment();
    attachedAt = new Date(System.currentTimeMillis());
    attachment.setAttachedAt(attachedAt);
    attachment.setAttachedBy(users.get("tony"));
    attachment.setName("file2.txt");
    attachment.setAccessType(AccessType.Inline);
    attachment.setContentType("txt");

    bytes = "Ths is my attachment text2".getBytes();
    content = new Content();
    content.setContent(bytes);

    addAttachmentResponseHandler = new BlockingAddAttachmentResponseHandler();
    client.addAttachment(taskId, attachment, content, addAttachmentResponseHandler);

    getTaskResponseHandler = new BlockingGetTaskResponseHandler();
    client.getTask(taskId, getTaskResponseHandler);
    task1 = getTaskResponseHandler.getTask();
    assertNotSame(task, task1);
    assertFalse(task.equals(task1));

    List<Attachment> attachments2 = task1.getTaskData().getAttachments();
    assertEquals(2, attachments2.size());

    getResponseHandler = new BlockingGetContentResponseHandler();
    client.getContent(addAttachmentResponseHandler.getContentId(), getResponseHandler);
    content = getResponseHandler.getContent();
    assertEquals("Ths is my attachment text2", new String(content.getContent()));

    // make two collections the same and compare
    attachment.setSize(26);
    attachment.setAttachmentContentId(addAttachmentResponseHandler.getContentId());
    attachments1.add(attachment);
    assertTrue(CollectionUtils.equals(attachments2, attachments1));

    BlockingDeleteAttachmentResponseHandler deleteCommentResponseHandler =
        new BlockingDeleteAttachmentResponseHandler();
    client.deleteAttachment(
        taskId,
        addAttachmentResponseHandler.getAttachmentId(),
        addAttachmentResponseHandler.getContentId(),
        deleteCommentResponseHandler);
    deleteCommentResponseHandler.waitTillDone(3000);

    Thread.sleep(3000);

    getTaskResponseHandler = new BlockingGetTaskResponseHandler();
    client.getTask(taskId, getTaskResponseHandler);
    task1 = getTaskResponseHandler.getTask();
    attachments2 = task1.getTaskData().getAttachments();
    assertEquals(1, attachments2.size());

    assertEquals("file1.txt", attachments2.get(0).getName());
  }
コード例 #9
0
  public void testAddRemoveComment() {
    Map vars = fillVariables(users, groups);

    String str =
        "(with (new Task()) { priority = 55, taskData = (with( new TaskData()) { createdOn = now, activationTime = now}), ";
    str += "deadlines = new Deadlines(),";
    str += "delegation = new Delegation(),";
    str += "peopleAssignments = new PeopleAssignments(),";
    str += "names = [ new I18NText( 'en-UK', 'This is my task name')] })";

    Task task = (Task) eval(new StringReader(str), vars);
    client.addTask(task, null);

    long taskId = task.getId();

    Comment comment = new Comment();
    Date addedAt = new Date(System.currentTimeMillis());
    comment.setAddedAt(addedAt);
    comment.setAddedBy(users.get("luke"));
    comment.setText("This is my comment1!!!!!");

    client.addComment(taskId, comment);

    long commentId = comment.getId();

    Task task1 = client.getTask(taskId);
    // We are reusing this for local clients where the object is the same
    // assertNotSame(task, task1);
    // assertFalse(task.equals(task1));

    List<Comment> comments1 = task1.getTaskData().getComments();
    assertEquals(1, comments1.size());
    Comment returnedComment = comments1.get(0);
    assertEquals("This is my comment1!!!!!", returnedComment.getText());
    assertEquals(addedAt, returnedComment.getAddedAt());
    assertEquals(users.get("luke"), returnedComment.getAddedBy());

    assertEquals(commentId, (long) returnedComment.getId());

    // Make the same as the returned tasks, so we can test equals
    task.getTaskData().setComments(comments1);
    task.getTaskData().setStatus(Status.Created);
    assertEquals(task, task1);

    // test we can have multiple comments
    comment = new Comment();
    addedAt = new Date(System.currentTimeMillis());
    comment.setAddedAt(addedAt);
    comment.setAddedBy(users.get("tony"));
    comment.setText("This is my comment2!!!!!");

    client.addComment(taskId, comment);
    long commentId2 = comment.getId();

    task1 = client.getTask(taskId);
    List<Comment> comments2 = task1.getTaskData().getComments();
    assertEquals(2, comments2.size());

    // make two collections the same and compare
    comments1.add(comment);
    assertTrue(CollectionUtils.equals(comments1, comments2));

    client.deleteComment(taskId, commentId2);

    task1 = client.getTask(taskId);
    comments2 = task1.getTaskData().getComments();
    assertEquals(1, comments2.size());

    assertEquals("This is my comment1!!!!!", comments2.get(0).getText());
  }