Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="testo"></param>
        /// <param name="idReg"></param>
        /// <param name="numPage"></param>
        /// <param name="numTotPage"></param>
        /// <param name="nRec"></param>
        /// <returns></returns>
        public ArrayList FullTextSearch(string testo, string idReg, int numPage, out int numTotPage, out int nRec)
        {
            FullTextSearchContext context = new FullTextSearchContext();

            context.TextToSearch        = testo;
            context.RequestedPageNumber = numPage;

            ArrayList list = this.FullTextSearch(ref context);

            numTotPage = context.TotalPageNumber;
            nRec       = context.TotalRecordCount;

            return(list);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ArrayList FullTextSearch(ref FullTextSearchContext context)
        {
            int totalPageNumber, totalRecordCount;

            ArrayList retValue = this.FullTextSearch(context.TextToSearch,
                                                     string.Empty,
                                                     context.RequestedPageNumber,
                                                     out totalPageNumber,
                                                     out totalRecordCount);

            context.TotalPageNumber  = totalPageNumber;
            context.TotalRecordCount = totalRecordCount;

            return(retValue);
        }
Example #3
0
        public static InfoDocumento[] FullTextSearch(InfoUtente infoUtente, ref FullTextSearchContext context)
        {
            InfoDocumento[] retValue = null;

            try
            {
                retValue = docsPaWS.FullTextSearch(infoUtente, ref context);
            }
            catch (System.Exception ex)
            {
                UIManager.AdministrationManager.DiagnosticError(ex);
                return(null);
            }
            return(retValue);
        }
Example #4
0
 public exportDatiManager(
     string oggettoExport,
     string tipologiaExport,
     string titolo,
     DocsPaWR.InfoUtente userInfo,
     DocsPaWR.Ruolo userRuolo,
     DocsPaWR.FullTextSearchContext context,
     string docOrFasc,
     String[] objSystemId)
 {
     this._oggettoExport   = oggettoExport;               // doc o fasc o trasm.....
     this._tipologiaExport = tipologiaExport;             // PDF o XLS
     this._titolo          = titolo;
     this._userInfo        = userInfo;
     this._userRuolo       = userRuolo;
     this._context         = context;
     this._docOrFasc       = docOrFasc;
     this._objSystemId     = objSystemId;
 }
Example #5
0
        /// <summary>
        /// Ricerca fulltext per il documentale ETDOCS
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        protected virtual string[] SearchETDOCS(InfoUtente infoUtente, FullTextSearchContext context)
        {
            ArrayList files = new ArrayList();

            FullTextIndexingServices services = new FullTextIndexingServices();
            string catalog = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG")) ?
                             DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG") : "CATALOG_MIT";
            int maxResultRows = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) ?
                                int.Parse(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) : 200;

            FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, catalog, maxResultRows);
            //FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, this.GetConfig(FULLTEXT_INDEX_CATALOG), this.MaxRows);

            foreach (DocsPaDocumentale.FullTextSearch.FullTextResultInfo item in fullTextResult)
            {
                files.Add(item.Name);
            }

            return((string[])files.ToArray(typeof(string)));
        }
Example #6
0
        /// <summary>
        /// Ricerca semplice fulltext
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="context">Informazioni di contesto per la ricerca</param>
        /// <returns></returns>
        public ArrayList simpleSearch(InfoUtente infoUtente, ref FullTextSearchContext context)
        {
            ArrayList result = new ArrayList();

            FullTextIndexingServices services = new FullTextIndexingServices();
            string catalog = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG")) ?
                             DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_CATALOG") : "CATALOG_MIT";
            int maxResultRows = !string.IsNullOrEmpty(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) ?
                                int.Parse(DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FULLTEXT_MAXROWS")) : 200;

            FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, catalog, maxResultRows);
            //FullTextResultInfo[] fullTextResult = services.Search(context.TextToSearch, this.GetConfig(FULLTEXT_INDEX_CATALOG), this.MaxRows);

            foreach (DocsPaDocumentale.FullTextSearch.FullTextResultInfo item in fullTextResult)
            {
                result.Add(item.Name);
            }

            return(result);
        }
