@DomainNode(topLevelQueryName = "projects", searchQueryName = "searchProjects")
@AggregatedNodeRelationship(name = "componentIssues", description = "The set of Issues which are part of any of the Components of this Project.", property = "components", path = [AggregationEntry(property = "component"), AggregationEntry(property = "issues")])
@Authorization(name = "MANAGE_COMPONENTS", allow = [Rule(beanRef = "relatedToNodePermissionRule", options = ["ADMIN"])])
@Authorization(name = "MANAGE_VIEWS", allow = [Rule(beanRef = "relatedToNodePermissionRule", options = ["ADMIN"])])
class Project(name: String, description: String, repositoryURL: URI?) : Trackable, NodeWithPermissions<ProjectPermission> , Layout

A project of the Gropius system. Consists of a set of ComponentVersions, which form a graph with the Relations between them. Can be affected by issues. Can have issues, labels and artefacts as this is a Trackable. READ is granted via an associated ProjectPermission.

Constructors

Link copied to clipboard
constructor(name: String, description: String, repositoryURL: URI?)

Types

Link copied to clipboard
object Companion

Properties

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

The issues which affect this entity

Link copied to clipboard
@NodeRelationship(type = "ARTEFACT", direction = Direction.OUTGOING)
@FilterProperty
val artefacts: LazyLoadingDelegate<Artefact, NodeSetPropertyDelegate.NodeSetProperty>

Artefacts of this trackable, typically some kind of file.

Link copied to clipboard
@NodeRelationship(type = "COMPONENT", direction = Direction.OUTGOING)
@FilterProperty
val components: LazyLoadingDelegate<ComponentVersion, NodeSetPropertyDelegate.NodeSetProperty>

The ComponentVersions this consists of.

Link copied to clipboard
@NodeRelationship(type = "DEFAULT_VIEW", direction = Direction.OUTGOING)
@FilterProperty
val defaultView: LazyLoadingDelegate<View?, NodePropertyDelegate.NodeProperty>

The default view for this project.

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
Link copied to clipboard
internal var isSaved: Boolean
Link copied to clipboard
@NodeRelationship(type = "ISSUE", direction = Direction.OUTGOING)
@FilterProperty
val issues: LazyLoadingDelegate<Issue, NodeSetPropertyDelegate.NodeSetProperty>

The set of Issues which are part of this Trackable. An Issue has to be part of a Trackable to use the Labels and Artefacts defined by the Trackable.

Link copied to clipboard
@NodeRelationship(type = "LABEL", direction = Direction.OUTGOING)
@FilterProperty
val labels: LazyLoadingDelegate<Label, NodeSetPropertyDelegate.NodeSetProperty>

The set of Labels which can be added to issues of this trackable.

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
@NodeRelationship(type = "NODE", direction = Direction.INCOMING)
@FilterProperty
open override val permissions: LazyLoadingDelegate<ProjectPermission, NodeSetPropertyDelegate.NodeSetProperty>

Permissions associated with the NodeWithPermissions

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

Issues which are pinned to this trackable, subset of `issues`.

Link copied to clipboard
internal val propertyLookup: MutableMap<String, PropertyDelegate<*>>
Link copied to clipboard
Link copied to clipboard
@NodeRelationship(type = "RELATION", direction = Direction.OUTGOING)
@FilterProperty
open override val relationLayouts: LazyLoadingDelegate<RelationLayout, NodeSetPropertyDelegate.NodeSetProperty>

Layouts for relations

Link copied to clipboard
@NodeRelationship(type = "RELATION_PARTNER", direction = Direction.OUTGOING)
@FilterProperty
open override val relationPartnerLayouts: LazyLoadingDelegate<RelationPartnerLayout, NodeSetPropertyDelegate.NodeSetProperty>

Layouts for relation partners

Link copied to clipboard
@FilterProperty
var repositoryURL: URI?

If existing, the URL of the repository (e.g. a GitHub repository).

Link copied to clipboard
@NodeRelationship(type = "SYNCS_TO", direction = Direction.OUTGOING)
@FilterProperty
val syncsTo: LazyLoadingDelegate<IMSProject, NodeSetPropertyDelegate.NodeSetProperty>

IMSProjects this Trackable is synced to and from.

Link copied to clipboard
@NodeRelationship(type = "VIEW", direction = Direction.OUTGOING)
@FilterProperty
val views: LazyLoadingDelegate<View, NodeSetPropertyDelegate.NodeSetProperty>

Views on the architecture graph of this project.

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
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 override fun toString(): String