예제 #1
0
        private void RemoveOldIndexItems(LoginUser loginUser, string indexPath, Organization organization, ReferenceType referenceType, string deletedIndexItemsFileName)
        {
            LogVerbose("Removing deleted items:  " + referenceType.ToString());
            if (!Directory.Exists(indexPath))
            {
                Logs.WriteEvent("Path does not exist:  " + indexPath);
                return;
            }
            DeletedIndexItems items = new DeletedIndexItems(loginUser);

            LogVerbose(string.Format("Retrieving deleted items:  RefType: {0}, OrgID: {1}", referenceType.ToString(), organization.OrganizationID.ToString()));
            items.LoadByReferenceType(referenceType, organization.OrganizationID);
            if (items.IsEmpty)
            {
                LogVerbose("No Items to delete");
                return;
            }


            StringBuilder builder = new StringBuilder();

            foreach (DeletedIndexItem item in items)
            {
                builder.AppendLine(item.RefID.ToString());
            }

            string fileName = Path.Combine(indexPath, deletedIndexItemsFileName);

            if (File.Exists(fileName))
            {
                File.Delete(fileName);
            }
            using (StreamWriter writer = new StreamWriter(fileName))
            {
                LogVerbose("Adding IDs to delete file: " + builder.ToString());
                writer.Write(builder.ToString());
            }


            LogVerbose("Deleting Items");
            using (IndexJob job = new IndexJob())
            {
                job.IndexPath           = indexPath;
                job.ActionCreate        = false;
                job.ActionAdd           = false;
                job.ActionRemoveListed  = true;
                job.ToRemoveListName    = fileName;
                job.CreateRelativePaths = false;
                job.Execute();
            }

            LogVerbose("Items deleted");
            UpdateHealth();
            items.DeleteAll();
            items.Save();
            LogVerbose("Finished Removing Old Indexes - OrgID = " + organization.OrganizationID + " - " + referenceType.ToString());
        }
        public static string GetDeletedIndexItem(RestCommand command, int deletedIndexID)
        {
            DeletedIndexItem deletedIndexItem = DeletedIndexItems.GetDeletedIndexItem(command.LoginUser, deletedIndexID);

            if (deletedIndexItem.OrganizationID != command.Organization.OrganizationID)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }
            return(deletedIndexItem.GetXml("DeletedIndexItem", true));
        }
        public static string GetDeletedIndexItems(RestCommand command)
        {
            DeletedIndexItems deletedIndexItems = new DeletedIndexItems(command.LoginUser);

            deletedIndexItems.LoadByOrganizationID(command.Organization.OrganizationID);

            if (command.Format == RestFormat.XML)
            {
                return(deletedIndexItems.GetXml("DeletedIndexItems", "DeletedIndexItem", true, command.Filters));
            }
            else
            {
                throw new RestException(HttpStatusCode.BadRequest, "Invalid data format");
            }
        }