From af29258b1f388ec20a2695db7e3f1122bdbe47c8 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Sat, 7 Sep 2013 01:42:18 -0400
Subject: v5: db, book index, convert hash back to string

---
 data/doc/sisu/CHANGELOG_v5 |  2 ++
 lib/sisu/v5/db_import.rb   | 30 +++++++++++++++++++++++++-----
 2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5
index ede6b1ae..341b06ef 100644
--- a/data/doc/sisu/CHANGELOG_v5
+++ b/data/doc/sisu/CHANGELOG_v5
@@ -32,6 +32,8 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.0.16.orig.tar.xz
 
 * dal, book index, hash key, strip whitespace, a (required) fix
 
+* db, book index, convert hash back to string
+
 %% 5.0.15.orig.tar.xz (2013-09-05:35/4)
 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_5.0.15
 http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_5.0.15-1
diff --git a/lib/sisu/v5/db_import.rb b/lib/sisu/v5/db_import.rb
index 5f89c968..bcb22de8 100644
--- a/lib/sisu/v5/db_import.rb
+++ b/lib/sisu/v5/db_import.rb
@@ -209,6 +209,26 @@ module SiSU_DbImport
     end
     def pf_db_import_transaction_close
     end
+    def book_idx_hash_to_str(book_idx)
+      book_idx=book_idx ? book_idx : ''
+      book_idx_str,book_subidx_part='',''
+      if not book_idx.empty?
+        book_idx_str=''
+        book_idx.each_pair do |k0,v0|
+          book_idx_str << %{#{k0}+#{v0[:plus]}}
+          book_subidx_part=''
+          if v0[:sub].length > 0
+            v0[:sub].each do |subterms|
+               subterms.each_pair do |k1,v1|
+                 book_subidx_part << %{\n  #{k1}+#{v1[:plus]} | }
+               end
+            end
+            book_idx_str=book_idx_str + ':' + book_subidx_part
+          end
+        end
+      end
+      book_idx_str
+    end
     def db_import_metadata                                                       #% import documents - populate database
       print %{ #{@cX.grey}import documents dbi_unit #{@cX.off} } if @opt.cmd =~/vVM/
       @tp={}
@@ -285,7 +305,7 @@ module SiSU_DbImport
               plaintext=@col[:body].dup
               plaintext=strip_markup(plaintext)
               @col[:plaintext]=clean_searchable_text(plaintext)
-              book_idx=data.idx ? data.idx : ''
+              book_idx=book_idx_hash_to_str(data.idx)
               @col[:book_idx]=clean_searchable_text(book_idx)
               if @en[0] then @en_a,@en_z=@en[0].first,@en[0].last
               end
@@ -321,7 +341,7 @@ module SiSU_DbImport
               plaintext=@col[:body].dup
               plaintext=strip_markup(plaintext)
               @col[:plaintext]=clean_searchable_text(plaintext)
-              book_idx=data.idx ? data.idx : ''
+              book_idx=book_idx_hash_to_str(data.idx)
               @col[:book_idx]=clean_searchable_text(book_idx)
               @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
               @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
@@ -353,7 +373,7 @@ module SiSU_DbImport
               plaintext=@col[:body].dup
               plaintext=strip_markup(plaintext)
               @col[:plaintext]=clean_searchable_text(plaintext)
-              book_idx=data.idx ? data.idx : ''
+              book_idx=book_idx_hash_to_str(data.idx)
               @col[:book_idx]=clean_searchable_text(book_idx)
               @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
               @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
@@ -383,7 +403,7 @@ module SiSU_DbImport
               plaintext=@col[:body].dup
               plaintext=strip_markup(plaintext)
               @col[:plaintext]=clean_searchable_text(plaintext)
-              book_idx=data.idx ? data.idx : ''
+              book_idx=book_idx_hash_to_str(data.idx)
               @col[:book_idx]=clean_searchable_text(book_idx)
               @en_a,@en_z=@en[0].first,@en[0].last if @en[0]
               @en_a_asterisk,@en_z_asterisk=@en_ast[0].first,@en_ast[0].last if @en_ast[0]
@@ -441,7 +461,7 @@ module SiSU_DbImport
               plaintext=@col[:body].dup
               plaintext=strip_markup(plaintext)
               @col[:plaintext]=clean_searchable_text(plaintext)
-              book_idx=data.idx ? data.idx : ''
+              book_idx=book_idx_hash_to_str(data.idx)
               @col[:book_idx]=clean_searchable_text(book_idx)
               t=SiSU_DbTuple::LoadDocuments.new(@conn,@col,@opt,@file_maint)
               @tuple_array << t.tuple
-- 
cgit v1.2.3