EMMA Coverage Report (generated Sun Feb 05 10:43:15 CET 2012)
[all classes][de.uka.ipd.sdq.workflow.pcm.blackboard]

COVERAGE SUMMARY FOR SOURCE FILE [PCMResourceSetPartition.java]

nameclass, %method, %block, %line, %
PCMResourceSetPartition.java0%   (0/1)0%   (0/10)0%   (0/141)0%   (0/21)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class PCMResourceSetPartition0%   (0/1)0%   (0/10)0%   (0/141)0%   (0/21)
PCMResourceSetPartition (): void 0%   (0/1)0%   (0/3)0%   (0/1)
getAllocation (): Allocation 0%   (0/1)0%   (0/8)0%   (0/1)
getElement (EObject): List 0%   (0/1)0%   (0/58)0%   (0/7)
getFeatureConfig (): Configuration 0%   (0/1)0%   (0/8)0%   (0/1)
getMiddlewareRepository (): Repository 0%   (0/1)0%   (0/8)0%   (0/1)
getRepositories (): List 0%   (0/1)0%   (0/24)0%   (0/6)
getResourceEnvironment (): ResourceEnvironment 0%   (0/1)0%   (0/8)0%   (0/1)
getResourceTypeRepository (): ResourceRepository 0%   (0/1)0%   (0/8)0%   (0/1)
getSystem (): System 0%   (0/1)0%   (0/8)0%   (0/1)
getUsageModel (): UsageModel 0%   (0/1)0%   (0/8)0%   (0/1)

1package de.uka.ipd.sdq.workflow.pcm.blackboard;
2 
3import java.util.ArrayList;
4import java.util.Iterator;
5import java.util.List;
6 
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.resource.Resource;
9 
10import de.uka.ipd.sdq.featureconfig.Configuration;
11import de.uka.ipd.sdq.featureconfig.featureconfigFactory;
12import de.uka.ipd.sdq.pcm.allocation.Allocation;
13import de.uka.ipd.sdq.pcm.allocation.AllocationFactory;
14import de.uka.ipd.sdq.pcm.repository.Repository;
15import de.uka.ipd.sdq.pcm.repository.RepositoryFactory;
16import de.uka.ipd.sdq.pcm.resourceenvironment.ResourceEnvironment;
17import de.uka.ipd.sdq.pcm.resourceenvironment.ResourceenvironmentFactory;
18import de.uka.ipd.sdq.pcm.resourcetype.ResourceRepository;
19import de.uka.ipd.sdq.pcm.resourcetype.ResourcetypeFactory;
20import de.uka.ipd.sdq.pcm.system.System;
21import de.uka.ipd.sdq.pcm.system.SystemFactory;
22import de.uka.ipd.sdq.pcm.usagemodel.UsageModel;
23import de.uka.ipd.sdq.pcm.usagemodel.UsagemodelFactory;
24import de.uka.ipd.sdq.workflow.Blackboard;
25import de.uka.ipd.sdq.workflow.mdsd.blackboard.ResourceSetPartition;
26 
27/**
28 * This class is a specialised MDSDBlackboard partition which is specialised to load and hold PCM model
29 * instances. Currently, the PCM instance is loaded as a list of files, each file containing a part of the PCM
30 * model. It is sufficient to specify a PCM Allocation and a PCM UsageModel. All
31 * other model parts can then be derived automatically.
32 *
33 * Note that there is no specialised {@link Blackboard} for PCMResourceSetPartitions, because
34 * usually, the Blackboard containing the PCM might contain other models, for example SAAM models
35 * when transforming one into the other.
36 *
37 *
38 * @author Steffen Becker
39 *
40 */
41public class PCMResourceSetPartition extends ResourceSetPartition {
42 
43        /**
44         * @return Returns the PCM repository instance of the PCM model
45         */
46        public List<Repository> getRepositories() {
47                // TODO: Allow using multiple Repositories, derive the list of repositories automatically
48                List<Repository> allRepositories = getElement(RepositoryFactory.eINSTANCE.createRepository());
49                Iterator<Repository> iterator = allRepositories.iterator();
50                List<Repository> resultList = new ArrayList<Repository>();
51                while(iterator.hasNext()) {
52                        resultList.add((Repository)iterator.next());
53                }
54                return resultList;
55        }
56 
57        /**
58         * @return Returns a PCM Repository which contains components of Steffen's and Jens' middleware completions
59         */
60        public Repository getMiddlewareRepository() {
61                return (Repository) getElement(RepositoryFactory.eINSTANCE.createRepository()).get(0);
62        }
63 
64        /**
65         * @return Returns the feature configuration which annotates connectors with their technical realisation
66         */
67        public Configuration getFeatureConfig() {
68                return (Configuration) getElement(featureconfigFactory.eINSTANCE.createConfiguration()).get(0);
69        }
70 
71        /**
72         * @return Returns the PCM system instance of the stored PCM model
73         */
74        public System getSystem() {
75                return (System) getElement(SystemFactory.eINSTANCE.createSystem()).get(0);
76        }
77 
78        /**
79         * @return Returns the PCM system's allocation model
80         */
81        public Allocation getAllocation() {
82                return (Allocation) getElement(AllocationFactory.eINSTANCE.createAllocation()).get(0);
83        }
84 
85        /**
86         * @return Returns the PCM usage model of the PCM model in this blackboard partition
87         */
88        public UsageModel getUsageModel() {
89                return (UsageModel) getElement(UsagemodelFactory.eINSTANCE.createUsageModel()).get(0);
90        }
91 
92        /**
93         * @return Returns the PCM Resource Type Repository used by the stored PCM model instance
94         */
95        public ResourceRepository getResourceTypeRepository() {
96                return (ResourceRepository) getElement(ResourcetypeFactory.eINSTANCE.createResourceRepository()).get(0);
97        }
98 
99        /**
100         * @return Returns the PCM Resource Environment used by the stored PCM model instance
101         */
102        public ResourceEnvironment getResourceEnvironment() {
103                return (ResourceEnvironment) getElement(ResourceenvironmentFactory.eINSTANCE.createResourceEnvironment()).get(0);
104        }
105 
106        /**
107         * Helper to find root objects of a specified class.
108         *
109         * @param clazz The class to get elements for.
110         * @return The list of found root elements. Empty list if none have been found.
111         */
112        @SuppressWarnings("unchecked")
113        public <T extends EObject> List<T> getElement(final T targetType) {
114                ArrayList<T> result = new ArrayList<T>();
115                for (Resource r : rs.getResources()) {
116                        if (r != null && r.getContents().size() > 0 && r.getContents().get(0).eClass() == targetType.eClass() ) {
117                                result.add((T) r.getContents().get(0));
118                        }
119                }
120                if (result.size() == 0)
121                        throw new RuntimeException("Failed to retrieve PCM model element "+targetType.eClass().getName());
122                else
123                        return result;
124        }
125 
126}

[all classes][de.uka.ipd.sdq.workflow.pcm.blackboard]
EMMA 2.0.9414 (unsupported private build) (C) Vladimir Roubtsov