コード例 #1
0
        public IApplicationResponse Get(string application, [FromUri] DataRequestAdapter request)
        {
            var user = SecurityFacade.CurrentUser();

            if (null == user)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }
            RequestUtil.ValidateMockError(Request);

            if (!"solution".EqualsIc(application) && !"ci".EqualsIc(application))
            {
                ValidateHashSecurity(request);
            }


            var applicationMetadata = MetadataProvider
                                      .Application(application)
                                      .ApplyPolicies(request.Key, user, ClientPlatform.Web);

            ContextLookuper.FillContext(request.Key);
            var response = DataSetProvider.LookupAsBaseDataSet(application).Get(applicationMetadata, user, request);

            response.Title = _i18NResolver.I18NSchemaTitle(response.Schema);
            var schemaMode = request.Key.Mode ?? response.Schema.Mode;

            response.Mode = schemaMode.ToString().ToLower();

            return(response);
        }
コード例 #2
0
        public IGenericResponseResult Expand(InMemoryUser user, IDictionary <string, ApplicationCompositionSchema> compositionSchemas, CompositionExpanderHelper.CompositionExpansionOptions options)
        {
            var resultDict = new Dictionary <string, IEnumerable <IDictionary <string, object> > >();
            var result     = CompositionExpanderHelper.ParseDictionary(options.CompositionsToExpand);
            var printMode  = _contextLookuper.LookupContext().PrintMode;

            foreach (var toExpand in result.DetailsToExpand)
            {
                var name = toExpand.Key;
                var compositionSchema = compositionSchemas[name];
                var schema            = compositionSchema.Schemas.Detail;
                if (printMode)
                {
                    schema = compositionSchema.Schemas.Print;
                }
                var applicationMetadata = MetadataProvider.Application(EntityUtil.GetApplicationName(name))
                                          .ApplyPolicies(schema.GetSchemaKey(), user, ClientPlatform.Web);
                var slicedEntityMetadata = MetadataProvider.SlicedEntityMetadata(applicationMetadata);
                var searchDTO            = new SearchRequestDto();
                searchDTO.AppendSearchParam(schema.IdFieldName);
                searchDTO.AppendSearchValue(toExpand.Value);
                var compositionExpanded = _entityRepository.GetAsRawDictionary(slicedEntityMetadata, searchDTO);
                resultDict.Add(name, compositionExpanded.ResultList);
            }

            return(new GenericResponseResult <Dictionary <string, IEnumerable <IDictionary <string, object> > > >(resultDict));
        }
コード例 #3
0
        public Tuple <Byte[], string> DownloadViaParentWS(string id, string parentId, string parentApplication, string parentSchemaId)
        {
            // Get the parent entity executing a FindById operation in the respective WS
            var user = SecurityFacade.CurrentUser();
            var applicationMetadata = MetadataProvider
                                      .Application(parentApplication)
                                      .ApplyPolicies(new ApplicationMetadataSchemaKey(parentSchemaId), user, ClientPlatform.Web);
            var response = _dataSetProvider.LookupAsBaseDataSet(parentApplication).Execute(applicationMetadata, new JObject(), parentId, OperationConstants.CRUD_FIND_BY_ID);

            var parent = response.ResultObject;

            if (parent != null)
            {
                var attachments = r.GetProperty(parent, "DOCLINKS") as IEnumerable;
                foreach (var attachment in attachments)
                {
                    var attachmentId = w.GetRealValue(attachment, "DOCINFOID").ToString();
                    if (id.Equals(attachmentId))
                    {
                        var fileBytes = w.GetRealValue(attachment, "DOCUMENTDATA") as byte[];
                        var fileName  = BuildFileName(w.GetRealValue(attachment, "URLNAME") as String);

                        return(Tuple.Create(fileBytes, fileName));
                    }
                }
            }

            return(null);
        }