Example #7
0
        /// <summary>
        /// Ricerca fulltext
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="context">Informazioni di contesto per la ricerca</param>
        /// <returns></returns>
        public ArrayList Search(InfoUtente infoUtente, ref FullTextSearchContext context)
        {
            string[] fullTextResult = null;

            if (context.SearchResultList != null && context.SearchResultList.Length > 0)
            {
                // Ricerca già effettuata, reperimento dall'oggetto di contesto
                // dei risultati precedenti evitando così una dispendiosa
                // chiamata al sistema documentale
                fullTextResult = context.SearchResultList;
            }
            else
            {
                // Prima ricerca, chiamata al documentale
                fullTextResult = this.SearchETDOCS(infoUtente, context);

                // Reperimento identificativi dei documenti in docspa
                // che contengono uno o più file reperiti dalla ricerca fulltext
                fullTextResult = this.GetIDDocumentiETDOCS(fullTextResult, infoUtente);
            }

            // Estrazione dei soli id relativi alla pagina richiesta
            string[] documentsToRead = this.ExtractPageData(fullTextResult, context.RequestedPageNumber);

            // Calcolo numero pagine e record estratti
            int numDocs    = fullTextResult.Length;
            int numTotPage = (numDocs / PAGE_SIZE);

            if (numTotPage * PAGE_SIZE < numDocs)
            {
                numTotPage++;
            }

            context.SearchResultList = fullTextResult;
            context.TotalPageNumber  = numTotPage;
            context.TotalRecordCount = numDocs;

            // Reperimento dettagli sui documenti
            return(this.GetDocuments(documentsToRead, infoUtente));
        }
Example #8
0
        public exportDatiManager(
            string oggettoExport,
            string tipologiaExport,
            string titolo,
            DocsPaWR.InfoUtente userInfo,
            DocsPaWR.Ruolo userRuolo,
            DocsPaWR.FullTextSearchContext context,
            string docOrFasc,
            ArrayList campiSelezionati,
            String[] objSystemId)
        {
            this._oggettoExport    = oggettoExport;   // doc o fasc o trasm.....
            this._tipologiaExport  = tipologiaExport; // PDF o XLS
            this._titolo           = titolo;
            this._userInfo         = userInfo;
            this._userRuolo        = userRuolo;
            this._context          = context;
            this._docOrFasc        = docOrFasc;
            this._campiSelezionati = campiSelezionati;

            // Impostazione della lista dei system id degli oggetti selezionati
            this._objSystemId = objSystemId;
        }
Example #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public ArrayList simpleFullTextSearch(ref FullTextSearchContext context)
 {
     return(new ArrayList());
 }
Example #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ArrayList FullTextSearch(ref FullTextSearchContext context)
        {
            RicercaFullText ricercaFullText = new RicercaFullText();

            return(ricercaFullText.RicercaFT(this.InfoUtente, ref context));
        }
Example #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ArrayList FullTextSearch(ref FullTextSearchContext context)
        {
            FullTextSearch fullText = new FullTextSearch();

            return(fullText.Search(this.InfoUtente, ref context));
        }
Example #12
0
        /// <summary>
        /// Ricerca fulltext nell'oggetto document
        ///
        /// nb: da fare anche ricerca allegati
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ArrayList FullTextSearch(ref FullTextSearchContext context)
        {
            ArrayList result = new ArrayList();

            try
            {
                List <string> fullTextResult = null;

                if (context.SearchResultList != null && context.SearchResultList.Length > 0)
                {
                    // Ricerca già effettuata, reperimento dall'oggetto di contesto
                    // dei risultati precedenti evitando così una dispendiosa
                    // chiamata al sistema documentale
                    fullTextResult = new List <string>(context.SearchResultList);
                }
                else
                {
                    StructuredQuery strQuery = new StructuredQuery();

                    strQuery.AddRepository(DctmConfigurations.GetRepositoryName());
                    strQuery.ObjectType = ObjectTypes.DOCUMENTO;

                    strQuery.IsDatabaseSearch     = false;
                    strQuery.IsIncludeAllVersions = false;
                    strQuery.IsIncludeHidden      = false;

                    // Inserisce nella ricerca il solo cabinet dell'amministrazione
                    RepositoryScope repositoryScope = new RepositoryScope();
                    repositoryScope.RepositoryName = DctmConfigurations.GetRepositoryName();
                    repositoryScope.LocationPath   = DocsPaAdminCabinet.getRootAmministrazione(this.InfoUtente);
                    repositoryScope.IsDescend      = true;
                    strQuery.Scopes.Add(repositoryScope);

                    ExpressionSet set = new ExpressionSet();
                    set.AddExpression(new FullTextExpression(context.TextToSearch));
                    strQuery.RootExpressionSet = set;

                    // Query execution
                    int            startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE;
                    int            maxResults = this.GetMaxRowCount();
                    QueryExecution queryExec  = new QueryExecution(startIndex, maxResults, maxResults);

                    ISearchService searchService = DctmServiceFactory.GetServiceInstance <ISearchService>(this.InfoUtente.dst);
                    QueryResult    queryResult   = searchService.Execute(strQuery, queryExec, null);

                    QueryStatus          queryStatus   = queryResult.QueryStatus;
                    RepositoryStatusInfo repStatusInfo = queryResult.QueryStatus.RepositoryStatusInfos[0];

                    if (repStatusInfo.Status == Status.FAILURE)
                    {
                        throw new ApplicationException("QueryResult: Status.FAILURE");
                    }

                    fullTextResult = new List <string>();

                    foreach (DataObject dataObject in queryResult.DataObjects)
                    {
                        // Reperimento docnumber
                        string docNumber = dataObject.Properties.Get(TypeDocumento.DOC_NUMBER).GetValueAsString();

                        if (!fullTextResult.Contains(docNumber)) // Eliminazione dei risultati duplicati
                        {
                            fullTextResult.Add(docNumber);
                        }
                    }

                    context.SearchResultList = fullTextResult.ToArray();
                    context.TotalPageNumber  = (fullTextResult.Count / PAGE_SIZE);
                    context.TotalRecordCount = fullTextResult.Count;
                }

                // Paginazione dei risultati
                if (fullTextResult != null && fullTextResult.Count > 0)
                {
                    int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE;
                    int count      = PAGE_SIZE;
                    if (fullTextResult.Count < count)
                    {
                        count = fullTextResult.Count;
                    }
                    List <string> pageContent = fullTextResult.GetRange(startIndex, count);
                    result = this.GetDocuments(pageContent.ToArray(), InfoUtente);
                }
            }
            catch (Exception ex)
            {
                result.Clear();
                logger.Debug(string.Format("Errore in Documentum.FullTextSearch:\n{0}", ex.ToString()));
            }

            return(result);
        }
