2023-10-20 15:48:55 +02:00
package eu.eudat.query ;
2023-10-23 10:16:58 +02:00
import eu.eudat.authorization.AuthorizationFlags ;
2023-11-08 17:42:52 +01:00
import eu.eudat.authorization.Permission ;
2024-04-12 15:51:44 +02:00
import eu.eudat.commons.enums.* ;
2023-10-23 10:16:58 +02:00
import eu.eudat.commons.scope.user.UserScope ;
2024-04-16 09:48:53 +02:00
import eu.eudat.data.* ;
2023-10-23 10:31:07 +02:00
import eu.eudat.model.Dmp ;
2023-11-14 15:08:48 +01:00
import eu.eudat.model.PublicDmp ;
2023-11-08 17:42:52 +01:00
import eu.eudat.query.utils.QueryUtilsService ;
2023-10-23 10:16:58 +02:00
import gr.cite.commons.web.authz.service.AuthorizationService ;
2024-04-12 12:49:13 +02:00
import gr.cite.tools.data.query.FieldResolver ;
import gr.cite.tools.data.query.QueryBase ;
import gr.cite.tools.data.query.QueryContext ;
2023-10-23 10:16:58 +02:00
import jakarta.persistence.Tuple ;
2024-04-12 12:49:13 +02:00
import jakarta.persistence.criteria.CriteriaBuilder ;
import jakarta.persistence.criteria.Predicate ;
2023-10-23 10:16:58 +02:00
import org.springframework.beans.factory.config.ConfigurableBeanFactory ;
import org.springframework.context.annotation.Scope ;
import org.springframework.stereotype.Component ;
import java.time.Instant ;
import java.util.* ;
@Component
@Scope ( value = ConfigurableBeanFactory . SCOPE_PROTOTYPE )
2023-10-23 10:31:07 +02:00
public class DmpQuery extends QueryBase < DmpEntity > {
2023-10-23 10:16:58 +02:00
private String like ;
private Collection < UUID > ids ;
2024-04-12 12:49:13 +02:00
2024-01-15 12:57:33 +01:00
private Collection < UUID > creatorIds ;
2023-10-23 10:16:58 +02:00
2023-10-23 13:45:05 +02:00
private Collection < UUID > excludedIds ;
2023-10-23 10:16:58 +02:00
private Collection < IsActive > isActives ;
2023-10-23 10:31:07 +02:00
private Collection < DmpStatus > statuses ;
2024-04-12 12:49:13 +02:00
2023-11-14 17:18:20 +01:00
private Collection < DmpVersionStatus > versionStatuses ;
2024-04-12 12:49:13 +02:00
2023-11-14 15:08:48 +01:00
private Collection < DmpAccessType > accessTypes ;
2023-10-23 10:16:58 +02:00
2023-10-23 13:45:05 +02:00
private Collection < Integer > versions ;
2023-10-23 10:16:58 +02:00
2023-11-02 17:12:36 +01:00
private Collection < UUID > groupIds ;
2024-04-12 12:49:13 +02:00
private Instant after ;
2023-12-05 15:05:37 +01:00
private DmpUserQuery dmpUserQuery ;
2023-11-02 17:12:36 +01:00
2023-12-04 16:27:47 +01:00
private DmpDescriptionTemplateQuery dmpDescriptionTemplateQuery ;
2024-04-12 12:49:13 +02:00
2024-04-12 15:51:44 +02:00
private DmpReferenceQuery dmpReferenceQuery ;
private EntityDoiQuery entityDoiQuery ;
2023-10-23 10:16:58 +02:00
private EnumSet < AuthorizationFlags > authorize = EnumSet . of ( AuthorizationFlags . None ) ;
private final UserScope userScope ;
2024-04-12 12:49:13 +02:00
2023-10-23 10:16:58 +02:00
private final AuthorizationService authService ;
2024-04-12 12:49:13 +02:00
2023-11-08 17:42:52 +01:00
private final QueryUtilsService queryUtilsService ;
2024-04-12 12:49:13 +02:00
2023-11-08 17:42:52 +01:00
public DmpQuery ( UserScope userScope , AuthorizationService authService , QueryUtilsService queryUtilsService ) {
2023-10-23 10:16:58 +02:00
this . userScope = userScope ;
this . authService = authService ;
2023-11-08 17:42:52 +01:00
this . queryUtilsService = queryUtilsService ;
2023-10-23 10:16:58 +02:00
}
2023-10-23 10:31:07 +02:00
public DmpQuery like ( String value ) {
2023-10-23 10:16:58 +02:00
this . like = value ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery ids ( UUID value ) {
2023-10-23 10:16:58 +02:00
this . ids = List . of ( value ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery ids ( UUID . . . value ) {
2023-10-23 10:16:58 +02:00
this . ids = Arrays . asList ( value ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery ids ( Collection < UUID > values ) {
2023-10-23 10:16:58 +02:00
this . ids = values ;
return this ;
}
2024-01-15 12:57:33 +01:00
public DmpQuery creatorIds ( UUID value ) {
this . creatorIds = List . of ( value ) ;
return this ;
}
public DmpQuery creatorIds ( UUID . . . value ) {
this . creatorIds = Arrays . asList ( value ) ;
return this ;
}
public DmpQuery creatorIds ( Collection < UUID > values ) {
this . creatorIds = values ;
return this ;
}
2023-10-23 13:45:05 +02:00
public DmpQuery excludedIds ( Collection < UUID > values ) {
this . excludedIds = values ;
return this ;
}
public DmpQuery excludedIds ( UUID value ) {
this . excludedIds = List . of ( value ) ;
return this ;
}
public DmpQuery excludedIds ( UUID . . . value ) {
this . excludedIds = Arrays . asList ( value ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery isActive ( IsActive value ) {
2023-10-23 10:16:58 +02:00
this . isActives = List . of ( value ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery isActive ( IsActive . . . value ) {
2023-10-23 10:16:58 +02:00
this . isActives = Arrays . asList ( value ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery isActive ( Collection < IsActive > values ) {
2023-10-23 10:16:58 +02:00
this . isActives = values ;
return this ;
}
2023-11-14 17:18:20 +01:00
public DmpQuery versionStatuses ( DmpVersionStatus value ) {
this . versionStatuses = List . of ( value ) ;
return this ;
}
public DmpQuery versionStatuses ( DmpVersionStatus . . . value ) {
this . versionStatuses = Arrays . asList ( value ) ;
return this ;
}
public DmpQuery versionStatuses ( Collection < DmpVersionStatus > values ) {
this . versionStatuses = values ;
return this ;
}
2023-11-14 15:08:48 +01:00
public DmpQuery accessTypes ( DmpAccessType value ) {
this . accessTypes = List . of ( value ) ;
return this ;
}
public DmpQuery accessTypes ( DmpAccessType . . . value ) {
this . accessTypes = Arrays . asList ( value ) ;
return this ;
}
public DmpQuery accessTypes ( Collection < DmpAccessType > values ) {
this . accessTypes = values ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery statuses ( DmpStatus value ) {
2023-10-23 10:16:58 +02:00
this . statuses = List . of ( value ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery statuses ( DmpStatus . . . value ) {
2023-10-23 10:16:58 +02:00
this . statuses = Arrays . asList ( value ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery statuses ( Collection < DmpStatus > values ) {
2023-10-23 10:16:58 +02:00
this . statuses = values ;
return this ;
}
2023-10-23 13:45:05 +02:00
public DmpQuery versions ( Integer value ) {
this . versions = List . of ( value ) ;
2023-10-23 10:16:58 +02:00
return this ;
}
2023-10-23 13:45:05 +02:00
public DmpQuery versions ( Integer . . . value ) {
this . versions = Arrays . asList ( value ) ;
2023-10-23 10:16:58 +02:00
return this ;
}
2023-10-23 13:45:05 +02:00
public DmpQuery versions ( Collection < Integer > values ) {
this . versions = values ;
2023-10-23 10:16:58 +02:00
return this ;
}
2023-11-02 17:12:36 +01:00
public DmpQuery groupIds ( UUID value ) {
this . groupIds = List . of ( value ) ;
return this ;
}
public DmpQuery groupIds ( UUID . . . value ) {
this . groupIds = Arrays . asList ( value ) ;
return this ;
}
public DmpQuery groupIds ( Collection < UUID > values ) {
this . groupIds = values ;
return this ;
}
2024-04-12 12:49:13 +02:00
public DmpQuery after ( Instant value ) {
this . after = value ;
return this ;
}
2023-12-04 16:27:47 +01:00
public DmpQuery dmpDescriptionTemplateSubQuery ( DmpDescriptionTemplateQuery subQuery ) {
this . dmpDescriptionTemplateQuery = subQuery ;
return this ;
}
2023-12-05 15:05:37 +01:00
public DmpQuery dmpUserSubQuery ( DmpUserQuery subQuery ) {
this . dmpUserQuery = subQuery ;
return this ;
}
2024-04-12 15:51:44 +02:00
public DmpQuery dmpReferenceSubQuery ( DmpReferenceQuery subQuery ) {
this . dmpReferenceQuery = subQuery ;
return this ;
}
public DmpQuery entityDoiSubQuery ( EntityDoiQuery subQuery ) {
this . entityDoiQuery = subQuery ;
this . entityDoiQuery . types ( EntityType . DMP ) ;
return this ;
}
2023-10-23 10:31:07 +02:00
public DmpQuery authorize ( EnumSet < AuthorizationFlags > values ) {
2023-10-23 10:16:58 +02:00
this . authorize = values ;
return this ;
}
@Override
protected Boolean isFalseQuery ( ) {
2024-04-12 12:49:13 +02:00
return this . isEmpty ( this . ids ) | | this . isEmpty ( this . creatorIds ) | | this . isEmpty ( this . isActives ) | | this . isEmpty ( this . versionStatuses ) | | this . isEmpty ( this . excludedIds ) | | this . isEmpty ( this . accessTypes ) | | this . isEmpty ( this . statuses ) | | this . isFalseQuery ( this . dmpDescriptionTemplateQuery ) | | this . isFalseQuery ( this . dmpUserQuery ) ;
2023-10-23 10:16:58 +02:00
}
@Override
2023-10-23 10:31:07 +02:00
protected Class < DmpEntity > entityClass ( ) {
return DmpEntity . class ;
2023-10-23 10:16:58 +02:00
}
2023-11-08 17:42:52 +01:00
@Override
protected < X , Y > Predicate applyAuthZ ( QueryContext < X , Y > queryContext ) {
2024-04-12 12:49:13 +02:00
if ( this . authorize . contains ( AuthorizationFlags . None ) )
return null ;
if ( this . authorize . contains ( AuthorizationFlags . Permission ) & & this . authService . authorize ( Permission . BrowseDmp ) )
return null ;
2023-11-08 17:42:52 +01:00
UUID userId = null ;
boolean usePublic = this . authorize . contains ( AuthorizationFlags . Public ) ;
2024-04-12 12:49:13 +02:00
if ( this . authorize . contains ( AuthorizationFlags . DmpAssociated ) )
userId = this . userScope . getUserIdSafe ( ) ;
2023-11-08 17:42:52 +01:00
List < Predicate > predicates = new ArrayList < > ( ) ;
2024-04-12 12:49:13 +02:00
if ( userId ! = null | | usePublic ) {
2023-11-08 17:42:52 +01:00
predicates . add ( queryContext . CriteriaBuilder . or (
2023-11-14 11:24:14 +01:00
usePublic ? queryContext . CriteriaBuilder . and (
2024-04-12 12:49:13 +02:00
queryContext . CriteriaBuilder . equal ( queryContext . Root . get ( DmpEntity . _status ) , DmpStatus . Finalized ) ,
queryContext . CriteriaBuilder . equal ( queryContext . Root . get ( DmpEntity . _accessType ) , DmpAccessType . Public )
)
2023-11-14 11:24:14 +01:00
: queryContext . CriteriaBuilder . or ( ) , //Creates a false query
2023-11-08 17:42:52 +01:00
userId ! = null ? queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _id ) ) . value ( this . queryUtilsService . buildDmpUserAuthZSubQuery ( queryContext . Query , queryContext . CriteriaBuilder , userId ) ) : queryContext . CriteriaBuilder . or ( ) //Creates a false query
) ) ;
}
2023-11-14 15:08:48 +01:00
if ( ! predicates . isEmpty ( ) ) {
2023-11-08 17:42:52 +01:00
Predicate [ ] predicatesArray = predicates . toArray ( new Predicate [ 0 ] ) ;
return queryContext . CriteriaBuilder . and ( predicatesArray ) ;
} else {
return queryContext . CriteriaBuilder . or ( ) ; //Creates a false query
}
}
2024-04-12 12:49:13 +02:00
2023-10-23 10:16:58 +02:00
@Override
protected < X , Y > Predicate applyFilters ( QueryContext < X , Y > queryContext ) {
List < Predicate > predicates = new ArrayList < > ( ) ;
2023-10-23 13:45:05 +02:00
if ( this . like ! = null & & ! this . like . isEmpty ( ) ) {
2024-04-05 11:43:33 +02:00
predicates . add ( queryUtilsService . ilike ( queryContext . CriteriaBuilder , queryContext . Root . get ( DmpEntity . _label ) , this . like ) ) ;
2023-10-23 13:45:05 +02:00
}
2023-10-23 10:16:58 +02:00
if ( this . ids ! = null ) {
2023-10-23 10:31:07 +02:00
CriteriaBuilder . In < UUID > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _id ) ) ;
2023-10-23 10:16:58 +02:00
for ( UUID item : this . ids )
inClause . value ( item ) ;
predicates . add ( inClause ) ;
2023-11-02 17:12:36 +01:00
}
2024-01-15 12:57:33 +01:00
if ( this . creatorIds ! = null ) {
CriteriaBuilder . In < UUID > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _creatorId ) ) ;
for ( UUID item : this . creatorIds )
inClause . value ( item ) ;
predicates . add ( inClause ) ;
}
2023-11-02 17:12:36 +01:00
if ( this . excludedIds ! = null ) {
2023-10-23 13:45:05 +02:00
CriteriaBuilder . In < UUID > notInClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _id ) ) ;
for ( UUID item : this . excludedIds )
notInClause . value ( item ) ;
predicates . add ( notInClause . not ( ) ) ;
2023-10-23 10:16:58 +02:00
}
if ( this . isActives ! = null ) {
2023-10-23 10:31:07 +02:00
CriteriaBuilder . In < IsActive > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _isActive ) ) ;
2023-10-23 10:16:58 +02:00
for ( IsActive item : this . isActives )
inClause . value ( item ) ;
predicates . add ( inClause ) ;
}
if ( this . statuses ! = null ) {
2023-10-23 10:31:07 +02:00
CriteriaBuilder . In < DmpStatus > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _status ) ) ;
for ( DmpStatus item : this . statuses )
2023-10-23 10:16:58 +02:00
inClause . value ( item ) ;
predicates . add ( inClause ) ;
}
2023-11-14 17:18:20 +01:00
if ( this . versionStatuses ! = null ) {
CriteriaBuilder . In < DmpVersionStatus > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _versionStatus ) ) ;
for ( DmpVersionStatus item : this . versionStatuses )
inClause . value ( item ) ;
predicates . add ( inClause ) ;
}
2023-11-14 15:08:48 +01:00
if ( this . accessTypes ! = null ) {
CriteriaBuilder . In < DmpAccessType > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _accessType ) ) ;
for ( DmpAccessType item : this . accessTypes )
inClause . value ( item ) ;
predicates . add ( inClause ) ;
}
2023-10-23 13:45:05 +02:00
if ( this . versions ! = null ) {
CriteriaBuilder . In < Integer > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _version ) ) ;
for ( Integer item : this . versions )
inClause . value ( item ) ;
predicates . add ( inClause ) ;
2023-10-23 10:16:58 +02:00
}
2023-11-02 17:12:36 +01:00
if ( this . groupIds ! = null ) {
CriteriaBuilder . In < UUID > inClause = queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _groupId ) ) ;
for ( UUID item : this . groupIds )
inClause . value ( item ) ;
predicates . add ( inClause ) ;
}
2024-04-12 12:49:13 +02:00
if ( this . after ! = null ) {
Predicate afterClause = queryContext . CriteriaBuilder . greaterThanOrEqualTo ( queryContext . Root . get ( DmpEntity . _createdAt ) , this . after ) ;
predicates . add ( afterClause ) ;
}
2023-12-04 16:27:47 +01:00
2023-12-05 15:05:37 +01:00
if ( this . dmpUserQuery ! = null ) {
QueryContext < DmpUserEntity , UUID > subQuery = this . applySubQuery ( this . dmpUserQuery , queryContext , UUID . class , root - > root . get ( DmpUserEntity . _dmpId ) ) ;
predicates . add ( queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _id ) ) . value ( subQuery . Query ) ) ;
}
2023-12-04 16:27:47 +01:00
if ( this . dmpDescriptionTemplateQuery ! = null ) {
2023-12-05 10:32:17 +01:00
QueryContext < DmpDescriptionTemplateEntity , UUID > subQuery = this . applySubQuery ( this . dmpDescriptionTemplateQuery , queryContext , UUID . class , dmpDescriptionTemplateEntityRoot - > dmpDescriptionTemplateEntityRoot . get ( DmpDescriptionTemplateEntity . _dmpId ) ) ;
predicates . add ( queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _id ) ) . value ( subQuery . Query ) ) ;
2023-12-04 16:27:47 +01:00
}
2024-04-12 15:51:44 +02:00
if ( this . dmpReferenceQuery ! = null ) {
QueryContext < DmpReferenceEntity , UUID > subQuery = this . applySubQuery ( this . dmpReferenceQuery , queryContext , UUID . class , dmpReferenceEntityRoot - > dmpReferenceEntityRoot . get ( DmpReferenceEntity . _dmpId ) ) ;
predicates . add ( queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _id ) ) . value ( subQuery . Query ) ) ;
}
2024-04-16 09:48:53 +02:00
if ( this . entityDoiQuery ! = null ) {
QueryContext < EntityDoiEntity , UUID > subQuery = this . applySubQuery ( this . entityDoiQuery , queryContext , UUID . class , entityDoiEntityRoot - > entityDoiEntityRoot . get ( EntityDoiEntity . _entityId ) ) ;
predicates . add ( queryContext . CriteriaBuilder . in ( queryContext . Root . get ( DmpEntity . _id ) ) . value ( subQuery . Query ) ) ;
}
2023-10-23 10:16:58 +02:00
if ( ! predicates . isEmpty ( ) ) {
Predicate [ ] predicatesArray = predicates . toArray ( new Predicate [ 0 ] ) ;
return queryContext . CriteriaBuilder . and ( predicatesArray ) ;
} else {
return null ;
}
}
@Override
protected String fieldNameOf ( FieldResolver item ) {
2024-04-12 12:49:13 +02:00
if ( item . match ( Dmp . _id ) | | item . match ( PublicDmp . _id ) )
return DmpEntity . _id ;
else if ( item . match ( Dmp . _label ) | | item . match ( PublicDmp . _label ) )
return DmpEntity . _label ;
else if ( item . match ( Dmp . _version ) | | item . match ( PublicDmp . _version ) )
return DmpEntity . _version ;
else if ( item . match ( Dmp . _status ) )
return DmpEntity . _status ;
else if ( item . match ( Dmp . _properties ) )
return DmpEntity . _properties ;
else if ( item . prefix ( Dmp . _properties ) )
return DmpEntity . _properties ;
else if ( item . match ( Dmp . _groupId ) )
return DmpEntity . _groupId ;
else if ( item . match ( Dmp . _description ) | | item . match ( PublicDmp . _description ) )
return DmpEntity . _description ;
else if ( item . match ( Dmp . _createdAt ) )
return DmpEntity . _createdAt ;
else if ( item . match ( Dmp . _updatedAt ) )
return DmpEntity . _updatedAt ;
else if ( item . match ( Dmp . _hash ) )
return DmpEntity . _updatedAt ;
else if ( item . match ( Dmp . _isActive ) )
return DmpEntity . _isActive ;
else if ( item . match ( Dmp . _finalizedAt ) | | item . match ( PublicDmp . _finalizedAt ) )
return DmpEntity . _finalizedAt ;
else if ( item . match ( Dmp . _accessType ) )
return DmpEntity . _accessType ;
else if ( item . match ( Dmp . _creator ) )
return DmpEntity . _creatorId ;
else if ( item . prefix ( Dmp . _creator ) )
return DmpEntity . _blueprintId ;
else if ( item . match ( Dmp . _blueprint ) )
return DmpEntity . _blueprintId ;
else if ( item . prefix ( Dmp . _blueprint ) )
return DmpEntity . _blueprintId ;
else if ( item . match ( Dmp . _language ) )
return DmpEntity . _language ;
else if ( item . match ( Dmp . _publicAfter ) )
return DmpEntity . _publicAfter ;
else if ( item . match ( Dmp . _versionStatus ) )
return DmpEntity . _versionStatus ;
else if ( item . match ( Dmp . _belongsToCurrentTenant ) )
return DmpEntity . _tenantId ;
else
return null ;
2023-10-23 10:16:58 +02:00
}
@Override
2023-10-23 10:31:07 +02:00
protected DmpEntity convert ( Tuple tuple , Set < String > columns ) {
DmpEntity item = new DmpEntity ( ) ;
item . setId ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _id , UUID . class ) ) ;
2024-04-03 12:22:22 +02:00
item . setTenantId ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _tenantId , UUID . class ) ) ;
2023-10-23 10:31:07 +02:00
item . setLabel ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _label , String . class ) ) ;
2023-11-02 12:45:32 +01:00
item . setVersion ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _version , Short . class ) ) ;
2023-10-23 10:31:07 +02:00
item . setStatus ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _status , DmpStatus . class ) ) ;
2023-11-14 17:18:20 +01:00
item . setVersionStatus ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _versionStatus , DmpVersionStatus . class ) ) ;
2023-10-23 10:31:07 +02:00
item . setProperties ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _properties , String . class ) ) ;
item . setGroupId ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _groupId , UUID . class ) ) ;
item . setDescription ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _description , String . class ) ) ;
item . setCreatedAt ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _createdAt , Instant . class ) ) ;
item . setUpdatedAt ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _updatedAt , Instant . class ) ) ;
item . setIsActive ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _isActive , IsActive . class ) ) ;
item . setFinalizedAt ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _finalizedAt , Instant . class ) ) ;
2023-11-02 12:45:32 +01:00
item . setAccessType ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _accessType , DmpAccessType . class ) ) ;
2023-11-20 16:09:24 +01:00
item . setCreatorId ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _creatorId , UUID . class ) ) ;
item . setBlueprintId ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _blueprintId , UUID . class ) ) ;
2023-11-02 12:45:32 +01:00
item . setLanguage ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _language , String . class ) ) ;
item . setPublicAfter ( QueryBase . convertSafe ( tuple , columns , DmpEntity . _publicAfter , Instant . class ) ) ;
2023-10-23 10:16:58 +02:00
return item ;
}
2023-10-20 15:48:55 +02:00
}