talia_core 0.4.5 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 4
4
- :patch: 5
4
+ :patch: 6
5
5
  :build:
data/config/rdfstore.yml CHANGED
@@ -7,7 +7,7 @@ test:
7
7
  type: sesame
8
8
  location: ./sesame_test.db
9
9
  backend: native
10
- development:
10
+ development:
11
11
  type: sesame
12
12
  location: ./sesame_development.db
13
13
  backend: native
@@ -13,7 +13,8 @@ class TaliaBaseGenerator < Rails::Generator::Base
13
13
  m.directory 'config/initializers'
14
14
  m.file "config/talia_initializer.rb", "config/initializers/talia.rb"
15
15
  m.file "config/routes.rb", "config/routes.rb", :collision => :ask
16
- m.file "talia.sh", "talia.sh", :shebang => '/bin/sh', :chmod => 0755
16
+ m.file "talia.sh", "talia.sh", :shebang => '/bin/sh', :chmod => 0755=
17
+ m.file "config/warble.rb", "config/warble.rb"
17
18
 
18
19
  # Install the scripts
19
20
  m.directory 'script'
@@ -5,4 +5,7 @@ TLoad::setup_load_path
5
5
  TaliaCore::Initializer.environment = ENV['RAILS_ENV']
6
6
  TaliaCore::Initializer.run("talia_core")
7
7
 
8
- TaliaCore::SITE_NAME = TaliaCore::CONFIG['site_name'] || 'Discovery Source'
8
+ TaliaCore::SITE_NAME = TaliaCore::CONFIG['site_name'] || 'Talia Digital Library System'
9
+
10
+ # You may add mapping for additional data types here.
11
+ # TaliaCore::DataTypes::MimeMapping.add_mapping(:jpeg, TaliaCore::DataTypes::ImageData, :create_iip)
@@ -0,0 +1,82 @@
1
+ # Warbler web application assembly configuration file
2
+ Warbler::Config.new do |config|
3
+ # Temporary directory where the application is staged
4
+ # config.staging_dir = "tmp/war"
5
+
6
+ # Application directories to be included in the webapp.
7
+ config.dirs = %w(app config lib vendor)
8
+
9
+ # Additional files/directories to include, above those in config.dirs
10
+ # config.includes = FileList["db"]
11
+ config.includes = FileList['ontologies/**']
12
+
13
+ # Additional files/directories to exclude
14
+ # config.excludes = FileList["lib/tasks/*"]
15
+ # ActiveScaffold needs to be exclude as there are circular symlinks inside...
16
+ config.excludes = FileList["vendor/jruby*", "vendor/plugins/active_scaffold/test/*"]
17
+
18
+ # Additional Java .jar files to include. Note that if .jar files are placed
19
+ # in lib (and not otherwise excluded) then they need not be mentioned here.
20
+ # JRuby and JRuby-Rack are pre-loaded in this list. Be sure to include your
21
+ # own versions if you directly set the value
22
+ # config.java_libs += FileList["lib/java/*.jar"]
23
+
24
+ # Loose Java classes and miscellaneous files to be placed in WEB-INF/classes.
25
+ # config.java_classes = FileList["target/classes/**.*"]
26
+
27
+ # One or more pathmaps defining how the java classes should be copied into
28
+ # WEB-INF/classes. The example pathmap below accompanies the java_classes
29
+ # configuration above. See http://rake.rubyforge.org/classes/String.html#M000017
30
+ # for details of how to specify a pathmap.
31
+ # config.pathmaps.java_classes << "%{target/classes/,}p"
32
+
33
+ # Gems to be included. You need to tell Warbler which gems your application needs
34
+ # so that they can be packaged in the war file.
35
+ # The Rails gems are included by default unless the vendor/rails directory is present."
36
+ %w(talia_core activerecord-jdbcmysql-adapter jruby-openssl jdbc-mysql oai).each do |gem|
37
+ config.gems << gem
38
+ end
39
+ # config.gems << "tzinfo"
40
+
41
+ # Uncomment this if you don't want to package rails gem.
42
+ # config.gems -= ["rails"]
43
+
44
+ # The most recent versions of gems are used.
45
+ # You can specify versions of gems by using a hash assignment:
46
+ # config.gems["rails"] = "2.0.5"
47
+
48
+ # Include gem dependencies not mentioned specifically
49
+ config.gem_dependencies = true
50
+
51
+ # Files to be included in the root of the webapp. Note that files in public
52
+ # will have the leading 'public/' part of the path stripped during staging.
53
+ # config.public_html = FileList["public/**/*", "doc/**/*"]
54
+
55
+ # Pathmaps for controlling how public HTML files are copied into the .war
56
+ # config.pathmaps.public_html = ["%{public/,}p"]
57
+
58
+ # Name of the war file (without the .war) -- defaults to the basename
59
+ # of RAILS_ROOT
60
+ # config.war_name = "mywar"
61
+
62
+ # Value of RAILS_ENV for the webapp
63
+ config.webxml.rails.env = 'production'
64
+
65
+ # Application booter to use, one of :rack, :rails, or :merb. (Default :rails)
66
+ # config.webxml.booter = :rails
67
+
68
+ # When using the :rack booter, "Rackup" script to use.
69
+ # The script is evaluated in a Rack::Builder to load the application.
70
+ # Examples:
71
+ # config.webxml.rackup = %{require './lib/demo'; run Rack::Adapter::Camping.new(Demo)}
72
+ # config.webxml.rackup = require 'cgi' && CGI::escapeHTML(File.read("config.ru"))
73
+
74
+ # Control the pool of Rails runtimes. Leaving unspecified means
75
+ # the pool will grow as needed to service requests. It is recommended
76
+ # that you fix these values when running a production server!
77
+ config.webxml.jruby.min.runtimes = 2
78
+ config.webxml.jruby.max.runtimes = 4
79
+
80
+ # JNDI data source name
81
+ # config.webxml.jndi = 'jdbc/rails'
82
+ end
@@ -129,6 +129,18 @@ print "Enter the URI for your site: "
129
129
  site_url = readl(true)
