예제 #1
0
        public ConfigurationWindow(ConfigurationWindowSettings configurationWindowSettings)
        {
            InitializeComponent();
            this.ConfigurationWindowSettings = configurationWindowSettings;
            this.lblTitle.Content            = configurationWindowSettings.title;
            this.titleImage.Content          = configurationWindowSettings.titleImage;
            this.DataContext = configurationWindowSettings.configuration;
            this.ConfigurationContent.Content = configurationWindowSettings.configurationControl;
            if (configurationWindowSettings.moduleDescription.Attributes.RequiresConnection)
            {
                ddSelectConnection.DataContext  = configurationWindowSettings.connections;
                ddSelectConnection.SelectedItem = configurationWindowSettings.connections.FirstOrDefault(t => t.ConfigurationId == configurationWindowSettings.configuration.SelectedConnectionConfigurationId);
            }
            else
            {
                ConnectionRowUpperSpacer.Height = new GridLength(0);
                ConnectionRow.Height            = new GridLength(0);
            }

            if (configurationWindowSettings.moduleDescription.Attributes.ModuleType == ModuleType.Transformation && configurationWindowSettings.datastore != null)
            {
                TransformationConfiguration transformationConfiguration = configurationWindowSettings.configuration as TransformationConfiguration;
                TabDataFilter.Visibility = System.Windows.Visibility.Visible;

                List <AttributeImplementation> dataConditionAttributes = AssemblyHelper.LoadAllClassesImplementingSpecificAttribute <DataConditionAttribute>(System.Reflection.Assembly.GetAssembly(typeof(DataConditionAttribute)));
                filterControlPlaceHolder.Content = new FilterControl(transformationConfiguration.DataFilter, configurationWindowSettings.datastore, dataConditionAttributes);
            }
        }
예제 #2
0
        public static ConfigurationWindowSettings Get(DesignerItem designerItem, StepConfigurationBase configuration, ModuleLoader moduleLoader, List <IDatastore> dataStores, IEnumerable <ConnectionConfigurationBase> connections)
        {
            var module = Activator.CreateInstance(designerItem.ModuleDescription.ModuleType) as IModule;

            ConfigurationWindowSettings configurationWindowSettings = new ConfigurationWindowSettings()
            {
                title                 = designerItem.ItemLabel,
                titleImage            = IntegrationTool.SDK.Diagram.IconLoader.GetFromAssembly(designerItem.ModuleDescription.ModuleType.Assembly, "Icon.xml"),
                connections           = connections.Where(t => t.ModuleDescription.Attributes.ConnectionType == designerItem.ModuleDescription.Attributes.ConnectionType),
                moduleDescription     = designerItem.ModuleDescription,
                configuration         = configuration,
                originalConfiguration = ConfigurationSerializer.SerializeObject(configuration, moduleLoader.GetModuleTypeList()),
            };

            if (!dataStores.Any())
            {
                throw new InfoException("No incoming data available. Please connect a datasource first!");
            }

            if (module is IDataMerge)
            {
                if (dataStores.Count != 2)
                {
                    throw new InfoException("Make sure to connect exactly two incoming datasources!");
                }
                configurationWindowSettings.configurationControl = ((IDataMerge)module).RenderConfigurationWindow(configuration, dataStores[0], dataStores[1]);
            }
            else
            {
                configurationWindowSettings.configurationControl = ((IModule)module).RenderConfigurationWindow(configuration, dataStores.First());
                configurationWindowSettings.datastore            = dataStores.First();
            }

            return(configurationWindowSettings);
        }