Exemple #1
0
 private void CcLibraryComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (ccLibraryComboBox.SelectedIndex > -1)
     {
         SelectedCcLibrary = Model.CcLibraries[ccLibraryComboBox.SelectedIndex];
     }
     CheckIfInputIsValid();
 }
 /// <summary>
 /// </summary>
 /// <param name="xmlSchemaFiles"></param>
 /// <param name="ccLibrary">The CC Library.</param>
 /// <param name="bLibrary">The bLibrary.</param>
 /// <param name="mapForceMappingFiles">The MapForce mapping file.</param>
 /// <param name="docLibraryName">The name of the DOCLibrary to be created.</param>
 /// <param name="bieLibraryName">The name of the BIELibrary to be created.</param>
 /// <param name="bdtLibraryName">The name of the BDTLibrary to be created.</param>
 /// <param name="qualifier">The qualifier for the business domain (e.g. "ebInterface").</param>
 /// <param name="rootElementName"></param>
 public MappingImporter(IEnumerable <string> mapForceMappingFiles, IEnumerable <string> xmlSchemaFiles, ICcLibrary ccLibrary, IBLibrary bLibrary, string docLibraryName, string bieLibraryName, string bdtLibraryName, string qualifier, string rootElementName, ICctsRepository cctsRepository)
 {
     this.ccLibrary            = ccLibrary;
     this.bLibrary             = bLibrary;
     this.mapForceMappingFiles = new List <string>(mapForceMappingFiles).ToArray();
     this.xmlSchemaFiles       = new List <string>(xmlSchemaFiles).ToArray();
     this.docLibraryName       = docLibraryName;
     this.bieLibraryName       = bieLibraryName;
     this.bdtLibraryName       = bdtLibraryName;
     this.qualifier            = qualifier;
     this.rootElementName      = rootElementName;
     this.cctsRepository       = cctsRepository;
 }
 public static CcLibrarySpec CloneCcLibrary(ICcLibrary ccLibrary)
 {
     return(new CcLibrarySpec
     {
         Name = ccLibrary.Name,
         BusinessTerms = new List <string>(ccLibrary.BusinessTerms),
         Copyrights = new List <string>(ccLibrary.Copyrights),
         Owners = new List <string>(ccLibrary.Owners),
         References = new List <string>(ccLibrary.References),
         Status = ccLibrary.Status,
         VersionIdentifier = ccLibrary.VersionIdentifier,
         BaseURN = ccLibrary.BaseURN,
         NamespacePrefix = ccLibrary.NamespacePrefix,
     });
 }
        public TargetElementStore(MapForceMapping mapForceMapping, ICcLibrary ccLibrary, ICctsRepository cctsRepository)
        {
            cache = CcCache.GetInstance(cctsRepository);

            IEnumerable <SchemaComponent> targetSchemaComponents = mapForceMapping.GetTargetSchemaComponents();

            foreach (SchemaComponent component in targetSchemaComponents)
            {
                Entry entry = component.RootEntry;

                IAcc acc = cache.GetCcFromCcLibrary(ccLibrary.Name, entry.Name);

                if (acc == null)
                {
                    throw new MappingError("ACC '" + entry.Name + "' not found.");
                }
                AddToIndex(entry, acc);
                CreateChildren(entry, acc);
            }
        }
Exemple #5
0
        public void LoadACCs(ICctsRepository repository)
        {
            if (ACCs.Count == 0)
            {
                ICcLibrary ccl = repository.GetCcLibraryById(Id);

                foreach (IAcc acc in ccl.Accs)
                {
                    if (ACCs.ContainsKey(acc.Name))
                    {
                        ACCs.Clear();
                        throw new CacheException("The wizard encountered two ACCs having identical names. Please verify your model!");
                    }

                    ACCs.Add(acc.Name, new cACC(acc.Name, acc.Id, CheckState.Unchecked));
                }
            }

            if (ACCs.Count == 0)
            {
                throw new CacheException("The CC library did not contain any ACCs. Please make sure at least one ACC is present in the library before proceeding with the wizard.");
            }
        }
        public static void ImportACCs(ICcLibrary ccLibrary, IEnumerable <AccSpec> accSpecs, Dictionary <string, List <AsccSpecWithAssociatedAccName> > accAsccSpecs)
        {
            // need two passes:
            //  (1) create the ACCs
            //  (2) create the ASCCs
            var accs = new Dictionary <string, IAcc>();

            foreach (var accSpec in accSpecs)
            {
                Console.WriteLine("INFO: Importing ACC " + accSpec.Name + ".");
                accs[accSpec.Name] = ccLibrary.CreateAcc(accSpec);
            }
            foreach (var accSpec in accSpecs)
            {
                Console.WriteLine("INFO: Importing ASCCs for ACC " + accSpec.Name + ".");
                var associatingAcc = accs[accSpec.Name];
                foreach (var asccSpec in accAsccSpecs.GetAndCreate(accSpec.Name))
                {
                    asccSpec.AssociatedAcc = accs[asccSpec.AssociatedAccName];
                    associatingAcc.CreateAscc(asccSpec);
                }
            }
        }
 public static void InitLibraries(ImporterContext context)
 {
     ExistingAccs = context.CCLibrary;
     ExistingBdts = context.BDTLibrary;
     BieLibrary   = context.BIELibrary;
 }
Exemple #8
0
 public void RemoveCcLibrary(ICcLibrary ccLibrary)
 {
     throw new NotImplementedException();
 }