コード例 #4
0
        private ApplicationMetadata DetermineSchemaFromAsset(Entity initialValues)
        {
            var assetclassstructure = (string)initialValues.GetAttribute("classstructureid");
            var typeofimac          = (string)initialValues.GetAttribute("typeofimac");
            var completeApplication = MetadataProvider.Application("imac");

            if (typeofimac.EqualsAny("add", "update", "move"))
            {
                //these doesn´t have subtypes
                return(completeApplication.ApplyPoliciesWeb(new ApplicationMetadataSchemaKey(typeofimac)));
            }

            if (IsPrinterAsset(assetclassstructure))
            {
                //installlan , replacelan or removelan
                return(completeApplication.ApplyPoliciesWeb(new ApplicationMetadataSchemaKey(typeofimac + "lan")));
            }
            if (IsStdAsset(assetclassstructure))
            {
                return(completeApplication.ApplyPoliciesWeb(new ApplicationMetadataSchemaKey(typeofimac + "std")));
            }

            return(completeApplication.ApplyPoliciesWeb(new ApplicationMetadataSchemaKey(typeofimac + "other")));

            //installstd , replacestd or removestd
        }
コード例 #5
0
        private static GenericResponseResult <IList <DashboardDefinition> > DoGetFromList(List <DashboardDefinition> dashboardDefinitionList)
        {
            InMemoryUser user          = SecurityFacade.CurrentUser();
            var          dataObjectSet = new BaseApplicationDataSet();

            DashboardModuleHandler(dashboardDefinitionList);

            foreach (var definition in dashboardDefinitionList)
            {
                var key = new ApplicationMetadataSchemaKey(definition.SchemaId, definition.Mode, ClientPlatform.Web);
                var searchRequestDto = new SearchRequestDto {
                    SearchParams = definition.SearchParams,
                    SearchValues = definition.SearchValues,
                    Context      = new ApplicationLookupContext {
                        MetadataId = definition.Id
                    }
                };
                var applicationMetadata = MetadataProvider.Application(definition.ApplicationName)
                                          .ApplyPolicies(key, user, ClientPlatform.Web);

                definition.TotalCount = dataObjectSet.GetCount(applicationMetadata, searchRequestDto);
            }
            return(new GenericResponseResult <IList <DashboardDefinition> >(dashboardDefinitionList, null)
            {
                Title = new I18NResolver().I18NValue("_headermenu.serviceit", "ServiceIT")
            });
        }
コード例 #6
0
        public void TestSchemaTitle()
        {
            ApplicationConfiguration.TestclientName = "hapag";
            MetadataProvider.StubReset();
            var catalogs = _resolver.FetchCatalogs();
            var schemas  = MetadataProvider.Application("servicerequest").Schemas();
            var schema   = schemas[new ApplicationMetadataSchemaKey("list", "input", "web")];
            var value    = _resolver.DoGetI18NSchemaTitle(schema, "de");

            Assert.AreEqual("Service Request Tabelle", value);

            var missingSchema = new ApplicationSchemaDefinition {
                SchemaId        = "fake",
                ApplicationName = "fake",
                Title           = "fake"
            };

            value = _resolver.DoGetI18NSchemaTitle(missingSchema, "de");
            Assert.AreEqual("fake", value);


            missingSchema = new ApplicationSchemaDefinition {
                ApplicationName = "servicerequest",
                SchemaId        = "fake",
                Title           = "fake"
            };
            value = _resolver.DoGetI18NSchemaTitle(missingSchema, "de");
            Assert.AreEqual("fake", value);

            ApplicationConfiguration.TestclientName = "fake";
            _resolver.ClearCache();
            value = _resolver.DoGetI18NSchemaTitle(schema, "de");
            Assert.AreEqual(schema.Title, value);
        }
コード例 #7
0
        public static ApplicationAssociationDefinition GetInstance([NotNull] string @from, ApplicationAssociationDefinition.LabelData labelData, string target, string qualifier, ApplicationAssociationSchemaDefinition applicationAssociationSchema,
                                                                   string showExpression, string toolTip, string required, ISet <ApplicationEvent> events, string defaultValue, string extraProjectionFields = null, string isEnabled = "true")
        {
            var association = new ApplicationAssociationDefinition(from, labelData, target, qualifier, applicationAssociationSchema, showExpression,
                                                                   toolTip, required, defaultValue, isEnabled, events);
            var labelField = labelData.LabelField;

            association.LabelFields   = ParseLabelFields(labelField);
            association.ApplicationTo = ParseApplicationTo(labelField);
            if (extraProjectionFields != null)
            {
                BuildExtraProjectionFields(association, extraProjectionFields);
            }
            association.SetLazyResolver(new Lazy <EntityAssociation>(
                                            () => {
                var appMetadata  = MetadataProvider.Application(association.From);
                var indexOf      = labelField.IndexOf(".", StringComparison.Ordinal);
                var firstPart    = labelField.Substring(0, indexOf);
                var lookupString = firstPart.EndsWith("_") ? firstPart : firstPart + "_";
                if (Char.IsNumber(lookupString[0]))
                {
                    lookupString = lookupString.Substring(1);
                }
                var entityAssociations = MetadataProvider.Entity(appMetadata.Entity).Associations;
                return(entityAssociations.FirstOrDefault(a => a.Qualifier == lookupString));
            }));
            return(association);
        }
