fixed OrientationCheck
This commit is contained in:
		
							parent
							
								
									0f8910bb3f
								
							
						
					
					
						commit
						ca1cf4b329
					
				
					 1 changed files with 28 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -11,7 +11,9 @@ package ch.ethz.seb.sebserver.webservice.datalayer.checks;
 | 
			
		|||
import java.util.HashSet;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import org.mybatis.dynamic.sql.SqlBuilder;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
| 
						 | 
				
			
			@ -19,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
 | 
			
		|||
import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile;
 | 
			
		||||
import ch.ethz.seb.sebserver.gbl.util.Result;
 | 
			
		||||
import ch.ethz.seb.sebserver.webservice.DBIntegrityCheck;
 | 
			
		||||
import ch.ethz.seb.sebserver.webservice.datalayer.batis.mapper.OrientationRecordDynamicSqlSupport;
 | 
			
		||||
import ch.ethz.seb.sebserver.webservice.datalayer.batis.mapper.OrientationRecordMapper;
 | 
			
		||||
import ch.ethz.seb.sebserver.webservice.datalayer.batis.model.OrientationRecord;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -68,10 +71,15 @@ public class OrientationTableDuplicatesCheck implements DBIntegrityCheck {
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            if (tryFix) {
 | 
			
		||||
                toDelete
 | 
			
		||||
                final List<Long> checkedToDelete = toDelete
 | 
			
		||||
                        .stream()
 | 
			
		||||
                        .filter(this::doubleCheck)
 | 
			
		||||
                        .collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
                checkedToDelete
 | 
			
		||||
                        .stream()
 | 
			
		||||
                        .forEach(this.orientationRecordMapper::deleteByPrimaryKey);
 | 
			
		||||
                return "Fixed duplicates by deletion: " + toDelete;
 | 
			
		||||
                return "Fixed duplicates by deletion: " + checkedToDelete + " from findings:" + toDelete;
 | 
			
		||||
            } else {
 | 
			
		||||
                return "Found duplicates: " + toDelete;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -79,6 +87,24 @@ public class OrientationTableDuplicatesCheck implements DBIntegrityCheck {
 | 
			
		|||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean doubleCheck(final Long id) {
 | 
			
		||||
        try {
 | 
			
		||||
            final OrientationRecord selectByPrimaryKey = this.orientationRecordMapper.selectByPrimaryKey(id);
 | 
			
		||||
            final Long count = this.orientationRecordMapper.countByExample()
 | 
			
		||||
                    .where(
 | 
			
		||||
                            OrientationRecordDynamicSqlSupport.configAttributeId,
 | 
			
		||||
                            SqlBuilder.isEqualTo(selectByPrimaryKey.getConfigAttributeId()))
 | 
			
		||||
                    .and(
 | 
			
		||||
                            OrientationRecordDynamicSqlSupport.templateId,
 | 
			
		||||
                            SqlBuilder.isEqualTo(selectByPrimaryKey.getTemplateId()))
 | 
			
		||||
                    .build()
 | 
			
		||||
                    .execute();
 | 
			
		||||
            return count != null && count.longValue() > 1;
 | 
			
		||||
        } catch (final Exception e) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String toString() {
 | 
			
		||||
        final StringBuilder builder = new StringBuilder();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue