Package com.almworks.jira.structure.util

Source Code of com.almworks.jira.structure.util.JiraFunc

package com.almworks.jira.structure.util;

import com.atlassian.crowd.embedded.api.Group;
import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.bc.project.component.ProjectComponent;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueConstant;
import com.atlassian.jira.issue.customfields.CustomFieldType;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.fields.Field;
import com.atlassian.jira.issue.issuetype.IssueType;
import com.atlassian.jira.issue.label.Label;
import com.atlassian.jira.issue.link.IssueLink;
import com.atlassian.jira.issue.link.IssueLinkType;
import com.atlassian.jira.issue.priority.Priority;
import com.atlassian.jira.issue.security.IssueSecurityLevel;
import com.atlassian.jira.issue.status.Status;
import com.atlassian.jira.project.Project;
import com.atlassian.jira.project.version.Version;
import com.atlassian.jira.security.PermissionManager;
import com.atlassian.jira.security.Permissions;
import com.atlassian.jira.security.roles.ProjectRole;
import com.atlassian.jira.sharing.SharedEntity;
import com.atlassian.jira.util.JiraKeyUtils;
import com.atlassian.jira.workflow.JiraWorkflow;
import com.atlassian.plugin.ModuleDescriptor;
import org.ofbiz.core.entity.GenericValue;

import java.security.Principal;
import java.util.List;
import java.util.Set;

/**
* <p><code>JiraFunc</code> contains Jira-related functions.</p>
*
* @author Igor Sereda
*/
public class JiraFunc {
  public static final La<Project, Long> PROJECT_ID = new La<Project, Long>(Long.class) {
    @Override
    public Long la(Project argument) {
      return argument.getId();
    }
  };

  public static final La<Project, String> PROJECT_NAME = new La<Project, String>() {
    public String la(Project argument) {
      return argument == null ? null : argument.getName();
    }
  };

  public static final La<Project, String> PROJECT_KEY = new La<Project, String>(String.class) {
    public String la(Project argument) {
      return argument == null ? null : argument.getKey();
    }
  };

  public static final La<Issue, Long> ISSUE_ID = new La<Issue, Long>() {
    @Override
    public Long la(Issue argument) {
      return argument.getId();
    }
  };

  public static final La<String, Project> KEY_PROJECT = new La<String, Project>() {
    public Project la(String key) {
      if (key == null) return null;
      return ComponentAccessor.getProjectManager().getProjectObjByKey(key);
    }
  };

  public static final La<Long, Project> ID_PROJECT = new La<Long, Project>() {
    public Project la(Long id) {
      if (id == null) return null;
      return ComponentAccessor.getProjectManager().getProjectObj(id);
    }
  };

  public static final La<String, IssueType> ID_ISSUETYPE = new La<String, IssueType>() {
    public IssueType la(String id) {
      return id == null ? null : ComponentAccessor.getConstantsManager().getIssueTypeObject(id);
    }
  };

  public static final La<ProjectRole, Long> PROJECTROLE_ID = new La<ProjectRole, Long>() {
    public Long la(ProjectRole argument) {
      return argument.getId();
    }
  };

  public static final La<Principal, String> PRINCIPAL_NAME = new La<Principal, String>(String.class) {
    public String la(Principal argument) {
      return argument == null ? null : argument.getName();
    }
  };

  public static final La<Group, String> GROUP_NAME = new La<Group, String>(String.class) {
    public String la(Group argument) {
      return argument == null ? null : argument.getName();
    }
  };

  public static final La<ModuleDescriptor, String> MODULE_COMPLETE_KEY = new La<ModuleDescriptor, String>() {
    public String la(ModuleDescriptor argument) {
      return argument == null ? null : argument.getCompleteKey();
    }
  };

  public static final La<IssueLinkType, Long> LINKTYPE_ID = new La<IssueLinkType, Long>() {
    public Long la(IssueLinkType argument) {
      return argument == null ? null : argument.getId();
    }
  };

