Esempio n. 1
0
  /**
   * Create a concrete miner to extract the informations of evolution. Each supported system have to
   * have your own miner, IPROJECT, REDMINE, SIGPRoject, etc...
   *
   * @param systemName
   * @return
   */
  public Miner getMiner(
      String minerName,
      String workDirectoryPath,
      MergeSide mergeSide,
      boolean systemOnLineModel,
      boolean repositoryOnlineModel) {

    if (StringUtils.isEmpty(minerName)) return null; // support half side miner

    Properties prop = new Properties();
    try {
      // I think that this also should be in the config file, this is hardcode
      URL url = new URL("platform:/plugin/br.ufrn.spl.ev/src/br/ufrn/spl/ev/miners.properties");
      InputStream inputStream = url.openConnection().getInputStream();

      prop.load(inputStream);
      Miner miner = (Miner) Class.forName(prop.getProperty(minerName)).newInstance();

      // OBSERVATION.: RepositoryConnector is always "true" in the miner, we don't find out a way to
      // do this offline

      if (miner instanceof IprojectMiner) {
        miner.setSystemConnector(
            new ConnectorFactory()
                .getSystemConnector("IPROJECT", workDirectoryPath, mergeSide, systemOnLineModel));
        miner.setRepositoryConnector(
            new ConnectorFactory().getRepositoryConnector(mergeSide, repositoryOnlineModel));
      }

      if (miner instanceof RedmineMiner) {
        miner.setSystemConnector(
            new ConnectorFactory()
                .getSystemConnector("REDMINE", workDirectoryPath, mergeSide, systemOnLineModel));
        miner.setRepositoryConnector(
            new ConnectorFactory().getRepositoryConnector(mergeSide, repositoryOnlineModel));
      }

      if (miner instanceof SIGProjectMiner) {
        miner.setSystemConnector(
            new ConnectorFactory()
                .getSystemConnector("SIGPROJECT", workDirectoryPath, mergeSide, systemOnLineModel));
        miner.setRepositoryConnector(
            new ConnectorFactory().getRepositoryConnector(mergeSide, repositoryOnlineModel));
      }

      if (miner instanceof GithubMiner) {
        miner.setSystemConnector(
            new ConnectorFactory()
                .getSystemConnector("GITHUB", workDirectoryPath, mergeSide, systemOnLineModel));
        miner.setRepositoryConnector(
            new ConnectorFactory().getRepositoryConnector(mergeSide, repositoryOnlineModel));
      }

      return miner;

    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
  }