Fixed my mistake of writing changes the the wronge file
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# exceptionhandler_helper.rb
|
# exceptionhandler_controller.rb
|
||||||
# @date Feb. 15, 2012
|
# @date Feb. 15, 2012
|
||||||
# @author ricky barrette <rickbarrette@gmail.com>
|
# @author ricky barrette <rickbarrette@gmail.com>
|
||||||
# @authro twenty codes <twentycodes@gmail.com>
|
# @author twenty codes <twentycodes@gmail.com>
|
||||||
#
|
#
|
||||||
# Copyright 2012 Rick Barrette
|
# Copyright 2012 Rick Barrette
|
||||||
#
|
#
|
||||||
@@ -17,145 +17,38 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
module ExceptionhandlerHelper
|
# This controller class will handler incomming http requests containing new exception reports.
|
||||||
|
# When a new exception report is recieved, it will be compared to existing bug issues.
|
||||||
|
# If there is a match, the existing issue will be updated
|
||||||
|
# if not a new bug issue will be generated.
|
||||||
|
class ExceptionhandlerController < ApplicationController
|
||||||
|
unloadable
|
||||||
|
|
||||||
# Checks the database for exisiting reports
|
helper :exceptionhandler
|
||||||
# @return id report is existing else 0
|
include ExceptionhandlerHelper
|
||||||
def check_for_existing_report
|
|
||||||
bug_id = tracker.id
|
|
||||||
issues = Project.find_by_name(params[:app]).issues
|
|
||||||
issues.each do |issue|
|
|
||||||
if issue.tracker_id == bug_id
|
|
||||||
id = check_issue(issue)
|
|
||||||
if id > 0
|
|
||||||
return id
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return 0;
|
|
||||||
end
|
|
||||||
|
|
||||||
# checks a specific issue agains params
|
def index
|
||||||
# @return id of report if matching, else 0
|
if params.size < 9
|
||||||
def check_issue(issue)
|
@output = "<strong> not enough args </strong>"
|
||||||
if issue.subject == params[:msg]
|
elsif Project.find_by_name(params[:app]) == nil
|
||||||
if check_issue_custom_values(issue)
|
@output = "No Project Found"
|
||||||
return issue.id
|
else
|
||||||
|
issue_id = check_for_existing_report
|
||||||
|
if issue_id > 0
|
||||||
|
update_report(issue_id)
|
||||||
|
@output = "Updated report"
|
||||||
else
|
else
|
||||||
return 0
|
issue = create_new_report
|
||||||
end
|
if issue.valid?
|
||||||
else
|
issue.save
|
||||||
return 0
|
@output = "New report filed"
|
||||||
end
|
else
|
||||||
end
|
@output = issue.errors.full_messages
|
||||||
|
|
||||||
#checks if this issue is a match for params based on it's custom values'
|
|
||||||
# @return true if matching
|
|
||||||
def check_issue_custom_values (issue)
|
|
||||||
count = 0
|
|
||||||
custom_fields = CustomField
|
|
||||||
issue.custom_field_values.each do |value|
|
|
||||||
case custom_fields.find_by_id(value.custom_field_id).name
|
|
||||||
when "Version"
|
|
||||||
if value.value == params[:version]
|
|
||||||
count += 1
|
|
||||||
end
|
|
||||||
when "StackTrace"
|
|
||||||
if value.value == params[:stackTrace]
|
|
||||||
count += 1
|
|
||||||
end
|
|
||||||
when "Package"
|
|
||||||
if value.value == params[:package]
|
|
||||||
count += 1
|
|
||||||
end
|
|
||||||
when "Cause"
|
|
||||||
if value.value == params[:cause]
|
|
||||||
count += 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if count == 4
|
|
||||||
return true
|
|
||||||
else
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# files a new exception report in redmine
|
|
||||||
# @return true if new report was filed
|
|
||||||
def create_new_report
|
|
||||||
issue = Issue.new
|
|
||||||
issue.tracker = tracker
|
|
||||||
issue.subject = params[:msg]
|
|
||||||
issue.description = params[:description]
|
|
||||||
issue.project = Project.find_by_name(params[:app])
|
|
||||||
issue.start_date = Time.now.localtime.strftime("%Y-%m-%d %T")
|
|
||||||
issue.priority = IssuePriority.find_by_name("Normal")
|
|
||||||
issue.author = User.anonymous
|
|
||||||
issue.status = IssueStatus.find_by_name("New")
|
|
||||||
|
|
||||||
issue.custom_values = [
|
|
||||||
create_custom_value(CustomField.find_by_name("StackTrace").id, params[:stackTrace]),
|
|
||||||
create_custom_value(CustomField.find_by_name("Cause").id, params[:cause]),
|
|
||||||
create_custom_value(CustomField.find_by_name("Count").id, "1"),
|
|
||||||
create_custom_value(CustomField.find_by_name("Device").id, params[:device]),
|
|
||||||
create_custom_value(CustomField.find_by_name("Version").id, value = params[:version]),
|
|
||||||
create_custom_value(CustomField.find_by_name("Package").id, value = params[:package]),
|
|
||||||
create_custom_value(CustomField.find_by_name("Date").id, value = params[:date])
|
|
||||||
]
|
|
||||||
return issue
|
|
||||||
end
|
|
||||||
|
|
||||||
# returns a new custom value
|
|
||||||
def create_custom_value(field_id, value)
|
|
||||||
custom_value = CustomValue.new
|
|
||||||
custom_value.custom_field_id = field_id
|
|
||||||
custom_value.value = value
|
|
||||||
custom_value.customized_type = "Issue"
|
|
||||||
return custom_value
|
|
||||||
end
|
|
||||||
|
|
||||||
# retrives an issue by it's id and updates it
|
|
||||||
# @returns updated issue
|
|
||||||
def update_report(issue_id)
|
|
||||||
issue = Issue.find_by_id(issue_id)
|
|
||||||
if params[:description].length > 0
|
|
||||||
description = issue.description
|
|
||||||
description += "\n\n--- New Description --- \n"
|
|
||||||
description += params[:description]
|
|
||||||
issue.description = description
|
|
||||||
end
|
|
||||||
|
|
||||||
custom_fields = CustomField
|
|
||||||
issue.custom_field_values.each do |value|
|
|
||||||
case custom_fields.find_by_id(value.custom_field_id).name
|
|
||||||
when "Device"
|
|
||||||
value.value = value.value += "\n"
|
|
||||||
value.value = value.value += params[:device]
|
|
||||||
when "Date"
|
|
||||||
value.value = value.value += "\n"
|
|
||||||
value.value = value.value += params[:date]
|
|
||||||
when "Count"
|
|
||||||
value.value = (value.value.to_i + 1).to_s
|
|
||||||
end
|
|
||||||
value.save
|
|
||||||
end
|
|
||||||
issue.init_journal(User.anonymous, "Issue updated")
|
|
||||||
issue.save
|
|
||||||
end
|
|
||||||
|
|
||||||
# gets the prodived tracker
|
|
||||||
# if it doesnt exist, defualt to Bug
|
|
||||||
def tracker
|
|
||||||
if(params[:tracker]!= nil)
|
|
||||||
if params[:tracker].length > 0
|
|
||||||
t = Tracker.find_by_name(params[:tracker])
|
|
||||||
if(t != nil)
|
|
||||||
return t
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return Tracker.find_by_name("Bug")
|
rescue RuntimeError
|
||||||
|
@output = "ERROR"
|
||||||
end
|
end
|
||||||
|
|
||||||
end #EOF
|
end #EOF
|
||||||
|
|||||||
@@ -64,13 +64,17 @@ module ExceptionhandlerHelper
|
|||||||
if value.value == params[:stackTrace]
|
if value.value == params[:stackTrace]
|
||||||
count += 1
|
count += 1
|
||||||
end
|
end
|
||||||
|
when "Package"
|
||||||
|
if value.value == params[:package]
|
||||||
|
count += 1
|
||||||
|
end
|
||||||
when "Cause"
|
when "Cause"
|
||||||
if value.value == params[:cause]
|
if value.value == params[:cause]
|
||||||
count += 1
|
count += 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if count == 3
|
if count == 4
|
||||||
return true
|
return true
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
@@ -96,6 +100,7 @@ module ExceptionhandlerHelper
|
|||||||
create_custom_value(CustomField.find_by_name("Count").id, "1"),
|
create_custom_value(CustomField.find_by_name("Count").id, "1"),
|
||||||
create_custom_value(CustomField.find_by_name("Device").id, params[:device]),
|
create_custom_value(CustomField.find_by_name("Device").id, params[:device]),
|
||||||
create_custom_value(CustomField.find_by_name("Version").id, value = params[:version]),
|
create_custom_value(CustomField.find_by_name("Version").id, value = params[:version]),
|
||||||
|
create_custom_value(CustomField.find_by_name("Package").id, value = params[:package]),
|
||||||
create_custom_value(CustomField.find_by_name("Date").id, value = params[:date])
|
create_custom_value(CustomField.find_by_name("Date").id, value = params[:date])
|
||||||
]
|
]
|
||||||
return issue
|
return issue
|
||||||
|
|||||||
Reference in New Issue
Block a user