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); }
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; }
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; }
public override bool UpdateIndex(ISearchableItem item, params SearchField[] customFields) { Initialise(); DeleteFromIndex(item); return Index(item, customFields); }
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; }
public abstract bool UpdateIndex(ISearchableItem item, params SearchField[] customFields);
public abstract bool DeleteFromIndex(ISearchableItem item);
//public void SetPositiveButton(String strPositiveButtonText, Android.Content.IDialogInterface..OnClickListener onClickListener) //{ // _strPositiveButtonText = strPositiveButtonText; // _onClickListener = onClickListener; //} public void SetOnSearchableItemClickListener(ISearchableItem <SimpleSelectorItem> searchableItem) { this._searchableItem = searchableItem; }
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; }
public override bool Index(ISearchableItem item, params SearchField[] customFields) { return Index(item, false, customFields); }
public override bool DeleteFromIndex(ISearchableItem item) { Initialise(); return true; }
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; }
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); }