Switch to unified view

a/src/main/java/net/timbusproject/extractors/modules/tavernaextractor/TavernaExtractor.java b/src/main/java/net/timbusproject/extractors/modules/tavernaextractor/TavernaExtractor.java
...
...
169
169
170
    private List<IArchimateElement> nodeElements;
170
    private List<IArchimateElement> nodeElements;
171
    //private static Logger LOGGER = LogManager.getLogger("TavernaExtractor");
171
    //private static Logger LOGGER = LogManager.getLogger("TavernaExtractor");
172
    private LicenseCheck licenseCheck = new LicenseCheck();
172
    private LicenseCheck licenseCheck = new LicenseCheck();
173
    private IArtifact workflowFile;
173
    private IArtifact workflowFile;
174
    private IArtifact taverna;
174
    private ISystemSoftware taverna;
175
    private IApplicationComponent workflowApplicationComponent = null;
175
    private IApplicationComponent workflowApplicationComponent = null;
176
    private IApplicationFunction callScriptApplicationFunction = null;
176
    private IApplicationFunction callScriptApplicationFunction = null;
177
    private IApplicationFunction callWebServiceApplicationFunction = null;
177
    private IApplicationFunction callWebServiceApplicationFunction = null;
178
    private IApplicationFunction callToolInvocationFunction = null;
178
    private IApplicationFunction callToolInvocationFunction = null;
179
179
...
...
374
374
375
        infrastructure.getElements().add(desktop);
375
        infrastructure.getElements().add(desktop);
376
376
377
        // // BEGIN PATTERN v2.0 UPDATE
377
        // // BEGIN PATTERN v2.0 UPDATE
378
        // --- BEGIN Taverna ---
378
        // --- BEGIN Taverna ---
379
        taverna = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Taverna 2.4", infrastructureFolder,
379
        taverna = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(), "Taverna 2.4", infrastructureFolder,
380
                nodeElements);
380
                nodeElements);
381
        IConstraint GNULicense = ArchiUtils.initElement(factory.createConstraint(),
381
        IConstraint GNULicense = ArchiUtils.initElement(factory.createConstraint(),
382
                "GNU Lesser General Public License (LGPL) 2.1", motivationFolder, infrastructure);
382
                "GNU Lesser General Public License (LGPL) 2.1", motivationFolder, infrastructure);
383
        ArchiUtils.initRelation(factory.createRealisationRelationship(), taverna, GNULicense, relationsFolder,
383
        ArchiUtils.initRelation(factory.createRealisationRelationship(), taverna, GNULicense, relationsFolder,
384
                relations);
384
                relations);
385
        ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, taverna, relationsFolder,
386
                relations);
385
387
386
        // Workflow file
388
        // Workflow file
387
        workflowFile = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Worfklow File",
389
        workflowFile = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Worfklow File",
388
                infrastructureFolder, nodeElements);
390
                infrastructureFolder, nodeElements);
391
        ArchiUtils.initAccessRelation(factory.createAccessRelationship(), taverna,
392
                workflowFile, applicationFolder, relations, IAccessRelationship.READ_ACCESS);
393
389
        ArchiUtils.initRelation(factory.createAssociationRelationship(), workflowFile, taverna, relationsFolder,
394
        ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, workflowFile, relationsFolder,
390
                relations);
395
                relations);
391
396
392
        workflowFile.getProperties().add(createDepProperties(TavernaExtractor.getInputFileName().toString()));
397
        workflowFile.getProperties().add(createDepProperties(TavernaExtractor.getInputFileName().toString()));
393
398
394
        // Orchestration Service
399
        // Orchestration Service
...
...
406
        }
411
        }
407
412
408
        // link relevant dependencies from taverna home to context model
413
        // link relevant dependencies from taverna home to context model
409
        IArtifact repoBundle = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Repo Bundle", infrastructureFolder, nodeElements);
414
        IArtifact repoBundle = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Repo Bundle", infrastructureFolder, nodeElements);
410
        ArchiUtils.initRelation(factory.createAssociationRelationship(), taverna, repoBundle,
415
        ArchiUtils.initRelation(factory.createAssociationRelationship(), taverna, repoBundle,
416
                relationsFolder, relations);
417
418
        ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, repoBundle,
411
                relationsFolder, relations);
