Example usage for org.apache.ibatis.session ResultHandler ResultHandler

List of usage examples for org.apache.ibatis.session ResultHandler ResultHandler

Introduction

In this page you can find the example usage for org.apache.ibatis.session ResultHandler ResultHandler.

Prototype

ResultHandler

Source Link

Usage

From source file:org.sonar.db.component.ResourceIndexDao.java

License:Open Source License

private void doIndexProject(long rootProjectId, SqlSession session, final ResourceIndexMapper mapper) {
    // non indexed resources
    ResourceIndexQuery query = ResourceIndexQuery.create().setNonIndexedOnly(true)
            .setQualifiers(NOT_RENAMABLE_QUALIFIERS).setScopes(NOT_RENAMABLE_SCOPES)
            .setRootProjectId(rootProjectId);

    session.select(SELECT_RESOURCES, query, new ResultHandler() {
        @Override/*from   w ww .j  a v  a  2 s  .c  o m*/
        public void handleResult(ResultContext context) {
            ResourceDto resource = (ResourceDto) context.getResultObject();
            doIndex(resource, mapper);
        }
    });

    // some resources can be renamed, so index must be regenerated
    // -> delete existing rows and create them again
    query = ResourceIndexQuery.create().setNonIndexedOnly(false).setQualifiers(RENAMABLE_QUALIFIERS)
            .setScopes(RENAMABLE_SCOPES).setRootProjectId(rootProjectId);

    session.select(SELECT_RESOURCES, query, new ResultHandler() {
        @Override
        public void handleResult(ResultContext context) {
            ResourceDto resource = (ResourceDto) context.getResultObject();

            mapper.deleteByResourceId(resource.getId());
            doIndex(resource, mapper);
        }
    });
}

From source file:org.sonar.db.permission.GroupWithPermissionDaoTest.java

License:Open Source License

@Test
public void group_count_by_permission_and_component_id() {
    GroupDto group1 = insertGroup(newGroupDto());
    GroupDto group2 = insertGroup(newGroupDto());
    GroupDto group3 = insertGroup(newGroupDto());

    insertGroupRole(ISSUE_ADMIN, group1.getId(), 42L);
    insertGroupRole(ADMIN, group1.getId(), 123L);
    insertGroupRole(ADMIN, group2.getId(), 123L);
    insertGroupRole(ADMIN, group3.getId(), 123L);
    // anyone group
    insertGroupRole(ADMIN, null, 123L);/*w w  w  .  j av a  2 s.c o m*/
    insertGroupRole(USER, group1.getId(), 123L);
    insertGroupRole(USER, group1.getId(), 456L);

    commit();

    final List<CountByProjectAndPermissionDto> result = new ArrayList<>();
    underTest.groupsCountByComponentIdAndPermission(session, Arrays.asList(123L, 456L, 789L),
            new ResultHandler() {
                @Override
                public void handleResult(ResultContext context) {
                    result.add((CountByProjectAndPermissionDto) context.getResultObject());
                }
            });

    assertThat(result).hasSize(3);
    assertThat(result).extracting("permission").containsOnly(ADMIN, USER);
    assertThat(result).extracting("componentId").containsOnly(123L, 456L);
    assertThat(result).extracting("count").containsOnly(4, 1);
}

From source file:org.sonar.db.permission.PermissionTemplateDaoTest.java

License:Open Source License

@Test
public void group_count_by_template_and_permission() {
    PermissionTemplateDto template1 = insertTemplate(newPermissionTemplateDto());
    PermissionTemplateDto template2 = insertTemplate(newPermissionTemplateDto());
    PermissionTemplateDto template3 = insertTemplate(newPermissionTemplateDto());

    GroupDto group1 = insertGroup(newGroupDto());
    GroupDto group2 = insertGroup(newGroupDto());
    GroupDto group3 = insertGroup(newGroupDto());

    addGroupToTemplate(42L, group1.getId(), ISSUE_ADMIN);
    addGroupToTemplate(template1.getId(), group1.getId(), CODEVIEWER);
    addGroupToTemplate(template1.getId(), group2.getId(), CODEVIEWER);
    addGroupToTemplate(template1.getId(), group3.getId(), CODEVIEWER);
    addGroupToTemplate(template1.getId(), null, CODEVIEWER);
    addGroupToTemplate(template1.getId(), group1.getId(), ADMIN);
    addGroupToTemplate(template2.getId(), group1.getId(), ADMIN);

    commit();/*from  ww w  . j ava 2  s .com*/

    final List<CountByTemplateAndPermissionDto> result = new ArrayList<>();
    underTest.groupsCountByTemplateIdAndPermission(session,
            Arrays.asList(template1.getId(), template2.getId(), template3.getId()), new ResultHandler() {
                @Override
                public void handleResult(ResultContext context) {
                    result.add((CountByTemplateAndPermissionDto) context.getResultObject());
                }
            });

    assertThat(result).hasSize(3);
    assertThat(result).extracting("permission").containsOnly(ADMIN, CODEVIEWER);
    assertThat(result).extracting("templateId").containsOnly(template1.getId(), template2.getId());
    assertThat(result).extracting("count").containsOnly(4, 1);
}

