3434import java .util .Collections ;
3535import java .util .Date ;
3636import java .util .List ;
37+ import java .util .NoSuchElementException ;
3738import java .util .Scanner ;
3839import java .util .UUID ;
3940import java .util .stream .Collectors ;
5859import org .omg .kerml .xtext .KerMLStandaloneSetup ;
5960import org .omg .kerml .xtext .library .ILibraryIndexProvider ;
6061import org .omg .kerml .xtext .naming .KerMLQualifiedNameConverter ;
62+ import org .omg .sysml .ApiException ;
6163import org .omg .sysml .execution .expressions .ExpressionEvaluator ;
6264import org .omg .sysml .lang .sysml .Element ;
6365import org .omg .sysml .lang .sysml .Expression ;
7678import org .omg .sysml .util .SysMLUtil ;
7779import org .omg .sysml .util .TypeUtil ;
7880import org .omg .sysml .util .repository .EObjectUUIDTracker ;
79- import org .omg .sysml .util .repository .ProjectDelta ;
81+ import org .omg .sysml .util .repository .EMFModelRefresh ;
8082import org .omg .sysml .util .repository .ProjectRepository ;
81- import org .omg .sysml .util .repository .ProjectRepository .RepositoryProject ;
82- import org .omg .sysml .util .repository .RepositoryContentFetcher ;
83+ import org .omg .sysml .util .repository .ProjectRevision ;
84+ import org .omg .sysml .util .repository .ProjectRevision .APIModel ;
85+ import org .omg .sysml .util .repository .RemoteProject ;
86+ import org .omg .sysml .util .repository .RemoteProject .RemoteBranch ;
87+ import org .omg .sysml .util .repository .EMFModelRefreshCreator ;
8388import org .omg .sysml .util .traversal .Traversal ;
8489import org .omg .sysml .util .traversal .facade .impl .ApiElementProcessingFacade ;
8590import org .omg .sysml .util .traversal .facade .impl .JsonElementProcessingFacade ;
@@ -442,7 +447,7 @@ public String loadByName(String projectName, List<String> help) {
442447 ProjectRepository repository = new ProjectRepository (apiBasePath );
443448
444449 System .out .println ("Locating model" );
445- RepositoryProject repositoryProject = repository .getProjectByName (projectName );
450+ RemoteProject repositoryProject = repository .getProjectByName (projectName );
446451
447452 if (repositoryProject == null ) {
448453 return "ERROR:Publication doesn't exist." ;
@@ -459,7 +464,7 @@ public String loadById(String projectId, List<String> help) {
459464 ProjectRepository repository = new ProjectRepository (apiBasePath );
460465
461466 System .out .println ("Locating model" );
462- RepositoryProject repositoryProject = repository .getPRojectById (UUID .fromString (projectId ));
467+ RemoteProject repositoryProject = repository .getPRojectById (UUID .fromString (projectId ));
463468
464469 if (repositoryProject == null ) {
465470 return "ERROR:Publication doesn't exist." ;
@@ -468,43 +473,49 @@ public String loadById(String projectId, List<String> help) {
468473 return load (repositoryProject );
469474 }
470475
471- private String load (RepositoryProject repositoryProject ) {
472- boolean success = repositoryProject .loadRemote ();
473-
474- if (!success ) {
475- return "ERROR:Could not download the publication." ;
476- }
477-
478- System .out .println ("Collecting UUIDs..." );
479- if (!tracker .isLibraryTracked ()) {
480- tracker .trackLibraryUUIDs (getLibraryResources ());
481- }
482-
483- tracker .clearTrackedUserElements ();
484- List <Resource > inputResources = getInputResources ();
485- //UUIDS coming from resources that were added later in time will shadow previous ones
486- tracker .trackUserUUIDs (inputResources );
487-
488- RepositoryContentFetcher fetcher = new RepositoryContentFetcher (repositoryProject , tracker );
489-
490- System .out .println ("Downloading model..." );
491- ProjectDelta delta = fetcher .fetch ();
492-
493- System .out .println ("Adding model to index" );
494- delta .getProjectRoots ().forEach ((eObject , dto ) -> {
495- next (SYSMLX_EXTENSION );
496- Resource xmiResource = getResource ();
497- if (eObject instanceof Namespace ) {
498- xmiResource .getContents ().add (eObject );
499- } else {
500- Namespace root = SysMLFactory .eINSTANCE .createNamespace ();
501- NamespaceUtil .addOwnedMemberTo (root , (Element ) eObject );
502- xmiResource .getContents ().add (root );
476+ private String load (RemoteProject repositoryProject ) {
477+ try {
478+ RemoteBranch defaultBranch = repositoryProject .getDefaultBranch ();
479+ ProjectRevision headRevision = defaultBranch .getHeadRevision ();
480+ APIModel model = headRevision .fetchRemote ();
481+
482+ System .out .println ("Collecting UUIDs..." );
483+ if (!tracker .isLibraryTracked ()) {
484+ tracker .trackLibraryUUIDs (getLibraryResources ());
503485 }
504- addResourceToIndex (xmiResource );
505- });
506-
507- return "Project loaded: " + repositoryProject .getProjectName () + ", " + repositoryProject .getProjectId ().toString ();
486+
487+ tracker .clear ();
488+ List <Resource > inputResources = getInputResources ();
489+ //UUIDS coming from resources that were added later in time will shadow previous ones
490+ tracker .trackLocalUUIDs (inputResources );
491+
492+ EMFModelRefreshCreator fetcher = new EMFModelRefreshCreator (model , tracker );
493+
494+ System .out .println ("Downloading model..." );
495+ EMFModelRefresh delta = fetcher .fetch ();
496+
497+ System .out .println ("Adding model to index" );
498+ delta .getProjectRoots ().forEach ((eObject , dto ) -> {
499+ next (SYSMLX_EXTENSION );
500+ Resource xmiResource = getResource ();
501+ if (eObject instanceof Namespace ) {
502+ xmiResource .getContents ().add (eObject );
503+ } else {
504+ Namespace root = SysMLFactory .eINSTANCE .createNamespace ();
505+ NamespaceUtil .addOwnedMemberTo (root , (Element ) eObject );
506+ xmiResource .getContents ().add (root );
507+ }
508+ addResourceToIndex (xmiResource );
509+ });
510+
511+ return "Project loaded: " + repositoryProject .getProjectName () + ", " + repositoryProject .getRemoteId ().toString ();
512+ } catch (NoSuchElementException e ) {
513+ e .printStackTrace ();
514+ return "Requested model doesn't exist." ;
515+ } catch (ApiException e ) {
516+ e .printStackTrace ();
517+ return "Error occured while trying to load model" ;
518+ }
508519 }
509520
510521 protected String download (String name ) {
@@ -518,8 +529,8 @@ public String listPublications(List<String> help) {
518529 return SysMLInteractiveHelp .getProjectsHelp ();
519530 }
520531 ProjectRepository projectRepository = new ProjectRepository (apiBasePath );
521- List <RepositoryProject > repositoryProjects = projectRepository .getProjects ();
522- return repositoryProjects .stream ().map (p -> String .format ("name=%s, id=%s" , p .getProjectName (), p .getProjectId ()))
532+ List <RemoteProject > repositoryProjects = projectRepository .getProjects ();
533+ return repositoryProjects .stream ().map (p -> String .format ("name=%s, id=%s" , p .getProjectName (), p .getRemoteId ()))
523534 .collect (Collectors .joining ("\n " ));
524535 }
525536
0 commit comments