419
                relationsFolder, relations);
412
420
413
        if(TavernaExtractor.getTavernaHomeRepo().toFile().isDirectory()){
421
        if(TavernaExtractor.getTavernaHomeRepo().toFile().isDirectory()){
414
422
415
            final List<File> jarFiles = new ArrayList<>();
423
            final List<File> jarFiles = new ArrayList<>();
...
...
462
        // --- END Events ---
470
        // --- END Events ---
463
471
464
        // --- BEGIN Java Runtime Environment ---
472
        // --- BEGIN Java Runtime Environment ---
465
        ISystemSoftware java = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(), "JRE "
473
        ISystemSoftware java = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(), "JRE "
466
                + JAVA_VERSION + " (" + JAVA_VENDOR + ")", infrastructureFolder, nodeElements);
474
                + JAVA_VERSION + " (" + JAVA_VENDOR + ")", infrastructureFolder, nodeElements);
475
467
        // FIXME: this must not always be an ORACLE license
476
        // FIXME: this must not always be an ORACLE license
468
        IConstraint oracleLicense = ArchiUtils.initElement(factory.createConstraint(), "Oracle Binary Code License",
477
        IConstraint oracleLicense = ArchiUtils.initElement(factory.createConstraint(), "Oracle Binary Code License",
469
                motivationFolder, infrastructure);
478
                motivationFolder, infrastructure);
470
        ArchiUtils.initRelation(factory.createRealisationRelationship(), java, oracleLicense, relationsFolder,
479
        ArchiUtils.initRelation(factory.createRealisationRelationship(), java, oracleLicense, relationsFolder,
471
                relations);
480
                relations);
472
        ArchiUtils.initRelation(factory.createUsedByRelationship(), java, taverna, relationsFolder, relations);
481
        ArchiUtils.initRelation(factory.createUsedByRelationship(), java, taverna, relationsFolder, relations);
482
        ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, java, relationsFolder, relations);
473
483
474
        // --- BEGIN OS ---
484
        // --- BEGIN OS ---
475
        ISystemSoftware operatingSystem = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(),
485
        ISystemSoftware operatingSystem = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(),
476
                OS_SYSTEM_INFO, infrastructureFolder, nodeElements);
486
                OS_SYSTEM_INFO, infrastructureFolder, nodeElements);
477
        ArchiUtils.initRelationNodeElement(factory.createUsedByRelationship(), operatingSystem, java, relationsFolder,
487
        ArchiUtils.initRelationNodeElement(factory.createUsedByRelationship(), operatingSystem, java, relationsFolder,
478
                nodeElements);
488
                nodeElements);
489
        ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, operatingSystem, relationsFolder, relations);
479
        // --- END CREATING DEFAULT ELEMENTS ---
490
        // --- END CREATING DEFAULT ELEMENTS ---
480
491
481
        LOGGER.debug("Process Input ports");
492
        LOGGER.debug("Process Input ports");
482
        for (DataflowInputPort inputPort : dataflow.getInputPorts()) {
493
        for (DataflowInputPort inputPort : dataflow.getInputPorts()) {
483
            IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(), inputPort.getName(),
494
            IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(), inputPort.getName(),
...
...
491
502
492
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
503
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
493
                    relations);
504
                    relations);
494
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
505
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
495
                    relationsFolder, relations);
506
                    relationsFolder, relations);
507
508
            ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, port_infrastructure,
509
                    relationsFolder, relations);
496
        }
510
        }
497
        LOGGER.debug("Process Output ports");
511
        LOGGER.debug("Process Output ports");
498
        for (DataflowOutputPort outputPort : dataflow.getOutputPorts()) {
512
        for (DataflowOutputPort outputPort : dataflow.getOutputPorts()) {
499
            IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(),
513
            IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(),
500
                    outputPort.getName(), businessFolder, outputPorts);
514
                    outputPort.getName(), businessFolder, outputPorts);
...
...
507
521
508
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
522
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
509
                    relations);
523
                    relations);
510
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
524
            ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
511
                    relationsFolder, relations);
525
                    relationsFolder, relations);
526
527
            ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, port_infrastructure,
528
                    relationsFolder, relations);
512
        }
529
        }