130
130
 
131
131
  if(read_yn('Do you want to use the IIP image server?'))
132
+ init_file = File.join(rails_dir, 'config', 'initializers', 'talia.rb')
133
+ if(File.exist?(init_file))
134
+ puts "Adding the creation handler to your talia_initializer. Note that you will need 'vips' installed."
135
+ File.open(init_file, 'a') do |io|
136
+ io.puts ''
137
+ io.puts '# IIP creation handlers, added automatically'
138
+ %w(jpeg tiff png gif bmp).each { |t| io.puts "TaliaCore::DataTypes::MimeMapping.add_mapping(:#{t}, TaliaCore::DataTypes::ImageData, :create_iip)" }
139
+ io.puts ''
140
+ end
141
+ else
142
+ puts "WARNING: Initializer file for Talia not found. You will need to add the image handler for the MIME types manually."
143
+ end
132
144
  puts
133
145
  print "Enter the URL of your IIP server, or the port number (for default URL on localhost): "
134
146
  iip_url = readl
@@ -150,10 +162,14 @@ puts
150
162
  puts "Configuring the Sesame RDF store (change the config by hand for stores other than Sesame)"
151
163
  puts
152
164
  backends = %w(native memory rdbms http)
153
- print "Enter the sesame backend to use (#{backends.join('|')}): "
154
- while(!(backends.include?(backend = readl)))
165
+ print "Enter the sesame backend to use (#{backends.join('|')}) (default: native): "
166
+ backend = readl
167
+ backend = 'native' if(backend.blank?)
168
+ while(!(backends.include?(backend)))
155
169
  puts "#{backend} is not a valid backend"
156
170
  print "Enter the backend (#{backends.join('|')}: )"
171
+ backend = readl
172
+ backend = 'native' if(backend.blank?)
157
173
  end