コード例 #8
0
        public void TestAddWorkLogToIncident()
        {
            ApplicationConfiguration.TestclientName = "hapag";
            MetadataProvider.StubReset();

            var imac = MetadataProvider.Entity("imac");

            var metadata    = MetadataProvider.Entity("incident");
            var completeApp = MetadataProvider.Application("incident");

            var sliced           = MetadataProvider.SlicedEntityMetadata(completeApp.ApplyPolicies(new ApplicationMetadataSchemaKey("detail"), InMemoryUser.TestInstance("test"), ClientPlatform.Web));
            var attributes       = sliced.Attributes(EntityMetadata.AttributesMode.NoCollections);
            var entityAttributes = attributes as EntityAttribute[] ?? attributes.ToArray();

            Assert.IsNull(entityAttributes.FirstOrDefault(a => a.Name == "asset_.eq23"));
            Assert.IsNotNull(entityAttributes.FirstOrDefault(a => a.Name == "asset_.description"));
            var incident = JObject.Parse(new StreamReader("jsons\\incident\\test1.json").ReadToEnd());
            var entity   = EntityBuilder.BuildFromJson <Entity>(typeof(Entity), metadata, null, incident, null);

            Assert.IsNull(entity.GetAttribute("wonum"));

            var solution = entity.GetRelationship("solution") as Entity;

            Assert.IsNotNull(solution);
            var cause = solution.GetRelationship("cause") as Entity;

            Assert.IsNotNull(cause);
            Assert.IsNull(cause.GetAttribute("ldtext"));

            var symptom = solution.GetRelationship("symptom") as Entity;

            Assert.IsNotNull(symptom);
            Assert.IsNotNull(symptom.GetAttribute("ldtext"));
        }
コード例 #9
0
        public SynchronizationResultDto SyncData(SynchronizationRequestDto synchronizationRequest)
        {
            //TODO> the method should return only the fields
            //specified in the metadata, and not all entities
            //attributes.

            var user = SecurityFacade.CurrentUser();

            if (null == user)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }
            var syncResult = new SynchronizationResultDto();

            foreach (var application in synchronizationRequest.Applications)
            {
                var applicationMetadata = MetadataProvider
                                          .Application(application.appName)
                                          .ApplyPolicies(ApplicationMetadataSchemaKey.GetSyncInstance(), user, ClientPlatform.Mobile);
                var syncAppData = _dataSetProvider.LookupAsBaseDataSet(application.appName)
                                  .Sync(applicationMetadata, application);
                if (!application.FetchMetadata)
                {
                    //used to reduce the amount of data sent
                    syncAppData.Metadata = null;
                }
                syncResult.SynchronizationData.Add(syncAppData);
            }
            return(syncResult);
        }
コード例 #10
0
        public IApplicationResponse Search(string application, string searchFields, string searchText, string schema = "list")
        {
            var user    = SecurityFacade.CurrentUser();
            var app     = MetadataProvider.Application(application);
            var schemas = app.Schemas();
            var key     = new ApplicationMetadataSchemaKey(schema, SchemaMode.input, ClientPlatform.Web);
            ApplicationSchemaDefinition appSchema;

            if (!schemas.TryGetValue(key, out appSchema))
            {
                throw new InvalidOperationException("schema not found");
            }

            var searchRequestDto = PaginatedSearchRequestDto.DefaultInstance(appSchema);

            searchRequestDto.SetFromSearchString(appSchema, searchFields.Split(','), searchText);

            var dataResponse = Get(application, new DataRequestAdapter()
            {
                Key = key, SearchDTO = searchRequestDto
            });

            //fixing the filter parameters used so that it is applied on next queries
            ((ApplicationListResult)dataResponse).PageResultDto.BuildFixedWhereClause(searchRequestDto, app.Entity);
            dataResponse.Title = appSchema.Title;
            dataResponse.Mode  = SchemaMode.input.ToString().ToLower();
            return(dataResponse);
            //            return View("Index", new ApplicationModel(application, "list", SchemaMode.input.ToString().ToLower(), appSchema.Title, dataResponse));
        }
