Class: ProjectXmlPresenter

Inherits:
Object
  • Object
show all
Defined in:
app/presenters/project_xml_presenter.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project) ⇒ ProjectXmlPresenter

Returns a new instance of ProjectXmlPresenter.

Parameters:

  • project (Project)

    The project for the presenter



37
38
39
40
# File 'app/presenters/project_xml_presenter.rb', line 37

def initialize(project)
  @project = project
  @project_metadata = @project.
end

Instance Attribute Details

#projectObject (readonly)

Returns the value of attribute project.



5
6
7
# File 'app/presenters/project_xml_presenter.rb', line 5

def project
  @project
end

#project_metadataObject (readonly)

Returns the value of attribute project_metadata.



5
6
7
# File 'app/presenters/project_xml_presenter.rb', line 5

def 
  @project_metadata
end

Instance Method Details

#approval_date_timeString

Returns The date and time of the approval.

Returns:

  • (String)

    The date and time of the approval



143
144
145
146
147
# File 'app/presenters/project_xml_presenter.rb', line 143

def approval_date_time
  return nil if approval_note.nil?

  approval_note[:note_date_time]
end

#approved_byString

Returns The user ID of the user who approved the project.

Returns:

  • (String)

    The user ID of the user who approved the project



136
137
138
139
140
# File 'app/presenters/project_xml_presenter.rb', line 136

def approved_by
  return if approval_note.nil?

  approval_note[:note_by]
end

#data_use_agreement?String

Returns Whether or not the project data use agreement.

Returns:

  • (String)

    Whether or not the project data use agreement



150
151
152
# File 'app/presenters/project_xml_presenter.rb', line 150

def data_use_agreement?
  .data_use_agreement.present?
end

#department(index) ⇒ String

Returns The department code for departments associated with the project.

Parameters:

  • index (Integer)

    The index of the department code to retrieve

Returns:

  • (String)

    The department code for departments associated with the project



219
220
221
222
223
224
225
# File 'app/presenters/project_xml_presenter.rb', line 219

def department(index)
  value = departments[index]
  if value.length < 6
    value = value.rjust(6, "0")
  end
  value
end

#department_code(index) ⇒ String

Returns The department code for the project.

Returns:

  • (String)

    The department code for the project



228
229
230
# File 'app/presenters/project_xml_presenter.rb', line 228

def department_code(index)
  departments[index]
end

#documentNokogiri::XML::Document

Returns The XML document.

Returns:

  • (Nokogiri::XML::Document)

    The XML document



43
# File 'app/presenters/project_xml_presenter.rb', line 43

delegate :document, to: :build

#globus_enable_approvedString

Returns Whether the request for a Globus mount is approved.

Returns:

  • (String)

    Whether the request for a Globus mount is approved



51
52
53
54
55
56
57
# File 'app/presenters/project_xml_presenter.rb', line 51

def globus_enable_approved
  if globus_enable_approved?
    "true"
  else
    "false"
  end
end

#globus_enable_approved?Boolean

Returns Whether the request for a Globus mount is approved.

Returns:

  • (Boolean)

    Whether the request for a Globus mount is approved



46
47
48
# File 'app/presenters/project_xml_presenter.rb', line 46

def globus_enable_approved?
  .globus_request == "Yes"
end

#globus_enable_requestedString

Returns Whether the request for a Globus mount is requested.

Returns:

  • (String)

    Whether the request for a Globus mount is requested



65
66
67
68
69
70
71
# File 'app/presenters/project_xml_presenter.rb', line 65

def globus_enable_requested
  if globus_enable_requested?
    "true"
  else
    "false"
  end
end

#globus_enable_requested?Boolean

Returns Whether there is a request for a Globus mount.

Returns:

  • (Boolean)

    Whether there is a request for a Globus mount



60
61
62
# File 'app/presenters/project_xml_presenter.rb', line 60

def globus_enable_requested?
  .globus_request == "Yes"
end

#hpcString

Returns Whether or not the project is associated with HPC.

Returns:

  • (String)

    Whether or not the project is associated with HPC



165
# File 'app/presenters/project_xml_presenter.rb', line 165

delegate :hpc, to: :project_metadata

#project_directoryArray<String>

Returns The project directory paths.

Returns:

  • (Array<String>)

    The project directory paths



192
193
194
# File 'app/presenters/project_xml_presenter.rb', line 192

def project_directory
  [project.project_directory]
end

#project_directory_approved?Boolean

Returns Whether the project directory request is approved.

Returns:

  • (Boolean)

    Whether the project directory request is approved



171
172
173
174
# File 'app/presenters/project_xml_presenter.rb', line 171

def project_directory_approved?
  expectations = storage_performance_expectations
  expectations[:approved] || false
end

#project_directory_path(index) ⇒ String

Returns The project directory path.

Parameters:

  • index (Integer)

    The index of the project directory

Returns:

  • (String)

    The project directory path



198
199
200
201
# File 'app/presenters/project_xml_presenter.rb', line 198

def project_directory_path(index)
  entry = project_directory[index]
  entry
end

#project_directory_protocol(index) ⇒ String

