@Override public TrackedEntityInstance getTrackedEntityInstance( String uid ) { TrackedEntityInstance tei = trackedEntityInstanceStore.getByUid( uid ); addTrackedEntityInstanceAudit( tei, currentUserService.getCurrentUsername(), AuditType.READ ); return tei; }
@Override public void deleteUser( User user ) { AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), user, AuditLogUtil.ACTION_DELETE ); userStore.delete( user ); }
@Override public TrackedEntityInstance getTrackedEntityInstance( int id ) { TrackedEntityInstance tei = trackedEntityInstanceStore.get( id ); addTrackedEntityInstanceAudit( tei, currentUserService.getCurrentUsername(), AuditType.READ ); return tei; }
@Override public void updateUser( User user ) { userStore.update( user ); AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), user, AuditLogUtil.ACTION_UPDATE ); }
@Override public void deleteTrackedEntityDataValue( TrackedEntityDataValue dataValue ) { createAndAddAudit( dataValue, currentUserService.getCurrentUsername(), AuditType.DELETE ); handleFileDataValueDelete( dataValue ); dataValueStore.delete( dataValue ); }
@Override public int addUser( User user ) { AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), user, AuditLogUtil.ACTION_CREATE ); userStore.save( user ); return user.getId(); }
private Optional<Serializable> getUserSetting( UserSettingKey key, Optional<User> user ) { if ( key == null ) { return Optional.empty(); } String username = user.isPresent() ? user.get().getUsername() : currentUserService.getCurrentUsername(); String cacheKey = getCacheKey( key.getName(), username ); Optional<Serializable> result = userSettingCache .get( cacheKey, c -> getUserSettingOptional( key, username ).orElse( null ) ); if ( !result.isPresent() && NAME_SETTING_KEY_MAP.containsKey( key.getName() ) ) { return Optional.ofNullable( systemSettingManager.getSystemSetting( NAME_SETTING_KEY_MAP.get( key.getName() ) ) ); } else { return result; } }
@Override public boolean isRuleApplicable( CredentialsInfo credentialsInfo ) { UserCredentials userCredentials = userService.getUserCredentialsByUsername( credentialsInfo.getUsername() ); if ( !userService.credentialsNonExpired( userCredentials ) ) { return true; } return ( credentialsInfo.isNewUser() || !currentUserService.getCurrentUsername().equals( credentialsInfo.getUsername() ) ) ? false : true; } }
@Override @Transactional public void deleteDataValue( DataValue dataValue ) { DataValueAudit dataValueAudit = new DataValueAudit( dataValue, dataValue.getAuditValue(), currentUserService.getCurrentUsername(), AuditType.DELETE ); dataValueAuditService.addDataValueAudit( dataValueAudit ); dataValue.setLastUpdated( new Date() ); dataValue.setDeleted( true ); dataValueStore.updateDataValue( dataValue ); }
@Override public void completeProgramInstanceStatus( ProgramInstance programInstance ) { // --------------------------------------------------------------------- // Send sms-message when to completed the program // --------------------------------------------------------------------- programNotificationPublisher.publishEnrollment( programInstance, ProgramNotificationEventType.PROGRAM_COMPLETION ); eventPublisher.publishEvent( new TrackedEntityInstanceEnrolledEvent( this, programInstance ) ); // ----------------------------------------------------------------- // Update program-instance // ----------------------------------------------------------------- programInstance.setStatus( ProgramStatus.COMPLETED ); programInstance.setEndDate( new Date() ); programInstance.setCompletedBy( currentUserService.getCurrentUsername() ); updateProgramInstance( programInstance ); }
@Override public boolean isInUserHierarchyCached( OrganisationUnit organisationUnit ) { String cacheKey = joinHyphen( currentUserService.getCurrentUsername(), organisationUnit.getUid() ); return IN_USER_ORG_UNIT_HIERARCHY_CACHE.get( cacheKey, ou -> isInUserHierarchy( organisationUnit ) ); }
@Override public void deleteTrackedEntityDataValue( ProgramStageInstance programStageInstance ) { List<TrackedEntityDataValue> dataValues = dataValueStore.get( programStageInstance ); String username = currentUserService.getCurrentUsername(); for ( TrackedEntityDataValue dataValue : dataValues ) { createAndAddAudit( dataValue, username, AuditType.DELETE ); handleFileDataValueDelete( dataValue ); } dataValueStore.delete( programStageInstance ); }
@Override public void deleteTrackedEntityAttributeValue( TrackedEntityAttributeValue attributeValue ) { TrackedEntityAttributeValueAudit trackedEntityAttributeValueAudit = new TrackedEntityAttributeValueAudit( attributeValue, attributeValue.getAuditValue(), currentUserService.getCurrentUsername(), AuditType.DELETE ); trackedEntityAttributeValueAuditService.addTrackedEntityAttributeValueAudit( trackedEntityAttributeValueAudit ); deleteFileValue( attributeValue ); attributeValueStore.delete( attributeValue ); }
/** * Uses query since name property might not be unique. */ @Override public final T getByName( String name ) { CriteriaBuilder builder = getCriteriaBuilder(); JpaQueryParameters<T> param = new JpaQueryParameters<T>() .addPredicates( getSharingPredicates( builder ) ) .addPredicate( root -> builder.equal( root.get( "name" ), name ) ); List<T> list = getList( builder, param ); T object = list != null && !list.isEmpty() ? list.get( 0 ) : null; if ( !isReadAllowed( object, currentUserService.getCurrentUser() ) ) { AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); throw new ReadAccessDeniedException( object.toString() ); } return object; }
@Override public final T get( int id ) { T object = getSession().get( getClazz(), id ); if ( !isReadAllowed( object, currentUserService.getCurrentUser() ) ) { AuditLogUtil.infoWrapper( log, currentUserService.getCurrentUsername(), object, AuditLogUtil.ACTION_READ_DENIED ); throw new ReadAccessDeniedException( object.toString() ); } return postProcessObject( object ); }
@Override public void saveTrackedEntityDataValue( TrackedEntityDataValue trackedEntityDataValue ) { trackedEntityDataValue.setAutoFields(); if ( !StringUtils.isEmpty( trackedEntityDataValue.getValue() ) ) { if ( StringUtils.isEmpty( trackedEntityDataValue.getStoredBy() ) ) { trackedEntityDataValue.setStoredBy( currentUserService.getCurrentUsername() ); } if ( trackedEntityDataValue.getDataElement() == null || trackedEntityDataValue.getDataElement().getValueType() == null ) { throw new IllegalQueryException( "Data element or type is null or empty" ); } String result = dataValueIsValid( trackedEntityDataValue.getValue(), trackedEntityDataValue.getDataElement().getValueType() ); if ( result != null ) { throw new IllegalQueryException( "Value is not valid: " + result ); } if ( trackedEntityDataValue.getDataElement().isFileType() ) { handleFileDataValueSave( trackedEntityDataValue ); } dataValueStore.saveVoid( trackedEntityDataValue ); } }
@Override public void updateTrackedEntityDataValue( TrackedEntityDataValue trackedEntityDataValue ) { trackedEntityDataValue.setAutoFields(); if ( StringUtils.isEmpty( trackedEntityDataValue.getValue() ) ) { deleteTrackedEntityDataValue( trackedEntityDataValue ); } else { if ( StringUtils.isEmpty( trackedEntityDataValue.getStoredBy() ) ) { trackedEntityDataValue.setStoredBy( currentUserService.getCurrentUsername() ); } if ( trackedEntityDataValue.getDataElement() == null || trackedEntityDataValue.getDataElement().getValueType() == null ) { throw new IllegalQueryException( "Data element or type is null or empty" ); } String result = dataValueIsValid( trackedEntityDataValue.getValue(), trackedEntityDataValue.getDataElement().getValueType() ); if ( result != null ) { throw new IllegalQueryException( "Value is not valid: " + result ); } createAndAddAudit( trackedEntityDataValue, trackedEntityDataValue.getStoredBy(), AuditType.UPDATE ); handleFileDataValueUpdate( trackedEntityDataValue ); dataValueStore.update( trackedEntityDataValue ); } }
@Override public ImportSummary updateEnrollmentForNote( Enrollment enrollment ) { if ( enrollment == null || enrollment.getEnrollment() == null ) { return new ImportSummary( ImportStatus.ERROR, "No enrollment or enrollment ID was supplied" ).incrementIgnored(); } ImportSummary importSummary = new ImportSummary( enrollment.getEnrollment() ); ProgramInstance programInstance = programInstanceService.getProgramInstance( enrollment.getEnrollment() ); if ( programInstance == null ) { return new ImportSummary( ImportStatus.ERROR, "Enrollment ID was not valid." ).incrementIgnored(); } saveTrackedEntityComment( programInstance, enrollment, currentUserService.getCurrentUsername() ); importSummary.setReference( enrollment.getEnrollment() ); importSummary.getImportCount().incrementUpdated(); return importSummary; }
attributeValue.getAuditValue(), currentUserService.getCurrentUsername(), AuditType.UPDATE );
@Override public List<TrackedEntityInstance> getTrackedEntityInstances( TrackedEntityInstanceQueryParams params, boolean skipAccessValidation ) { if ( params.isOrQuery() && !params.hasAttributes() && !params.hasProgram() ) { Collection<TrackedEntityAttribute> attributes = attributeService.getTrackedEntityAttributesDisplayInListNoProgram(); params.addAttributes( QueryItem.getQueryItems( attributes ) ); params.addFiltersIfNotExist( QueryItem.getQueryItems( attributes ) ); } decideAccess( params ); //AccessValidation should be skipped only and only if it is internal service that runs the task (for example sync job) if ( !skipAccessValidation ) { validate( params ); } params.setUser( currentUserService.getCurrentUser() ); if ( !params.isPaging() && !params.isSkipPaging() ) { params.setDefaultPaging(); } List<TrackedEntityInstance> trackedEntityInstances = trackedEntityInstanceStore.getTrackedEntityInstances( params ); String accessedBy = currentUserService.getCurrentUsername(); for ( TrackedEntityInstance tei : trackedEntityInstances ) { addTrackedEntityInstanceAudit( tei, accessedBy, AuditType.SEARCH ); } return trackedEntityInstances; }