Merge branch 'master' into 4523-search-index
[arvados.git] / services / api / app / models / collection.rb
index 66d7addb45528cbab407ba6f62edb7d439f70cd6..6c5e1acc4e3f8af86f537bcea2698b998fe7d4ae 100644 (file)
@@ -10,6 +10,7 @@ class Collection < ArvadosModel
   before_validation :strip_manifest_text
   before_validation :set_portable_data_hash
   validate :ensure_hash_matches_manifest_text
+  before_save :set_file_names
 
   # Query only undeleted collections by default.
   default_scope where("expires_at IS NULL or expires_at > CURRENT_TIMESTAMP")
@@ -126,6 +127,20 @@ class Collection < ArvadosModel
     end
   end
 
+  def set_file_names
+    if self.manifest_text_changed?
+      file_names = []
+      if self.manifest_text
+        self.manifest_text.split.each do |part|
+          file_name = part.rpartition(':')[-1]
+          file_names << file_name if file_name != '.'
+        end
+      end
+      self.file_names = file_names.uniq.join(" ")[0,2**13]
+    end
+    true
+  end
+
   def check_encoding
     if manifest_text.encoding.name == 'UTF-8' and manifest_text.valid_encoding?
       true