  public static final La<SharedEntity, Long> SHAREDENTITY_ID = new La<SharedEntity, Long>() {
    public Long la(SharedEntity argument) {
      return argument == null ? null : argument.getId();
    }
  };

  public static final La<CustomField, CustomFieldType> CUSTOMFIELD_TYPE = new La<CustomField, CustomFieldType>() {
    public CustomFieldType la(CustomField argument) {
      return argument == null ? null : argument.getCustomFieldType();
    }
  };

  public static final La<CustomFieldType, String> CUSTOMFIELDTYPE_KEY = new La<CustomFieldType, String>() {
    public String la(CustomFieldType argument) {
      return argument == null ? null : argument.getKey();
    }
  };

  public static final La<CustomField, String> CUSTOMFIELD_ID = new La<CustomField, String>() {
    public String la(CustomField argument) {
      return argument == null ? null : argument.getId();
    }
  };

  public static final La<Field, String> FIELD_NAME = new La<Field, String>(String.class) {
    @Override
    public String la(Field argument) {
      return argument == null ? null : argument.getName();
    }
  };

  public static final La<IssueType, Boolean> ISSUETYPE_SUBTASK = new La<IssueType, Boolean>() {
    public Boolean la(IssueType argument) {
      return argument != null && argument.isSubTask();
    }
  };

  public static final La<IssueConstant, String> ISSUECONSTANT_ID = new La<IssueConstant, String>(String.class) {
    public String la(IssueConstant argument) {
      return argument == null ? null : argument.getId();
    }
  };

  public static final La<IssueConstant, String> ISSUECONSTANT_NAME_LOCAL = new La<IssueConstant, String>(String.class) {
    public String la(IssueConstant argument) {
      return argument == null ? null : argument.getNameTranslation();
    }
  };

  public static final La<String, Status> ID_STATUS = new La<String, Status>() {
    public Status la(String argument) {
      return argument == null ? null : ComponentAccessor.getConstantsManager().getStatusObject(argument);
    }
  };

  public static final La<JiraWorkflow, String> WORKFLOW_NAME = new La<JiraWorkflow, String>() {
    public String la(JiraWorkflow argument) {
      return argument == null ? null : argument.getName();
    }
  };
 
  public static final La<Version, Long> VERSION_ID = new La<Version, Long>(Long.class) {
    public Long la(Version argument) {
      return argument == null ? null : argument.getId();
    }
  };

  public static final La<Version, String> VERSION_NAME = new La<Version, String>(String.class) {
    @Override
    public String la(Version argument) {
      return argument == null ? null : argument.getName();
    }
  };

  public static final La<Version, Boolean> VERSION_ACTIVE = new La<Version, Boolean>(Boolean.class) {
    @Override
    public Boolean la(Version argument) {
      return argument == null ? null : !argument.isArchived();
    }
  };

  public static final La<ProjectComponent, Long> COMPONENT_ID = new La<ProjectComponent, Long>(Long.class) {
    public Long la(ProjectComponent argument) {
      return argument == null ? null : argument.getId();
    }
  };

  public static final La<ProjectComponent, String> COMPONENT_NAME = new La<ProjectComponent, String>(String.class) {
    @Override
    public String la(ProjectComponent argument) {
      return argument == null ? null : argument.getName();
    }
  };
 
