@DomainNode(searchQueryName = "searchIMSProjects")
@Authorization(name = "READ", allow = [Rule(beanRef = "relatedToAdminNodePermission", options = ["2"])], allowFromRelated = ["trackable"])
@Authorization(name = "MANAGE_IMS", allowFromRelated = ["trackable"])
@Authorization(name = "RELATED_TO_NODE_PERMISSION", allowFromRelated = ["ims"])
class IMSProject(name: String, description: String, val templatedFields: MutableMap<String, String>) : SyncPermissionTarget, MutableTemplatedNode

Project on an IMS, represents a Trackable synced to an IMS. The representation on the IMS depends on the type of IMS, e.g. for GitHub, a project is a repository. READ is granted if READ is granted on `trackable` or `ims`.

Constructors

Link copied to clipboard
constructor(name: String, description: String, templatedFields: MutableMap<String, String>)

Properties

Link copied to clipboard
@FilterProperty
@SearchProperty
open override var description: String

The description of this entity.

Link copied to clipboard
internal var fieldCache: MutableMap<String, Any?>
Link copied to clipboard
val graphQLId: ID

The unique id of this node

Link copied to clipboard
@Id
@GeneratedValue(generatorRef = "nodeIdGenerator")
internal var id: String?
Link copied to clipboard
@NodeRelationship(type = "PROJECT", direction = Direction.INCOMING)
@GraphQLNullable
@FilterProperty
@OrderProperty
val ims: LazyLoadingDelegate<IMS, NodePropertyDelegate.NodeProperty>

The IMS this project is a part of.

Link copied to clipboard
@NodeRelationship(type = "PROJECT", direction = Direction.INCOMING)
@FilterProperty
val imsIssues: LazyLoadingDelegate<IMSIssue, NodeSetPropertyDelegate.NodeSetProperty>

The IMSIssues synced to by this project.

Link copied to clipboard
Link copied to clipboard
internal var isSaved: Boolean
Link copied to clipboard
@ConvertWith(converter = LazyLoadingContextConverter::class)
internal var lazyLoadingContext: LazyLoadingContext?
Link copied to clipboard
@FilterProperty
@OrderProperty
@SearchProperty
open override var name: String

The name of this entity.

Link copied to clipboard
@Version
private var nodeVersion: Long

Version used for optimistic locking

Link copied to clipboard
internal var orderFields: MutableMap<String, Any?>?
Link copied to clipboard
internal val propertyLookup: MutableMap<String, PropertyDelegate<*>>
Link copied to clipboard
Link copied to clipboard
@NodeRelationship(type = "CAN_SYNC_OTHERS", direction = Direction.INCOMING)
@FilterProperty
val syncOthersAllowedBy: LazyLoadingDelegate<GropiusUser, NodeSetPropertyDelegate.NodeSetProperty>

The users which allow to sync the data of other users to this target.

Link copied to clipboard
@NodeRelationship(type = "CAN_SYNC_SELF", direction = Direction.INCOMING)
@FilterProperty
val syncSelfAllowedBy: LazyLoadingDelegate<GropiusUser, NodeSetPropertyDelegate.NodeSetProperty>

The users which allow to sync their data to this target.

Link copied to clipboard
@NodeRelationship(type = "USED_IN", direction = Direction.INCOMING)
@FilterProperty
@OrderProperty
open override val template: LazyLoadingDelegate<IMSProjectTemplate, NodePropertyDelegate.NodeProperty>

Template associated with the TemplatedNode

Link copied to clipboard

The values for all templated fields. The schema is defined by the Template of this node

Link copied to clipboard
@NodeRelationship(type = "SYNCS_TO", direction = Direction.INCOMING)
@FilterProperty
val trackable: LazyLoadingDelegate<Trackable, NodePropertyDelegate.NodeProperty>

The trackable which is synced.

Functions

Link copied to clipboard
operator override fun equals(other: Any?): Boolean
Link copied to clipboard
internal suspend fun getFromGraphQL(@Autowired nodeQueryParser: NodeQueryParser, dataFetchingEnvironment: DataFetchingEnvironment): Any?
Link copied to clipboard
internal fun <T : PropertyDelegate<*>> getProperty(property: KProperty1<*, *>): T
Link copied to clipboard

Dummy function to avoid GraphQL kotlin optimization weirdness

Link copied to clipboard
override fun hashCode(): Int
Link copied to clipboard
internal suspend fun <T : Node?> loadNodesOfRelationship(property: KProperty1<*, *>, loader: LazyLoadingSubqueryGenerator<T>.() -> Unit?)
Link copied to clipboard
protected fun <T : Node?> NodeProperty(): PropertyDelegateProvider<Node, NodePropertyDelegate<T>>
Link copied to clipboard
protected fun <T : Node> NodeSetProperty(): PropertyDelegateProvider<Node, NodeSetPropertyDelegate<T>>
Link copied to clipboard
internal fun registerQueryResult(entry: NodeQueryEntry<*>, queryResult: Any?)
Link copied to clipboard
open fun templatedField(name: String, @Autowired objectMapper: ObjectMapper): JsonNode?

Value of a field defined by the template. Error if such a field is not defined.

Link copied to clipboard
open fun templatedFields(names: List<String>?, prefixMatching: Boolean?, @Autowired objectMapper: ObjectMapper): List<JSONField>

All templatedFields If `names` is provided, only those matching the name. If `prefixMatching` is true, matching is done by prefix, otherwise by full name.

Link copied to clipboard
open override fun toString(): String