コード例 #11
0
        public void TestAddFk()
        {
            var appl   = MetadataProvider.Application("attachment");
            var schema = appl.Schema(new ApplicationMetadataSchemaKey("list", SchemaMode.input, ClientPlatform.Mobile));

            Assert.IsNotNull(schema);
            var ownerIdField = schema.Fields.FirstOrDefault(f => f.Attribute == "ownerid");

            Assert.IsNotNull(ownerIdField);
            Assert.IsTrue(ownerIdField.IsHidden);

            var ownerTableField = schema.Fields.FirstOrDefault(f => f.Attribute == "ownertable");

            Assert.IsNotNull(ownerTableField);
            Assert.IsTrue(ownerTableField.IsHidden);

            schema = appl.Schema(new ApplicationMetadataSchemaKey(ApplicationMetadataConstants.SyncSchema, SchemaMode.input, ClientPlatform.Mobile));
            Assert.IsNotNull(schema);
            ownerIdField = schema.Fields.FirstOrDefault(f => f.Attribute == "ownerid");
            Assert.IsNotNull(ownerIdField);
            Assert.IsTrue(ownerIdField.IsHidden);

            ownerTableField = schema.Fields.FirstOrDefault(f => f.Attribute == "ownertable");
            Assert.IsNotNull(ownerTableField);
            Assert.IsTrue(ownerTableField.IsHidden);
        }
コード例 #12
0
        public SchemaChoosingDataResponse ListSchemas(string application, string title, string label, string placeholder, [FromUri] ListSchemaFilter filter)
        {
            var resultingSchemas = new List <ApplicationSchemaDefinition>();
            var schemas          = MetadataProvider.Application(application).Schemas();

            foreach (var schema in schemas)
            {
                var matchesMode       = schema.Key.Mode == null || (schema.Key.Mode == filter.Mode);
                var matchesStereotype = filter.Stereotype == null || filter.Stereotype == schema.Value.Stereotype;
                var matchesName       = filter.NamePattern == null || schema.Key.SchemaId.StartsWith(filter.NamePattern);
                if (matchesMode && matchesStereotype && matchesName)
                {
                    if (!schema.Value.Abstract)
                    {
                        resultingSchemas.Add(schema.Value);
                    }
                    else
                    {
                        var fixedTitle = schema.Value.GetProperty(ApplicationSchemaPropertiesCatalog.WindowPopupHeaderTitle);
                        if (fixedTitle != null)
                        {
                            title = fixedTitle;
                        }
                    }
                }
            }


            return(new SchemaChoosingDataResponse(resultingSchemas, label, placeholder)
            {
                Title = title
            });
        }
コード例 #13
0
        public static void Init(TestContext testContext)
        {
            ApplicationConfiguration.TestclientName = "hapag";
            MetadataProvider.StubReset();
            var schemas = MetadataProvider.Application("asset").Schemas();

            _schema = schemas[new ApplicationMetadataSchemaKey("detail", "output", "web")];
        }
コード例 #14
0
        public static void Init(TestContext testContext)
        {
            ApplicationConfiguration.TestclientName = "otb";
            MetadataProvider.StubReset();
            var schemas = MetadataProvider.Application("invbalances").Schemas();

            _schema = schemas[new ApplicationMetadataSchemaKey("list", "input", "web")];
        }
コード例 #15
0
        public void TestAssetListReportBug()
        {
            var schemas = MetadataProvider.Application("asset").Schemas();
            var schema  = schemas[new ApplicationMetadataSchemaKey("assetlistreport", null, "web")];
            var sliced  = SlicedEntityMetadataBuilder.GetInstance(MetadataProvider.Entity("asset"), schema);
            var select  = QuerySelectBuilder.BuildSelectAttributesClause(sliced, QueryCacheKey.QueryMode.List);

            Debug.Write(select);
            Assert.IsTrue(select.Contains("CASE WHEN LOCATE('@',aucisowner_.PERSONID) > 0 THEN SUBSTR(aucisowner_.PERSONID,1,LOCATE('@',aucisowner_.PERSONID)-1) ELSE aucisowner_.PERSONID END as \"aucisowner_.hlagdisplayname\""));
        }