Example #13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public ArrayList FullTextSearch(ref FullTextSearchContext context)
 {
     return(this.InstanceCDC.FullTextSearch(ref context));
 }
Example #14
0
        public static InfoDocumento[] getQueryInfoDocumentoPaging(InfoUtente infoutente, DocsPaWR.FiltroRicerca[][] query, int numPage, out int numTotPage, out int nRec, bool comingPopUp, bool grigi, bool security, bool getIdProfilesList, out SearchResultInfo[] idProfilesList)
        {
            // La lista dei system id dei documenti restituiti dalla ricerca
            SearchResultInfo[] idProfiles = null;
            InfoDocumento[]    DocS       = null;
            nRec       = 0;
            numTotPage = 0;
            try
            {
                string textToSearch = string.Empty;

                if (!IsRicercaFullText(query, out textToSearch))
                {
                    DocS = docsPaWS.DocumentoGetQueryDocumentoPaging(infoutente.idGruppo, infoutente.idPeople, query, comingPopUp, grigi, numPage, security, getIdProfilesList, out numTotPage, out nRec, out idProfiles);
                }
                else
                {
                    // reperimento oggetto infoutente

                    // Reperimento dalla sessione del contesto di ricerca fulltext
                    FullTextSearchContext context = GetFullTextSearchContextinSession;

                    if (context == null)
                    {
                        // Prima ricerca fulltext
                        context = new FullTextSearchContext();
                    }
                    else if (!textToSearch.Equals(context.TextToSearch))
                    {
                        // Se il testo inserito per la ricerca è differente
                        // da quello presente in sessione viene creato
                        // un nuovo oggetto di contesto per la ricerca
                        context = new FullTextSearchContext();
                    }

                    // Impostazione indice pagina richiesta
                    context.RequestedPageNumber = numPage;
                    // Impostazione testo da ricercare
                    context.TextToSearch = textToSearch;

                    // Ricerca fulltext
                    DocS = FullTextSearch(infoutente, ref context);

                    // Reperimento numero pagine e record totali
                    numTotPage = context.TotalPageNumber;
                    nRec       = context.TotalRecordCount;

                    // Impostazione in sessione del contesto di ricerca fulltext
                    GetFullTextSearchContextinSession = context;
                }
            }
            catch (System.Exception ex)
            {
                UIManager.AdministrationManager.DiagnosticError(ex);
            }

            // Impostazione della lista dei sisyem id dei documento
            idProfilesList = idProfiles;

            return(DocS);
        }
Example #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public ArrayList FullTextSearch(ref FullTextSearchContext context)
 {
     return(null);
 }
