Class: CmisServer::Connectors::CoreConnector

Inherits:
BaseConnector show all
Defined in:
lib/cmis_server/connectors/core_connector.rb

Instance Method Summary collapse

Methods inherited from BaseConnector

#initialize

Constructor Details

This class inherits a constructor from CmisServer::Connectors::BaseConnector

Instance Method Details

#find_documents(conditions = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/cmis_server/connectors/core_connector.rb', line 7

def find_documents(conditions = {})
  return [] unless search_service_available?
  
  begin
    # Convertir les conditions CMIS en paramètres Core search
    search_params = convert_cmis_to_docs_search_params(conditions)
    
    # Créer le service de recherche avec les paramètres convertis et l'utilisateur
    search = docs_search_class.new(search_params, user: user)
    
    # Exécuter la recherche et retourner les résultats paginés
    documents = search.paginated_objects
    
    Rails.logger.info "CoreConnector: Found #{documents.count} documents with params: #{search_params}"
    documents
  rescue => e
    Rails.logger.error "CoreConnector find_documents error: #{e.message}"
    Rails.logger.error "CoreConnector find_documents backtrace: #{e.backtrace.first(5)}"
    []
  end
end

#find_folders(conditions = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/cmis_server/connectors/core_connector.rb', line 29

def find_folders(conditions = {})
  return [] unless search_service_available?
  
  begin
    # Convertir les conditions CMIS en paramètres Core search
    search_params = convert_cmis_to_spaces_search_params(conditions)
    
    # Pour les dossiers racines, utiliser les favoris si pas de conditions spécifiques
    if search_params.empty?
      search_params = { 'favorite' => true }
    end
    
    # Créer le service de recherche avec les paramètres convertis et l'utilisateur
    search = spaces_search_class.new(search_params, user: user)
    
    # Exécuter la recherche et retourner les résultats paginés
    folders = search.paginated_objects
    
    Rails.logger.info "CoreConnector: Found #{folders.count} folders with params: #{search_params}"
    folders
  rescue => e
    Rails.logger.error "CoreConnector find_folders error: #{e.message}"
    Rails.logger.error "CoreConnector find_folders backtrace: #{e.backtrace.first(5)}"
    []
  end
end

#find_object_by_id(id) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/cmis_server/connectors/core_connector.rb', line 56

def find_object_by_id(id)
  Rails.logger.info "CoreConnector: Searching for object with ID: #{id}"
  
  # Cas spécial pour le dossier racine CMIS
  if id == 'core_root'
    Rails.logger.info "CoreConnector: Returning root folder for ID: #{id}"
    return create_root_folder_object
  end
  
  # Essayer d'abord comme document
  doc = find_document_by_id(id)
  if doc
    Rails.logger.info "CoreConnector: Found document with ID: #{id}"
    return doc
  end
  
  # Puis essayer comme dossier/espace
  folder = find_folder_by_id(id)
  if folder
    Rails.logger.info "CoreConnector: Found folder with ID: #{id}"
    return folder
  end
  
  Rails.logger.warn "CoreConnector: No object found with ID: #{id}"
  Rails.logger.info "CoreConnector: Available services - Doc: #{doc_class_available?}, Space: #{space_class_available?}, DocsSearch: #{docs_search_class}, SpacesSearch: #{spaces_search_class}"
  nil
end

#find_object_by_path(path) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/cmis_server/connectors/core_connector.rb', line 84

def find_object_by_path(path)
  Rails.logger.info "CoreConnector: Searching for object with path: #{path}"
  
  # Cas spécial pour le path racine
  if path == '/' || path.blank?
    Rails.logger.info "CoreConnector: Returning root folder for path: #{path}"
    return create_root_folder_object
  end
  
  # Pour les autres paths, chercher dans les espaces Core
  # TODO: implémenter la recherche par path dans les espaces
  find_folders({ path: path }).first
end

#find_root_foldersObject



98
99
100
101
# File 'lib/cmis_server/connectors/core_connector.rb', line 98

def find_root_folders
  # Utiliser les favoris pour les dossiers racines
  find_folders({})
end