Returns The protocol for the project directory.

Parameters:

  • index (Integer)

    The index of the project directory

Returns:

  • (String)

    The protocol for the project directory



205
206
207
208
209
210
211
212
213
214
215
# File 'app/presenters/project_xml_presenter.rb', line 205

def project_directory_protocol(index)
  entry = project_directory[index]
  segments = entry.split("://")

  if segments.length > 1
    value = segments[0]
    value.upcase
  else
    ProjectMetadata.default_directory_protocol
  end
end

#project_resource_typeString

Returns The project resource type.

Returns:

  • (String)

    The project resource type



155
156
157
# File 'app/presenters/project_xml_presenter.rb', line 155

def project_resource_type
  .resource_type
end

#project_visibilityString

Returns The project visibility.

Returns:

  • (String)

    The project visibility



168
# File 'app/presenters/project_xml_presenter.rb', line 168

delegate :project_visibility, to: :project_metadata

#provisional_project?Boolean

Returns Whether the project is provisional.

Returns:

  • (Boolean)

    Whether the project is provisional



160
161
162
# File 'app/presenters/project_xml_presenter.rb', line 160

def provisional_project?
  .provisional
end

#request_date_timeString

Returns The date and time of the request.

Returns:

  • (String)

    The date and time of the request



128
129
130
131
132
133
# File 'app/presenters/project_xml_presenter.rb', line 128

def request_date_time
  return if submission.nil?

  value = submission.created_at
  value.strftime("%Y-%m-%dT%H:%M:%S%:z")
end

#requested_byString

Returns The user ID of the user who requested the project.

Returns:

  • (String)

    The user ID of the user who requested the project



121
122
123
124
125
# File 'app/presenters/project_xml_presenter.rb', line 121

def requested_by
  return if submission.nil?

  submission.event_person
end

#requested_storageString

Returns The requested project storage capacity.

Returns:

  • (String)

    The requested project storage capacity



233
234
235
# File 'app/presenters/project_xml_presenter.rb', line 233

def requested_storage
  storage_performance_expectations[:requested] || nil
end

#smb_enable_approvedString

Returns Whether the request for the SMB mount is approved.

Returns:

  • (String)

    Whether the request for the SMB mount is approved



79
80
81
82
83
84
85
# File 'app/presenters/project_xml_presenter.rb', line 79

def smb_enable_approved
  if smb_enable_approved?
    "true"
  else
    "false"
  end
end

#smb_enable_approved?Boolean

Returns Whether the request for the SMB mount is approved.

Returns:

  • (Boolean)

    Whether the request for the SMB mount is approved



74
75
76
# File 'app/presenters/project_xml_presenter.rb', line 74

def smb_enable_approved?
  .smb_request == "Yes"
end

#smb_enable_requestedString

Returns Whether the request for the SMB mount is requested.

Returns:

  • (String)

    Whether the request for the SMB mount is requested



93
94
95
96
97
98
99
# File 'app/presenters/project_xml_presenter.rb', line 93

def smb_enable_requested
  if smb_enable_requested?
    "true"
  else
    "false"
  end
end

#smb_enable_requested?Boolean

Returns Whether there is a request for SMB mount.

Returns:

  • (Boolean)

    Whether there is a request for SMB mount



88
89
90
# File 'app/presenters/project_xml_presenter.rb', line 88

def smb_enable_requested?
  .smb_request == "Yes"
end

#statusString

NOTE: Valid values are one of: ‘AdminReview’, ‘Approved’, ‘Active’, ‘Retired’, ‘Published’

Returns:

  • (String)

    The project status (mapped to values specified by the TigerData XML schema)



103
104
105
106
107
108
# File 'app/presenters/project_xml_presenter.rb', line 103

def status
  project_status = project.status
  return if project_status.nil?

  project_status.capitalize
end

#storage_capacity_approved?Boolean

Returns Whether the project storage capacity request is approved.

Returns:

  • (Boolean)

    Whether the project storage capacity request is approved



177
178
179
180
181
182
183
# File 'app/presenters/project_xml_presenter.rb', line 177

def storage_capacity_approved?
  storage_capacity_size = storage_capacity["size"] || {}
  return false unless storage_capacity_size.key?(:approved)

  approved_size = storage_capacity_size[:approved] || 0
  approved_size > 0
end

#storage_performance_requested?Boolean

Returns Whether the project storage request is approved.

Returns:

  • (Boolean)

    Whether the project storage request is approved



186
187
188
189
# File 'app/presenters/project_xml_presenter.rb', line 186

def storage_performance_requested?
  requested = storage_performance_expectations[:requested]
  requested.present?
end

#submissionProvenanceEvent

Returns The first project submission event.

Returns:



111
112
113
# File 'app/presenters/project_xml_presenter.rb', line 111

def submission
  @submission ||= project.provenance_events.find_by(event_type: ProvenanceEvent::SUBMISSION_EVENT_TYPE)
end

#submissionsArray<ProvenanceEvent>

Returns The project submission events.

Returns:



116
117
118
# File 'app/presenters/project_xml_presenter.rb', line 116

def submissions
  [submission]
end