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



147
148
149
150
151
# File 'app/presenters/project_xml_presenter.rb', line 147

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



140
141
142
143
144
# File 'app/presenters/project_xml_presenter.rb', line 140

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



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

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



223
224
225
226
227
228
229
# File 'app/presenters/project_xml_presenter.rb', line 223

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



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

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



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

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
49
# File 'app/presenters/project_xml_presenter.rb', line 46

def globus_enable_approved?
  globus_request = .globus_request
  globus_request[:approved] || false
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



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

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



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

def globus_enable_requested?
  globus_request = .globus_request
  globus_request.present?
end

#hpcString

Returns Whether or not the project is associated with HPC.

Returns:

  • (String)

    Whether or not the project is associated with HPC



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

delegate :hpc, to: :project_metadata

#project_directoryArray<String>

Returns The project directory paths.

Returns:

  • (Array<String>)

    The project directory paths



196
197
198
# File 'app/presenters/project_xml_presenter.rb', line 196

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



175
176
177
178
# File 'app/presenters/project_xml_presenter.rb', line 175

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



202
203
204
205
# File 'app/presenters/project_xml_presenter.rb', line 202

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



209
210
211
212
213
214
215
216
217
218
219
# File 'app/presenters/project_xml_presenter.rb', line 209

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



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

def project_resource_type
  .resource_type
end

#project_visibilityString

Returns The project visibility.

Returns:

  • (String)

    The project visibility



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

delegate :project_visibility, to: :project_metadata

#provisional_project?Boolean

Returns Whether the project is provisional.

Returns:

  • (Boolean)

    Whether the project is provisional



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

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



132
133
134
135
136
137
# File 'app/presenters/project_xml_presenter.rb', line 132

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



125
126
127
128
129
# File 'app/presenters/project_xml_presenter.rb', line 125

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



237
238
239
# File 'app/presenters/project_xml_presenter.rb', line 237

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



82
83
84
85
86
87
88
# File 'app/presenters/project_xml_presenter.rb', line 82

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



76
77
78
79
# File 'app/presenters/project_xml_presenter.rb', line 76

def smb_enable_approved?
  smb_request = .smb_request
  smb_request[:approved] || false
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



97
98
99
100
101
102
103
# File 'app/presenters/project_xml_presenter.rb', line 97

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



91
92
93
94
# File 'app/presenters/project_xml_presenter.rb', line 91

def smb_enable_requested?
  smb_request = .smb_request
  smb_request.present?
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)



107
108
109
110
111
112
# File 'app/presenters/project_xml_presenter.rb', line 107

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



181
182
183
184
185
186
187
# File 'app/presenters/project_xml_presenter.rb', line 181

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



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

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

#submissionProvenanceEvent

Returns The first project submission event.

Returns:



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

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

#submissionsArray<ProvenanceEvent>

Returns The project submission events.

Returns:



120
121
122
# File 'app/presenters/project_xml_presenter.rb', line 120

def submissions
  [submission]
end