From source file:org.sonar.db.permission.PermissionTemplateDaoTest.java

License:Open Source License

@Test
public void user_count_by_template_and_permission() {
    PermissionTemplateDto template1 = insertTemplate(newPermissionTemplateDto());
    PermissionTemplateDto template2 = insertTemplate(newPermissionTemplateDto());
    PermissionTemplateDto template3 = insertTemplate(newPermissionTemplateDto());

    UserDto user1 = insertUser(newUserDto());
    UserDto user2 = insertUser(newUserDto());
    UserDto user3 = insertUser(newUserDto());

    addUserToTemplate(42L, user1.getId(), ISSUE_ADMIN);
    addUserToTemplate(template1.getId(), user1.getId(), ADMIN);
    addUserToTemplate(template1.getId(), user2.getId(), ADMIN);
    addUserToTemplate(template1.getId(), user3.getId(), ADMIN);
    addUserToTemplate(template1.getId(), user1.getId(), USER);
    addUserToTemplate(template2.getId(), user1.getId(), USER);

    commit();// w  ww .ja  va  2  s  .com

    final List<CountByTemplateAndPermissionDto> result = new ArrayList<>();
    underTest.usersCountByTemplateIdAndPermission(session,
            Arrays.asList(template1.getId(), template2.getId(), template3.getId()), new ResultHandler() {
                @Override
                public void handleResult(ResultContext context) {
                    result.add((CountByTemplateAndPermissionDto) context.getResultObject());
                }
            });
    assertThat(result).hasSize(3);
    assertThat(result).extracting("permission").containsOnly(ADMIN, USER);
    assertThat(result).extracting("templateId").containsOnly(template1.getId(), template2.getId());
    assertThat(result).extracting("count").containsOnly(3, 1);

}

From source file:org.sonar.db.permission.template.PermissionTemplateDaoTest.java

License:Open Source License

@Test
public void group_count_by_template_and_permission() {
    PermissionTemplateDto template1 = templateDb.insertTemplate();
    PermissionTemplateDto template2 = templateDb.insertTemplate();
    PermissionTemplateDto template3 = templateDb.insertTemplate();

    GroupDto group1 = db.users().insertGroup(newGroupDto());
    GroupDto group2 = db.users().insertGroup(newGroupDto());
    GroupDto group3 = db.users().insertGroup(newGroupDto());

    templateDb.addGroupToTemplate(42L, group1.getId(), ISSUE_ADMIN);
    templateDb.addGroupToTemplate(template1.getId(), group1.getId(), CODEVIEWER);
    templateDb.addGroupToTemplate(template1.getId(), group2.getId(), CODEVIEWER);
    templateDb.addGroupToTemplate(template1.getId(), group3.getId(), CODEVIEWER);
    templateDb.addGroupToTemplate(template1.getId(), null, CODEVIEWER);
    templateDb.addGroupToTemplate(template1.getId(), group1.getId(), ADMIN);
    templateDb.addGroupToTemplate(template2.getId(), group1.getId(), ADMIN);

    final List<CountByTemplateAndPermissionDto> result = new ArrayList<>();
    underTest.groupsCountByTemplateIdAndPermission(dbSession,
            Arrays.asList(template1.getId(), template2.getId(), template3.getId()), new ResultHandler() {
                @Override// www  .ja v a 2  s  .c o  m
                public void handleResult(ResultContext context) {
                    result.add((CountByTemplateAndPermissionDto) context.getResultObject());
                }
            });

    assertThat(result).hasSize(3);
    assertThat(result).extracting("permission").containsOnly(ADMIN, CODEVIEWER);
    assertThat(result).extracting("templateId").containsOnly(template1.getId(), template2.getId());
    assertThat(result).extracting("count").containsOnly(4, 1);
}

From source file:org.sonar.db.permission.UserWithPermissionDaoTest.java

License:Open Source License

@Test
public void user_count_by_component_and_permission() {
    UserDto user1 = insertUser(newUserDto());
    UserDto user2 = insertUser(newUserDto());
    UserDto user3 = insertUser(newUserDto());

    insertUserRole(ISSUE_ADMIN, user1.getId(), 42L);
    insertUserRole(ADMIN, user1.getId(), 123L);
    insertUserRole(ADMIN, user2.getId(), 123L);
    insertUserRole(ADMIN, user3.getId(), 123L);
    insertUserRole(USER, user1.getId(), 123L);
    insertUserRole(USER, user1.getId(), 456L);
    commit();/*  ww w .  j ava  2  s .  c  om*/

    final List<CountByProjectAndPermissionDto> result = new ArrayList<>();
    underTest.usersCountByComponentIdAndPermission(dbTester.getSession(), Arrays.asList(123L, 456L, 789L),
            new ResultHandler() {
                @Override
                public void handleResult(ResultContext context) {
                    result.add((CountByProjectAndPermissionDto) context.getResultObject());
                }
            });
    assertThat(result).hasSize(3);
    assertThat(result).extracting("permission").containsOnly(ADMIN, USER);
    assertThat(result).extracting("componentId").containsOnly(123L, 456L);
    assertThat(result).extracting("count").containsOnly(3, 1);
}