コード例 #16
0
        public void TestSelect3()
        {
            var schemas = MetadataProvider.Application("change").Schemas();
            var schema  = schemas[new ApplicationMetadataSchemaKey("detail", null, "web")];
            var sliced  = SlicedEntityMetadataBuilder.GetInstance(MetadataProvider.Entity("wochange"), schema);
            var select  = QuerySelectBuilder.BuildSelectAttributesClause(sliced, QueryCacheKey.QueryMode.Detail);

            Debug.Write(select);
            Assert.IsFalse(select.Contains("sr_asset_.installdate"));
            Assert.IsTrue(select.Contains("sr_asset_.serialnum"));
        }
コード例 #17
0
        public static void Init(TestContext testContext)
        {
            ApplicationConfiguration.TestclientName = "hapag";
            MetadataProvider.StubReset();
            var schemas = MetadataProvider.Application("servicerequest").Schemas();

            _schema = schemas[new ApplicationMetadataSchemaKey("list", "input", "web")];
            var asset = MetadataProvider.Application("asset").Schemas();

            _assetSchema = asset[new ApplicationMetadataSchemaKey("list", "input", "web")];
        }
コード例 #18
0
        private static SlicedEntityMetadata GetUnionInstance(string unionSchema)
        {
            var appAndSchema = SchemaUtil.ParseApplicationAndKey(unionSchema);
            var appName      = appAndSchema.Item1;
            var app          = MetadataProvider.Application(appName);
            var entityName   = app.Entity;
            var entity       = MetadataProvider.Entity(entityName);
            var schema       = app.Schema(appAndSchema.Item2);

            return(GetInstance(entity, schema, 300, true));
        }
コード例 #19
0
 private static void Validate(string applicationName)
 {
     try {
         MetadataProvider.Application(applicationName);
     } catch (Exception) {
         try {
             MetadataProvider.Entity(applicationName);
         } catch (Exception) {
             throw new InvalidOperationException(String.Format(AppNotFoundEx, applicationName));
         }
     }
 }
コード例 #20
0
        public void ChangeSRUnionSearch()
        {
            var dto         = new SearchRequestDto();
            var completeOne = MetadataProvider.Application("srforchange");
            var metadata    = completeOne.ApplyPolicies(new ApplicationMetadataSchemaKey("changeunionschema"), InMemoryUser.TestInstance(),
                                                        ClientPlatform.Web);
            ApplicationSchemaDefinition schema;
            var sliced = SlicedEntityMetadataBuilder.GetInstance(MetadataProvider.Entity("srforchange"), metadata.Schema);
            var result = QueryFromBuilder.Build(sliced, dto);

            Assert.AreEqual("from SR as srforchange left join asset as asset_ on (srforchange.assetnum = asset_.assetnum and srforchange.siteid = asset_.siteid)", result);
        }
コード例 #21
0
        public void TestSelectNullAttributes()
        {
            var schemas = MetadataProvider.Application("srforchange").Schemas();
            var schema  = schemas[new ApplicationMetadataSchemaKey("changeunionschema", null, "web")];
            var sliced  = SlicedEntityMetadataBuilder.GetInstance(MetadataProvider.Entity("srforchange"), schema, 300, true);

            Assert.AreEqual(15, sliced.Attributes(EntityMetadata.AttributesMode.NoCollections).Count());
            var select = QuerySelectBuilder.BuildSelectAttributesClause(sliced, QueryCacheKey.QueryMode.List);

            Debug.Write(select);
            Assert.IsTrue(select.Contains("null"));
        }
コード例 #22
0
        public IGenericResponseResult ExpandCompositions(String application, [FromUri] DetailRequest detailRequest,
                                                         [FromUri] CompositionExpanderHelper.CompositionExpansionOptions options)
        {
            var user = SecurityFacade.CurrentUser();
            var applicationMetadata = MetadataProvider
                                      .Application(application)
                                      .ApplyPolicies(detailRequest.Key, user, ClientPlatform.Web);
            //            var result = (ApplicationDetailResult)DataSetProvider.LookupAsBaseDataSet(application).Get(applicationMetadata, user, detailRequest);
            var compositionSchemas = CompositionBuilder.InitializeCompositionSchemas(applicationMetadata.Schema);

            return(COMPOSITIONExpander.Expand(SecurityFacade.CurrentUser(), compositionSchemas, options));
        }
