protected ManagedProperty GetCurrentObject(object modelHost, ManagedPropertyDefinition definition,
                                                   out ManagedPropertyCollection properties,
                                                   out List <CrawledPropertyInfo> crawledProps)
        {
            if (modelHost is FarmModelHost)
            {
                var context = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default,
                                                          SPSiteSubscriptionIdentifier.Default);
                var searchProxy =
                    context.GetDefaultProxy(typeof(SearchServiceApplicationProxy)) as SearchServiceApplicationProxy;

                var ssai        = searchProxy.GetSearchServiceApplicationInfo();
                var application = SearchService.Service.SearchApplications.GetValue <SearchServiceApplication>(ssai.SearchServiceApplicationId);

                SearchObjectOwner searchOwner = new SearchObjectOwner(SearchObjectLevel.Ssa);

                if (cachedCrawledProps == null)
                {
                    cachedCrawledProps = application.GetAllCrawledProperties(string.Empty, string.Empty, 0, searchOwner);
                }

                crawledProps = cachedCrawledProps;

                var schema = new Schema(application);

                properties = schema.AllManagedProperties;
                return(properties.FirstOrDefault(p => p.Name.ToUpper() == definition.Name.ToUpper()));
            }

            throw new NotImplementedException();
        }
        protected ManagedProperty GetCurrentObject(object modelHost, ManagedPropertyDefinition definition)
        {
            ManagedPropertyCollection  props;
            List <CrawledPropertyInfo> crawledProps;

            return(GetCurrentObject(modelHost, definition, out props, out crawledProps));
        }
Beispiel #3
0
 public static TModelNode AddManagedProperty <TModelNode>(this TModelNode model, ManagedPropertyDefinition definition,
                                                          Action <ManagedPropertyModelNode> action)
     where TModelNode : ModelNode, IManagedPropertyHostModelNode, new()
 {
     return(model.AddTypedDefinitionNode(definition, action));
 }
Beispiel #4
0
 public static TModelNode AddManagedProperty <TModelNode>(this TModelNode model, ManagedPropertyDefinition definition)
     where TModelNode : ModelNode, IManagedPropertyHostModelNode, new()
 {
     return(AddManagedProperty(model, definition, null));
 }
        private void DeployFarmManagedProperty(object modelHost, FarmModelHost farmModelHost, ManagedPropertyDefinition definition)
        {
            farmModelHost.ShouldUpdateHost = false;

            ManagedPropertyCollection  properties;
            List <CrawledPropertyInfo> crawledProps;

            var existingProperty = GetCurrentObject(modelHost, definition, out properties, out crawledProps);

            var isNewMapping = existingProperty == null;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = existingProperty,
                ObjectType       = typeof(ManagedProperty),
                ObjectDefinition = definition,
                ModelHost        = modelHost
            });

            if (existingProperty == null)
            {
                existingProperty = properties.Create(definition.Name, (ManagedDataType)Enum.Parse(typeof(ManagedDataType), definition.ManagedType));
            }

            existingProperty.Description = definition.Description ?? string.Empty;

            if (definition.Searchable.HasValue)
            {
                existingProperty.HasMultipleValues = definition.Searchable.Value;
            }

            if (definition.Queryable.HasValue)
            {
                existingProperty.Queryable = definition.Queryable.Value;
            }

            if (definition.Retrievable.HasValue)
            {
                existingProperty.Retrievable = definition.Retrievable.Value;
            }

            if (definition.HasMultipleValues.HasValue)
            {
                existingProperty.HasMultipleValues = definition.HasMultipleValues.Value;
            }

            if (definition.Refinable.HasValue)
            {
                existingProperty.Refinable = definition.Refinable.Value;
            }

            if (definition.Sortable.HasValue)
            {
                existingProperty.Sortable = definition.Sortable.Value;
            }

            if (definition.SafeForAnonymous.HasValue)
            {
                existingProperty.SafeForAnonymous = definition.SafeForAnonymous.Value;
            }

            if (definition.TokenNormalization.HasValue)
            {
                existingProperty.TokenNormalization = definition.TokenNormalization.Value;
            }


            //if (isNewMapping)
            //{
            var mappings = existingProperty.GetMappings();

            foreach (var managedPropertyMappping in definition.Mappings)
            {
                var crawledProp = crawledProps
                                  .FirstOrDefault(p => p.Name.ToUpper() == managedPropertyMappping.CrawledPropertyName.ToUpper());

                if (crawledProp == null)
                {
                    continue;
                }

                var mapping = new Mapping
                {
                    CrawledPropertyName = crawledProp.Name,
                    ManagedPid          = existingProperty.PID,
                    CrawledPropset      = crawledProp.Propset,
                };

                mappings.Add(mapping);
            }

            existingProperty.SetMappings(mappings);
            //}

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = existingProperty,
                ObjectType       = typeof(ManagedProperty),
                ObjectDefinition = definition,
                ModelHost        = modelHost
            });

            // Write the changes back
            existingProperty.Update();
        }
 private void DeploySiteManagedProperty(object modelHost, SiteModelHost siteModelHost, ManagedPropertyDefinition managedProperty)
 {
     throw new SPMeta2NotImplementedException("Managed property deployment under site is not implemented yet");
 }
 private void DeploySiteManagedProperty(object modelHost, SiteModelHost siteModelHost, ManagedPropertyDefinition managedProperty)
 {
     throw new NotImplementedException();
 }
 public static ModelNode AddManagedProperty(this ModelNode model, ManagedPropertyDefinition definition, Action <ModelNode> action)
 {
     return(model.AddDefinitionNode(definition, action));
 }
 public static ModelNode AddManagedProperty(this ModelNode model, ManagedPropertyDefinition definition)
 {
     return(AddManagedProperty(model, definition, null));
 }