Class: CmisServer::ObjectService

Inherits:
Object
  • Object
show all
Defined in:
app/services/cmis_server/object_service.rb

Defined Under Namespace

Classes: DuplicateFile

Instance Method Summary collapse

Constructor Details

#initialize(repository, context) ⇒ ObjectService

Returns a new instance of ObjectService.



13
14
15
16
# File 'app/services/cmis_server/object_service.rb', line 13

def initialize(repository, context)
  @repository= repository.is_a?(Repository) ? repository : CmisServer::Repository.find(repository)
  @context   =context
end

Instance Method Details

#append_content_streamObject

Raises:

  • (NotImplemented)


161
162
163
# File 'app/services/cmis_server/object_service.rb', line 161

def append_content_stream
  raise NotImplemented
end

#bulk_update_propertiesObject

Raises:

  • (NotImplemented)


141
142
143
# File 'app/services/cmis_server/object_service.rb', line 141

def bulk_update_properties
  raise NotImplemented
end

#create_document(properties, folder_id: nil, content_stream: nil, versionning_state: :none, policies: [], add_aces: [], remove_aces: []) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/services/cmis_server/object_service.rb', line 18

def create_document(properties, folder_id: nil, content_stream: nil, versionning_state: :none, policies: [], add_aces: [], remove_aces: [])
  doc    =CmisServer::DocumentObject.new(type: DocumentType.base, properties: properties)
  adapter=CmisServer::DocumentAdapter.new(doc, context: @context)

  if folder_id&&folder=CmisServer::FolderAdapter.class_adapter(context: @context).find(folder_id)
    adapter.add_to_folder(folder)
  end

  if content_stream
    adapter.add_content_stream(content_stream)
  end

  adapter.save!
  adapter.object.cmis_object_id
end

#create_document_from_sourceObject

Raises:

  • (NotImplemented)


34
35
36
# File 'app/services/cmis_server/object_service.rb', line 34

def create_document_from_source
  raise NotImplemented
end

#create_folder(properties, add_aces: [], remove_aces: []) ⇒ Object

Raises:

  • (NotImplemented)


38
39
40
# File 'app/services/cmis_server/object_service.rb', line 38

def create_folder(properties, add_aces: [], remove_aces: [])
  raise NotImplemented
end

#create_item(properties, folder_id: nil, policies: [], add_aces: [], remove_aces: []) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'app/services/cmis_server/object_service.rb', line 50

def create_item(properties, folder_id: nil, policies: [], add_aces: [], remove_aces: [])
  item = CmisServer::ItemObject.new(type: ItemType.base, properties: properties)
  adapter = CmisServer::ItemAdapter.new(item, context: @context)

  if folder_id && folder = CmisServer::FolderAdapter.class_adapter(context: @context).find(folder_id)
    adapter.add_to_folder(folder)
  end

  adapter.save!
  adapter.object.cmis_object_id
end

#create_policyObject

Raises:

  • (NotImplemented)


46
47
48
# File 'app/services/cmis_server/object_service.rb', line 46

def create_policy
  raise NotImplemented
end

#create_relationshipObject

Raises:

  • (NotImplemented)


42
43
44
# File 'app/services/cmis_server/object_service.rb', line 42

def create_relationship
  raise NotImplemented
end

#delete_content_streamObject

Raises:

  • (NotImplemented)


165
166
167
# File 'app/services/cmis_server/object_service.rb', line 165

def delete_content_stream
  raise NotImplemented
end

#delete_objectObject

Raises:

  • (NotImplemented)


149
150
151
# File 'app/services/cmis_server/object_service.rb', line 149

def delete_object
  raise NotImplemented
end

#delete_treeObject

Raises:

  • (NotImplemented)


153
154
155
# File 'app/services/cmis_server/object_service.rb', line 153

def delete_tree
  raise NotImplemented
end

#get_allowable_actionsObject

Raises:

  • (NotImplemented)


62
63
64
# File 'app/services/cmis_server/object_service.rb', line 62

def get_allowable_actions
  raise NotImplemented
end

#get_content_streamObject

Raises:

  • (NotImplemented)


88
89
90
# File 'app/services/cmis_server/object_service.rb', line 88

def get_content_stream
  raise NotImplemented
end