コード例 #23
0
        public void TestAddWorkLogToIncident()
        {
            ApplicationConfiguration.TestclientName = "gric";
            MetadataProvider.StubReset();

            var metadata    = MetadataProvider.Entity("SR");
            var completeApp = MetadataProvider.Application("servicerequest");
            var sliced      = MetadataProvider.SlicedEntityMetadata(completeApp.ApplyPolicies(
                                                                        new ApplicationMetadataSchemaKey("editdetail"), InMemoryUser.TestInstance("test"), ClientPlatform.Web));
            var attributes = sliced.NonListAssociations();

            Assert.IsTrue(attributes.Count(a => a.Qualifier == "asset_") == 1);
        }
コード例 #24
0
        private IApplicationResponse DoExecute(string application, JObject json, string id, string operation,
                                               ApplicationMetadataSchemaKey currentschemaKey, bool mockMaximo, ApplicationMetadataSchemaKey nextSchemaKey, ClientPlatform platform)
        {
            MockingUtils.EvalMockingErrorModeActive(json, Request);
            var user = SecurityFacade.CurrentUser();

            if (null == user)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }

            if (Log.IsDebugEnabled)
            {
                Log.Debug(json.ToString(Newtonsoft.Json.Formatting.Indented, new StringEnumConverter()));
            }
            var applicationMetadata = MetadataProvider
                                      .Application(application)
                                      .ApplyPolicies(currentschemaKey, user, platform);

            ContextLookuper.SetInternalQueryExecution();

            var maximoResult = new MaximoResult(id, null);

            if (!mockMaximo)
            {
                maximoResult = DataSetProvider.LookupAsBaseDataSet(application)
                               .Execute(applicationMetadata, json, id, operation);
            }
            if (currentschemaKey.Platform == ClientPlatform.Mobile)
            {
                //mobile requests doesn´t have to handle success messages or redirections
                return(null);
            }
            if (nextSchemaKey == null)
            {
                //keep on same schema unless explicetely told otherwise
                nextSchemaKey = currentschemaKey;
            }

            if (nextSchemaKey != null)
            {
                var response = _nextSchemaRouter.RedirectToNextSchema(applicationMetadata, operation,
                                                                      maximoResult.Id, platform, currentschemaKey, nextSchemaKey, mockMaximo);
                response.SuccessMessage = _successMessageHandler.FillSucessMessage(applicationMetadata, maximoResult.Id, operation);
                return(response);
            }
            return(new BlankApplicationResponse()
            {
                SuccessMessage = _successMessageHandler.FillSucessMessage(applicationMetadata, maximoResult.Id, operation)
            });
        }
コード例 #25
0
        private ApplicationMetadata DetermineSchemaFromAsset(Entity initialValues)
        {
            var assetclassstructure = (string)initialValues.GetAttribute("classstructureid");
            var completeApplication = MetadataProvider.Application("servicerequest");

            if (AssetConstants.PhoneClassStructure.Equals(assetclassstructure))
            {
                return(completeApplication.ApplyPoliciesWeb(new ApplicationMetadataSchemaKey("phone")));
            }
            if (IsPrinterAsset(assetclassstructure))
            {
                return(completeApplication.ApplyPoliciesWeb(new ApplicationMetadataSchemaKey("printer")));
            }
            return(completeApplication.ApplyPoliciesWeb(new ApplicationMetadataSchemaKey("general")));
        }
コード例 #26
0
        private IApplicationResponse Get(string application, [FromUri] DataRequestAdapter request)
        {
            var user = SecurityFacade.CurrentUser();

            if (null == user)
            {
                throw new HttpResponseException(HttpStatusCode.Unauthorized);
            }

            var applicationMetadata = MetadataProvider
                                      .Application(application)
                                      .ApplyPolicies(request.Key, user, ClientPlatform.Web);

            return(((BaseApplicationDataSet)_dataSetProvider.LookupDataSet(application)).Get(applicationMetadata, user, request));
        }
コード例 #27
0
        public void TestSelect4()
        {
            var schemas = MetadataProvider.Application("imac").Schemas();
            var schema  = schemas[new ApplicationMetadataSchemaKey("detail", "output", "web")];
            var sliced  = SlicedEntityMetadataBuilder.GetInstance(MetadataProvider.Entity("imac"), schema);
            var select  = QuerySelectBuilder.BuildSelectAttributesClause(sliced, QueryCacheKey.QueryMode.Detail);

            Debug.Write(select);
            Assert.IsFalse(select.Contains("case when imac.serialnum"));
            Assert.IsTrue(select.Contains("case when asset_.serialnum"));
            var from = QueryFromBuilder.Build(sliced, null);

//            Debug.Write(from);
            Assert.IsTrue(from.Contains("left join person as asset_aucisowner_person_ on (asset_aucisowner_.personid = asset_aucisowner_person_.personid)"));
        }