Exemple #9
0
 public ICcLibrary UpdateCcLibrary(ICcLibrary ccLibrary, CcLibrarySpec specification)
 {
     throw new NotImplementedException();
 }
        public SchemaMapping(MapForceMapping mapForceMapping, XmlSchemaSet xmlSchemaSet, ICcLibrary ccLibrary, ICctsRepository cctsRepository)
        {
            sourceItemStore = new MapForceSourceItemTree(mapForceMapping, xmlSchemaSet);

            targetElementStore = new TargetElementStore(mapForceMapping, ccLibrary, cctsRepository);

            mappingFunctionStore = new MappingFunctionStore(mapForceMapping, targetElementStore);

            RootElementMapping = MapElement(sourceItemStore.RootSourceItem, "/" + sourceItemStore.RootSourceItem.Name, new Stack <XmlQualifiedName>());

            elementMappings.Add(RootElementMapping);

            elementMappings = new List <ElementMapping>(ResolveTypeMappings(elementMappings));

            foreach (KeyValuePair <string, List <ComplexTypeMapping> > pair in complexTypeMappings)
            {
                foreach (ComplexTypeMapping complexTypeMapping in pair.Value)
                {
                    complexTypeMapping.RemoveInvalidAsmaMappings();
                }
            }

            Dictionary <string, List <ComplexTypeMapping> > relevantComplexTypeMappings = new Dictionary <string, List <ComplexTypeMapping> >();

            foreach (KeyValuePair <string, List <ComplexTypeMapping> > pair in complexTypeMappings)
            {
                string             complexTypeName = pair.Key;
                ComplexTypeMapping relevantMapping = GetComplexTypeMappingWithMostChildren(pair.Value);
                if (relevantMapping is ComplexTypeToMaMapping)
                {
                    relevantMapping = CreateComplexTypeMappingForChildMappings(relevantMapping.Children, complexTypeName, relevantMapping.SourceElementName);
                }
                if (relevantMapping != null)
                {
                    relevantComplexTypeMappings[complexTypeName] = new List <ComplexTypeMapping> {
                        relevantMapping
                    };
                }
            }
            complexTypeMappings = relevantComplexTypeMappings;

            foreach (ElementMapping elementMapping in elementMappings)
            {
                if (elementMapping is AsmaMapping)
                {
                    AsmaMapping        asmaMapping        = (AsmaMapping)elementMapping;
                    ComplexTypeMapping complexTypeMapping = CreateComplexTypeMappingForChildMappings(asmaMapping.TargetMapping.Children, asmaMapping.TargetMapping.ComplexTypeName, asmaMapping.TargetMapping.SourceElementName);
                    asmaMapping.TargetMapping = complexTypeMapping;
                }
            }

            foreach (KeyValuePair <string, List <ComplexTypeMapping> > pair in complexTypeMappings)
            {
                foreach (ComplexTypeMapping complexTypeMapping in pair.Value)
                {
                    complexTypeMapping.RemoveInvalidAsmaMappings();
                }
            }


            // The following lines of code were used for the CEC 2010 paper evaluation.

            //Console.Out.WriteLine("Kennzahl 3 (implizite Mappings): haendisch");
            //Console.Out.WriteLine("Kennzahl 4 (Anzahl der gemappten Elemente)): " + (elementMappings.Count + simpleTypeMappings.Count + complexTypeMappings.Count));

            //Console.Out.WriteLine("Importer Kennzahl 3a (anhand elementMapping variable): " + elementMappings.Count);
            //Console.Out.WriteLine("Importer Kennzahl 3b (anhand simpleTypeMappings): " + simpleTypeMappings.Count);
            //Console.Out.WriteLine("Importer Kennzahl 3c (anhand complexTypeMappings): " + complexTypeMappings.Count);
        }
 public ACCResolver(ICcLibrary ccLibrary)
 {
     this.ccLibrary = ccLibrary;
 }
        private static void ImportCCL(string cclVersion)
        {
            var    eaRepository     = new Repository();
            string originalRepoPath = Directory.GetCurrentDirectory() + string.Format(@"\..\..\resources\{0}\Repository-with-CDTs.eap", cclVersion);
            string targetRepoPath   = originalRepoPath.WithoutSuffix(".eap") + "-and-CCs.eap";

            File.Copy(originalRepoPath, targetRepoPath, true);
            eaRepository.OpenFile(targetRepoPath);
            ICctsRepository cctsRepository = CctsRepositoryFactory.CreateCctsRepository(eaRepository);
            var             bLibrary       = cctsRepository.GetBLibraryByPath((Path)"Model" / "bLibrary");
            var             cdtLibrary     = bLibrary.GetCdtLibraryByName("CDTLibrary");

            var cdts = new Dictionary <string, ICdt>();

            foreach (ICdt cdt in cdtLibrary.Cdts)
            {
                cdts[cdt.Name] = cdt;
            }

            ICcLibrary ccLibrary = bLibrary.CreateCcLibrary(new CcLibrarySpec
            {
                Name = "CCLibrary",
                VersionIdentifier = cclVersion
            });

            StreamReader reader = File.OpenText(string.Format(@"..\..\resources\{0}\{0}-CCs.txt", cclVersion));
            String       line;
            var          accSpecs  = new List <AccSpec>();
            var          asccSpecs = new Dictionary <string, List <AsccSpecWithAssociatedAccName> >();
            AccSpec      accSpec   = null;

            while ((line = reader.ReadLine()) != null)
            {
                LineNumber++;
                if (LineNumber < 2)
                {
                    continue;
                }

                if (Debug)
                {
                    if (LineNumber > 150)
                    {
                        break;
                    }
                }

                Record record = GetRecord(line);

                switch (record.ElementType)
                {
                case "ACC":
                    CheckACCRecord(record);
                    accSpec = new AccSpec
                    {
                        UniqueIdentifier  = record.UniqueUNAssignedID,
                        Name              = GetACCName(record),
                        Definition        = record.Definition.LimitTo(MaximumTaggedValueLength),
                        BusinessTerms     = ToArray(record.BusinessTerms.LimitTo(MaximumTaggedValueLength)),
                        UsageRules        = ToArray(record.UsageRules.LimitTo(MaximumTaggedValueLength)),
                        VersionIdentifier = record.Version,
                        Bccs              = new List <BccSpec>(),
                        Asccs             = new List <AsccSpec>(),
                    };
                    accSpecs.Add(accSpec);
                    break;

                case "BCC":
                    if (accSpec == null)
                    {
                        throw new Exception("The first record must specify an ACC.");
                    }
                    CheckBCCRecord(record, accSpec.Name);
                    var bccSpec = new BccSpec
                    {
                        UniqueIdentifier    = record.UniqueUNAssignedID,
                        Definition          = record.Definition.LimitTo(MaximumTaggedValueLength),
                        DictionaryEntryName = record.DictionaryEntryName,
                        Name              = QualifiedName(record.PropertyTermQualifiers, record.PropertyTerm),
                        BusinessTerms     = ToArray(record.BusinessTerms.LimitTo(MaximumTaggedValueLength)),
                        UsageRules        = ToArray(record.UsageRules.LimitTo(MaximumTaggedValueLength)),
                        SequencingKey     = record.SequenceNumber,
                        LowerBound        = MapOccurrence(record.OccurrenceMin),
                        UpperBound        = MapOccurrence(record.OccurrenceMax),
                        VersionIdentifier = record.Version,
                        Cdt = FindCDT(record.RepresentationTerm.AsName(), cdts)
                    };
                    if (bccSpec.Cdt == null)
                    {
                        Console.WriteLine("WARNING: Skipping line {0}: CDT not found: <{1}>.", LineNumber, record.RepresentationTerm);
                        continue;
                    }
                    accSpec.Bccs.Add(bccSpec);
                    break;

                case "ASCC":
                    if (accSpec == null)
                    {
                        throw new Exception("The first record must specify an ACC.");
                    }
                    CheckASCCRecord(record, accSpec.Name);
                    var asccSpec = new AsccSpecWithAssociatedAccName
                    {
                        UniqueIdentifier  = record.UniqueUNAssignedID,
                        Definition        = record.Definition.LimitTo(MaximumTaggedValueLength),
                        Name              = QualifiedName(record.PropertyTermQualifiers, record.PropertyTerm),
                        BusinessTerms     = ToArray(record.BusinessTerms.LimitTo(MaximumTaggedValueLength)),
                        UsageRules        = ToArray(record.UsageRules.LimitTo(MaximumTaggedValueLength)),
                        SequencingKey     = record.SequenceNumber,
                        LowerBound        = MapOccurrence(record.OccurrenceMin),
                        UpperBound        = MapOccurrence(record.OccurrenceMax),
                        VersionIdentifier = record.Version,
                        AssociatedAccName = record.AssociatedObjectClass.AsName(),
                    };
                    asccSpecs.GetAndCreate(accSpec.Name).Add(asccSpec);
                    break;

                default:
                    Console.WriteLine("WARNING: Skipping line {0}.", LineNumber);
                    break;
                }
            }
            reader.Close();

            try
            {
                ACCImporter.ImportACCs(ccLibrary, accSpecs, asccSpecs);
            }
            finally
            {
                eaRepository.CloseFile();
            }
            Console.WriteLine("INFO: Number of ACCs: " + accSpecs.Count);
            Console.WriteLine("Press a key to continue...");
            Console.ReadKey();
        }
 public CandidateCcLibrary(ICcLibrary ccLibrary)
 {
     mOriginalCcLibrary = ccLibrary;
     mSelected          = false;
     mCandidateAccs     = null;
 }
 internal CacheItemCcLibrary(ICcLibrary library)
 {
     CcLibrary = library;
 }
 /// <summary>
 /// Removes a CcLibrary from this bLibrary.
 /// <param name="ccLibrary">A CcLibrary.</param>
 /// </summary>
 public void RemoveCcLibrary(ICcLibrary ccLibrary)
 {
     UmlPackage.RemovePackage(((UpccCcLibrary)ccLibrary).UmlPackage);
 }
 /// <summary>
 /// Updates a CCLibrary to match the given <paramref name="specification"/>.
 /// <param name="ccLibrary">A CCLibrary.</param>
 /// <param name="specification">A new specification for the given CCLibrary.</param>
 /// <returns>The updated CCLibrary. Depending on the implementation, this might be the same updated instance or a new instance!</returns>
 /// </summary>
 public ICcLibrary UpdateCcLibrary(ICcLibrary ccLibrary, CcLibrarySpec specification)
 {
     return(new UpccCcLibrary(UmlPackage.UpdatePackage(((UpccCcLibrary)ccLibrary).UmlPackage, CcLibrarySpecConverter.Convert(specification))));
 }