protected String actualizeJiraTickets()

in tcbot-jira-ignited/src/main/java/org/apache/ignite/jiraignited/JiraTicketSync.java [96:148]


    protected String actualizeJiraTickets(String srvCode, boolean fullResync) {
        int srvIdMaskHigh = IJiraIgnited.serverIdToInt(srvCode);
        IJiraIntegration jira = jiraIntegrationProvider.server(srvCode);

        String reqFields = Arrays.stream(Fields.class.getDeclaredFields())
            .map(Field::getName)
            .collect(Collectors.joining(","));

        IJiraServerConfig cfg = jira.config();
        String projectCode = cfg.projectCodeForVisa();
        String baseUrl = "search?jql=" + escape("project=" + projectCode + " order by updated DESC")
            + "&" +
            "fields=" + reqFields +
            "&maxResults=100";

        String url = baseUrl;

        logger.info("Requesting JIRA tickets using URL " + url + ("\n" + cfg.restApiUrl() + url));
        Tickets tickets = jira.getTicketsPage(url);
        Collection<Ticket> page = tickets.issuesNotNull();

        if (F.isEmpty(page))
            return "Something went wrong - no tickets found. Check jira availability: " +
                "[project=" + projectCode + ", url=" + url + "]";

        int ticketsSaved = jiraDao.saveChunk(srvIdMaskHigh, page, projectCode);

        int ticketsProcessed = page.size();

        if (ticketsSaved != 0 || fullResync) {
            while (tickets.nextStart() > 0) {
                url = baseUrl + "&startAt=" + tickets.nextStart();

                logger.info("Requesting JIRA tickets using URL " + url + ("\n" + cfg.restApiUrl() + url));
                tickets = jira.getTicketsPage(url);

                page = tickets.issuesNotNull();

                if (F.isEmpty(page))
                    break;

                int savedNow = jiraDao.saveChunk(srvIdMaskHigh, page, projectCode);

                ticketsSaved += savedNow;
                ticketsProcessed += page.size();

                if (savedNow == 0 && !fullResync)
                    break; // find not updated chunk and exit
            }
        }

        return "Jira tickets saved " + ticketsSaved + " from " + ticketsProcessed + " checked for service " + srvCode;
    }