コード例 #28
0
        public void ChangeSRUnionSearch()
        {
            var dto = new SearchRequestDto();

            dto.BuildUnionDTO(dto, MetadataProvider.FindSchemaDefinition("change.list"));

            var completeOne = MetadataProvider.Application("change");
            var metadata    = completeOne.ApplyPolicies(new ApplicationMetadataSchemaKey("list"), InMemoryUser.TestInstance(),
                                                        ClientPlatform.Web);
            ApplicationSchemaDefinition schema;
            var sliced = SlicedEntityMetadataBuilder.GetInstance(MetadataProvider.Entity("wochange"), metadata.Schema, 300);
            var result = QuerySelectBuilder.BuildSelectAttributesClause(sliced.UnionSchema, QueryCacheKey.QueryMode.Union, dto.unionDTO);

            Assert.AreEqual("select null, null, null, null, '-666' as zeroedattr, srforchange.description as hlagchangesummary, srforchange.ticketid as ticketid, asset_.description as asset_description, null, null, CASE WHEN srforchange.PLUSPCUSTOMER IS NOT NULL AND srforchange.PLUSPCUSTOMER = 'HLC-00' then 'HLAG'  WHEN srforchange.PLUSPCUSTOMER IS NOT NULL AND LENGTH(srforchange.PLUSPCUSTOMER) >= 3 THEN SUBSTR(srforchange.PLUSPCUSTOMER, LENGTH(srforchange.PLUSPCUSTOMER) - 2, 3) ELSE '' END as hlagpluspcustomer, CASE WHEN LOCATE('@',srforchange.REPORTEDBY) > 0 THEN SUBSTR(srforchange.REPORTEDBY,1,LOCATE('@',srforchange.REPORTEDBY)-1) ELSE srforchange.REPORTEDBY END as hlagreportedby, srforchange.status as status ", result);
        }
コード例 #29
0
        public void IncidentHardwareReport()
        {
            var dto = new SearchRequestDto();

            dto.AppendProjectionField(ProjectionField.Default("asset_assetloccomm_commoditiesownedby_.description"));
            dto.AppendProjectionField(ProjectionField.Default("asset_assetloccomm_.commodity"));

            var completeOne = MetadataProvider.Application("incident");
            var metadata    = completeOne.ApplyPolicies(new ApplicationMetadataSchemaKey("hardwarerepair"), InMemoryUser.TestInstance(),
                                                        ClientPlatform.Web);
            ApplicationSchemaDefinition schema;
            var sliced = SlicedEntityMetadataBuilder.GetInstance(MetadataProvider.Entity("incident"), metadata.Schema);
            var result = QueryFromBuilder.Build(sliced, dto);

            Assert.AreEqual("from incident as incident left join asset as asset_ on (incident.assetnum = asset_.assetnum and incident.siteid = asset_.siteid)left join assetloccomm as asset_assetloccomm_ on (asset_.assetnum = asset_assetloccomm_.assetnum and asset_.siteid = asset_assetloccomm_.siteid)left join commodities as asset_assetloccomm_commoditiesownedby_ on (asset_assetloccomm_.commodity = asset_assetloccomm_commoditiesownedby_.commodity and asset_assetloccomm_.itemsetid = asset_assetloccomm_commoditiesownedby_.itemsetid and (asset_assetloccomm_commoditiesownedby_.description like 'Asset owened by%'))", result);
        }
コード例 #30
0
        public static ApplicationMetadata GetAssociationApplicationMetadata(ApplicationAssociationDefinition association)
        {
            // See if association has a schema defined
            string optionApplication;
            string optionSchemaId;

            association.Schema.RendererParameters.TryGetValue("application", out optionApplication);
            association.Schema.RendererParameters.TryGetValue("schemaId", out optionSchemaId);

            if (!String.IsNullOrWhiteSpace(optionApplication) && !String.IsNullOrWhiteSpace(optionSchemaId))
            {
                return(MetadataProvider
                       .Application(optionApplication)
                       .ApplyPolicies(new ApplicationMetadataSchemaKey(optionSchemaId), SecurityFacade.CurrentUser(), ClientPlatform.Web));
            }
            return(null);
        }