513
530
514
        processorProcessMap = new HashMap<Processor, IBusinessProcess>();
531
        processorProcessMap = new HashMap<Processor, IBusinessProcess>();
515
        processorValueMap = new HashMap<Processor, IBusinessObject>();
532
        processorValueMap = new HashMap<Processor, IBusinessObject>();
516
533
...
...
888
                    infrastructureFolder, nodeElements);
905
                    infrastructureFolder, nodeElements);
889
906
890
            ArchiUtils.initRelation(factory.createRealisationRelationship(), toolAsArtifact, appService,
907
            ArchiUtils.initRelation(factory.createRealisationRelationship(), toolAsArtifact, appService,
891
                    relationsFolder, relations);
908
                    relationsFolder, relations);
892
909
910
            ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, toolAsArtifact,
911
                    relationsFolder, relations);
912
893
            IProperty commandProperty = factory.createProperty();
913
            IProperty commandProperty = factory.createProperty();
894
            commandProperty.setKey("Command");
914
            commandProperty.setKey("Command");
895
            commandProperty.setValue(externalInvocation.getConfiguration().getUseCaseDescription().getCommand());
915
            commandProperty.setValue(externalInvocation.getConfiguration().getUseCaseDescription().getCommand());
896
            toolAsArtifact.getProperties().add(commandProperty);
916
            toolAsArtifact.getProperties().add(commandProperty);
897
        }
917
        }
...
...
993
1013
994
                IArtifact beanshellScriptDep = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), item,
1014
                IArtifact beanshellScriptDep = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), item,
995
                        infrastructureFolder, nodeElements);
1015
                        infrastructureFolder, nodeElements);
996
1016
997
                ArchiUtils.initRelationNodeElement(factory.createAssociationRelationship(), script, beanshellScriptDep,
1017
                ArchiUtils.initRelationNodeElement(factory.createAssociationRelationship(), script, beanshellScriptDep,
1018
                        relationsFolder, nodeElements);
1019
1020
                ArchiUtils.initRelationNodeElement(factory.createCompositionRelationship(), beanshellScriptDep,desktop,
998
                        relationsFolder, nodeElements);
1021
                        relationsFolder, nodeElements);
999
1022
1000
                // Do the license checking
1023
                // Do the license checking
1001
                String fileName = TavernaExtractor.getTavernaHomeLib() + File.separator + item;
1024
                String fileName = TavernaExtractor.getTavernaHomeLib() + File.separator + item;
1002
1025
...
...
1642
        }
1665
        }
1643
    }
1666
    }
1644
1667
1645
    private List<Processor> findStartingProcessors(Dataflow dataflow) {
1668
    private List<Processor> findStartingProcessors(Dataflow dataflow) {
1646
1669
1670
        LOGGER.debug("find starting processors");
1671
1647
        List<OutputPort> outputPorts = new ArrayList<OutputPort>();
1672
        List<OutputPort> outputPorts = new ArrayList<OutputPort>();
1648
        for (Processor processor : dataflow.getProcessors()) {
1673
        for (Processor processor : dataflow.getProcessors()) {
1649
            for (OutputPort outputPort : processor.getOutputPorts()) {
1674
            for (OutputPort outputPort : processor.getOutputPorts()) {
1650
                outputPorts.add(outputPort);
1675
                outputPorts.add(outputPort);
1651
            }
1676
            }
...
...
1663
            if (hasNoPrecedentProcessor(processor, outputPorts)) {
1688
            if (hasNoPrecedentProcessor(processor, outputPorts)) {
1664
                LOGGER.debug("Processor '" + processor.getLocalName() + "' has no precendent processors.");
1689
                LOGGER.debug("Processor '" + processor.getLocalName() + "' has no precendent processors.");
1665
                startingProcessors.add(processor);
1690
                startingProcessors.add(processor);
1666
            }
1691
            }
1667
        }
1692
        }
1693
1694
        LOGGER.debug(startingProcessors.size()+" starting processors found");
1695
1668
        return startingProcessors;
1696
        return startingProcessors;
1669
    }
1697
    }
1670
1698
1671
    private List<Processor> findEndProcessors(Dataflow dataflow) {
1699
    private List<Processor> findEndProcessors(Dataflow dataflow) {
1672
1700