Проект перезагрузки API Rhapsody - PullRequest
0 голосов
/ 29 ноября 2018

Я создаю плагин Rhapsody JavaAPI, который будет очищать файлы текущего проекта и копировать в новую модель.Это должно иметь свежую рабочую копию для разработчиков, чтобы им не приходилось закрывать рапсодию и копировать в чистые модели вручную.

Моя дилемма - когда я закрываю активный проект, он удаляет его из рапсодии какожидается.Когда я пытаюсь перезагрузить новый rpy-файл, представление не меняется и модель не перезагружается.

Как мне выполнить перезагрузку проекта?

Вот мой плагин (обратите внимание на вызов классаработает нормально. Это в методе clean, что у меня возникают проблемы).

public class CMMCleaner {
  private Path rootDir;
  private Path rpyFile;
  private IRPApplication rpyApp;

  public CMMCleaner(final Path rootDir, final IRPApplication rpyApp) {
    this.rootDir = rootDir;
    if (!Files.exists(rootDir)) throw new IllegalArgumentException(rootDir + " does not exist");
    this.rpyApp = rpyApp;
    this.rpyFile = Paths.get(this.rpyApp.activeProject().getCurrentDirectory()).resolve(this.rpyApp.activeProject().getFilename());
  }

  public void clean() {
    try {
       rpyApp.activeProject.close();
       Path cleanDir = this.rootDir.resolve("CMM_starting_model");
       Path oldDir = this.rootDir.resolve("CMM_model");

       Files.walk(oldDir)
         .sorted(Comparator.reverseOrder())
         .map(Path::toFile)
         .forEach(File::delete);

      Files.walk(cleanDir)
        .filter(p -> Files.isRegularFile(p))
        .forEach(cleanFile -> {
          Path path = oldDir.resolve(cleanDir.relativize(cleanFile));
          try {
            Files.createDirectories(path.getParent());
            Files.copy(cleanFile, path, StandardCopyOption.REPLACE_EXISTING);
          } catch (Exception ex) {
            ex.printStackTrace();
          }
        });
      rpyApp.openProject(this.rpyFile.toAbsolutePath().toString());
      rpyApp.insertProject(this.rpyFile.toAbsolutePath().toString());
      rpyApp.activeProject();
      rpyApp.refreshAllViews();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

Никаких исключений не выдается, но, как указано, проект закрывается, и я могу визуально видеть файлы, которые удаляются и копируются, нопосле этого в рапсодии ничего не происходит.

1 Ответ

0 голосов
/ 29 ноября 2018

Мне удалось решить проблему, убрав следующие строки:

rpyApp.activeProject.close(); и rpyApp.insertProject(this.rpyFile.toAbsolutePath().toString());

...