OSDN Git Service

1d9952eaf54639341ef150c0612865017402e9ae
[tdcgexplorer/nimono-crawlers.git] / lib / location.rb
1 class Location < ActiveRecord::Base
2   has_many :arcs
3
4   def locked_path_pattern
5     case self.code
6     when 'mmd'
7       "upload\\.cgi\\?mode=dl&file=(\\d+)"
8     when 'mmdfile'
9       "\\?mode=pass&idd=(\\d+)"
10     end
11   end
12
13   def path_pattern
14     case self.code
15     when 'mmd'
16       "src/(\\w+)"
17     when 'mmdfile'
18       "\\?id=(\\d+)"
19     when 'mmdacc1'
20       "log/(\\w+)"
21     when 'mmdacc2'
22       "src/(\\w+)"
23     end
24   end
25
26   def generate_locked_arc_code(name)
27     case self.code
28     when 'mmd'
29       code = 'up%04d' % name.to_i
30     when 'mmdfile'
31       code = 'file%04d' % name.to_i
32     end
33     code
34   end
35
36   def generate_arc_code_and_extname(name)
37     if md = /\.(.+)\z/.match(name)
38       extname = md[1]
39       code = File.basename(name, '.' + extname)
40     else
41       extname = nil
42       code = name.dup
43     end
44     case self.code
45     when 'mmd'
46       #
47     when 'mmdfile'
48       code = 'file%04d' % code.to_i
49     when 'mmdacc1'
50       code = 'mini%04d' % code.to_i
51     when 'mmdacc2'
52       code = code[3..-1]
53     end
54     [ code, extname ]
55   end
56
57   def create_arc(name, summary, size, date, origname, locked = false)
58     code, extname = generate_arc_code_and_extname(name)
59     arc = arcs.find_by_code(code)
60     if arc
61       puts "found code: #{code}"
62       return arc
63     end
64     puts "arcs.create code: #{code}"
65     arc = arcs.create(:code => code, :extname => extname, :summary => summary, :origname => origname, :locked => !!locked)
66   end
67
68   def update_arc(name, summary, size, date, origname, locked = false)
69     code, extname = generate_arc_code_and_extname(name)
70     arc = arcs.find_or_initialize_by_code(code)
71     puts "arc code: #{code}"
72     arc.update_attributes(:extname => extname, :summary => summary, :origname => origname, :locked => locked)
73   end
74 end