From source file:org.sonar.db.purge.PurgeDao.java

License:Open Source License

private void disableOrphanResources(final ResourceDto project, final SqlSession session,
        final PurgeMapper purgeMapper, final PurgeListener purgeListener) {
    final List<IdUuidPair> componentIdUuids = new ArrayList<>();
    session.select("org.sonar.db.purge.PurgeMapper.selectComponentIdUuidsToDisable", project.getId(),
            new ResultHandler() {
                @Override/*from  w  w  w  .  j ava  2 s. c  om*/
                public void handleResult(ResultContext resultContext) {
                    IdUuidPair componentIdUuid = (IdUuidPair) resultContext.getResultObject();
                    if (componentIdUuid.getId() != null) {
                        componentIdUuids.add(componentIdUuid);
                    }
                }
            });

    for (IdUuidPair componentIdUuid : componentIdUuids) {
        disableResource(componentIdUuid, purgeMapper);
        purgeListener.onComponentDisabling(componentIdUuid.getUuid());
    }

    session.commit();
}

From source file:org.sonar.db.rule.RuleDaoTest.java

License:Open Source License

@Test
public void selectEnabledAndNonManual_with_ResultHandler() {
    dbTester.prepareDbUnit(getClass(), "selectEnabledAndNonManual.xml");

    final List<RuleDto> rules = new ArrayList<>();
    ResultHandler resultHandler = new ResultHandler() {
        @Override// w  w w.  jav  a 2 s  .c om
        public void handleResult(ResultContext resultContext) {
            rules.add((RuleDto) resultContext.getResultObject());
        }
    };
    underTest.selectEnabledAndNonManual(dbTester.getSession(), resultHandler);

    assertThat(rules.size()).isEqualTo(1);
    RuleDto ruleDto = rules.get(0);
    assertThat(ruleDto.getId()).isEqualTo(1);
}

From source file:org.sonar.db.version.v50.PopulateProjectsUuidColumnsMigrationStep.java

License:Open Source License

@Override
public void execute() {
    ProgressLogger progress = ProgressLogger.create(getClass(), counter);
    progress.start();/*w w  w . ja v a  2 s  .c  om*/

    final DbSession readSession = db.openSession(false);
    final DbSession writeSession = db.openSession(true);
    try {
        readSession.select("org.sonar.db.version.v50.Migration50Mapper.selectRootProjects",
                new ResultHandler() {
                    @Override
                    public void handleResult(ResultContext context) {
                        Component project = (Component) context.getResultObject();
                        List<Component> components = readSession.getMapper(Migration50Mapper.class)
                                .selectComponentChildrenForProjects(project.getId());
                        MigrationContext migrationContext = new MigrationContext(readSession, writeSession,
                                project, components);
                        migrateEnabledComponents(migrationContext);
                        migrateDisabledComponents(migrationContext);
                    }
                });
        writeSession.commit(true);
        readSession.commit(true);

        migrateComponentsWithoutUuid(readSession, writeSession);
        writeSession.commit(true);

        // log the total number of process rows
        progress.log();
    } finally {
        readSession.close();
        writeSession.close();
        progress.stop();
    }
}

From source file:org.sonar.server.computation.issue.BaseIssuesLoader.java

License:Open Source License

public List<DefaultIssue> loadForComponentUuid(String componentUuid) {
    DbSession session = dbClient.openSession(false);
    final List<DefaultIssue> result = new ArrayList<>();
    try {/*  ww w.ja  v  a  2s .c  o  m*/
        session.getMapper(IssueMapper.class).selectNonClosedByComponentUuid(componentUuid, new ResultHandler() {
            @Override
            public void handleResult(ResultContext resultContext) {
                DefaultIssue issue = ((IssueDto) resultContext.getResultObject()).toDefaultIssue();

                // TODO this field should be set outside this class
                if (!isActive(issue.ruleKey())
                        || ruleRepository.getByKey(issue.ruleKey()).getStatus() == RuleStatus.REMOVED) {
                    issue.setOnDisabledRule(true);
                    // TODO to be improved, why setOnDisabledRule(true) is not enough ?
                    issue.setBeingClosed(true);
                }
                // FIXME
                issue.setSelectedAt(System.currentTimeMillis());
                result.add(issue);
            }
        });
        return result;
    } finally {
        MyBatis.closeQuietly(session);
    }
}