コード例 #1
0
        public override Dialog OnCreateDialog(Android.OS.Bundle savedInstanceState)
        {
            LayoutInflater inflater = Activity.LayoutInflater;

            if (null != savedInstanceState)
            {
                _searchableItem = (ISearchableItem <SimpleSelectorItem>)savedInstanceState.GetSerializable("item");
            }
            // Change End

            View rootView = inflater.Inflate(Resource.Layout.SearchableDialog, null);

            SetData(rootView);

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(Activity);
            alertDialog.SetView(rootView);

            string strPositiveButton = _strPositiveButtonText == null ? "CLOSE" : _strPositiveButtonText;

            alertDialog.SetPositiveButton(_strPositiveButtonText, (sender, e) => { });

            string strTitle = _strTitle == null ? "Select Item" : _strTitle;

            alertDialog.SetTitle(strTitle);

            AlertDialog dialog = alertDialog.Create();

            dialog.Window.SetSoftInputMode(SoftInput.StateHidden);
            return(dialog);
        }
コード例 #2
0
ファイル: SolrSearch.cs プロジェクト: smithydll/boxsocial
        public override bool DeleteFromIndex(ISearchableItem item)
        {
            Initialise();

            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);

            using (JsonTextWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.Indented;

                writer.WriteStartObject();
                writer.WritePropertyName("delete");
                writer.WriteStartObject();

                writer.WritePropertyName("id");
                writer.WriteValue(item.ItemKey.TypeId.ToString() + "," + item.Id.ToString());

                writer.WriteEndObject();
                writer.WriteEndObject();
            }

            try
            {
                WebClient wc = new WebClient();
                wc.Headers[HttpRequestHeader.ContentType] = "type:application/json";
                wc.UploadString("http://" + server + "/update/json", sb.ToString());
                wc.DownloadString("http://" + server + "/update?commit=true");
            }
            catch
            {
            }

            return true;
        }
コード例 #3
0
ファイル: Lucene.cs プロジェクト: smithydll/boxsocial
        public override bool DeleteFromIndex(ISearchableItem item)
        {
            Initialise();

            if (writer == null)
            {
                writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);
            }

            writer.DeleteDocuments(new Term("item_id", item.Id.ToString()));

            writer.Dispose();
            writer = null;

            return true;
        }
コード例 #4
0
ファイル: Lucene.cs プロジェクト: smithydll/boxsocial
        public override bool UpdateIndex(ISearchableItem item, params SearchField[] customFields)
        {
            Initialise();

            DeleteFromIndex(item);
            return Index(item, customFields);
        }
