Ejemplo n.º 1
0
        /// <summary>
        /// Creates a panel with a grid containing the business object
        /// information
        /// </summary>
        /// <param name="formGrid">The grid to fill</param>
        /// <returns>Returns the object containing the panel</returns>
        private PanelFactoryInfo CreatePanelWithGrid(IUIFormGrid formGrid)
        {
            IEditableGridControl myGrid = _controlFactory.CreateEditableGridControl();

            BusinessObject  bo              = _currentBusinessObject;
            ClassDef        classDef        = bo.ClassDef;
            DataSetProvider dataSetProvider = myGrid.Grid.DataSetProvider as DataSetProvider;

            if (dataSetProvider != null)
            {
                dataSetProvider.ObjectInitialiser =
                    new RelationshipObjectInitialiser(bo, (RelationshipDef)classDef.GetRelationship(formGrid.RelationshipName),
                                                      formGrid.CorrespondingRelationshipName);
            }
            IBusinessObjectCollection collection =
                bo.Relationships.GetRelatedCollection(formGrid.RelationshipName);

            myGrid.SetBusinessObjectCollection(collection);

            myGrid.Dock = DockStyle.Fill;
            IPanel panel = _controlFactory.CreatePanel(formGrid.RelationshipName, _controlFactory);

            panel.Controls.Add(myGrid);

            PanelFactoryInfo panelFactoryInfo = new PanelFactoryInfo(panel);

            panelFactoryInfo.FormGrids.Add(formGrid.RelationshipName, myGrid);
            return(panelFactoryInfo);
        }
Ejemplo n.º 2
0
        public static T Invoke <T>(ApplicationSchemaDefinition schema, string stringToCheck, params object[] parameters)
        {
            if (stringToCheck.StartsWith("@"))
            {
                stringToCheck = stringToCheck.Substring(1);
            }

            if (stringToCheck.Contains("."))
            {
                //generic simple injector call
                var strings     = stringToCheck.Split('.');
                var serviceName = strings[0];
                var methodName  = strings[1];
                var ob          = SimpleInjectorGenericFactory.Instance.GetObject <object>(serviceName);
                if (ob != null)
                {
                    return((T)ReflectionUtil.Invoke(ob, methodName, parameters));
                }
                //shouldn´t happen as theoretically method should have been checked by existence before
                return(default(T));
            }
            //if no service is defined, applying dataset implementation
            var dataSet = DataSetProvider.GetInstance().LookupDataSet(schema.ApplicationName, schema.SchemaId);

            return((T)ReflectionUtil.Invoke(dataSet, stringToCheck, parameters));
        }
Ejemplo n.º 3
0
 private HapagImacDataSet GetImacDataSet()
 {
     if (_imacDataSet == null)
     {
         _imacDataSet = (HapagImacDataSet)DataSetProvider.GetInstance().LookupAsBaseDataSet("imac");
     }
     return(_imacDataSet);
 }
Ejemplo n.º 4
0
        public IEnumerable <IAssociationOption> ResolveOptions(ApplicationMetadata applicationMetadata,
                                                               AttributeHolder originalEntity, ApplicationAssociationDefinition association, SearchRequestDto associationFilter)
        {
            if (!FullSatisfied(association, originalEntity))
            {
                return(null);
            }

            // Set dependante lookup atributes
            var lookupAttributes = association.LookupAttributes();

            foreach (var lookupAttribute in lookupAttributes)
            {
                var searchValue = SearchUtils.GetSearchValue(lookupAttribute, originalEntity);
                if (!String.IsNullOrEmpty(searchValue))
                {
                    associationFilter.AppendSearchParam(lookupAttribute.To);
                    associationFilter.AppendSearchValue(searchValue);
                }
                else if (lookupAttribute.Query != null)
                {
                    associationFilter.AppendWhereClause(lookupAttribute.GetQueryReplacingMarkers(association.EntityAssociation.To));
                }
            }

            // Set projections and pre filter functions
            var numberOfLabels        = BuildProjections(associationFilter, association);
            var prefilterFunctionName = association.Schema.DataProvider.PreFilterFunctionName;

            if (prefilterFunctionName != null)
            {
                var preFilterParam = new AssociationPreFilterFunctionParameters(applicationMetadata, associationFilter, association, originalEntity);
                associationFilter = PrefilterInvoker.ApplyPreFilterFunction(DataSetProvider.GetInstance().LookupDataSet(applicationMetadata.Name), preFilterParam, prefilterFunctionName);
            }

            var entityMetadata = MetadataProvider.Entity(association.EntityAssociation.To);

            associationFilter.QueryAlias = association.AssociationKey;
            var queryResponse = EntityRepository.Get(entityMetadata, associationFilter);

            if (associationFilter is PaginatedSearchRequestDto)
            {
                var paginatedFilter = (PaginatedSearchRequestDto)associationFilter;
                if (paginatedFilter.NeedsCountUpdate)
                {
                    paginatedFilter.TotalCount = EntityRepository.Count(entityMetadata, associationFilter);
                }
            }

            var    options            = BuildOptions(queryResponse, association, numberOfLabels);
            string filterFunctionName = association.Schema.DataProvider.PostFilterFunctionName;

            return(filterFunctionName != null?ApplyFilters(applicationMetadata.Name, originalEntity, filterFunctionName, options, association) : options);
        }