Example #16
0
        /// <summary>
        /// Ricerca fulltext nell'oggetto document
        ///
        /// nb: da fare anche ricerca allegati
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ArrayList FullTextSearch(ref FullTextSearchContext context)
        {
            ArrayList result = new ArrayList();

            try
            {
                List <string> fullTextResult = null;

                if (context.SearchResultList != null && context.SearchResultList.Length > 0)
                {
                    // Ricerca già effettuata, reperimento dall'oggetto di contesto
                    // dei risultati precedenti evitando così una dispendiosa
                    // chiamata al sistema documentale
                    fullTextResult = new List <string>(context.SearchResultList);
                }
                else
                {
                    //esegue la ricerca su OCS
                    CorteContentServices.FilterSearchRequestType searchDocumentRequest = new CorteContentServices.FilterSearchRequestType();
                    //costruisco la stringa di ricerca

                    //inserire i filtri di ricerca
                    //1. il path da cui cercare
                    //2. l'ordinamento
                    //3. solo i documenti del protocollo
                    //4. ...
                    searchDocumentRequest.userCredentials                   = OCSServices.OCSUtils.getUserCredentials(_infoUtente);
                    searchDocumentRequest.filter                            = new CorteContentServices.FilterSearchType();
                    searchDocumentRequest.filter.folderPath                 = OCSConfigurations.GetDocRootFolder();
                    searchDocumentRequest.filter.includeSubFolders          = true;
                    searchDocumentRequest.filter.includeSubFoldersSpecified = true;

                    searchDocumentRequest.filter.sortClause = "CREATE_DATE DESC";
                    // Query execution
                    int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE;
                    int maxResults = this.GetMaxRowCount();
                    searchDocumentRequest.filter.count          = maxResults;
                    searchDocumentRequest.filter.countSpecified = true;
                    //l'indice in OCS parte da 1 e non da 0
                    searchDocumentRequest.filter.offset          = startIndex + 1;
                    searchDocumentRequest.filter.offsetSpecified = true;
                    searchDocumentRequest.filter.searchExpress   = new DocsPaDocumentale_OCS.CorteContentServices.searchExpress(); //TODO: da fare!!!
                    searchDocumentRequest.filter.searchExpress.SearchExprType = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType();
                    string operatCr1  = "CONTAINS";
                    string rightOpCr1 = context.TextToSearch;

                    searchDocumentRequest.filter.searchExpress.SearchExprType.@operator    = operatCr1;
                    searchDocumentRequest.filter.searchExpress.SearchExprType.rightOperand = rightOpCr1;

                    //SABRINA: provo ad eliminare la catgoria in modo da ottenere tutti i documenti (anche allegati e stampe registro)

                    bool profilezioneDinamica = DocsPaDB.Query_DocsPAWS.Documenti.isEnabledProfilazioneAllegati;
                    if (!profilezioneDinamica)
                    {
                        searchDocumentRequest.filter.searchExpress.SearchExprType.sameLevelOperator = "AND";

                        searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1 = new DocsPaDocumentale_OCS.CorteContentServices.SearchExprType();
                        string operatCr2  = "HAS_CATEGORY";
                        string rightOpCr2 = "[" + DocsPaObjectType.ObjectTypes.CATEGOTY_PROTOCOLLO + "]";

                        searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.@operator    = operatCr2;
                        searchDocumentRequest.filter.searchExpress.SearchExprType.SearchExprType1.rightOperand = rightOpCr2;
                    }
                    CorteContentServices.ItemSearchListResponseType listResult;
                    listResult = this.WsDocumentInstance.SearchDocuments(searchDocumentRequest);

                    OCSUtils.throwExceptionIfInvalidResult(listResult.result);

                    fullTextResult = new List <string>();

                    foreach (CorteContentServices.ItemSearchType item in listResult.items)
                    {
                        // Reperimento docnumber

                        //NB: momentaneamente ricavo il docNumber dall'oggetto info
                        string docNumber = item.info.name.Substring(0, item.info.name.IndexOf("."));

                        if (!fullTextResult.Contains(docNumber)) // Eliminazione dei risultati duplicati
                        {
                            fullTextResult.Add(docNumber);
                        }
                    }
                }

                // Paginazione dei risultati
                if (fullTextResult != null && fullTextResult.Count > 0)
                {
                    int startIndex = (context.RequestedPageNumber * PAGE_SIZE) - PAGE_SIZE;
                    int count      = PAGE_SIZE;
                    if ((fullTextResult.Count - startIndex) < count)
                    {
                        count = (fullTextResult.Count - startIndex);
                    }

                    result = this.GetDocuments(fullTextResult.GetRange(startIndex, count).ToArray(), InfoUtente);

                    int pageCount = (fullTextResult.Count / PAGE_SIZE);
                    if ((fullTextResult.Count % PAGE_SIZE) > 0)
                    {
                        pageCount++;
                    }

                    context.SearchResultList = fullTextResult.ToArray();
                    context.TotalPageNumber  = pageCount;
                    context.TotalRecordCount = fullTextResult.Count;
                }
            }
            catch (Exception ex)
            {
                result.Clear();
            }

            return(result);
        }