Class: CmisServer::AtomPub::FolderCollectionController
- Inherits:
-
BaseController
- Object
- ActionController::Base
- CmisServer::ApplicationController
- BaseController
- CmisServer::AtomPub::FolderCollectionController
- Includes:
- RepositoryScopable
- Defined in:
- app/controllers/cmis_server/atom_pub/folder_collection_controller.rb
Instance Method Summary collapse
Methods included from RepositoryScopable
Methods inherited from BaseController
#raw_post_body, #render_standard_error, #request_entry_parser
Methods inherited from CmisServer::ApplicationController
Instance Method Details
#create_children ⇒ Object
51 52 53 54 55 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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'app/controllers/cmis_server/atom_pub/folder_collection_controller.rb', line 51 def create_children #Check if Document exists begin if request_entry_parser.cmis_object_id #We move the document to the folder else #We create the document object_type=request_entry_parser.object_type # Protection si object_type est nil if object_type.nil? Rails.logger.error "Object type is nil, cannot determine type" raise "Invalid object type in request" end service =ObjectService.new(@repository, current_context) case object_type.base_type.id when "cmis:document" id =service.create_document(request_entry_parser.object_properties, folder_id: params[:id], content_stream: request_entry_parser.content_stream) @object=CmisServer::DocumentAdapter.class_adapter(context: current_context).find(id).to_renderable_object render 'cmis_server/atom_pub/entries/object_entry', formats: :atom_entry, status: :created when "cmis:folder" id =service.create_folder(request_entry_parser.object_properties, parent_folder_id: params[:id]) @object=CmisServer::FolderAdapter.class_adapter(context: current_context).find(id).to_renderable_object render 'cmis_server/atom_pub/entries/object_entry', formats: :atom_entry, status: :created when "cmis:policy" # Implémentation future de la gestion des politiques when "cmis:item" id =service.create_item(request_entry_parser.object_properties) @object=CmisServer::ItemAdapter.class_adapter(context: current_context).find(id).to_renderable_object render 'cmis_server/atom_pub/entries/object_entry', formats: :atom_entry, status: :created else raise "Unknown type #{object_type.base_type.id}" end end rescue CmisServer::ObjectService::DuplicateFile => e Rails.logger.error "DuplicateFile error: #{e.}" @object=e.duplicate.to_renderable_object render 'cmis_server/atom_pub/entries/object_entry', formats: :atom_entry, status: :conflict rescue => e Rails.logger.error "Error in create_children: #{e.}" Rails.logger.error "Backtrace: #{e.backtrace.first(10).join("\n")}" raise e end end |
#destroy ⇒ Object
104 105 106 107 108 |
# File 'app/controllers/cmis_server/atom_pub/folder_collection_controller.rb', line 104 def destroy service = ObjectService.new(@repository, current_context) service.delete_object(params[:id]) head :no_content end |
#get_children ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/controllers/cmis_server/atom_pub/folder_collection_controller.rb', line 11 def get_children begin service =NavigationService.new(@repository, current_context) response=service.get_children(params[:id], max_items: max_items_param, order_by: params[:orderBy]) rescue => e Rails.logger.error "FolderCollectionController#get_children - Error: #{e.}" Rails.logger.error "FolderCollectionController#get_children - Backtrace: #{e.backtrace.first(10).join("\n")}" raise e end # Utiliser le connecteur pour récupérer le dossier parent connector = CmisServer::Connectors::ConnectorFactory.create_connector( user: current_context.current_user ) parent_object = connector.find_object_by_id(params[:id]) # Gérer le cas spécial du root folder if params[:id] == 'root_folder' || params[:id] == 'root_folder_id' || params[:id] == 'core_root' || params[:id] == 'root' # Pour le root, utiliser directement nil comme parent_folder # car c'est un dossier virtuel qui n'a pas besoin d'être dans la collection parent_folder = nil elsif parent_object # C'est un objet Core normal, le convertir en objet CMIS adapter = CmisServer::FolderAdapter.new(nil, context: current_context) parent_folder = adapter.find(parent_object.id.to_s) else raise CmisServer::ObjectNotFound.new("Folder '#{params[:id]}' not found") end # Si nous avons une erreur avec les objets, retourner une collection vide items = response[:objects] || [] @collection=RenderableCollection.new(base_object: parent_folder, items: items) render 'cmis_server/atom_pub/feeds/feed', formats: :atom_feed end |
#get_descendants ⇒ Object
99 100 101 102 |
# File 'app/controllers/cmis_server/atom_pub/folder_collection_controller.rb', line 99 def get_descendants service=NavigationService.new(@repository, current_context) service.get_descendants(params[:id]) end |