158
174
 
159
175
  %w(production test development).each do |env|
@@ -181,7 +197,7 @@ when 'rdbms':
181
197
  print "Enter the password for the connection: "
182
198
  pass = readl
183
199
  end
184
- %(production test development).each do |env|
200
+ %w(production test development).each do |env|
185
201
  rdf_config[env]['driver'] = driver
186
202
  rdf_config[env]['user'] = user
187
203
  rdf_config[env]['pass'] = pass
@@ -196,10 +212,9 @@ when 'http':
196
212
  print "Enter the password for the connection: "
197
213
  pass = readl
198
214
  end
199
- %(production test development).each do |env|
200
- rdf_config[env]['driver'] = driver
201
- rdf_config[env]['user'] = user
202
- rdf_config[env]['pass'] = pass
215
+ %w(production test development).each do |env|
216
+ rdf_config[env]['user'] = user unless(user.blank?)
217
+ rdf_config[env]['pass'] = pass unless(pass.blank?)
203
218
  print "Enter the URL for the '#{env}' environment: "
204
219
  rdf_config[env]['url'] = readl(true)
205
220
  end
@@ -211,7 +226,8 @@ if(iip_directory != '')
211
226
  talia_config.iip_root_directory_location = iip_directory
212
227
  end
213
228
 
214
- print "Enter the path to store the data files (return for default): "
229
+ puts ''
230
+ print "Enter the path to store general data files (return for default): "
215
231
  data_directory = readl
216
232
 
217
233
  if(data_directory != '')
@@ -77,10 +77,10 @@ module TaliaCore
77
77
  # in a different way. If it is a file, the file name will be passed in here. If it is
78
78
  # a URL, the method will receive the io object of the open connection as the source
79
79
  def open_and_create(mime_type, location, source, is_file)
80
- data_type = loader_type_from(mime_type)
80
+ data_type = MimeMapping.loader_type_from(mime_type)
81
81
  if(data_type.is_a?(Symbol))
82
82
  raise(ArgumentError, "No handler found for loading: #{data_type}") unless(self.respond_to?(data_type))
83
- self.send(data_type, mime_type, location, source, is_file)
83
+ MimeMapping.class_type_from(mime_type).send(data_type, mime_type, location, source, is_file)
84
84
  else
85
85
  raise(ArgumentError, "Registered handler for loading must be a method symbol or class. (#{data_type})") unless(data_type.is_a?(Class))
86
86
  data_record = data_type.new
@@ -12,8 +12,6 @@ module TaliaCore
12
12
  before_create :set_mime_type # Mime type must be saved before the record is written
13
13
 
14
14
  # validates_presence_of :source
15
-
16
- extend MimeMapping
17
15
 
18
16
  # Declaration of main abstract methods ======================
19
17
  # Some notes: every subclasses of DataRecord must implement
@@ -114,7 +114,7 @@ module TaliaCore
114
114
 
115
115
  # Assign the STI subclass, perfoming a mime-type lookup.
116
116
  def assign_type(content_type)
117
- self.type = self.class.class_type_from(content_type).name
117
+ self.type = MimeMapping.class_type_from(content_type).name
118
118
  end
119
119
 
120
120
 
@@ -1,54 +1,101 @@
1
1
  module TaliaCore
2
2
  module DataTypes
3
-
3
+
4
4
  # Mapping from Mime types to data classes and importing methods. Currently uses a fixed
5
5
  # default mapping. If the mime type is not known, it will use a fallback default handler.
