『Rubyを使ってTRICHORDのデータをCSV形式にする』の続きです。
今度はTRICHORDのストーリーデータをCSV形式にしてみました。
使い方は前回とほとんど同じです。まず、Rubyをインストールして、次に下に書いてあるRubyスクリプトを『ワークスペース/sctipts/stories_csv.rb』と言うファイルにします。コマンドラインから
ruby stories_csv.rb
と入力して実行すると、同じディレクトリに『stories.csv』というCSVファイルが出来上がります。
このファイルにはストーリーデータがその所属するフィーチャーやイテレーションとともに出力されています。
ここまでできれば、タスクデータとストーリーデータをつなげて全部の情報の入ったCSVを出すこともできそうなので、またチャレンジしてみます。
require 'rexml/document'
require 'csv'
require 'nkf'
def getElementText(element, name)
child = element.elements[name]
if not child
return nil
end
if not child.text
return nil
end
return NKF.nkf("-s", child.text)
end
def get_iteration_theme(iterations, iterationId)
iterations.each do |iteration|
if iterationId == getElementText(iteration, "id")
return getElementText(iteration, "theme")
end
end
return ""
end
def get_release_theme(iterations, iterationId)
iterations.each do |iteration|
if iterationId == getElementText(iteration, "id")
release = iteration.get_elements('../..')[0]
return getElementText(release, "theme")
end
end
return ""
end
def get_feature_name(story)
feature = story.get_elements('../..')[0]
return getElementText(feature, "name")
end
def get_size(story)
size = story.get_elements('size')[0]
if size == nil
return ""
end
return getElementText(size, "shortString")
end
CSV.open("stories.csv","w") do |writer|
writer << ["release", "iteration", "feature", "story", "size"]
File.open("../projectplan.xml") do |file|
doc = REXML::Document.new(file)
stories = doc.get_elements('*/*/Feature/stories/Story')
iterations = doc.get_elements('*/*/Release/iterations/Iteration')
stories.each do |story|
column = []
column << get_release_theme(iterations, getElementText(story, "iterationId"))
column << get_iteration_theme(iterations, getElementText(story, "iterationId"))
column << get_feature_name(story)
column << getElementText(story, "name")
column << get_size(story)
writer << column
end
end
end