Ejemplo n.º 5
0
        protected IDataSet FindDataSet(String applicationName, string missingParameter)
        {
            var dataSet = DataSetProvider.GetInstance().LookupDataSet(applicationName);

            if (dataSet == null)
            {
                throw new InvalidOperationException(String.Format(DataSetNotFound, applicationName,
                                                                  missingParameter));
            }
            return(dataSet);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Reads the xlsx file from the given input file path and writes as a CSV file to the given output path
        /// </summary>
        /// <param name="inputFilePath">The complete path to the location of xlsx file which needs to be processed</param>
        /// <param name="OutputFilePath">The complete path to which the output CSV should be written to</param>
        public void Execute(string inputFilePath, string OutputFilePath)
        {
            var dataSet = DataSetProvider.GetDataSet(inputFilePath);

            var skbData = PocoGenerator.GeneratePoco(dataSet, data => new SkbData(data));

            //The Map column values should be in the order we desire ion output file
            ClassMap <SkbData> classMapFun() => new Factory()
            .CreateClassMapBuilder <SkbData>()
            .Map(m => m.UserId).Name("User ID")
            .Map(m => m.Height).Name("Height")
            .Map(m => m.Age).Name("Age")
            .Map(m => m.PrimaryScore).Name("Primary Score")
            .Map(m => m.SecondaryScore).Name("Secondary Score")
            .Build();

            CsvWriter.WriteCsv(skbData, OutputFilePath, classMapFun);
        }
Ejemplo n.º 7
0
        public IGenericResponseResult GetCompositionData(CompositionRequestWrapperDTO dto)
        {
            var user = SecurityFacade.CurrentUser();

            if (null == user)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }
            var application         = dto.Application;
            var request             = dto.Request;
            var applicationMetadata = MetadataProvider.Application(application).ApplyPolicies(request.Key, user, ClientPlatform.Web);

            ContextLookuper.FillContext(request.Key);

            var compositionData = DataSetProvider
                                  .LookupDataSet(application)
                                  .GetCompositionData(applicationMetadata, request, dto.Data);

            return(compositionData);
        }
Ejemplo n.º 8
0
        private void FetchAsync(SlicedEntityMetadata entityMetadata, EntityAssociation collectionAssociation, IDictionary <string, ApplicationCompositionSchema> compositionSchemas, IEnumerable <AttributeHolder> entitiesList,
                                ContextHolder ctx, Dictionary <string, EntityRepository.SearchEntityResult> results, PaginatedSearchRequestDto paginatedSearch)
        {
            Quartz.Util.LogicalThreadContext.SetData("context", ctx);
            var lookupAttributes             = collectionAssociation.Attributes;
            var collectionEntityMetadata     = MetadataProvider.Entity(collectionAssociation.To);
            var targetCollectionAttribute    = EntityUtil.GetRelationshipName(collectionAssociation.Qualifier);
            var applicationCompositionSchema = compositionSchemas[collectionAssociation.Qualifier] as ApplicationCompositionCollectionSchema;

            if (applicationCompositionSchema == null)
            {
                throw ExceptionUtil.InvalidOperation("collection schema {0} not found", collectionAssociation.Qualifier);
            }


            var lookupattributes      = lookupAttributes as EntityAssociationAttribute[] ?? lookupAttributes.ToArray();
            var attributeHolders      = entitiesList as AttributeHolder[] ?? entitiesList.ToArray();
            var matchingResultWrapper = new CollectionMatchingResultWrapper();

            var searchRequestDto = BuildSearchRequestDto(applicationCompositionSchema, lookupattributes, matchingResultWrapper, attributeHolders, collectionEntityMetadata, paginatedSearch);

            searchRequestDto.QueryAlias = collectionAssociation.To;

            var firstAttributeHolder = attributeHolders.First();

            if (applicationCompositionSchema.PrefilterFunction != null)
            {
                var dataSet = DataSetProvider.GetInstance().LookupDataSet(entityMetadata.ApplicationName);
                //we will call the function passing the first entry, altough this method could have been invoked for a list of items (printing)
                //TODO: think about it
                var preFilterParam = new CompositionPreFilterFunctionParameters(entityMetadata.AppSchema, searchRequestDto, firstAttributeHolder, applicationCompositionSchema);
                searchRequestDto = PrefilterInvoker.ApplyPreFilterFunction(dataSet, preFilterParam, applicationCompositionSchema.PrefilterFunction);
            }



            EntityRepository.SearchEntityResult queryResult = null;

            if (paginatedSearch == null)
            {
                //if there´s no pagination needed we can just do one thread-query
                queryResult = EntityRepository.GetAsRawDictionary(collectionEntityMetadata, searchRequestDto);
            }
            else
            {
                var tasks = new Task[2];
                tasks[0] = Task.Factory.NewThread(() => {
                    queryResult = EntityRepository.GetAsRawDictionary(collectionEntityMetadata, searchRequestDto);
                });
                // one thread to count results for paginations
                tasks[1] = Task.Factory.NewThread(() => {
                    paginatedSearch.TotalCount = EntityRepository.Count(collectionEntityMetadata, searchRequestDto);
                });
                Task.WaitAll(tasks);
                // add paginationData to result

                // creating a new pagination data in order to have everything calculated correctly
                queryResult.PaginationData = new PaginatedSearchRequestDto(
                    paginatedSearch.TotalCount,
                    paginatedSearch.PageNumber,
                    paginatedSearch.PageSize,
                    paginatedSearch.SearchValues,
                    paginatedSearch.PaginationOptions
                    );
            }
            // one thread to fetch results

            results.Add(collectionAssociation.Qualifier, queryResult);

            if (attributeHolders.Length == 1)
            {
                //default scenario, we have just one entity here
                firstAttributeHolder.Attributes.Add(targetCollectionAttribute, queryResult.ResultList);
                return;
            }
            MatchResults(queryResult, matchingResultWrapper, targetCollectionAttribute);
        }