6
- module MimeMapping
7
-
8
- def mapping_for(mime_type)
9
- mime_type = Mime::Type.lookup(mime_type) if(mime_type.is_a?(String))
10
- mapping = mapping_hash[mime_type.to_sym]
11
- TaliaCore.logger.warn { "No data class registered for mime type #{mime_type.inspect}, trying default handler." } unless(mapping)
12
- mapping ||= mapping_hash[:default]
6
+ #
7
+ # The mapping can be configured in Rails' initializer files. Example:
8
+ #
9
+ # TaliaCore::DataTypes::MimeMapping(:tiff, :image_data, :create_iip)
10
+ class MimeMapping
11
+
12
+ class << self
13
+
14
+ # Gets the data class for the given mime type
15
+ def class_type_from(mime_type)
16
+ mapping_for(mime_type)[:type]
17
+ end
18
+
19
+ def loader_type_from(mime_type)
20
+ map = mapping_for(mime_type)
21
+ map[:loader] || map[:type]
22
+ end
13
23
 
14
- raise(ArgumentError, "No data class registered for type #{mime_type.inspect}") unless(mapping)
15
- mapping
16
- end
17
-
18
- # Gets the data class for the given mime type
19
- def class_type_from(mime_type)
20
- mapping_for(mime_type)[:type]
21
- end
22
-
23
- def loader_type_from(mime_type)
24
- map = mapping_for(mime_type)
25
- map[:loader] || map[:type]
26
- end
27
-
28
- # Currently there is only the default mapping
29
- def mapping_hash
30
- @mapping ||= {
31
- :xml => { :type => XmlData },
32
- :html =>{ :type => XmlData },
33
- :tei => { :type => XmlData },
34
- :tei_p5 => { :type => XmlData },
35
- :tei_p4 => { :type => XmlData },
36
- :gml => { :type => XmlData },
37
- :wittei => { :type => XmlData },
38
- :hnml => { :type => XmlData },
39
- :jpeg => { :type => ImageData, :loader => :create_iip },
40
- :tiff => { :type => ImageData, :loader => :create_iip },
41
- :png => { :type => ImageData, :loader => :create_iip },
42
- :gif => { :type => ImageData, :loader => :create_iip },
43
- :pdf => { :type => PdfData },
44
- :text => { :type => SimpleText },
45
- # Default fallback handler
46
- :default => { :type => FileRecord }
47
- }
24
+ # Set a new mapping for the given MIME type. If only a class is given, this
25
+ # will use the class to create new data records from. If a symbol is given
26
+ # for the class name, this will take the corresponding class from
27
+ # TaliaCore::DataTypes.
28
+ #
29
+ # The loader method can be a symbol, if given it must correspond to a *class*
30
+ # method that can be called on type_class and which accepts exactly 4 parameters,
31
+ # which will be passed in during record creation
32
+ #
33
+ # * Mime type of the record
34
+ # * 'location' field of the record
35
+ # * The record source - this is a descriptive string with either the url
36
+ # or the file name from which the data should be fetched
37
+ # * The is_file flag. This will be true if the source is the name of a
38
+ # regular file. Otherwise, the source field should be interpreted as
39
+ # a URL.
40
+ # == Example handler method
41
+ #
42
+ # def data_loader(mime_type, location, source, is_file)
43
+ def add_mapping(mime_type, data_class, handler = nil)
44
+ mapping = {}
45
+ if(!data_class.is_a?(Class))
46
+ data_class = TaliaCore::DataTypes.const_get(data_class.to_s.camelize)
47
+ end
48
+
49
+ raise("Error: #{data_class} is not a valid data class.") unless(data_class.is_a?(Class) && (data_class <= DataRecord))
50
+
51
+ mapping[:type] = data_class
52
+ mapping[:loader] = handler.to_sym if(handler)
53
+ mapping_hash[symbol_for(mime_type)] = mapping
54
+ true
55
+ end
56
+
57
+ private
58
+
59
+ def symbol_for(mime_type)
60
+ mime_type = Mime::Type.lookup(mime_type) unless(mime_type.is_a?(Mime::Type))
61
+ mime_type.to_sym
62
+ end
63
+
64
+ def mapping_for(mime_type)
65
+ mapping = mapping_hash[symbol_for(mime_type)]
66
+ TaliaCore.logger.warn { "No data class registered for mime type #{mime_type.inspect}, trying default handler." } unless(mapping)
67
+ mapping ||= mapping_hash[:default]
68
+
69
+ raise(ArgumentError, "No data class registered for type #{mime_type.inspect}") unless(mapping)
70
+ mapping
71
+ end
72
+
73
+ # Currently there is only the default mapping
74
+ def mapping_hash
75
+ @mapping ||= {
76
+ :xml => { :type => DataTypes::XmlData },
77
+ :html =>{ :type => DataTypes::XmlData },
78
+ :tei => { :type => DataTypes::XmlData },
79
+ :tei_p5 => { :type => DataTypes::XmlData },
80
+ :tei_p4 => { :type => DataTypes::XmlData },
81
+ :gml => { :type => DataTypes::XmlData },
82
+ :wittei => { :type => DataTypes::XmlData },
83
+ :hnml => { :type => DataTypes::XmlData },
84
+ :jpeg => { :type => DataTypes::ImageData },
85
+ :tiff => { :type => DataTypes::ImageData },
86
+ :png => { :type => DataTypes::ImageData },
87
+ :gif => { :type => DataTypes::ImageData },
88
+ :bmp => { :type => DataTypes::ImageData },
89
+ :pdf => { :type => DataTypes::PdfData },
90
+ :text => { :type => DataTypes::SimpleText },
91
+ # Default fallback handler
92
+ :default => { :type => FileRecord }
93
+ }
94
+ end
95
+
48
96
  end