  public static final La<GenericValue, Long> GENERICVALUE_LONG_ID = new La<GenericValue, Long>() {
    public Long la(GenericValue argument) {
      try {
        return argument == null ? null : argument.getLong("id");
      } catch (Exception e) {
        return null;
      }
    }
  };
  public static final La<GenericValue, String> GENERICVALUE_STRING_ID = new La<GenericValue, String>() {
    public String la(GenericValue argument) {
      try {
        return argument == null ? null : argument.getString("id");
      } catch (Exception e) {
        return null;
      }
    }
  };
  public static final La<Issue, Project> ISSUE_PROJECT = new La<Issue, Project>() {
    public Project la(Issue argument) {
      return argument == null ? null : argument.getProjectObject();
    }
  };
  public static final La<Issue, IssueType> ISSUE_ISSUETYPE = new La<Issue, IssueType>() {
    public IssueType la(Issue argument) {
      return argument == null ? null : argument.getIssueTypeObject();
    }
  };
  public static final La<IssueType, String> ISSUETYPE_ID = new La<IssueType, String>() {
    public String la(IssueType argument) {
      return argument == null ? null : argument.getId();
    }
  };
  public static final La<Issue, Priority> ISSUE_PRIORITY = new La<Issue, Priority>() {
    public Priority la(Issue argument) {
      return argument == null ? null : argument.getPriorityObject();
    }
  };
  public static final La<Issue, String> ISSUE_ISSUETYPEID = ISSUE_ISSUETYPE.supply(ISSUETYPE_ID);
  public static final La<Issue, Long> ISSUE_PROJECTID = ISSUE_PROJECT.supply(PROJECT_ID);
  public static final La<Issue, String> ISSUE_PRIORITYID = ISSUE_PRIORITY.supply(ISSUECONSTANT_ID);
  public static final La<IssueLink, Long> LINK_ID = new La<IssueLink, Long>() {
    @Override
    public Long la(IssueLink argument) {
      return argument == null ? null : argument.getId();
    }
  };
  public static final La<IssueLink, Long> LINK_SEQUENCE = new La<IssueLink, Long>() {
    @Override
    public Long la(IssueLink argument) {
      return argument == null ? null : argument.getSequence();
    }
  };

  public static final La<Label, String> LABEL_LABEL = new La<Label, String>(String.class) {
    @Override
    public String la(Label argument) {
      return argument == null ? null : argument.getLabel();
    }
  };

  public static final La<IssueSecurityLevel, Long> SECURITY_LEVEL_ID = new La<IssueSecurityLevel, Long>(Long.class) {
    @Override
    public Long la(IssueSecurityLevel argument) {
      return argument == null ? null : argument.getId();
    }
  };

  public static final La<IssueSecurityLevel, String> SECURITY_LEVEL_NAME = new La<IssueSecurityLevel, String>(String.class) {
    @Override
    public String la(IssueSecurityLevel argument) {
      return argument == null ? null : argument.getName();
    }
  };

  public static La<Project, Boolean> browseableBy(User user) {
    return accessibleBy(user, Permissions.BROWSE);
  }

  public static La<Project, Boolean> accessibleBy(final User user, final int permission) {
    final PermissionManager permissionManager = ComponentAccessor.getPermissionManager();
    if (permissionManager == null) {
      assert false : "no permissions";
      return La.constant(false);
    }
    return new La<Project, Boolean>(Boolean.class) {
      @Override
      public Boolean la(Project argument) {
        return argument != null && permissionManager.hasPermission(permission, argument, user);
      }
    };
  }

  public static La<Project, Boolean> hasCustomField(final CustomField field) {
    if (field == null) return La.constant(false);
    List<GenericValue> projects = field.isAllProjects() ? null : field.getAssociatedProjects();
    final Set<Long> pids = projects == null ? null : GENERICVALUE_LONG_ID.hashSet(projects);
    return new La<Project, Boolean>() {
      public Boolean la(Project argument) {
        return argument != null && (pids == null || pids.contains(argument.getId()));
      }
    };
  }

  public static final La<String, String> VALID_ISSUE_KEY = new La<String, String>() {
    @Override
    public String la(String issueKey) {
      return issueKey != null && JiraKeyUtils.validIssueKey(issueKey) ? issueKey : null;
    }
  };
}
TOP

Related Classes of com.almworks.jira.structure.util.JiraFunc

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.