#get_object(id, filter: [], include_relationships: :none, include_policy_ids: false, rendition_filter: "cmis:none", include_acl: false, include_allowable_actions: false, with_object: false) ⇒ Object



66
67
68
69
70
71
72
# File 'app/services/cmis_server/object_service.rb', line 66

def get_object(id, filter: [], include_relationships: :none, include_policy_ids: false, rendition_filter: "cmis:none", include_acl: false, include_allowable_actions: false, with_object: false)
  record = DocumentAdapter.class_adapter(context: @context).find(id) || 
           FolderAdapter.class_adapter(context: @context).find(id) || 
           ItemAdapter.class_adapter(context: @context).find(id)
  raise CmisServer::ObjectNotFound unless record
  return record.to_renderable_object
end

#get_object_by_path(path, filter: [], include_relationships: :none, include_policy_ids: false, rendition_filter: "cmis:none", include_acl: false, include_allowable_actions: false, with_object: false) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'app/services/cmis_server/object_service.rb', line 78

def get_object_by_path(path, filter: [], include_relationships: :none, include_policy_ids: false, rendition_filter: "cmis:none", include_acl: false, include_allowable_actions: false, with_object: false)
  record=CmisServer::FolderObject.root_folder
  path.split('/')[1..-1].to_a.each do |slug|
    adapter=record.adapter(context: @context)
    record =adapter.find_slug_in_children(slug)
    raise CmisServer::ObjectNotFound unless record
  end
  return record.to_renderable_object
end

#get_properties(id, filter: []) ⇒ Object

Raises:

  • (NotImplemented)


74
75
76
# File 'app/services/cmis_server/object_service.rb', line 74

def get_properties(id, filter: [])
  raise NotImplemented
end

#get_renditionsObject

Raises:

  • (NotImplemented)


92
93
94
# File 'app/services/cmis_server/object_service.rb', line 92

def get_renditions
  raise NotImplemented
end

#move_objectObject

Raises:

  • (NotImplemented)


145
146
147
# File 'app/services/cmis_server/object_service.rb', line 145

def move_object
  raise NotImplemented
end

#set_content_streamObject

Raises:

  • (NotImplemented)


157
158
159
# File 'app/services/cmis_server/object_service.rb', line 157

def set_content_stream
  raise NotImplemented
end

#update_properties(id, properties, with_object: false) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'app/services/cmis_server/object_service.rb', line 96

def update_properties(id, properties, with_object: false)
  if id==CmisServer::FolderObject.root_folder.cmis_object_id
    record=CmisServer::Folder.Objectroot_folder
  else
    #Todo Mockup
    record=CmisServer::DocumentAdapter::ClassAdapter.new(context: @context).find(id)||CmisServer::Folder.find(id)||CmisServer::ItemAdapter::ClassAdapter.new(context: @context).find(id)
  end
  raise CmisServer::ObjectNotFound unless record
  
  # Gérer les types secondaires
  if properties['cmis:secondaryObjectTypeIds']
    current_secondary_types = record.properties['cmis:secondaryObjectTypeIds']&.value || []
    new_secondary_types = properties['cmis:secondaryObjectTypeIds']
    
    # Supprimer les types qui ne sont plus présents
    types_to_remove = current_secondary_types - new_secondary_types
    
    # Ajouter les nouveaux types
    types_to_add = new_secondary_types - current_secondary_types
    
    # Mettre à jour les propriétés secondaryObjectTypeIds
    record.properties['cmis:secondaryObjectTypeIds'].value = new_secondary_types
    
    # Supprimer les propriétés des types secondaires qui ont été retirés
    # et ajouter celles des nouveaux types (implementation future)
  end

  # Mettre à jour les autres propriétés
  properties.each do |prop_id, value|
    next if prop_id == 'cmis:secondaryObjectTypeIds' # Déjà traité au-dessus
    record.properties[prop_id.to_s].value = value if record.properties[prop_id.to_s]
  end

  adapter = if record.is_a?(CmisServer::DocumentObject)
              CmisServer::DocumentAdapter.new(record, context: @context)
            elsif record.is_a?(CmisServer::FolderObject)
              CmisServer::FolderAdapter.new(record, context: @context)
            elsif record.is_a?(CmisServer::ItemObject)
              CmisServer::ItemAdapter.new(record, context: @context)
            end

  adapter.save!
  return adapter.object.to_renderable_object
end