49
-
50
-
97
+
51
98
  end
52
-
99
+
53
100
  end
54
101
  end
@@ -5,42 +5,42 @@ module TaliaUtil
5
5
  # Helper methods that will be used during import job runs.
6
6
  # The import jobs may use the following environment parameters:
7
7
  #
8
- # [*base_url*] The base URL or directory. This will be prefixed to all urls, or if it is
9
- # a local directory, it will be made the current directory during the import
10
- # [*index*] If given, the importer will try to read this document. While this will still
11
- # support the old-style "hyper" format with sigla, it should usually contain a
12
- # main element called "index" followed by "url" entries.
13
- # [*xml*] URL of an XML file to import. This is incompatible with the "index" option.
14
- # If neither "xml" nor "index" are given, the class will try to read the XML data from
15
- # STDIN
16
- # [*importer*] Name of the importer class to be used for the data. Uses the default class if not given
8
+ # [*base_url*] The base URL or directory. This will be prefixed to all urls, or if it is
9
+ # a local directory, it will be made the current directory during the import
10
+ # [*index*] If given, the importer will try to read this document. While this will still
11
+ # support the old-style "hyper" format with sigla, it should usually contain a
12
+ # main element called "index" followed by "url" entries.
13
+ # [*xml*] URL of an XML file to import. This is incompatible with the "index" option.
14
+ # If neither "xml" nor "index" are given, the class will try to read the XML data from
15
+ # STDIN
16
+ # [*importer*] Name of the importer class to be used for the data. Uses the default class if not given
17
17
  # [*reset_store*] - If this is set, the data store will be cleared before the import
18
18
  # [*user*] Username for HTTP authentication, if required
19
19
  # [*pass*] Password for HTTP authentication, if required
20
20
  # [*callback*] Name of a class. If given, the import will call the #before_import and #after_import
21
- # methods on an object of that class. The call will receive a block which may be
22
- # yielded to for each progress step and which can receive the overall number of
23
- # steps
21
+ # methods on an object of that class. The call will receive a block which may be
22
+ # yielded to for each progress step and which can receive the overall number of
23
+ # steps
24
24
  # [*extension*] Only used with index files; file extension to use
25
25
  # [*duplicates*] How to deal with elements that already exist in the datastore. This may be
