diff --git a/src/util/oddbapp.rb b/src/util/oddbapp.rb index ad4a49a..66c9fa1 100644 --- a/src/util/oddbapp.rb +++ b/src/util/oddbapp.rb @@ -1,7 +1,13 @@ #!/usr/bin/env ruby -# OddbApp -- oddb.org -- 26.09.2011 -- mhatakeyama@ywesee.com +# OddbApp -- oddb.org -- 18.10.2011 -- mhatakeyama@ywesee.com # OddbApp -- oddb.org -- 21.06.2010 -- hwyss@ywesee.com +require 'pp' +class NilClass + def odba_store + end +end + require 'odba' require 'odba/index_definition' require 'odba/drbwrapper' @@ -34,7 +40,6 @@ require 'yus/session' require 'model/migel/group' require 'model/analysis/group' -require 'remote/multilingual' require 'remote/migel/model' class OddbPrevalence @@ -1777,9 +1782,12 @@ module ODDB _migrate_to_utf8([object], {}, iconv) end def migrate_to_utf8 + + @migrate_mutex = Mutex.new + iconv = ::Iconv.new 'UTF-8//TRANSLIT//IGNORE', 'ISO-8859-1' ODBA.cache.retire_age = 5 - ODBA.cache.cleaner_step = 100000 +# ODBA.cache.cleaner_step = 100000 system = @system.odba_instance table = { system.odba_id => true, :serialized => {} } table.store :finalizer, proc { |object_id| @@ -1795,7 +1803,11 @@ module ODDB end end def _migrate_to_utf8 queue, table, iconv, opts={} + + @migrate_mutex ||= Mutex.new + obj = queue.shift + if obj.is_a?(Numeric) begin obj = ODBA.cache.fetch obj @@ -1806,18 +1818,43 @@ module ODDB obj = obj.odba_instance end _migrate_obj_to_utf8 obj, queue, table, iconv, opts - obj.odba_store unless obj.odba_unsaved? + +# save object here + @migrate_mutex.synchronize { + if obj + @count ||= 0 + obj.odba_store unless obj.odba_unsaved? + print "saved: ", @count+=1, "\n" + end + } end def _migrate_obj_to_utf8 obj, queue, table, iconv, opts={} - obj.instance_variables.each do |name| + #obj.instance_variables.each do |name| + obj.instance_variables.sort.each do |name| + child = obj.instance_variable_get name +begin +=begin +if child.is_a?(String) +print "%-30s," % name, " " +print "%-20s," % child.class, " " +end +=end if child.respond_to?(:odba_unsaved?) && !child.odba_unsaved? \ && obj.respond_to?(:odba_serializables) \ && obj.odba_serializables.include?(name) child.instance_variable_set '@odba_persistent', nil end +# recursive child = _migrate_child_to_utf8 child, queue, table, iconv, opts +# save children (instance_variables) obj.instance_variable_set name, child +rescue => e + p e +# pp e.backtrace +# exit +# return nil +end end if obj.is_a?(Array) obj.collect! do |child| @@ -1850,7 +1887,15 @@ module ODDB end end when String - child = iconv.iconv(child) +print "before: ", child.encoding +# child = iconv.iconv(child) +child.force_encoding('utf-8') +print " after: ", child.encoding, "\n" +=begin +unless child.encoding.downcase == 'utf-8' + p child.encoding +end +=end when ODDB::Text::Section, ODDB::Text::Paragraph, ODDB::PatinfoDocument, ODDB::PatinfoDocument2001, ODDB::Text::Table, ODDB::Text::Cell, ODDB::Analysis::Permission, ODDB::Interaction::AbstractLink,