Changeset 2164


Ignore:
Timestamp:
Apr 18, 2006, 11:25:15 AM (17 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #171: Experimental factor for experiments

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/uml/dataclasses.uml.xml

    r2104 r2164  
    78177817          <UML:Stereotype.baseClass >Flow</UML:Stereotype.baseClass>
    78187818          <UML:ModelElement.comment >
    7819             <UML:Comment xmi.id = 'nicklas_1143100943164_535253_487' >
     7819            <UML:Comment xmi.id = 'nicklas_1145341543596_213695_489' >
    78207820              <UML:ModelElement.name > Specifies a Flow relationship, source and target of which represent the same instance at different points in time, but each with potentially different values, state instance, and roles. A Become Dependency from A to B means that instance A becomes B with possibly new values, state instance, and roles at a different moment in time/space.</UML:ModelElement.name>
    78217821            </UML:Comment>
     
    78297829          <UML:Stereotype.baseClass >Artifact</UML:Stereotype.baseClass>
    78307830          <UML:ModelElement.comment >
    7831             <UML:Comment xmi.id = 'nicklas_1143100943164_927226_488' >
     7831            <UML:Comment xmi.id = 'nicklas_1145341543596_746390_490' >
    78327832              <UML:ModelElement.name >Denotes a static or dynamic library file. Subclass of «file».</UML:ModelElement.name>
    78337833            </UML:Comment>
     
    78577857          <UML:Stereotype.baseClass >ModelPackage</UML:Stereotype.baseClass>
    78587858          <UML:ModelElement.comment >
    7859             <UML:Comment xmi.id = 'nicklas_1143100943164_48705_489' >
     7859            <UML:Comment xmi.id = 'nicklas_1145341543597_659203_491' >
    78607860              <UML:ModelElement.name >A model library is a stereotyped package that contains model elements that are intended to be reused by other packages. A model library differs from a profile in that a model library does not extend the metamodel using stereotypes and tagged definitions. A model library is analogous to a class library in some programming languages.</UML:ModelElement.name>
    78617861            </UML:Comment>
     
    78697869          <UML:Stereotype.baseClass >ObjectFlowState</UML:Stereotype.baseClass>
    78707870          <UML:ModelElement.comment >
    7871             <UML:Comment xmi.id = 'nicklas_1143100943165_885519_490' >
     7871            <UML:Comment xmi.id = 'nicklas_1145341543597_397451_492' >
    78727872              <UML:ModelElement.name >Signalflow is a stereotype of ObjectFlowState with a Signal as its type.</UML:ModelElement.name>
    78737873            </UML:Comment>
     
    78817881          <UML:Stereotype.baseClass >CallEvent</UML:Stereotype.baseClass>
    78827882          <UML:ModelElement.comment >
    7883             <UML:Comment xmi.id = 'nicklas_1143100943165_347980_491' >
     7883            <UML:Comment xmi.id = 'nicklas_1145341543597_677674_493' >
    78847884              <UML:ModelElement.name >Create is a stereotyped call event denoting that the instance receiving that event has just been created. For state machines, it triggers the initial transition at the topmost level of the state machine (and is the only kind of trigger that may be applied to an initial transition).</UML:ModelElement.name>
    78857885            </UML:Comment>
     
    79097909          <UML:Stereotype.baseClass >Artifact</UML:Stereotype.baseClass>
    79107910          <UML:ModelElement.comment >
    7911             <UML:Comment xmi.id = 'nicklas_1143100943165_4244_492' >
     7911            <UML:Comment xmi.id = 'nicklas_1145341543597_645573_494' >
    79127912              <UML:ModelElement.name >Denotes a program file that can be executed on a computer system.Subclass of «file».</UML:ModelElement.name>
    79137913            </UML:Comment>
     
    79217921          <UML:Stereotype.baseClass >Component</UML:Stereotype.baseClass>
    79227922          <UML:ModelElement.comment >
    7923             <UML:Comment xmi.id = 'nicklas_1143100943165_756178_493' >
     7923            <UML:Comment xmi.id = 'nicklas_1145341543598_610358_495' >
    79247924              <UML:ModelElement.name >Denotes a document.</UML:ModelElement.name>
    79257925            </UML:Comment>
     
    79337933          <UML:Stereotype.baseClass >Constraint</UML:Stereotype.baseClass>
    79347934          <UML:ModelElement.comment >
    7935             <UML:Comment xmi.id = 'nicklas_1143100943165_974422_494' >
     7935            <UML:Comment xmi.id = 'nicklas_1145341543598_809991_496' >
    79367936              <UML:ModelElement.name >Specifies a constraint that must be attached to a state vertex in a state machine that has a classifier for a context. The stereotype indicates that the constraint holds for instances of the classifier when an instance is in that state.</UML:ModelElement.name>
    79377937            </UML:Comment>
     
    79457945          <UML:Stereotype.baseClass >Usage</UML:Stereotype.baseClass>
    79467946          <UML:ModelElement.comment >
    7947             <UML:Comment xmi.id = 'nicklas_1143100943166_364346_495' >
     7947            <UML:Comment xmi.id = 'nicklas_1145341543598_45905_497' >
    79487948              <UML:ModelElement.name >Call is a stereotyped usage dependency whose source is an operation and whose target is an operation. The relationship may also be subsumed to the class containing an operation, with the meaning that there exists an operation in the class to which the dependency applies. A call dependency specifies that the source operation or an operation in the source class invokes the target operation or an operation in the target class. A call dependency may connect a source operation to any target operation that is within scope including, but not limited to, operations of the enclosing classifier and operations of other visible classifiers.</UML:ModelElement.name>
    79497949            </UML:Comment>
     
    79577957          <UML:Stereotype.baseClass >Permission</UML:Stereotype.baseClass>
    79587958          <UML:ModelElement.comment >
    7959             <UML:Comment xmi.id = 'nicklas_1143100943166_771429_496' >
     7959            <UML:Comment xmi.id = 'nicklas_1145341543598_925750_498' >
    79607960              <UML:ModelElement.name >Import is a stereotyped permission dependency between two namespaces, denoting that the public contents of the target package are added to the namespace of the source package.</UML:ModelElement.name>
    79617961            </UML:Comment>
     
    79697969          <UML:Stereotype.baseClass >AssociationEnd</UML:Stereotype.baseClass>
    79707970          <UML:ModelElement.comment >
    7971             <UML:Comment xmi.id = 'nicklas_1143100943166_620959_497' >
     7971            <UML:Comment xmi.id = 'nicklas_1145341543599_976864_499' >
    79727972              <UML:ModelElement.name >Specifies that the relationship represents a reference to the object that  AssociationEnd owns an operation or action rather than an actual association.</UML:ModelElement.name>
    79737973            </UML:Comment>
     
    79817981          <UML:Stereotype.baseClass >ModelPackage</UML:Stereotype.baseClass>
    79827982          <UML:ModelElement.comment >
    7983             <UML:Comment xmi.id = 'nicklas_1143100943166_245744_498' >
     7983            <UML:Comment xmi.id = 'nicklas_1145341543599_600566_500' >
    79847984              <UML:ModelElement.name >A framework is a stereotyped package consisting mainly of patterns, where patterns are defined as template collaborations.</UML:ModelElement.name>
    79857985            </UML:Comment>
     
    80128012          <UML:Stereotype.baseClass >Stimulus</UML:Stereotype.baseClass>
    80138013          <UML:ModelElement.comment >
    8014             <UML:Comment xmi.id = 'nicklas_1143100943166_821869_499' >
     8014            <UML:Comment xmi.id = 'nicklas_1145341543599_623133_501' >
    80158015              <UML:ModelElement.name >A time-out message the sender sends for a given period of time while waiting for acknowledgment by recipient. The sender is freed up if the acknowledgment does not occur within the duration specified in the description.</UML:ModelElement.name>
    80168016            </UML:Comment>
     
    80248024          <UML:Stereotype.baseClass >Usage</UML:Stereotype.baseClass>
    80258025          <UML:ModelElement.comment >
    8026             <UML:Comment xmi.id = 'nicklas_1143100943166_372984_500' >
     8026            <UML:Comment xmi.id = 'nicklas_1145341543630_659112_502' >
    80278027              <UML:ModelElement.name >A stereotyped usage dependency among classifiers indicating that operations on the client create instances of the supplier.</UML:ModelElement.name>
    80288028            </UML:Comment>
     
    80368036          <UML:Stereotype.baseClass >Artifact</UML:Stereotype.baseClass>
    80378037          <UML:ModelElement.comment >
    8038             <UML:Comment xmi.id = 'nicklas_1143100943167_299601_501' >
     8038            <UML:Comment xmi.id = 'nicklas_1145341543630_842016_503' >
    80398039              <UML:ModelElement.name >Denotes a generic file that is not a «source» file or «executable». Subclass of «file».</UML:ModelElement.name>
    80408040            </UML:Comment>
     
    80488048          <UML:Stereotype.baseClass >LinkEnd</UML:Stereotype.baseClass>
    80498049          <UML:ModelElement.comment >
    8050             <UML:Comment xmi.id = 'nicklas_1143100943167_766997_502' >
     8050            <UML:Comment xmi.id = 'nicklas_1145341543630_940289_504' >
    80518051              <UML:ModelElement.name > Self is a constraint applied to a link-end, specifying that the corresponding instance is visible because it is the dispatcher of the request.</UML:ModelElement.name>
    80528052            </UML:Comment>
     
    80608060          <UML:Stereotype.baseClass >Artifact</UML:Stereotype.baseClass>
    80618061          <UML:ModelElement.comment >
    8062             <UML:Comment xmi.id = 'nicklas_1143100943167_901042_503' >
     8062            <UML:Comment xmi.id = 'nicklas_1145341543630_818927_505' >
    80638063              <UML:ModelElement.name >Denotes a source file that can be compiled into an executable file.Subclass of «file».</UML:ModelElement.name>
    80648064            </UML:Comment>
     
    80728072          <UML:Stereotype.baseClass >Constraint</UML:Stereotype.baseClass>
    80738073          <UML:ModelElement.comment >
    8074             <UML:Comment xmi.id = 'nicklas_1143100943167_727402_504' >
     8074            <UML:Comment xmi.id = 'nicklas_1145341543630_355332_506' >
    80758075              <UML:ModelElement.name >Specifies a constraint that must be attached to a set of classifiers or relationships. It indicates that the conditions of the constraint must hold over time (for the time period of concern in the particular  containing element) for the classifiers or relationships and their instances.</UML:ModelElement.name>
    80768076            </UML:Comment>
     
    81518151          <UML:Stereotype.baseClass >BehavioralFeature</UML:Stereotype.baseClass>
    81528152          <UML:ModelElement.comment >
    8153             <UML:Comment xmi.id = 'nicklas_1143100943168_472834_505' >
     8153            <UML:Comment xmi.id = 'nicklas_1145341543631_997948_507' >
    81548154              <UML:ModelElement.name > Specifies that the designated feature creates an instance of the BehavioralFeature classifier to which the feature is attached. May be promoted to the Classifier containing the feature.</UML:ModelElement.name>
    81558155            </UML:Comment>
     
    81638163          <UML:Stereotype.baseClass >Association</UML:Stereotype.baseClass>
    81648164          <UML:ModelElement.comment >
    8165             <UML:Comment xmi.id = 'nicklas_1143100943168_257425_506' >
     8165            <UML:Comment xmi.id = 'nicklas_1145341543632_995481_508' >
    81668166              <UML:ModelElement.name > The «implicit» stereotype is applied to an association, specifying that the association is not manifest, but rather is only conceptual.</UML:ModelElement.name>
    81678167            </UML:Comment>
     
    81758175          <UML:Stereotype.baseClass >ModelPackage</UML:Stereotype.baseClass>
    81768176          <UML:ModelElement.comment >
    8177             <UML:Comment xmi.id = 'nicklas_1143100943168_408419_507' >
     8177            <UML:Comment xmi.id = 'nicklas_1145341543632_679310_509' >
    81788178              <UML:ModelElement.name >A facade is a stereotyped package containing only references to model elements owned by another package. It is used to provide a  public view  of some of the contents of a package. A facade does not contain any model elements of its own.</UML:ModelElement.name>
    81798179            </UML:Comment>
     
    81878187          <UML:Stereotype.baseClass >ModelPackage</UML:Stereotype.baseClass>
    81888188          <UML:ModelElement.comment >
    8189             <UML:Comment xmi.id = 'nicklas_1143100943168_396324_508' >
     8189            <UML:Comment xmi.id = 'nicklas_1145341543632_948283_510' >
    81908190              <UML:ModelElement.name >A profile is a stereotyped package that contains model elements that have been customized for a specific domain or purpose using extension mechanisms, such as stereotypes, tagged definitions, and constraints. A profile may also specify model libraries on which it depends and the metamodel subset that it extends. (The latter is specified via an applicableSubset tag definition.)</UML:ModelElement.name>
    81918191            </UML:Comment>
     
    81998199          <UML:Stereotype.baseClass >ModelPackage</UML:Stereotype.baseClass>
    82008200          <UML:ModelElement.comment >
    8201             <UML:Comment xmi.id = 'nicklas_1143100943168_292205_509' >
     8201            <UML:Comment xmi.id = 'nicklas_1145341543632_233988_511' >
    82028202              <UML:ModelElement.name >TopLevel is a stereotype of package denoting the top-most package in a containment hierarchy. The topLevel stereotype defines the outer limit for looking up names, as namespaces  see  outwards. A topLevel subsystem represents the top of the subsystem containment hierarchy, i.e., it is the model element that represents the boundary of the entire physical system being modeled.</UML:ModelElement.name>
    82038203            </UML:Comment>
     
    82278227          <UML:Stereotype.baseClass >Flow</UML:Stereotype.baseClass>
    82288228          <UML:ModelElement.comment >
    8229             <UML:Comment xmi.id = 'nicklas_1143100943169_813280_510' >
     8229            <UML:Comment xmi.id = 'nicklas_1145341543632_558109_512' >
    82308230              <UML:ModelElement.name >Specifies a Flow relationship, the source and target of which are different instances, but each with the same values, state instance, and roles (but a distinct identity). A Copy Dependency from A to B means that B is an exact copy of A. Future changes in A are not necessarily reflected in B.</UML:ModelElement.name>
    82318231            </UML:Comment>
     
    82398239          <UML:Stereotype.baseClass >LinkEnd</UML:Stereotype.baseClass>
    82408240          <UML:ModelElement.comment >
    8241             <UML:Comment xmi.id = 'nicklas_1143100943169_575036_511' >
     8241            <UML:Comment xmi.id = 'nicklas_1145341543633_707097_513' >
    82428242              <UML:ModelElement.name > Association is a constraint applied to a link-end, specifying that the corresponding instance is visible via association.</UML:ModelElement.name>
    82438243            </UML:Comment>
     
    82518251          <UML:Stereotype.baseClass >ModelPackage</UML:Stereotype.baseClass>
    82528252          <UML:ModelElement.comment >
    8253             <UML:Comment xmi.id = 'nicklas_1143100943169_809701_512' >
     8253            <UML:Comment xmi.id = 'nicklas_1145341543633_181238_514' >
    82548254              <UML:ModelElement.name >A stub is a stereotyped package representing a package that is incompletely transferred; specifically, a stub provides the public parts of the package, but nothing more.</UML:ModelElement.name>
    82558255            </UML:Comment>
     
    82638263          <UML:Stereotype.baseClass >Abstraction</UML:Stereotype.baseClass>
    82648264          <UML:ModelElement.comment >
    8265             <UML:Comment xmi.id = 'nicklas_1143100943169_379865_513' >
     8265            <UML:Comment xmi.id = 'nicklas_1145341543633_585471_515' >
    82668266              <UML:ModelElement.name >(Name for the stereotyped class is Trace.) Specifies a trace relationship between model elements or sets of model elements that represent the same concept in different models. Traces are mainly used for tracking requirements and changes across models. Since model changes can occur in both directions, the directionality of the dependency can often be ignored. The mapping specifies the relationship between the two, but it is rarely computable and is usually informal.</UML:ModelElement.name>
    82678267            </UML:Comment>
     
    82758275          <UML:Stereotype.baseClass >Generalization</UML:Stereotype.baseClass>
    82768276          <UML:ModelElement.comment >
    8277             <UML:Comment xmi.id = 'nicklas_1143100943169_780858_514' >
     8277            <UML:Comment xmi.id = 'nicklas_1145341543633_336944_516' >
    82788278              <UML:ModelElement.name >Specifies that the child inherits the implementation of the parent (its attributes, operations and methods) but does not make public the supplier s interfaces nor guarantee to support them, thereby violating substitutability. This is private inheritance and is usually used only for programming implementation purposes.</UML:ModelElement.name>
    82798279            </UML:Comment>
     
    83418341          <UML:Stereotype.baseClass >Artifact</UML:Stereotype.baseClass>
    83428342          <UML:ModelElement.comment >
    8343             <UML:Comment xmi.id = 'nicklas_1143100943171_643901_515' >
     8343            <UML:Comment xmi.id = 'nicklas_1145341543634_465109_517' >
    83448344              <UML:ModelElement.name >Denotes a physical file in the context of the system developed.</UML:ModelElement.name>
    83458345            </UML:Comment>
     
    83768376          <UML:Stereotype.baseClass >Usage</UML:Stereotype.baseClass>
    83778377          <UML:ModelElement.comment >
    8378             <UML:Comment xmi.id = 'nicklas_1143100943171_355233_516' >
     8378            <UML:Comment xmi.id = 'nicklas_1145341543635_356650_518' >
    83798379              <UML:ModelElement.name >Create is a stereotyped usage dependency denoting that the client classifier creates instances of the supplier classifier.</UML:ModelElement.name>
    83808380            </UML:Comment>
     
    83888388          <UML:Stereotype.baseClass >BehavioralFeature</UML:Stereotype.baseClass>
    83898389          <UML:ModelElement.comment >
    8390             <UML:Comment xmi.id = 'nicklas_1143100943171_108464_517' >
     8390            <UML:Comment xmi.id = 'nicklas_1145341543635_186130_519' >
    83918391              <UML:ModelElement.name >Specifies that the designated feature destroys an instance of the BehavioralFeature classifier to which the feature is attached. May be promoted to the  classifier containing the feature.</UML:ModelElement.name>
    83928392            </UML:Comment>
     
    84068406          <UML:Stereotype.baseClass >Permission</UML:Stereotype.baseClass>
    84078407          <UML:ModelElement.comment >
    8408             <UML:Comment xmi.id = 'nicklas_1143100943172_123649_518' >
     8408            <UML:Comment xmi.id = 'nicklas_1145341543635_762714_520' >
    84098409              <UML:ModelElement.name > Friend is a stereotyped permission dependency whose source is a model element, such as an operation, class, or package, and whose target is a model element in a different package, such as an operation, class or package. A friend relationship grants the source access to the target regardless of the declared visibility. It extends the visibility of the supplier so that the client can see into the supplier.</UML:ModelElement.name>
    84108410            </UML:Comment>
     
    84188418          <UML:Stereotype.baseClass >Component</UML:Stereotype.baseClass>
    84198419          <UML:ModelElement.comment >
    8420             <UML:Comment xmi.id = 'nicklas_1143100943172_253286_519' >
     8420            <UML:Comment xmi.id = 'nicklas_1145341543635_12095_521' >
    84218421              <UML:ModelElement.name >Denotes a static or dynamic library.</UML:ModelElement.name>
    84228422            </UML:Comment>
     
    85288528          <UML:Stereotype.baseClass >Stimulus</UML:Stereotype.baseClass>
    85298529          <UML:ModelElement.comment >
    8530             <UML:Comment xmi.id = 'nicklas_1143100943173_305852_520' >
     8530            <UML:Comment xmi.id = 'nicklas_1145341543637_261337_522' >
    85318531              <UML:ModelElement.name >message In the balking message case the sender abandons the message if the receiver is not ready.</UML:ModelElement.name>
    85328532            </UML:Comment>
     
    85408540          <UML:Stereotype.baseClass >LinkEnd</UML:Stereotype.baseClass>
    85418541          <UML:ModelElement.comment >
    8542             <UML:Comment xmi.id = 'nicklas_1143100943173_299259_521' >
     8542            <UML:Comment xmi.id = 'nicklas_1145341543637_563443_523' >
    85438543              <UML:ModelElement.name > Parameter is a constraint applied to a link-end, specifying that the corresponding instance is visible because it is in a parameter scope relative to the link.</UML:ModelElement.name>
    85448544            </UML:Comment>
     
    85528552          <UML:Stereotype.baseClass >AssociationEnd</UML:Stereotype.baseClass>
    85538553          <UML:ModelElement.comment >
    8554             <UML:Comment xmi.id = 'nicklas_1143100943173_298879_522' >
     8554            <UML:Comment xmi.id = 'nicklas_1145341543637_270928_524' >
    85558555              <UML:ModelElement.name >  Specifies that the relationship represents a local variable within a AssociationEnd procedure rather than an actual association.</UML:ModelElement.name>
    85568556            </UML:Comment>
     
    85648564          <UML:Stereotype.baseClass >AssociationEnd</UML:Stereotype.baseClass>
    85658565          <UML:ModelElement.comment >
    8566             <UML:Comment xmi.id = 'nicklas_1143100943173_361843_523' >
     8566            <UML:Comment xmi.id = 'nicklas_1145341543638_308116_525' >
    85678567              <UML:ModelElement.name > Specifies a real association (default and redundant, but may be included AssociationEnd for emphasis).</UML:ModelElement.name>
    85688568            </UML:Comment>
     
    85768576          <UML:Stereotype.baseClass >Dependency</UML:Stereotype.baseClass>
    85778577          <UML:ModelElement.comment >
    8578             <UML:Comment xmi.id = 'nicklas_1143100943174_681131_524' >
     8578            <UML:Comment xmi.id = 'nicklas_1145341543638_703856_526' >
    85798579              <UML:ModelElement.name >This dependency is used to indicate which profiles are applicable to a package. Typically, the client is an ordinary package or a model (but could be any other kind of package), while the supplier is a profile package. This means that the profile applies transitively to the model elements contained in the client package, including the client package itself.</UML:ModelElement.name>
    85808580            </UML:Comment>
     
    85888588          <UML:Stereotype.baseClass >Abstraction</UML:Stereotype.baseClass>
    85898589          <UML:ModelElement.comment >
    8590             <UML:Comment xmi.id = 'nicklas_1143100943174_793884_525' >
     8590            <UML:Comment xmi.id = 'nicklas_1145341543638_443858_527' >
    85918591              <UML:ModelElement.name >(Name for the stereotyped class is Realization.) Specifies a realization relationship between a specification model element or elements (the supplier) and a model element or elements that implement it (the client). The implementation model element is required to support all of the operations or received signals that the specification model element declares. The implementation model element must make or inherit its own declarations of the operations and signal receptions. The mapping specifies the relationship between the two. The mapping may or may not be computable. Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc.</UML:ModelElement.name>
    85928592            </UML:Comment>
     
    86478647          <UML:Stereotype.baseClass >Message</UML:Stereotype.baseClass>
    86488648          <UML:ModelElement.comment >
    8649             <UML:Comment xmi.id = 'nicklas_1143100943174_483936_526' >
     8649            <UML:Comment xmi.id = 'nicklas_1145341543639_417614_528' >
    86508650              <UML:ModelElement.name >message In the balking message case the sender abandons the message if the receiver is not ready.</UML:ModelElement.name>
    86518651            </UML:Comment>
     
    86598659          <UML:Stereotype.baseClass >Message</UML:Stereotype.baseClass>
    86608660          <UML:ModelElement.comment >
    8661             <UML:Comment xmi.id = 'nicklas_1143100943175_607041_527' >
     8661            <UML:Comment xmi.id = 'nicklas_1145341543639_344307_529' >
    86628662              <UML:ModelElement.name >A time-out message the sender sends for a given period of time while waiting for acknowledgment by recipient. The sender is freed up if the acknowledgment does not occur within the duration specified in the description.</UML:ModelElement.name>
    86638663            </UML:Comment>
     
    86718671          <UML:Stereotype.baseClass >CallEvent</UML:Stereotype.baseClass>
    86728672          <UML:ModelElement.comment >
    8673             <UML:Comment xmi.id = 'nicklas_1143100943175_916765_528' >
     8673            <UML:Comment xmi.id = 'nicklas_1145341543640_508113_530' >
    86748674              <UML:ModelElement.name >Destroy is a stereotyped call event denoting that the instance receiving the event is being destroyed.</UML:ModelElement.name>
    86758675            </UML:Comment>
     
    86838683          <UML:Stereotype.baseClass >Comment</UML:Stereotype.baseClass>
    86848684          <UML:ModelElement.comment >
    8685             <UML:Comment xmi.id = 'nicklas_1143100943175_578921_529' >
     8685            <UML:Comment xmi.id = 'nicklas_1145341543640_393613_531' >
    86868686              <UML:ModelElement.name >Specifies a contract or an obligation of an element in its relationship Comment to other elements.</UML:ModelElement.name>
    86878687            </UML:Comment>
     
    86958695          <UML:Stereotype.baseClass >Artifact</UML:Stereotype.baseClass>
    86968696          <UML:ModelElement.comment >
    8697             <UML:Comment xmi.id = 'nicklas_1143100943175_974601_530' >
     8697            <UML:Comment xmi.id = 'nicklas_1145341543640_856078_532' >
    86988698              <UML:ModelElement.name >Denotes a database table.</UML:ModelElement.name>
    86998699            </UML:Comment>
     
    87078707          <UML:Stereotype.baseClass >Component</UML:Stereotype.baseClass>
    87088708          <UML:ModelElement.comment >
    8709             <UML:Comment xmi.id = 'nicklas_1143100943175_540191_531' >
     8709            <UML:Comment xmi.id = 'nicklas_1145341543640_901334_533' >
    87108710              <UML:ModelElement.name >Denotes a document containing source code or data.</UML:ModelElement.name>
    87118711            </UML:Comment>
     
    87198719          <UML:Stereotype.baseClass >Constraint</UML:Stereotype.baseClass>
    87208720          <UML:ModelElement.comment >
    8721             <UML:Comment xmi.id = 'nicklas_1143100943175_650901_532' >
     8721            <UML:Comment xmi.id = 'nicklas_1145341543640_995685_534' >
    87228722              <UML:ModelElement.name >Specifies a constraint that must be attached to an operation, and denotes that the conditions of the constraint must hold after the invocation of the operation.</UML:ModelElement.name>
    87238723            </UML:Comment>
     
    87318731          <UML:Stereotype.baseClass >AssociationEnd</UML:Stereotype.baseClass>
    87328732          <UML:ModelElement.comment >
    8733             <UML:Comment xmi.id = 'nicklas_1143100943175_272233_533' >
     8733            <UML:Comment xmi.id = 'nicklas_1145341543640_910909_535' >
    87348734              <UML:ModelElement.name >Specifies that the relationship represents a procedure parameter rather than AssociationEnd an actual association.</UML:ModelElement.name>
    87358735            </UML:Comment>
     
    87438743          <UML:Stereotype.baseClass >Comment</UML:Stereotype.baseClass>
    87448744          <UML:ModelElement.comment >
    8745             <UML:Comment xmi.id = 'nicklas_1143100943175_714725_534' >
     8745            <UML:Comment xmi.id = 'nicklas_1145341543641_156905_536' >
    87468746              <UML:ModelElement.name >Specifies a desired feature, property, or behavior of an element as part Comment of a system.</UML:ModelElement.name>
    87478747            </UML:Comment>
     
    87558755          <UML:Stereotype.baseClass >Model</UML:Stereotype.baseClass>
    87568756          <UML:ModelElement.comment >
    8757             <UML:Comment xmi.id = 'nicklas_1143100943176_139343_535' >
     8757            <UML:Comment xmi.id = 'nicklas_1145341543641_521546_537' >
    87588758              <UML:ModelElement.name >A use case model specifies the services a system provides to its users; that is, the different ways of using the system, and whose top-level package is a use case system.</UML:ModelElement.name>
    87598759            </UML:Comment>
     
    87678767          <UML:Stereotype.baseClass >LinkEnd</UML:Stereotype.baseClass>
    87688768          <UML:ModelElement.comment >
    8769             <UML:Comment xmi.id = 'nicklas_1143100943176_26852_536' >
     8769            <UML:Comment xmi.id = 'nicklas_1145341543641_959106_538' >
    87708770              <UML:ModelElement.name > Local is a constraint applied to a link-end, specifying that the corresponding instance is visible because it is in a local scope relative to the link.</UML:ModelElement.name>
    87718771            </UML:Comment>
     
    87798779          <UML:Stereotype.baseClass >Dependency</UML:Stereotype.baseClass>
    87808780          <UML:ModelElement.comment >
    8781             <UML:Comment xmi.id = 'nicklas_1143100943176_816202_537' >
     8781            <UML:Comment xmi.id = 'nicklas_1145341543641_906468_539' >
    87828782              <UML:ModelElement.name >This dependency means that the supplier package is being used as a model library associated with a profile. The client is a package that is stereotyped as a profile and the supplier is a non-profile package that contains shared model elements, such as classes and data types.</UML:ModelElement.name>
    87838783            </UML:Comment>
     
    87918791          <UML:Stereotype.baseClass >AssociationEnd</UML:Stereotype.baseClass>
    87928792          <UML:ModelElement.comment >
    8793             <UML:Comment xmi.id = 'nicklas_1143100943176_210905_538' >
     8793            <UML:Comment xmi.id = 'nicklas_1145341543641_688736_540' >
    87948794              <UML:ModelElement.name > Specifies that the target is a global value that is known to all elements AssociationEnd rather than an actual association.</UML:ModelElement.name>
    87958795            </UML:Comment>
     
    88038803          <UML:Stereotype.baseClass >Model</UML:Stereotype.baseClass>
    88048804          <UML:ModelElement.comment >
    8805             <UML:Comment xmi.id = 'nicklas_1143100943176_365578_539' >
     8805            <UML:Comment xmi.id = 'nicklas_1145341543642_491726_541' >
    88068806              <UML:ModelElement.name >A metamodel is a stereotyped model denoting that the model is an abstraction of another model, i.e., it is a model of a model. Hence, if M2 is a model of the model M1, then M2 is a metamodel of M1. It follows then that classes in M1 are instances of metaclasses in M2. The stereotype can be recursively applied, as in the case of a 4-layer metamodel architecture.</UML:ModelElement.name>
    88078807            </UML:Comment>
     
    88578857          <UML:Stereotype.baseClass >Constraint</UML:Stereotype.baseClass>
    88588858          <UML:ModelElement.comment >
    8859             <UML:Comment xmi.id = 'nicklas_1143100943177_658866_540' >
     8859            <UML:Comment xmi.id = 'nicklas_1145341543652_879301_542' >
    88608860              <UML:ModelElement.name > Specifies a constraint that must be attached to an operation, and denotes that the conditions of the constraint must hold for the invocation of the operation.</UML:ModelElement.name>
    88618861            </UML:Comment>
     
    88698869          <UML:Stereotype.baseClass >LinkEnd</UML:Stereotype.baseClass>
    88708870          <UML:ModelElement.comment >
    8871             <UML:Comment xmi.id = 'nicklas_1143100943177_165375_541' >
     8871            <UML:Comment xmi.id = 'nicklas_1145341543652_862066_543' >
    88728872              <UML:ModelElement.name > Global is a constraint applied to a link-end, specifying that the corresponding instance is visible because it is in a global scope relative to the link.</UML:ModelElement.name>
    88738873            </UML:Comment>
     
    88818881          <UML:Stereotype.baseClass >Component</UML:Stereotype.baseClass>
    88828882          <UML:ModelElement.comment >
    8883             <UML:Comment xmi.id = 'nicklas_1143100943177_535934_542' >
     8883            <UML:Comment xmi.id = 'nicklas_1145341543653_294016_544' >
    88848884              <UML:ModelElement.name >Denotes a data base table.</UML:ModelElement.name>
    88858885            </UML:Comment>
     
    88938893          <UML:Stereotype.baseClass >Model</UML:Stereotype.baseClass>
    88948894          <UML:ModelElement.comment >
    8895             <UML:Comment xmi.id = 'nicklas_1143100943177_298753_543' >
     8895            <UML:Comment xmi.id = 'nicklas_1145341543653_376510_545' >
    88968896              <UML:ModelElement.name >A systemModel is a stereotyped model that contains a collection of models of the same physical system. A systemModel also contains all relationships and constraints between model elements contained in different models.</UML:ModelElement.name>
    88978897            </UML:Comment>
     
    89058905          <UML:Stereotype.baseClass >Usage</UML:Stereotype.baseClass>
    89068906          <UML:ModelElement.comment >
    8907             <UML:Comment xmi.id = 'nicklas_1143100943177_810873_544' >
     8907            <UML:Comment xmi.id = 'nicklas_1145341543653_672612_546' >
    89088908              <UML:ModelElement.name >«send» Usage Send is a stereotyped usage dependency whose source is an operation and whose target is a signal, specifying that the source sends the target signal.</UML:ModelElement.name>
    89098909            </UML:Comment>
     
    89338933          <UML:Stereotype.baseClass >Permission</UML:Stereotype.baseClass>
    89348934          <UML:ModelElement.comment >
    8935             <UML:Comment xmi.id = 'nicklas_1143100943178_604644_545' >
     8935            <UML:Comment xmi.id = 'nicklas_1145341543653_340407_547' >
    89368936              <UML:ModelElement.name >Access is a stereotyped permission dependency between two namespaces, denoting that the public contents of the target namespace are accessible to the namespace of the source package.</UML:ModelElement.name>
    89378937            </UML:Comment>
     
    89458945          <UML:Stereotype.baseClass >Component</UML:Stereotype.baseClass>
    89468946          <UML:ModelElement.comment >
    8947             <UML:Comment xmi.id = 'nicklas_1143100943178_731242_546' >
     8947            <UML:Comment xmi.id = 'nicklas_1145341543654_291696_548' >
    89488948              <UML:ModelElement.name >Denotes a program that may be run on a node.</UML:ModelElement.name>
    89498949            </UML:Comment>
     
    89738973          <UML:Stereotype.baseClass >Abstraction</UML:Stereotype.baseClass>
    89748974          <UML:ModelElement.comment >
    8975             <UML:Comment xmi.id = 'nicklas_1143100943178_565472_547' >
     8975            <UML:Comment xmi.id = 'nicklas_1145341543654_916955_549' >
    89768976              <UML:ModelElement.name >(Name for the stereotyped class is Derivation.) Specifies a derivation relationship among model elements that are usually, but not necessarily, of the same type. A derived dependency specifies that the client may be computed from the supplier. The mapping specifies the computation. The client may be implemented for design reasons, such as efficiency, even though it is logically redundant.</UML:ModelElement.name>
    89778977            </UML:Comment>
     
    1062710627          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1062810628          <UML:ModelElement.comment >
    10629             <UML:Comment xmi.id = 'nicklas_1143100943197_397765_548' >
     10629            <UML:Comment xmi.id = 'nicklas_1145341543673_566320_550' >
    1063010630              <UML:ModelElement.name >A control is a class whose objects manage interactions between collections of objects.
    1063110631A control class usually has behavior that is specific for one use case, and a control object usually does not outlive the use case realizations in which it participates.</UML:ModelElement.name>
     
    1064010640          <UML:Stereotype.baseClass >Classifier</UML:Stereotype.baseClass>
    1064110641          <UML:ModelElement.comment >
    10642             <UML:Comment xmi.id = 'nicklas_1143100943197_89002_549' >
     10642            <UML:Comment xmi.id = 'nicklas_1145341543673_934750_551' >
    1064310643              <UML:ModelElement.name >Specifies that the instances of the classifier are classes.</UML:ModelElement.name>
    1064410644            </UML:Comment>
     
    1065210652          <UML:Stereotype.baseClass >Classifier</UML:Stereotype.baseClass>
    1065310653          <UML:ModelElement.comment >
    10654             <UML:Comment xmi.id = 'nicklas_1143100943197_681216_550' >
     10654            <UML:Comment xmi.id = 'nicklas_1145341543673_418017_552' >
    1065510655              <UML:ModelElement.name >Specifies that the classifier is a metaclass whose instances are siblings
    1065610656marked by the same discriminator. For example, the metaclass
     
    1066810668          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1066910669          <UML:ModelElement.comment >
    10670             <UML:Comment xmi.id = 'nicklas_1143100943198_355120_551' >
     10670            <UML:Comment xmi.id = 'nicklas_1145341543674_914410_553' >
    1067110671              <UML:ModelElement.name >Specifies a domain of objects together with the operations applicable
    1067210672to the objects, without defining the physical implementation of those
     
    1068610686          <UML:Stereotype.baseClass >Classifier</UML:Stereotype.baseClass>
    1068710687          <UML:ModelElement.comment >
    10688             <UML:Comment xmi.id = 'nicklas_1143100943198_134543_552' >
     10688            <UML:Comment xmi.id = 'nicklas_1145341543674_796294_554' >
    1068910689              <UML:ModelElement.name >Classifier Specifies a classifier that represents a flow of control.</UML:ModelElement.name>
    1069010690            </UML:Comment>
     
    1069810698          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1069910699          <UML:ModelElement.comment >
    10700             <UML:Comment xmi.id = 'nicklas_1143100943198_657011_553' >
     10700            <UML:Comment xmi.id = 'nicklas_1145341543674_192984_555' >
    1070110701              <UML:ModelElement.name >An entity is a passive class; that is, its objects do not initiate interactions on their own. An entity object may participate in many different use case realizations and usually outlives any single interaction.</UML:ModelElement.name>
    1070210702            </UML:Comment>
     
    1071010710          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1071110711          <UML:ModelElement.comment >
    10712             <UML:Comment xmi.id = 'nicklas_1143100943198_451270_554' >
     10712            <UML:Comment xmi.id = 'nicklas_1145341543674_676849_556' >
    1071310713              <UML:ModelElement.name >Specifies a class that defines the core logic or control flow for one or more auxiliary classes that support it. Support classes may be defined explicitly using Auxiliary classes or implicitly by dependency relationships. Focus classes are typically used together with one or more Auxiliary classes, and are particularly useful for specifying the core business logic or control flow of components during design. See also: «auxiliary».</UML:ModelElement.name>
    1071410714            </UML:Comment>
     
    1072210722          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1072310723          <UML:ModelElement.comment >
    10724             <UML:Comment xmi.id = 'nicklas_1143100943198_308995_555' >
     10724            <UML:Comment xmi.id = 'nicklas_1145341543675_56743_557' >
    1072510725              <UML:ModelElement.name >Specifies a class that supports another more central or fundamental
    1072610726class, typically by implementing secondary logic or control flow. The
     
    1074010740          <UML:Stereotype.baseClass >Classifier</UML:Stereotype.baseClass>
    1074110741          <UML:ModelElement.comment >
    10742             <UML:Comment xmi.id = 'nicklas_1143100943198_530752_556' >
     10742            <UML:Comment xmi.id = 'nicklas_1145341543675_696379_558' >
    1074310743              <UML:ModelElement.name >Specifies a classifier that represents a heavy-weight flow of control.</UML:ModelElement.name>
    1074410744            </UML:Comment>
     
    1075210752          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1075310753          <UML:ModelElement.comment >
    10754             <UML:Comment xmi.id = 'nicklas_1143100943198_537531_557' >
     10754            <UML:Comment xmi.id = 'nicklas_1145341543675_528392_559' >
    1075510755              <UML:ModelElement.name >A boundary is a class that lies on the periphery of a system, but within it. It interacts with actors outside the system as well as with entity, control, and other boundary classes within the system.</UML:ModelElement.name>
    1075610756            </UML:Comment>
     
    1076410764          <UML:Stereotype.baseClass >Classifier</UML:Stereotype.baseClass>
    1076510765          <UML:ModelElement.comment >
    10766             <UML:Comment xmi.id = 'nicklas_1143100943199_156705_558' >
     10766            <UML:Comment xmi.id = 'nicklas_1145341543675_712637_560' >
    1076710767              <UML:ModelElement.name >Specifies a classifier that has no instances, but rather denotes a named collection of non-member attributes and operations, all of which are class-scoped.</UML:ModelElement.name>
    1076810768            </UML:Comment>
     
    1077610776          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1077710777          <UML:ModelElement.comment >
    10778             <UML:Comment xmi.id = 'nicklas_1143100943199_963140_559' >
     10778            <UML:Comment xmi.id = 'nicklas_1145341543676_512159_561' >
    1077910779              <UML:ModelElement.name >Specifies the implementation of a class in some programming
    1078010780language (for example, C++, Smalltalk, Java) in which an instance
     
    1080110801          <UML:Stereotype.baseClass >ModelClass</UML:Stereotype.baseClass>
    1080210802          <UML:ModelElement.comment >
    10803             <UML:Comment xmi.id = 'nicklas_1143100943199_455940_560' >
     10803            <UML:Comment xmi.id = 'nicklas_1145341543676_406365_562' >
    1080410804              <UML:ModelElement.name >Specifies the implementation of a class in some programming Class language in which an instance may not have more than one class. This is in contrast to a general UML Class, for which an instance may have multiple classes at one time and may gain or lose classes over time, and an object (a child of instance) may dynamically have  multiple classes.</UML:ModelElement.name>
    1080510805            </UML:Comment>
     
    2340123401                <UML:Classifier xmi.idref = 'nicklas_1143100356092_382980_435' />
    2340223402              </UML:AssociationEnd.participant>     <!-- FormulaExpression -->
     23403            </UML:AssociationEnd>
     23404          </UML:Association.connection>
     23405        </UML:Association>
     23406        <UML:Association xmi.id = 'nicklas_1145341486308_131572_460' >
     23407          <UML:GeneralizableElement.isRoot xmi.value = 'false' />
     23408          <UML:GeneralizableElement.isLeaf xmi.value = 'false' />
     23409          <UML:GeneralizableElement.isAbstract xmi.value = 'false' />
     23410          <UML:Association.connection >
     23411            <UML:AssociationEnd xmi.id = 'nicklas_1145341486307_971567_458' >
     23412              <UML:ModelElement.name >experiments</UML:ModelElement.name>
     23413              <UML:ModelElement.visibility xmi.value = 'private' />
     23414              <UML:AssociationEnd.isNavigable xmi.value = 'true' />
     23415              <UML:AssociationEnd.ordering xmi.value = 'unordered' />
     23416              <UML:AssociationEnd.aggregation xmi.value = 'none' />
     23417              <UML:AssociationEnd.targetScope xmi.value = 'instance' />
     23418              <UML:AssociationEnd.multiplicity >
     23419                <UML:Multiplicity xmi.id = 'nicklas_1145342142673_490479_567' >
     23420                  <UML:Multiplicity.range >
     23421                    <UML:MultiplicityRange xmi.id = 'nicklas_1145342142673_283171_568' >
     23422                      <UML:MultiplicityRange.lower >0</UML:MultiplicityRange.lower>
     23423                      <UML:MultiplicityRange.upper >*</UML:MultiplicityRange.upper>
     23424                    </UML:MultiplicityRange>
     23425                  </UML:Multiplicity.range>
     23426                </UML:Multiplicity>
     23427              </UML:AssociationEnd.multiplicity>
     23428              <UML:AssociationEnd.changeability xmi.value = 'changeable' />
     23429              <UML:AssociationEnd.association >
     23430                <UML:Association xmi.idref = 'nicklas_1145341486308_131572_460' />
     23431              </UML:AssociationEnd.association>     <!--  -->
     23432              <UML:AssociationEnd.participant >
     23433                <UML:Classifier xmi.idref = 'nicklas_1127222919391_682883_327' />
     23434              </UML:AssociationEnd.participant>     <!-- ExperimentData -->
     23435            </UML:AssociationEnd>
     23436            <UML:AssociationEnd xmi.id = 'nicklas_1145341486308_238675_459' >
     23437              <UML:ModelElement.name >experimentalFactors</UML:ModelElement.name>
     23438              <UML:ModelElement.visibility xmi.value = 'public' />
     23439              <UML:AssociationEnd.isNavigable xmi.value = 'true' />
     23440              <UML:AssociationEnd.ordering xmi.value = 'unordered' />
     23441              <UML:AssociationEnd.aggregation xmi.value = 'none' />
     23442              <UML:AssociationEnd.targetScope xmi.value = 'instance' />
     23443              <UML:AssociationEnd.multiplicity >
     23444                <UML:Multiplicity xmi.id = 'nicklas_1145341543886_515243_565' >
     23445                  <UML:Multiplicity.range >
     23446                    <UML:MultiplicityRange xmi.id = 'nicklas_1145341543886_863843_566' >
     23447                      <UML:MultiplicityRange.lower >0</UML:MultiplicityRange.lower>
     23448                      <UML:MultiplicityRange.upper >*</UML:MultiplicityRange.upper>
     23449                    </UML:MultiplicityRange>
     23450                  </UML:Multiplicity.range>
     23451                </UML:Multiplicity>
     23452              </UML:AssociationEnd.multiplicity>
     23453              <UML:AssociationEnd.changeability xmi.value = 'changeable' />
     23454              <UML:AssociationEnd.association >
     23455                <UML:Association xmi.idref = 'nicklas_1145341486308_131572_460' />
     23456              </UML:AssociationEnd.association>     <!--  -->
     23457              <UML:AssociationEnd.participant >
     23458                <UML:Classifier xmi.idref = 'nicklas_1117789464231_29393_165' />
     23459              </UML:AssociationEnd.participant>     <!-- AnnotationTypeData -->
    2340323460            </UML:AssociationEnd>
    2340423461          </UML:Association.connection>
     
    2489924956          <diagramOpened xmi.value = 'true' />
    2490024957          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    24901           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     24958          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    2490224959          <diagramScrollPositionX xmi.value = '10' />
    2490324960          <diagramScrollPositionY xmi.value = '150' />
     
    2602826085          <diagramOpened xmi.value = 'true' />
    2602926086          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    26030           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     26087          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    2603126088          <diagramScrollPositionX xmi.value = '10' />
    2603226089          <diagramScrollPositionY xmi.value = '0' />
     
    2751827575          <diagramOpened xmi.value = 'true' />
    2751927576          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    27520           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     27577          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    2752127578          <diagramScrollPositionX xmi.value = '0' />
    2752227579          <diagramScrollPositionY xmi.value = '0' />
     
    2854528602          <diagramOpened xmi.value = 'true' />
    2854628603          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    28547           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     28604          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    2854828605          <diagramScrollPositionX xmi.value = '0' />
    2854928606          <diagramScrollPositionY xmi.value = '60' />
     
    2927429331          <diagramOpened xmi.value = 'true' />
    2927529332          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    29276           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     29333          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    2927729334          <diagramScrollPositionX xmi.value = '0' />
    2927829335          <diagramScrollPositionY xmi.value = '0' />
     
    2963029687          <diagramOpened xmi.value = 'true' />
    2963129688          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    29632           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     29689          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    2963329690          <diagramScrollPositionX xmi.value = '0' />
    2963429691          <diagramScrollPositionY xmi.value = '0' />
     
    2981629873          <diagramOpened xmi.value = 'true' />
    2981729874          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    29818           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     29875          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    2981929876          <diagramScrollPositionX xmi.value = '0' />
    2982029877          <diagramScrollPositionY xmi.value = '10' />
     
    3005230109          <diagramOpened xmi.value = 'true' />
    3005330110          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    30054           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     30111          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3005530112          <diagramScrollPositionX xmi.value = '0' />
    3005630113          <diagramScrollPositionY xmi.value = '0' />
     
    3036030417          <diagramOpened xmi.value = 'true' />
    3036130418          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    30362           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     30419          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3036330420          <diagramScrollPositionX xmi.value = '0' />
    3036430421          <diagramScrollPositionY xmi.value = '0' />
     
    3074230799          <diagramOpened xmi.value = 'true' />
    3074330800          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    30744           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     30801          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3074530802          <diagramScrollPositionX xmi.value = '0' />
    3074630803          <diagramScrollPositionY xmi.value = '10' />
     
    3159331650          <diagramOpened xmi.value = 'true' />
    3159431651          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    31595           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     31652          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3159631653          <diagramScrollPositionX xmi.value = '0' />
    3159731654          <diagramScrollPositionY xmi.value = '0' />
     
    3169531752          <diagramOpened xmi.value = 'true' />
    3169631753          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    31697           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     31754          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3169831755          <diagramScrollPositionX xmi.value = '0' />
    3169931756          <diagramScrollPositionY xmi.value = '0' />
     
    3333033387          <diagramOpened xmi.value = 'true' />
    3333133388          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    33332           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     33389          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3333333390          <diagramScrollPositionX xmi.value = '0' />
    3333433391          <diagramScrollPositionY xmi.value = '23' />
     
    3413834195          <diagramOpened xmi.value = 'true' />
    3413934196          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    34140           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     34197          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3414134198          <diagramScrollPositionX xmi.value = '0' />
    3414234199          <diagramScrollPositionY xmi.value = '90' />
     
    3487834935          <diagramOpened xmi.value = 'true' />
    3487934936          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    34880           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     34937          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3488134938          <diagramScrollPositionX xmi.value = '0' />
    3488234939          <diagramScrollPositionY xmi.value = '0' />
     
    3590035957          <diagramOpened xmi.value = 'true' />
    3590135958          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    35902           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
     35959          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
    3590335960          <diagramScrollPositionX xmi.value = '0' />
    3590435961          <diagramScrollPositionY xmi.value = '0' />
     
    3773537792          <diagramOpened xmi.value = 'true' />
    3773637793          <diagramWindowType >ClassDiagramWindow</diagramWindowType>
    37737           <diagramWindowBounds >0, 0, 915, 801</diagramWindowBounds>
    37738           <diagramScrollPositionX xmi.value = '156' />
     37794          <diagramWindowBounds >0, 0, 916, 801</diagramWindowBounds>
     37795          <diagramScrollPositionX xmi.value = '0' />
    3773937796          <diagramScrollPositionY xmi.value = '0' />
    3774037797          <maximized xmi.value = 'true' />
     
    3778237839                  <editable xmi.value = 'false' />
    3778337840                  <visible xmi.value = 'false' />
    37784                   <geometry >186, 6, 22, 11</geometry>
     37841                  <geometry >186, 5, 22, 11</geometry>
    3778537842                </mdElement>
    3778637843                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223048039_982323_517' >
    3778737844                  <editable xmi.value = 'false' />
    3778837845                  <visible xmi.value = 'false' />
    37789                   <geometry >184, 37, 26, 13</geometry>
     37846                  <geometry >184, 38, 26, 13</geometry>
    3779037847                </mdElement>
    3779137848                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223048039_690263_519' >
     
    3785937916                  <editable xmi.value = 'false' />
    3786037917                  <visible xmi.value = 'false' />
    37861                   <geometry >337, 62, 22, 11</geometry>
     37918                  <geometry >337, 60, 22, 11</geometry>
    3786237919                </mdElement>
    3786337920                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223427510_342009_587' >
    3786437921                  <editable xmi.value = 'false' />
    3786537922                  <visible xmi.value = 'false' />
    37866                   <geometry >335, 91, 26, 13</geometry>
     37923                  <geometry >335, 93, 26, 13</geometry>
    3786737924                </mdElement>
    3786837925                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223427510_564294_589' >
     
    3793537992                  <editable xmi.value = 'false' />
    3793637993                  <visible xmi.value = 'false' />
    37937                   <geometry >335, 186, 22, 11</geometry>
     37994                  <geometry >319, 170, 22, 11</geometry>
    3793837995                </mdElement>
    3793937996                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223461853_882230_618' >
    3794037997                  <editable xmi.value = 'false' />
    3794137998                  <visible xmi.value = 'false' />
    37942                   <geometry >311, 161, 26, 13</geometry>
     37999                  <geometry >317, 203, 26, 13</geometry>
    3794338000                </mdElement>
    3794438001                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223461853_556966_620' >
    3794538002                  <editable xmi.value = 'false' />
    3794638003                  <visible xmi.value = 'false' />
    37947                   <geometry >312, 150, 22, 11</geometry>
     38004                  <geometry >319, 214, 22, 11</geometry>
    3794838005                </mdElement>
    3794938006                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1127223461853_5321_622' >
     
    3796138018                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223461853_987859_627' >
    3796238019                      <visible xmi.value = 'false' />
    37963                       <geometry >465, 195, 22, 11</geometry>
     38020                      <geometry >449, 243, 22, 11</geometry>
    3796438021                    </mdElement>
    3796538022                  </mdOwnedViews>
     
    3799138048                <mdElement elementClass = 'AssociationTextBoxView' xmi.id = 'nicklas_1127223461854_84508_640' >
    3799238049                  <visible xmi.value = 'false' />
    37993                   <geometry >318, 186, 33, 11</geometry>
     38050                  <geometry >314, 181, 33, 11</geometry>
    3799438051                </mdElement>
    3799538052              </mdOwnedViews>
     
    3801138068                  <editable xmi.value = 'false' />
    3801238069                  <visible xmi.value = 'false' />
    38013                   <geometry >495, 158, 22, 11</geometry>
     38070                  <geometry >495, 150, 22, 11</geometry>
    3801438071                </mdElement>
    3801538072                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223559976_905203_674' >
    3801638073                  <editable xmi.value = 'false' />
    3801738074                  <visible xmi.value = 'false' />
    38018                   <geometry >493, 177, 26, 13</geometry>
     38075                  <geometry >493, 183, 26, 13</geometry>
    3801938076                </mdElement>
    3802038077                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223559976_171663_676' >
    3802138078                  <editable xmi.value = 'false' />
    3802238079                  <visible xmi.value = 'false' />
    38023                   <geometry >495, 184, 22, 11</geometry>
     38080                  <geometry >495, 194, 22, 11</geometry>
    3802438081                </mdElement>
    3802538082                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1127223559976_861950_678' >
     
    3805838115                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223559976_963283_692' >
    3805938116                      <visible xmi.value = 'false' />
    38060                       <geometry >500, 166, 22, 11</geometry>
     38117                      <geometry >516, 161, 22, 11</geometry>
    3806138118                    </mdElement>
    3806238119                  </mdOwnedViews>
     
    3806738124                <mdElement elementClass = 'AssociationTextBoxView' xmi.id = 'nicklas_1127223559976_70832_696' >
    3806838125                  <visible xmi.value = 'false' />
    38069                   <geometry >490, 164, 33, 11</geometry>
     38126                  <geometry >490, 161, 33, 11</geometry>
    3807038127                </mdElement>
    3807138128              </mdOwnedViews>
     
    3808738144                  <editable xmi.value = 'false' />
    3808838145                  <visible xmi.value = 'false' />
    38089                   <geometry >559, 159, 22, 11</geometry>
     38146                  <geometry >559, 150, 22, 11</geometry>
    3809038147                </mdElement>
    3809138148                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223722102_895695_848' >
    3809238149                  <editable xmi.value = 'false' />
    3809338150                  <visible xmi.value = 'false' />
    38094                   <geometry >557, 175, 26, 13</geometry>
     38151                  <geometry >557, 183, 26, 13</geometry>
    3809538152                </mdElement>
    3809638153                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223722102_856744_850' >
    3809738154                  <editable xmi.value = 'false' />
    3809838155                  <visible xmi.value = 'false' />
    38099                   <geometry >559, 181, 22, 11</geometry>
     38156                  <geometry >559, 194, 22, 11</geometry>
    3810038157                </mdElement>
    3810138158                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1127223722102_17175_852' >
     
    3813438191                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223722103_92582_866' >
    3813538192                      <visible xmi.value = 'false' />
    38136                       <geometry >575, 221, 22, 11</geometry>
     38193                      <geometry >580, 173, 22, 11</geometry>
    3813738194                    </mdElement>
    3813838195                  </mdOwnedViews>
     
    3814338200                <mdElement elementClass = 'AssociationTextBoxView' xmi.id = 'nicklas_1127223722103_246320_870' >
    3814438201                  <visible xmi.value = 'false' />
    38145                   <geometry >554, 164, 33, 11</geometry>
     38202                  <geometry >554, 161, 33, 11</geometry>
    3814638203                </mdElement>
    3814738204              </mdOwnedViews>
     
    3816338220                  <editable xmi.value = 'false' />
    3816438221                  <visible xmi.value = 'false' />
    38165                   <geometry >457, 7, 22, 11</geometry>
     38222                  <geometry >457, 6, 22, 11</geometry>
    3816638223                </mdElement>
    3816738224                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223780742_736861_879' >
    3816838225                  <editable xmi.value = 'false' />
    3816938226                  <visible xmi.value = 'false' />
    38170                   <geometry >455, 38, 26, 13</geometry>
     38227                  <geometry >455, 39, 26, 13</geometry>
    3817138228                </mdElement>
    3817238229                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127223780742_773780_881' >
     
    3825838315                  <editable xmi.value = 'false' />
    3825938316                  <visible xmi.value = 'false' />
    38260                   <geometry >567, 16, 22, 11</geometry>
     38317                  <geometry >566, 13, 22, 11</geometry>
    3826138318                </mdElement>
    3826238319                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127224126223_983061_934' >
    3826338320                  <editable xmi.value = 'false' />
    3826438321                  <visible xmi.value = 'false' />
    38265                   <geometry >555, 33, 26, 13</geometry>
     38322                  <geometry >564, 46, 26, 13</geometry>
    3826638323                </mdElement>
    3826738324                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127224126223_195579_936' >
    3826838325                  <editable xmi.value = 'false' />
    3826938326                  <visible xmi.value = 'false' />
    38270                   <geometry >560, 56, 22, 11</geometry>
     38327                  <geometry >566, 57, 22, 11</geometry>
    3827138328                </mdElement>
    3827238329                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1127224126224_900846_938' >
     
    3831438371                <mdElement elementClass = 'AssociationTextBoxView' xmi.id = 'nicklas_1127224126224_545945_956' >
    3831538372                  <visible xmi.value = 'false' />
    38316                   <geometry >562, 28, 33, 11</geometry>
     38373                  <geometry >561, 24, 33, 11</geometry>
    3831738374                </mdElement>
    3831838375              </mdOwnedViews>
     
    3956839625                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127893568535_934734_882' >
    3956939626                      <visible xmi.value = 'false' />
    39570                       <geometry >514, 313, 22, 11</geometry>
     39627                      <geometry >535, 313, 22, 11</geometry>
    3957139628                    </mdElement>
    3957239629                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127893568535_390889_884' >
     
    3964439701                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127893586720_478749_913' >
    3964539702                      <visible xmi.value = 'false' />
    39646                       <geometry >560, 313, 22, 11</geometry>
     39703                      <geometry >581, 313, 22, 11</geometry>
    3964739704                    </mdElement>
    3964839705                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1127893586720_365964_915' >
     
    4075540812                  <editable xmi.value = 'false' />
    4075640813                  <visible xmi.value = 'false' />
    40757                   <geometry >764, 248, 22, 11</geometry>
     40814                  <geometry >764, 246, 22, 11</geometry>
    4075840815                </mdElement>
    4075940816                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1128084809797_703145_986' >
    4076040817                  <editable xmi.value = 'false' />
    4076140818                  <visible xmi.value = 'false' />
    40762                   <geometry >762, 278, 26, 13</geometry>
     40819                  <geometry >762, 279, 26, 13</geometry>
    4076340820                </mdElement>
    4076440821                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1128084809797_111270_988' >
    4076540822                  <editable xmi.value = 'false' />
    4076640823                  <visible xmi.value = 'false' />
    40767                   <geometry >764, 289, 22, 11</geometry>
     40824                  <geometry >764, 290, 22, 11</geometry>
    4076840825                </mdElement>
    4076940826                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1128084809797_433293_990' >
     
    4077340830                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1128084809797_883831_991' >
    4077440831                      <visible xmi.value = 'false' />
    40775                       <geometry >743, 279, 22, 11</geometry>
     40832                      <geometry >764, 279, 22, 11</geometry>
    4077640833                    </mdElement>
    4077740834                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1128084809797_103651_993' >
     
    4092340980                  <editable xmi.value = 'false' />
    4092440981                  <visible xmi.value = 'false' />
    40925                   <geometry >331, 254, 26, 13</geometry>
     40982                  <geometry >331, 255, 26, 13</geometry>
    4092640983                </mdElement>
    4092740984                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1130916331694_317707_622' >
     
    4093640993                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1130916331694_155655_625' >
    4093740994                      <visible xmi.value = 'false' />
    40938                       <geometry >428, 223, 22, 11</geometry>
     40995                      <geometry >449, 223, 22, 11</geometry>
    4093940996                    </mdElement>
    4094040997                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1130916331694_586306_627' >
    4094140998                      <visible xmi.value = 'false' />
    40942                       <geometry >428, 254, 22, 11</geometry>
     40999                      <geometry >449, 254, 22, 11</geometry>
    4094341000                    </mdElement>
    4094441001                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1130916331694_935485_629' >
    4094541002                      <visible xmi.value = 'false' />
    40946                       <geometry >428, 265, 22, 11</geometry>
     41003                      <geometry >449, 265, 22, 11</geometry>
    4094741004                    </mdElement>
    4094841005                  </mdOwnedViews>
     
    4102341080                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1131020598062_994191_422' >
    4102441081                      <visible xmi.value = 'false' />
    41025                       <geometry >318, 367, 22, 11</geometry>
     41082                      <geometry >339, 367, 22, 11</geometry>
    4102641083                    </mdElement>
    4102741084                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1131020598062_868566_424' >
    4102841085                      <visible xmi.value = 'false' />
    41029                       <geometry >318, 398, 22, 11</geometry>
     41086                      <geometry >339, 398, 22, 11</geometry>
    4103041087                    </mdElement>
    4103141088                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1131020598062_21733_426' >
    4103241089                      <visible xmi.value = 'false' />
    41033                       <geometry >318, 409, 22, 11</geometry>
     41090                      <geometry >339, 409, 22, 11</geometry>
    4103441091                    </mdElement>
    4103541092                  </mdOwnedViews>
     
    4124741304                  <editable xmi.value = 'false' />
    4124841305                  <visible xmi.value = 'false' />
    41249                   <geometry >733, 147, 22, 11</geometry>
     41306                  <geometry >733, 130, 22, 11</geometry>
    4125041307                </mdElement>
    4125141308                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1143100423406_209015_459' >
    4125241309                  <editable xmi.value = 'false' />
    4125341310                  <visible xmi.value = 'false' />
    41254                   <geometry >708, 131, 26, 13</geometry>
     41311                  <geometry >731, 163, 26, 13</geometry>
    4125541312                </mdElement>
    4125641313                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1143100423406_581859_461' >
    4125741314                  <editable xmi.value = 'false' />
    4125841315                  <visible xmi.value = 'false' />
    41259                   <geometry >709, 132, 22, 11</geometry>
     41316                  <geometry >733, 174, 22, 11</geometry>
    4126041317                </mdElement>
    4126141318                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1143100423406_262706_463' >
     
    4126541322                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1143100423406_493947_464' >
    4126641323                      <visible xmi.value = 'false' />
    41267                       <geometry >694, 134, 22, 11</geometry>
     41324                      <geometry >715, 134, 22, 11</geometry>
    4126841325                    </mdElement>
    4126941326                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1143100423406_832924_466' >
     
    4129441351                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1143100423406_262824_477' >
    4129541352                      <visible xmi.value = 'false' />
    41296                       <geometry >795, 125, 22, 11</geometry>
     41353                      <geometry >779, 173, 22, 11</geometry>
    4129741354                    </mdElement>
    4129841355                  </mdOwnedViews>
     
    4130341360                <mdElement elementClass = 'AssociationTextBoxView' xmi.id = 'nicklas_1143100423406_614619_481' >
    4130441361                  <visible xmi.value = 'false' />
    41305                   <geometry >728, 147, 33, 11</geometry>
     41362                  <geometry >728, 141, 33, 11</geometry>
    4130641363                </mdElement>
    4130741364              </mdOwnedViews>
     
    4131141368              <associationFirstEndID xmi.idref = 'nicklas_1143100423406_262706_463' />
    4131241369              <associationSecondEndID xmi.idref = 'nicklas_1143100423406_539905_472' />
     41370            </mdElement>
     41371            <mdElement elementClass = 'ClassView' xmi.id = 'nicklas_1145341437468_822646_436' >
     41372              <elementID xmi.idref = 'nicklas_1117789464231_29393_165' />
     41373              <properties >
     41374                <mdElement elementClass = 'ColorProperty' >
     41375                  <propertyID >FILL_COLOR</propertyID>
     41376                  <value xmi.value = '-1' />
     41377                </mdElement>
     41378                <mdElement elementClass = 'BooleanProperty' >
     41379                  <propertyID >SHOW_STEREOTYPE</propertyID>
     41380                  <value xmi.value = 'false' />
     41381                </mdElement>
     41382                <mdElement elementClass = 'BooleanProperty' >
     41383                  <propertyID >SHOW_TAGGED_VALUES</propertyID>
     41384                  <value xmi.value = 'false' />
     41385                </mdElement>
     41386                <mdElement elementClass = 'BooleanProperty' >
     41387                  <propertyID >SUPPRESS_CLASS_ATTRIBUTES</propertyID>
     41388                  <value xmi.value = 'true' />
     41389                </mdElement>
     41390              </properties>
     41391              <geometry >20, 320, 114, 22</geometry>
     41392            </mdElement>
     41393            <mdElement elementClass = 'AssociationView' xmi.id = 'nicklas_1145341486309_603719_461' >
     41394              <elementID xmi.idref = 'nicklas_1145341486308_131572_460' />
     41395              <linkFirstEndID xmi.idref = 'nicklas_1127222919393_181238_328' />
     41396              <linkSecondEndID xmi.idref = 'nicklas_1145341437468_822646_436' />
     41397              <geometry >80, 158; 48, 158; 48, 320; </geometry>
     41398              <linkNameID xmi.idref = 'nicklas_1145341486309_102642_486' />
     41399              <nameVisible xmi.value = 'true' />
     41400              <mdOwnedViews >
     41401                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_2041_462' >
     41402                  <editable xmi.value = 'false' />
     41403                  <visible xmi.value = 'false' />
     41404                  <geometry >37, 214, 22, 11</geometry>
     41405                </mdElement>
     41406                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_405488_464' >
     41407                  <editable xmi.value = 'false' />
     41408                  <visible xmi.value = 'false' />
     41409                  <geometry >35, 232, 26, 13</geometry>
     41410                </mdElement>
     41411                <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_832666_466' >
     41412                  <editable xmi.value = 'false' />
     41413                  <visible xmi.value = 'false' />
     41414                  <geometry >37, 239, 22, 11</geometry>
     41415                </mdElement>
     41416                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1145341486309_193942_468' >
     41417                  <elementID xmi.idref = 'nicklas_1145341486307_971567_458' />
     41418                  <geometry >70, 153, 10, 10</geometry>
     41419                  <mdOwnedViews >
     41420                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_904990_469' >
     41421                      <geometry >10, 145, 68, 11</geometry>
     41422                      <text >-experiments</text>
     41423                    </mdElement>
     41424                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_802522_471' >
     41425                      <geometry >55, 160, 22, 11</geometry>
     41426                      <text >0..*</text>
     41427                    </mdElement>
     41428                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_963054_473' >
     41429                      <visible xmi.value = 'false' />
     41430                      <geometry >48, 179, 22, 11</geometry>
     41431                    </mdElement>
     41432                  </mdOwnedViews>
     41433                  <roleNameID xmi.idref = 'nicklas_1145341486309_904990_469' />
     41434                  <roleMultiplicityID xmi.idref = 'nicklas_1145341486309_802522_471' />
     41435                  <roleConstraintsID xmi.idref = 'nicklas_1145341486309_963054_473' />
     41436                </mdElement>
     41437                <mdElement elementClass = 'RoleView' xmi.id = 'nicklas_1145341486309_687601_477' >
     41438                  <elementID xmi.idref = 'nicklas_1145341486308_238675_459' />
     41439                  <geometry >43, 310, 10, 10</geometry>
     41440                  <mdOwnedViews >
     41441                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_876163_478' >
     41442                      <geometry >17, 305, 109, 11</geometry>
     41443                      <text >+experimentalFactors</text>
     41444                    </mdElement>
     41445                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_683668_480' >
     41446                      <geometry >22, 290, 22, 11</geometry>
     41447                      <text >0..*</text>
     41448                    </mdElement>
     41449                    <mdElement elementClass = 'TextBoxView' xmi.id = 'nicklas_1145341486309_920023_482' >
     41450                      <visible xmi.value = 'false' />
     41451                      <geometry >58, 288, 22, 11</geometry>
     41452                    </mdElement>
     41453                  </mdOwnedViews>
     41454                  <roleNameID xmi.idref = 'nicklas_1145341486309_876163_478' />
     41455                  <roleMultiplicityID xmi.idref = 'nicklas_1145341486309_683668_480' />
     41456                  <roleConstraintsID xmi.idref = 'nicklas_1145341486309_920023_482' />
     41457                </mdElement>
     41458                <mdElement elementClass = 'AssociationTextBoxView' xmi.id = 'nicklas_1145341486309_102642_486' >
     41459                  <visible xmi.value = 'false' />
     41460                  <geometry >32, 214, 33, 11</geometry>
     41461                </mdElement>
     41462              </mdOwnedViews>
     41463              <linkConstraintID xmi.idref = 'nicklas_1145341486309_2041_462' />
     41464              <linkStereotypeID xmi.idref = 'nicklas_1145341486309_405488_464' />
     41465              <linkTaggedValuesID xmi.idref = 'nicklas_1145341486309_832666_466' />
     41466              <associationFirstEndID xmi.idref = 'nicklas_1145341486309_193942_468' />
     41467              <associationSecondEndID xmi.idref = 'nicklas_1145341486309_687601_477' />
    4131341468            </mdElement>
    4131441469          </mdOwnedViews>
     
    4132241477      <favoriteElements xmi.value = '' />
    4132341478      <browserVisible xmi.value = 'true' />
    41324       <browserBounds >1, 1, 345, 860</browserBounds>
     41479      <browserBounds >1, 1, 344, 860</browserBounds>
    4132541480      <browserDividerLocation xmi.value = '550' />
    4132641481    </options>
  • trunk/src/core/common-queries.xml

    r2142 r2164  
    962962    </description>
    963963  </query>
     964 
     965  <query id="COUNT_EXPERIMENTS_FOR_ANNOTATIONTYPE" type="HQL">
     966    <sql>
     967      SELECT count(*)
     968      FROM ExperimentData exp
     969      JOIN exp.experimentalFactors ef
     970      WHERE ef = :annotationType
     971    </sql>
     972    <description>
     973      A Hibernate query that counts the number of experiments
     974      where the given annotation type is used as an experimental factor.
     975    </description>
     976  </query>
    964977
    965978  <query id="COUNT_SAMPLES_FOR_BIOSOURCE" type="HQL">
     
    16561669  </query>
    16571670
     1671  <query id="GET_PRIMARY_ANNOTATION" type="HQL">
     1672    <sql>
     1673      SELECT ad
     1674      FROM AnnotationData ad
     1675      WHERE ad.annotationType = :annotationType
     1676      AND ad.annotationSet = :annotationSet
     1677    </sql>
     1678    <description>
     1679      A Hibernate query that loads the primary annotation of a specific
     1680      annotation type for a given annotation set.
     1681    </description>
     1682  </query>
     1683 
     1684  <query id="GET_DIRECTLY_INHERITED_ANNOTATION" type="HQL">
     1685    <sql>
     1686      SELECT ad
     1687      FROM AnnotationData ad
     1688      JOIN ad.inheritingSets ans
     1689      WHERE ad.annotationType = :annotationType
     1690      AND ans = :annotationSet
     1691    </sql>
     1692    <description>
     1693      A Hibernate query that loads an directly inherited annotation of a specific
     1694      annotation type for a given annotation set. A directly inhertited annotation
     1695      is an annotation that is linked to the specified annotation set.
     1696    </description>
     1697  </query>
     1698
     1699  <query id="GET_INDIRECTLY_INHERITED_ANNOTATION" type="HQL">
     1700    <sql>
     1701      SELECT ad
     1702      FROM AnnotationData ad
     1703      JOIN ad.annotationSet.inheritingSets ians
     1704      WHERE ad.annotationType = :annotationType
     1705      AND ians = :annotationSet
     1706    </sql>
     1707    <description>
     1708      A Hibernate query that loads an indirectly inherited annotation of a specific
     1709      annotation type for a given annotation set. An indirectly inhertied annotation
     1710      is an annotation which belongs to an annotation set which is inhertited by
     1711      the given annotation set.
     1712    </description>
     1713  </query>
     1714
    16581715</predefined-queries>
  • trunk/src/core/net/sf/basedb/core/AnnotationSet.java

    r2098 r2164  
    2828import net.sf.basedb.core.query.Hql;
    2929
     30import net.sf.basedb.core.data.AnnotationData;
    3031import net.sf.basedb.core.data.AnnotationSetData;
    3132
     
    205206      and the annotation type isn't valid for this type of item
    206207    @throws BaseException If there is another error
     208    @see #findAnnotation(AnnotationType)
    207209  */
    208210  public Annotation getAnnotation(AnnotationType annotationType)
     
    239241
    240242  /**
     243    Find an annotation of the specified annotation type among all annotations
     244    including the inherted annotations. This method will first search for the
     245    annotation in the following order:
     246    <ol>
     247    <li>The primary annotations
     248    <li>The inherited annotations
     249    <li>The inherited annotation sets
     250    </ol>
     251    If no annotation of the specified type is found, null is returned.
     252    If more than one annotation of the specified type exists only the first
     253    one found is returned.
     254   
     255    @param annotationType The annotation type to look for
     256    @return An <code>Annotation</code> object or null
     257   */
     258  public Annotation findAnnotation(AnnotationType annotationType)
     259    throws PermissionDeniedException
     260  {
     261    if (annotationType == null) throw new InvalidUseOfNullException("annotationType");
     262   
     263    Annotation a = null;
     264    AnnotationData ad = null;
     265   
     266    org.hibernate.Session session = getDbControl().getHibernateSession();
     267   
     268    // Find primary annotation
     269    org.hibernate.Query query = HibernateUtil.getPredefinedQuery(session, "GET_PRIMARY_ANNOTATION");
     270    /*
     271      SELECT ad
     272      FROM AnnotationData ad
     273      WHERE ad.annotationType = :annotationType
     274      AND ad.annotationSet = :annotationSet
     275    */
     276    query.setEntity("annotationType", annotationType.getData());
     277    query.setEntity("annotationSet", this.getData());
     278    ad = HibernateUtil.loadData(AnnotationData.class, query);
     279   
     280    if (ad == null)
     281    {
     282      // Find inherited
     283      query = HibernateUtil.getPredefinedQuery(session, "GET_DIRECTLY_INHERITED_ANNOTATION");
     284      /*
     285        SELECT ad
     286        FROM AnnotationData ad
     287        JOIN ad.inheritingSets ans
     288        WHERE ad.annotationType = :annotationType
     289        AND ans = :annotationSet
     290      */
     291      query.setEntity("annotationType", annotationType.getData());
     292      query.setEntity("annotationSet", this.getData());
     293      ad = HibernateUtil.loadData(AnnotationData.class, query);
     294    }
     295
     296    if (ad == null)
     297    {
     298      // Find among inherited annotation sets
     299      query = HibernateUtil.getPredefinedQuery(session, "GET_INDIRECTLY_INHERITED_ANNOTATION");
     300      /*
     301        SELECT ad
     302        FROM AnnotationData ad
     303        JOIN ad.annotationSet.inheritingSets ians
     304        WHERE ad.annotationType = :annotationType
     305        AND ians = :annotationSet
     306      */
     307      query.setEntity("annotationType", annotationType.getData());
     308      query.setEntity("annotationSet", this.getData());
     309      ad = HibernateUtil.loadData(AnnotationData.class, query);
     310    }
     311   
     312    if (ad != null)
     313    {
     314      a = getDbControl().getItem(Annotation.class, ad);
     315    }
     316    return a;
     317  }
     318 
     319  /**
    241320    Delete the annotation of the specified annotation type.
    242321    @param annotationType The type of the annotation to delete
     
    260339 
    261340  /**
    262     Get a query that reurns all direct annotations in this annotation
     341    Get a query that reurns all primary annotations in this annotation
    263342    set.
    264343    @return An <code>ItemQuery</code> object
  • trunk/src/core/net/sf/basedb/core/AnnotationType.java

    r1795 r2164  
    160160  {
    161161    org.hibernate.Session session = getDbControl().getHibernateSession();
    162     org.hibernate.Query query = HibernateUtil.getPredefinedQuery(session, "COUNT_ANNOTATIONS_FOR_ANNOTATIONTYPE");
    163     /*
    164       SELECT count(*)
    165       FROM AnnotationData a
    166       WHERE a.annotationType = :annotationType
    167     */
    168     query.setEntity("annotationType", this.getData());
    169     return HibernateUtil.loadData(Integer.class, query) > 0;
     162    boolean used = false;
     163 
     164    if (!used)
     165    {
     166      org.hibernate.Query query = HibernateUtil.getPredefinedQuery(session, "COUNT_ANNOTATIONS_FOR_ANNOTATIONTYPE");
     167      /*
     168        SELECT count(*)
     169        FROM AnnotationData a
     170        WHERE a.annotationType = :annotationType
     171      */
     172      query.setEntity("annotationType", this.getData());
     173      used = HibernateUtil.loadData(Integer.class, query) > 0;
     174    }
     175    if (!used)
     176    {
     177      org.hibernate.Query query = HibernateUtil.getPredefinedQuery(session, "COUNT_EXPERIMENTS_FOR_ANNOTATIONTYPE");
     178      /*
     179        SELECT count(*)
     180        FROM ExperimentData exp
     181        JOIN exp.experimentalFactors ef
     182        WHERE ef = :annotationType
     183      */
     184      query.setEntity("annotationType", this.getData());
     185      used = HibernateUtil.loadData(Integer.class, query) > 0;
     186    }
     187    return used;
    170188  }
    171189  // -------------------------------------------
  • trunk/src/core/net/sf/basedb/core/Experiment.java

    r1795 r2164  
    581581  }
    582582 
     583 
     584  /**
     585    Add an annotation type as an experimental factor to this experiment.
     586    @param annotationType The annotation type to add to this experiment
     587    @throws PermissionDeniedException If the
     588      logged in user doesn't have {@link Permission#WRITE}
     589      permission for the experiment and {@link Permission#USE}
     590      for the annotation type
     591    @throws InvalidDataException If the annotationType is null
     592  */
     593  public void addExperimentalFactor(AnnotationType annotationType)
     594    throws PermissionDeniedException, InvalidDataException
     595  {
     596    checkPermission(Permission.WRITE);
     597    if (annotationType == null) throw new InvalidUseOfNullException("annotationType");
     598    annotationType.checkPermission(Permission.USE);
     599    getData().getExperimentalFactors().add(annotationType.getData());
     600  }
     601 
     602  /**
     603    Remove an annotation type from the experimental factors for this experiment.
     604    @param annotationType The annotation type to remove from this experiment
     605    @throws PermissionDeniedException If the
     606      logged in user doesn't have {@link Permission#WRITE}
     607      permission for the experiment
     608    @throws InvalidDataException If the annotationType is null
     609  */
     610  public void removeExperimentalFactor(AnnotationType annotationType)
     611    throws PermissionDeniedException, InvalidDataException
     612  {
     613    checkPermission(Permission.WRITE);
     614    if (annotationType == null) throw new InvalidUseOfNullException("annotationType");
     615    getData().getExperimentalFactors().remove(annotationType.getData());
     616  }
     617
     618 
     619  /**
     620    Get a query that returns all annotation types used as experimental factors
     621    for this experiment.
     622    @return An <code>ItemQuery</code> object
     623   */
     624  public ItemQuery<AnnotationType> getExperimentalFactors()
     625  {
     626    ItemQuery<AnnotationType> query = AnnotationType.getQuery(null);
     627    query.joinPermanent(Hql.innerJoin("experiments", Item.EXPERIMENT.getAlias()));
     628    query.restrictPermanent(
     629      Restrictions.eq(
     630        Hql.alias(Item.EXPERIMENT.getAlias()),
     631        Hql.entity(this)
     632      )
     633    );
     634    return query;
     635  }
    583636}
  • trunk/src/core/net/sf/basedb/core/Install.java

    r2163 r2164  
    9393    method.
    9494  */
    95   private static final int NEW_SCHEMA_VERSION = 2;
     95  private static final int NEW_SCHEMA_VERSION = 3;
    9696
    9797  public static synchronized void createTables(boolean update, final ProgressReporter progress)
     
    17711771      if (pd != null)
    17721772      {
    1773         pd.loadPluginInformation(className, jarPath);
     1773        pd.loadPluginInformation(jarPath, className);
    17741774        dc.commit();
    17751775        log.info("createPluginDefinition: UPDATED [className="+className+"; jarPath="+jarPath+"]");
  • trunk/src/core/net/sf/basedb/core/Update.java

    r2146 r2164  
    5151    </td>
    5252  </tr>
     53 
     54  <tr>
     55    <td>3</td>
     56    <td>
     57      <ul>
     58      <li>Added {@link ExperimentData#getExperimentalFactors()}.
     59        No need to update existing values.
     60      </ul>
     61    </td>
     62  </tr>
    5363  </table>
    5464
     
    8191    throws BaseException
    8292  {
    83     final int total_progress_steps = 2;
     93    final int total_progress_steps = 3;
    8494    final float progress_factor = 100 / total_progress_steps;
    8595    if (progress != null) progress.display(0, "Updating database...");
     
    105115      }
    106116
     117      if (schemaVersion < 3)
     118      {
     119        if (progress != null) progress.display((int)(2*progress_factor), "--Updating to schema version 3...");
     120        setSchemaVersionInTransaction(3);
     121      }
     122     
    107123      /*
    108       if (schemaVersion < 3)
    109       {
    110         schemaVersion = updateToSchemaVersion3();
     124      if (schemaVersion < 4)
     125      {
     126        schemaVersion = updateToSchemaVersion4();
     127        - or -
     128        setSchemaVersionInTransaction(4);
    111129      }
    112130      ... etc...
     
    164182  {
    165183    org.hibernate.Query query = HibernateUtil.getPredefinedQuery(session, "SET_SCHEMA_VERSION");
    166     query.setInteger("schemaVersion", 2);
     184    query.setInteger("schemaVersion", schemaVersion);
    167185    query.setInteger("build", Application.getBuild());
    168186    HibernateUtil.executeUpdate(query);
     187  }
     188 
     189  /**
     190    Update the schema version version number using a new transaction.
     191    @param schemaVersion The new schema version number
     192   */
     193  private static void setSchemaVersionInTransaction(int schemaVersion)
     194  {
     195    org.hibernate.Transaction tx = null;
     196    try
     197    {
     198      tx = HibernateUtil.newTransaction(session);
     199      setSchemaVersion(schemaVersion);
     200      HibernateUtil.commit(tx);
     201    }
     202    catch (BaseException ex)
     203    {
     204      if (tx != null) HibernateUtil.rollback(tx);
     205      log.error("setSchemaVersion: FAILED", ex);
     206      throw ex;
     207    }
    169208  }
    170209 
  • trunk/src/core/net/sf/basedb/core/data/AnnotationTypeData.java

    r871 r2164  
    205205  }
    206206
     207  private Set<ExperimentData> experiments;
     208  /**
     209    This is the inverse end.
     210    @see ExperimentData#getExperimentalFactors()
     211    @hibernate.set table="`ExperimentalFactors`" lazy="true" inverse="true"
     212    @hibernate.collection-key column="`annotationtype_id`"
     213    @hibernate.collection-many-to-many column="`experiment_id`" class="net.sf.basedb.core.data.ExperimentData"
     214  */
     215  public Set<ExperimentData> getExperiments()
     216  {
     217    return experiments;
     218  }
     219  void setExperiments(Set<ExperimentData> experiments)
     220  {
     221    this.experiments = experiments;
     222  }
    207223}
  • trunk/src/core/net/sf/basedb/core/data/ExperimentData.java

    r1527 r2164  
    282282  }
    283283
     284  private Set<AnnotationTypeData> experimentalFactors;
     285  /**
     286    The annotation types which describes the experimental factors for this experiment.
     287    @hibernate.set table="`ExperimentalFactors`" lazy="true"
     288    @hibernate.collection-key column="`experiment_id`"
     289    @hibernate.collection-many-to-many column="`annotationtype_id`" class="net.sf.basedb.core.data.AnnotationTypeData"
     290  */
     291  public Set<AnnotationTypeData> getExperimentalFactors()
     292  {
     293    if (experimentalFactors == null)
     294    {
     295      experimentalFactors = new HashSet<AnnotationTypeData>();
     296    }
     297    return experimentalFactors;
     298  }
     299  void setExperimentalFactors(Set<AnnotationTypeData> experimentalFactors)
     300  {
     301    this.experimentalFactors = experimentalFactors;
     302  }
    284303}
  • trunk/www/views/experiments/edit_experiment.jsp

    r1777 r2164  
    3535  import="net.sf.basedb.core.Experiment"
    3636  import="net.sf.basedb.core.RawBioAssay"
     37  import="net.sf.basedb.core.AnnotationType"
    3738  import="net.sf.basedb.core.RawDataType"
    3839  import="net.sf.basedb.core.RawDataTypes"
     
    101102      return true;
    102103    }
     104   
     105    // Validate the "Experimental factors" tab
     106    function validateExperimentalFactors()
     107    {
     108      return true;
     109    }
    103110
    104111    // Submit the form
     
    110117        frm.addedRawBioAssays.value = Link.getActionIds(1, 'R').join(',');
    111118        frm.removedRawBioAssays.value = Link.getActionIds(-1, 'R').join(',');
     119
     120        frm.addedAnnotationTypes.value = Link.getActionIds(1, 'A').join(',');
     121        frm.removedAnnotationTypes.value = Link.getActionIds(-1, 'A').join(',');
     122       
    112123        frm.submit();
    113124      }
     
    124135      url += '&filter:STRING:rawDataType='+rawDataType;
    125136      url += '&filter:INT:spots=>0';
    126       Main.openPopup(url, 'AddRawBioAssays', 800, 600);
     137      Main.openPopup(url, 'AddRawBioAssays', 1000, 700);
    127138    }
    128139    function addRawBioAssayCallback(rawBioAssayId, name)
     
    132143      Link.addItem(document.forms['experiment'].rawBioAssays, item);
    133144    }
    134     function removeOnClick()
     145    function removeRawBioAssaysOnClick()
    135146    {
    136147      Link.removeSelected(document.forms['experiment'].rawBioAssays);
     148    }
     149   
     150    function addAnnotationTypesOnClick()
     151    {
     152      var frm = document.forms['experiment'];
     153      var ids = Link.getListIds(frm.annotationTypes, 'A');
     154      var excludes = ids.join(',');
     155      var url = '../../admin/annotationtypes/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectmultiple&callback=addAnnotationTypeCallback';
     156      url += "&exclude="+excludes;
     157      Main.openPopup(url, 'AddAnnotationTypes', 1000, 700);
     158    }
     159    function addAnnotationTypeCallback(annotationTypeId, name)
     160    {
     161      var item = Link.getItem('A', annotationTypeId);
     162      if (!item) item = new Item('A', annotationTypeId, name);
     163      Link.addItem(document.forms['experiment'].annotationTypes, item);
     164    }
     165    function removeAnnotationTypesOnClick()
     166    {
     167      Link.removeSelected(document.forms['experiment'].annotationTypes);
    137168    }
    138169
     
    161192          %>
    162193          Link.addNewItem(rawBioAssays, new Item('R', <%=rba.getId()%>, '<%=HTML.javaScriptEncode(rba.getName())%>'));
     194          <%
     195        }
     196        %>
     197        var annotationTypes = frm.annotationTypes;
     198        <%
     199        ItemQuery<AnnotationType> efQuery = experiment.getExperimentalFactors();
     200        efQuery.include(Include.MINE, Include.SHARED, Include.OTHERS, Include.IN_PROJECT);
     201        efQuery.order(Orders.asc(Hql.property("name")));
     202        ItemResultList<AnnotationType> experimentalFactors = efQuery.list(dc);
     203        for (AnnotationType at : experimentalFactors)
     204        {
     205          %>
     206          Link.addNewItem(annotationTypes, new Item('A', <%=at.getId()%>, '<%=HTML.javaScriptEncode(at.getName())%>'));
    163207          <%
    164208        }
     
    251295              /></td></tr>
    252296            <tr><td width="150"><base:button
    253               onclick="removeOnClick()"
     297              onclick="removeRawBioAssaysOnClick()"
    254298              title="Remove"
    255299              tooltip="Remove the selected raw bioassays"
     
    338382          <a href="javascript:Main.zoom('Publication', 'experiment', 'publication')"
    339383            title="Edit in larger window"><base:icon image="zoom.gif" /></a>
     384        </td>
     385      </tr>
     386      </table>
     387      </t:tab>
     388     
     389      <t:tab id="experimentalFactors" title="Experimental factors" validate="validateExperimentalFactors()">
     390      <table class="form" cellspacing=0>
     391
     392      <tr valign="top">
     393        <td class="prompt">Annotation types</td>
     394        <td>
     395          <table border="0" cellspacing="0" cellpadding="0">
     396          <tr valign="top">
     397          <td>
     398            <select name="annotationTypes" size="10" multiple style="width: 20em;">
     399            </select>
     400            <input type="hidden" name="addedAnnotationTypes" value="">
     401            <input type="hidden" name="removedAnnotationTypes" value="">
     402          </td>
     403          <td>
     404            <table border="0">
     405            <tr><td width="150"><base:button
     406              onclick="addAnnotationTypesOnClick()"
     407              title="Add annotation types&hellip;"
     408              tooltip="Add annotation types"
     409              /></td></tr>
     410            <tr><td width="150"><base:button
     411              onclick="removeAnnotationTypesOnClick()"
     412              title="Remove"
     413              tooltip="Remove the selected annotation types"
     414            /></td></tr>
     415            </table>
     416          </td>
     417          </tr>
     418          </table>
    340419        </td>
    341420      </tr>
  • trunk/www/views/experiments/index.jsp

    r1789 r2164  
    3333  import="net.sf.basedb.core.Experiment"
    3434  import="net.sf.basedb.core.RawBioAssay"
     35  import="net.sf.basedb.core.AnnotationType"
    3536  import="net.sf.basedb.core.RawDataType"
    3637  import="net.sf.basedb.core.RawDataTypes"
     
    171172      if (rawBioAssayId != -1) experiment.addRawBioAssay(RawBioAssay.getById(dc, rawBioAssayId));
    172173    }
     174   
     175    String[] removeAnnotationTypes = Values.getString(request.getParameter("removedAnnotationTypes")).split(",");
     176    for (int i = 0; i < removeAnnotationTypes.length; ++i)
     177    {
     178      int annotationTypeId = Values.getInt(removeAnnotationTypes[i], -1);
     179      if (annotationTypeId != -1) experiment.removeExperimentalFactor(AnnotationType.getById(dc, annotationTypeId));
     180    }
     181   
     182    String[] addAnnotationTypes = Values.getString(request.getParameter("addedAnnotationTypes")).split(",");
     183    for (int i = 0; i < addAnnotationTypes.length; ++i)
     184    {
     185      int annotationTypeId = Values.getInt(addAnnotationTypes[i], -1);
     186      if (annotationTypeId != -1) experiment.addExperimentalFactor(AnnotationType.getById(dc, annotationTypeId));
     187    }
    173188
    174189    dc.commit();
  • trunk/www/views/experiments/view_experiment.jsp

    r2097 r2164  
    3434  import="net.sf.basedb.core.Experiment"
    3535  import="net.sf.basedb.core.RawBioAssay"
     36  import="net.sf.basedb.core.AnnotationType"
     37  import="net.sf.basedb.core.AnnotationSet"
     38  import="net.sf.basedb.core.Annotation"
    3639  import="net.sf.basedb.core.User"
    3740  import="net.sf.basedb.core.ItemQuery"
     
    268271     
    269272      <%
     273      ItemQuery<AnnotationType> efQuery = experiment.getExperimentalFactors();
     274      efQuery.include(Include.MINE, Include.SHARED, Include.OTHERS, Include.IN_PROJECT);
     275      efQuery.order(Orders.asc(Hql.property("name")));
     276      ItemResultList<AnnotationType> experimentalFactors = efQuery.list(dc);
     277      if (experimentalFactors.size() == 0)
     278      {
     279        %>
     280        <h4>Experimental factors</h4>
     281        No experimental factors has been added to this experiment
     282        (or, you don't have permission to view them).
     283        <%
     284      }
     285      else
     286      {
     287        %>
     288        <h4 class="docked">Experimental factors</h4>
     289        <tbl:table
     290          id="experimentalFactors"
     291          clazz="itemlist"
     292          columns="all"
     293          >
     294        <tbl:columndef
     295          id="name"
     296          title="Name"
     297        />
     298        <tbl:columndef
     299          id="values"
     300          title="Enumeration"
     301        />
     302        <tbl:columndef
     303          id="description"
     304          title="Description"
     305        />
     306        <tbl:data>
     307          <tbl:columns>
     308          </tbl:columns>
     309          <tbl:rows>
     310          <%
     311          String link = "../../admin/annotationtypes/index.jsp?ID="+ID;
     312          for (AnnotationType item : experimentalFactors)
     313          {
     314            %>
     315            <tbl:row>
     316              <tbl:cell column="name"><%=Base.getEncodedName(item, false, link)%></tbl:cell>
     317              <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
     318              <tbl:cell column="values">
     319              <%=item.isEnumeration() ?
     320                HTML.encodeTags(Values.getString(item.getValues(), ", ", true)) :
     321                "<i>- no -</i>"%>
     322              </tbl:cell>
     323            </tbl:row>
     324            <%
     325          }
     326          %>
     327          </tbl:rows>
     328        </tbl:data>
     329        </tbl:table>
     330        <%
     331      }
     332      %>
     333     
     334      <%
    270335      ItemQuery<RawBioAssay> rbaQuery = experiment.getRawBioAssays();
    271336      rbaQuery.include(Include.MINE, Include.SHARED, Include.OTHERS, Include.IN_PROJECT);
     
    297362          title="Description"
    298363        />
     364        <%
     365        for (AnnotationType at : experimentalFactors)
     366        {
     367          %>
     368          <tbl:columndef
     369            id="<%="at"+at.getId()%>"
     370            title="<%=HTML.encodeTags(at.getName())+" [EF]"%>"
     371          />
     372          <%
     373        }
     374        %>
     375       
    299376        <tbl:data>
    300377          <tbl:columns>
     
    305382          for (RawBioAssay item : rawBioAssays)
    306383          {
     384            AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
    307385            %>
    308386            <tbl:row>
    309387              <tbl:cell column="name"><%=Base.getEncodedName(item, false, link)%></tbl:cell>
    310388              <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
     389              <%
     390              for (AnnotationType at : experimentalFactors)
     391              {
     392               
     393                String value = "<i>- none -</i>";
     394                if (as != null)
     395                {
     396                  Annotation a = as.findAnnotation(at);
     397                  if (a != null)
     398                  {
     399                    value = Values.getString(a.getValues(), ", ", true);
     400                  }
     401                }
     402                %>
     403                <tbl:cell column="<%="at"+at.getId()%>"><%=value%></tbl:cell>
     404                <%
     405              }
     406              %>
    311407            </tbl:row>
    312408            <%
Note: See TracChangeset for help on using the changeset viewer.