26
- # set to one of the following options (default: :skip):
27
- # * :add - Database fields will be updated and the system will add semantic
28
- # properties as additional values, without removing any of the existing
29
- # semantic relations. Example: If the data store already
30
- # contains a title for an element, and the import file contains another
31
- # for that element, the element will have two titles after the import.
32
- # The system will not check for duplicates. Files will always be imported
33
- # in addition to the existing ones.
34
- # * :update - Database fields will be updated, and semantic properties will
35
- # be overwritten with the new value(s). Semantic properties that are not
36
- # included in the import data will be left untouched. In the example above,
37
- # the element would only contain the new title. If the element also contained
38
- # author information, and no author information was in the import file, the
39
- # existing author information will be untouched. Existing files are replaced
40
- # if the import contains new files
41
- # * :overwrite - Database fields will be updated. All semantic data will be
42
- # deleted before the import. Files are always removed.
43
- # * :skip - If an element already exists, the import will be skipped.
26
+ # set to one of the following options (default: :skip):
27
+ # * :add - Database fields will be updated and the system will add semantic
28
+ # properties as additional values, without removing any of the existing
29
+ # semantic relations. Example: If the data store already
30
+ # contains a title for an element, and the import file contains another
31
+ # for that element, the element will have two titles after the import.
32
+ # The system will not check for duplicates. Files will always be imported
33
+ # in addition to the existing ones.
34
+ # * :update - Database fields will be updated, and semantic properties will
35
+ # be overwritten with the new value(s). Semantic properties that are not
36
+ # included in the import data will be left untouched. In the example above,
37
+ # the element would only contain the new title. If the element also contained
38
+ # author information, and no author information was in the import file, the
39
+ # existing author information will be untouched. Existing files are replaced
40
+ # if the import contains new files
41
+ # * :overwrite - Database fields will be updated. All semantic data will be
42
+ # deleted before the import. Files are always removed.
43
+ # * :skip - If an element already exists, the import will be skipped.
44
44
  #
45
45
  # [*trace*] Enable tracing output for errors. (By default, this takes the rake task's setting
46
46
  # if possible)
@@ -153,20 +153,6 @@ module TaliaCore
153
153
  new_rec = DataTypes::DataRecord.find(data_record.id)
154
154
  assert_equal(expected_content, new_rec.content_string)
155
155
  end
156
-
157
- def test_class_type_from
158
- ['text/plain'].each do |mime|
159
- assert_equal('SimpleText', DataTypes::FileRecord.class_type_from(mime))
160
- end
161
-
162
- @image_mime_types.each { |mime| assert_equal('ImageData', DataTypes::FileRecord.class_type_from(mime)) }
163
-
164
- ['text/xml', 'application/xml'].each do |mime|
165
- assert_equal('XmlData', DataTypes::FileRecord.class_type_from(mime))
166
- end
167
-
168
- assert_equal('DataRecord', DataTypes::FileRecord.class_type_from('application/rtf'))
169
- end
170
156
 
171
157
  end
172
158
  end
@@ -0,0 +1,41 @@
1
+ require 'test/unit'
2
+
3
+ # Load the helper class
4
+ require File.join(File.dirname(__FILE__), '..', '..', 'test_helper')
5
+
6
+ module TaliaCore
7
+
8
+ # Test the DataRecord storage class
9
+ class MimeMappingTest < ActiveSupport::TestCase
10
+
11
+ def setup
12
+ @image_mime_types = ['image/gif', 'image/jpeg', 'image/png', 'image/tiff', 'image/bmp']
13
+ end
14
+
15
+ def test_class_type_from
16
+ ['text/plain'].each do |mime|
17
+ assert_equal(DataTypes::SimpleText, DataTypes::MimeMapping.class_type_from(mime))
18
+ end
19
+
20
+ @image_mime_types.each { |mime| assert_equal(DataTypes::ImageData, DataTypes::MimeMapping.class_type_from(mime), "Wrong type for #{mime} - #{DataTypes::MimeMapping.class_type_from(mime)}") }
21
+
22
+ ['text/xml', 'application/xml'].each do |mime|
23
+ assert_equal(DataTypes::XmlData, DataTypes::MimeMapping.class_type_from(mime), "Wrong type for #{mime} - #{DataTypes::MimeMapping.class_type_from(mime)}")
24
+ end
25
+
26
+ assert_equal(DataTypes::FileRecord, DataTypes::MimeMapping.class_type_from('application/rtf'))
27
+ end
28
+
29
+ def test_add_mime_mapping
30
+ DataTypes::MimeMapping.add_mapping(Mime::Type.new('foo'), DataTypes::ImageData)
31
+ assert_equal(DataTypes::ImageData, DataTypes::MimeMapping.class_type_from('foo'))
32
+ end
33
+
34
+ def test_add_mime_loader
35
+ DataTypes::MimeMapping.add_mapping(Mime::Type.new('bar'), DataTypes::ImageData, :create_iip)
36
+ assert_equal(DataTypes::ImageData, DataTypes::MimeMapping.class_type_from(:bar))
37
+ assert_equal(:create_iip, DataTypes::MimeMapping.loader_type_from(:bar))
38
+ end
39
+
40
+ end
41
+ end
data/test/test_helper.rb CHANGED
@@ -24,6 +24,13 @@ module TaliaCore
24
24
  # Check if we have old (1.2.3-Rails) style ActiveRecord without fixture cache