コード例 #5
0
ファイル: Lucene.cs プロジェクト: smithydll/boxsocial
        public override bool Index(ISearchableItem item, params SearchField[] customFields)
        {
            Initialise();

            int isPublic = 1;

            if (item is IPermissibleItem)
            {
                IPermissibleItem pitem = (IPermissibleItem)item;

                isPublic = pitem.Access.IsPublic() ? 1 : 0;

                if (isPublic == 0)
                {
                    isPublic = pitem.Access.IsPrivateFriendsOrMembers() ? 2 : 0;
                }
            }

            if (item is IPermissibleSubItem)
            {
                IPermissibleItem pitem = ((IPermissibleSubItem)item).PermissiveParent;

                isPublic = pitem.Access.IsPublic() ? 1 : 0;

                if (isPublic == 0)
                {
                    isPublic = pitem.Access.IsPrivateFriendsOrMembers() ? 2 : 0;
                }
            }

            Document doc = new Document();
            /* we store numbers are strings, because a NumericField is 32 bit, and our IDs are all 64 bit.
             * These Ids are all stored to make things faster to lookup, none of the IDs are transferable,
             * so they will be static and therefore suitable for indexing. */
            doc.Add(new Field("item_id", item.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field("item_type_id", item.ItemKey.TypeId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field("owner_id", item.Owner.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field("owner_type_id", item.Owner.ItemKey.TypeId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field("application_id", item.ItemKey.GetType(core).ApplicationId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            /* Because of the dynamic nature of ACLs, they can only be effectively evaluated when querying results */
            doc.Add(new Field("item_public", isPublic.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            foreach (SearchField field in customFields)
            {
                doc.Add(new Field(field.Key, field.Value, Field.Store.YES, Field.Index.NOT_ANALYZED));
            }
            doc.Add(new Field("item_title", item.IndexingTitle, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("item_string", item.IndexingString, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("item_tags", item.IndexingTags, Field.Store.YES, Field.Index.ANALYZED));

            if (writer == null)
            {
                writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);
            }

            writer.AddDocument(doc);

            writer.Commit();
            writer.Dispose();
            writer = null;

            return true;
        }
コード例 #6
0
ファイル: Search.cs プロジェクト: smithydll/boxsocial
 public abstract bool UpdateIndex(ISearchableItem item, params SearchField[] customFields);
コード例 #7
0
ファイル: Search.cs プロジェクト: smithydll/boxsocial
 public abstract bool DeleteFromIndex(ISearchableItem item);
コード例 #8
0
        //public void SetPositiveButton(String strPositiveButtonText, Android.Content.IDialogInterface..OnClickListener onClickListener)
        //{
        //    _strPositiveButtonText = strPositiveButtonText;
        //    _onClickListener = onClickListener;
        //}

        public void SetOnSearchableItemClickListener(ISearchableItem <SimpleSelectorItem> searchableItem)
        {
            this._searchableItem = searchableItem;
        }
コード例 #9
0
ファイル: SolrSearch.cs プロジェクト: smithydll/boxsocial
        private bool Index(ISearchableItem item, bool overwrite, params SearchField[] customFields)
        {
            Initialise();

            int isPublic = 1;

            if (item is IPermissibleItem)
            {
                IPermissibleItem pitem = (IPermissibleItem)item;

                isPublic = pitem.Access.IsPublic() ? 1 : 0;

                if (isPublic == 0)
                {
                    isPublic = pitem.Access.IsPrivateFriendsOrMembers() ? 2 : 0;
                }
            }

            if (item is IPermissibleSubItem)
            {
                IPermissibleItem pitem = ((IPermissibleSubItem)item).PermissiveParent;

                isPublic = pitem.Access.IsPublic() ? 1 : 0;

                if (isPublic == 0)
                {
                    isPublic = pitem.Access.IsPrivateFriendsOrMembers() ? 2 : 0;
                }
            }

            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);

            using (JsonTextWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.Indented;

                writer.WriteStartObject();
                writer.WritePropertyName("add");
                writer.WriteStartObject();
                writer.WritePropertyName("overwrite");
                writer.WriteValue(overwrite);
                writer.WritePropertyName("doc");
                writer.WriteStartObject();
                writer.WritePropertyName("id");
                writer.WriteValue(item.ItemKey.TypeId.ToString() + "," + item.Id.ToString());
                writer.WritePropertyName("item_id");
                writer.WriteValue(item.Id.ToString());
                writer.WritePropertyName("item_type_id");
                writer.WriteValue(item.ItemKey.TypeId.ToString());
                writer.WritePropertyName("owner_id");
                writer.WriteValue(item.Owner.Id.ToString());
                writer.WritePropertyName("owner_type_id");
                writer.WriteValue(item.Owner.ItemKey.TypeId.ToString());
                writer.WritePropertyName("application_id");
                writer.WriteValue(item.ItemKey.GetType(core).ApplicationId.ToString());
                writer.WritePropertyName("item_public");
                writer.WriteValue(isPublic.ToString());

                /*foreach (SearchField field in customFields)
                {
                    writer.WritePropertyName(field.Key);
                    writer.WriteValue(field.Value);
                }*/

                writer.WritePropertyName("item_title");
                writer.WriteValue(item.IndexingTitle);
                writer.WritePropertyName("item_string");
                writer.WriteValue(item.IndexingString);
                writer.WritePropertyName("item_tags");
                writer.WriteValue(item.IndexingTags);

                writer.WriteEndObject();
                writer.WriteEndObject();
                writer.WriteEndObject();
            }

            NameValueCollection values = new NameValueCollection();

            WebClient wc = new WebClient();
            wc.Headers[HttpRequestHeader.ContentType] = "type:application/json";
            string response = wc.UploadString("http://" + server + "/update/json", sb.ToString());
            //HttpContext.Current.Response.Write(sb.ToString() + "<br />\r\n\r\n" + response + "<br />");
            wc.DownloadString("http://" + server + "/update?commit=true");

            return true;
        }
コード例 #10
0
ファイル: SolrSearch.cs プロジェクト: smithydll/boxsocial
 public override bool Index(ISearchableItem item, params SearchField[] customFields)
 {
     return Index(item, false, customFields);
 }
コード例 #11
0
ファイル: ElasticSearch.cs プロジェクト: smithydll/boxsocial
        public override bool DeleteFromIndex(ISearchableItem item)
        {
            Initialise();

            return true;
        }
コード例 #12
0
ファイル: ElasticSearch.cs プロジェクト: smithydll/boxsocial
        private bool Index(ISearchableItem item, bool overwrite, params SearchField[] customFields)
        {
            Initialise();

            int isPublic = 1;

            if (item is IPermissibleItem)
            {
                IPermissibleItem pitem = (IPermissibleItem)item;

                isPublic = pitem.Access.IsPublic() ? 1 : 0;

                if (isPublic == 0)
                {
                    isPublic = pitem.Access.IsPrivateFriendsOrMembers() ? 2 : 0;
                }
            }

            if (item is IPermissibleSubItem)
            {
                IPermissibleItem pitem = ((IPermissibleSubItem)item).PermissiveParent;

                isPublic = pitem.Access.IsPublic() ? 1 : 0;

                if (isPublic == 0)
                {
                    isPublic = pitem.Access.IsPrivateFriendsOrMembers() ? 2 : 0;
                }
            }

            ItemIndexDocument writer = new ItemIndexDocument();
            IndexRequest<ItemIndexDocument> request = new IndexRequest<ItemIndexDocument>(writer);

            writer.Id = item.ItemKey.TypeId.ToString() + "," + item.Id.ToString();
            writer.ItemId = item.Id;
            writer.ItemTypeId = item.ItemKey.TypeId;
            writer.OwnerId = item.Owner.Id;
            writer.OwnerTypeId = item.Owner.ItemKey.TypeId;
            writer.ApplicationId = item.ItemKey.GetType(core).ApplicationId;
            writer.ItemPublic = isPublic;

            /*foreach (SearchField field in customFields)
            {
                writer.WritePropertyName(field.Key);
                writer.WriteValue(field.Value);
            }*/

            writer.ItemTitle = item.IndexingTitle;
            writer.ItemString = item.IndexingString;
            writer.ItemTitle = item.IndexingTags;

            client.Index<ItemIndexDocument>("", "", item.ItemKey.TypeId.ToString() + "," + item.Id.ToString(), request);

            return true;
        }
コード例 #13
0
ファイル: ElasticSearch.cs プロジェクト: smithydll/boxsocial
        public override bool UpdateIndex(ISearchableItem item, params SearchField[] customFields)
        {
            Initialise();

            //client.Update<ItemSearch>("", "", item.ItemKey.TypeId.ToString() + "," + item.Id.ToString(), writer);

            return Index(item, true, customFields);
        }