Package br.edu.utfpr.cm.JGitMinerWeb.services.matrix

Source Code of br.edu.utfpr.cm.JGitMinerWeb.services.matrix.FileModifiedTogetherOnIssueInMilestoneServices

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.edu.utfpr.cm.JGitMinerWeb.services.matrix;

import br.edu.utfpr.cm.JGitMinerWeb.dao.GenericDao;
import br.edu.utfpr.cm.JGitMinerWeb.model.matrix.EntityMatrix;
import br.edu.utfpr.cm.JGitMinerWeb.model.miner.EntityRepository;
import br.edu.utfpr.cm.JGitMinerWeb.services.matrix.auxiliary.AuxFileFilePull;
import br.edu.utfpr.cm.JGitMinerWeb.services.matrix.nodes.NodeGeneric;
import br.edu.utfpr.cm.JGitMinerWeb.util.OutLog;
import br.edu.utfpr.cm.JGitMinerWeb.util.Util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
*
* @author douglas
*/
public class FileModifiedTogetherOnIssueInMilestoneServices extends AbstractMatrixServices {

    public FileModifiedTogetherOnIssueInMilestoneServices(GenericDao dao, OutLog out) {
        super(dao, out);
    }

    public FileModifiedTogetherOnIssueInMilestoneServices(GenericDao dao, EntityRepository repository, List<EntityMatrix> matricesToSave, Map params, OutLog out) {
        super(dao, repository, matricesToSave, params, out);
    }

    public int getMilestoneNumber() {
        String mileNumber = params.get("milestoneNumber") + "";
        return Util.tratarStringParaInt(mileNumber);
    }

    private String getPrefixFile() {
        return params.get("prefixFile") + "%";
    }

    private String getSuffixFile() {
        return "%" + params.get("suffixFile");
    }

    @Override
    public void run() {
        System.out.println(params);

        if (getRepository() == null) {
            throw new IllegalArgumentException("Parâmetro Repository não pode ser nulo.");
        }

        int mileNumber = getMilestoneNumber();

        if (mileNumber <= 0) {
            throw new IllegalArgumentException("Numero do Milestone inválido.");
        }

        String jpql = "SELECT DISTINCT NEW " + AuxFileFilePull.class.getName() + "(f.filename, f2.filename, p.number) "
                + "FROM "
                + "EntityPullRequest p JOIN p.issue i JOIN i.milestone m JOIN p.repositoryCommits rc JOIN p.repositoryCommits rc2 JOIN rc.files f JOIN rc2.files f2 "
                + "WHERE "
                + "p.repository = :repository AND "
                + "m.number = :milestoneNumber AND "
                + "f.filename LIKE :prefixFile AND "
                + "f.filename LIKE :suffixFile AND "
                + "f2.filename LIKE :prefixFile AND "
                + "f2.filename LIKE :suffixFile AND "
                + "f.filename <> f2.filename ";

        System.out.println(jpql);

        int countTemp = 0;
        int offset = 1;
        final int limit = 50000;
        int countTotal = 0;

        List<NodeGeneric> nodes = new ArrayList<>();
        do {
            List<AuxFileFilePull> resultTemp = dao.selectWithParams(jpql,
                    new String[]{"repository", "milestoneNumber", "prefixFile", "suffixFile"},
                    new Object[]{getRepository(), mileNumber, getPrefixFile(), getSuffixFile()},
                    offset, limit);
            countTemp = resultTemp.size();
            countTotal += countTemp;
            System.out.println("countTemp: " + countTemp);
            System.out.println("countTotal: " + countTotal);
            System.out.println("Transformando em Nodes...");
            for (Iterator<AuxFileFilePull> it = resultTemp.iterator(); it.hasNext();) {
                AuxFileFilePull aux = it.next();
                incrementNode(nodes, new NodeGeneric(aux.getFileName(), aux.getFileName2()));
            }
            System.out.println("Transformação concluída!");
            offset += limit;
            System.gc();
        } while (countTemp >= limit);

        System.out.println("Nodes: " + nodes.size());
        EntityMatrix matrix = new EntityMatrix();
        matrix.setNodes(objectsToNodes(nodes));
        matricesToSave.add(matrix);
    }

    @Override
    public String getHeadCSV() {
        return "file;file2;count";
    }
}
TOP

Related Classes of br.edu.utfpr.cm.JGitMinerWeb.services.matrix.FileModifiedTogetherOnIssueInMilestoneServices

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.