25
25
  @@new_ar = Fixtures.respond_to?(:reset_cache)
26
26
 
27
+ # The tests expect the system to be set to iip creation
28
+ TaliaCore::DataTypes::MimeMapping.add_mapping(:jpeg, DataTypes::ImageData, :create_iip)
29
+ TaliaCore::DataTypes::MimeMapping.add_mapping(:tiff, DataTypes::ImageData, :create_iip)
30
+ TaliaCore::DataTypes::MimeMapping.add_mapping(:png, DataTypes::ImageData, :create_iip)
31
+ TaliaCore::DataTypes::MimeMapping.add_mapping(:bmp, DataTypes::ImageData, :create_iip)
32
+ TaliaCore::DataTypes::MimeMapping.add_mapping(:gif, DataTypes::ImageData, :create_iip)
33
+
27
34
  # connect the database
28
35
  def self.startup
29
36
  if(!TaliaCore::Initializer.initialized)
metadata CHANGED
@@ -1,18 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: talia_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danilo Giacomi
8
8
  - Roberto Tofani
9
9
  - Luca Guidi
10
+ - Michele Nucci
10
11
  - Daniel Hahn
11
12
  autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
15
 
15
- date: 2009-12-04 00:00:00 +01:00
16
+ date: 2009-12-15 00:00:00 +01:00
16
17
  default_executable: talia
17
18
  dependencies:
18
19
  - !ruby/object:Gem::Dependency
@@ -66,7 +67,7 @@ dependencies:
66
67
  version: 2.0.6
67
68
  version:
68
69
  - !ruby/object:Gem::Dependency
69
- name: averell23-bj
70
+ name: bjj
70
71
  type: :runtime
71
72
  version_requirement:
72
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -232,6 +233,7 @@ files:
232
233
  - generators/talia_base/templates/app/views/types/show.html.erb
233
234
  - generators/talia_base/templates/config/routes.rb
234
235
  - generators/talia_base/templates/config/talia_initializer.rb
236
+ - generators/talia_base/templates/config/warble.rb
235
237
  - generators/talia_base/templates/migrations/bj_migration.rb
236
238
  - generators/talia_base/templates/migrations/constraint_migration.rb
237
239
  - generators/talia_base/templates/migrations/create_active_sources.rb
@@ -403,6 +405,7 @@ test_files:
403
405
  - test/talia_core/data_types/file_record_test.rb
404
406
  - test/talia_core/data_types/iip_data_test.rb
405
407
  - test/talia_core/data_types/image_data_test.rb
408
+ - test/talia_core/data_types/mime_mapping_test.rb
406
409
  - test/talia_core/data_types/pdf_data_test.rb
407
410
  - test/talia_core/data_types/xml_data_test.rb
408
411
  - test/talia_core/workflow/publication_workflow_test.rb