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



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

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



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

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



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

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



157
158
159
# File 'app/presenters/project_xml_presenter.rb', line 157

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



226
227
228
229
230
231
232
# File 'app/presenters/project_xml_presenter.rb', line 226

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



235
236
237
# File 'app/presenters/project_xml_presenter.rb', line 235

def department_code(index)
  departments[index]
end

#documentNokogiri::XML::Document

Returns The XML document.

Returns:

  • (Nokogiri::XML::Document)

    The XML document



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

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



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

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



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

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



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

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



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

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



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

delegate :hpc, to: :project_metadata

#project_directoryArray<String>

Returns The project directory paths.

Returns:

  • (Array<String>)

    The project directory paths



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

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



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

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



205
206
207
208
# File 'app/presenters/project_xml_presenter.rb', line 205

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



212
213
214
215
216
217
218
219
220
221
222
# File 'app/presenters/project_xml_presenter.rb', line 212

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



162
163
164
# File 'app/presenters/project_xml_presenter.rb', line 162

def project_resource_type
  .resource_type
end

#project_visibilityString

Returns The project visibility.

Returns:

  • (String)

    The project visibility



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

delegate :project_visibility, to: :project_metadata

#provisional_project?Boolean

Returns Whether the project is provisional.

Returns:

  • (Boolean)

    Whether the project is provisional



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

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



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

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



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

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



240
241
242
# File 'app/presenters/project_xml_presenter.rb', line 240

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



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

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



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

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



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

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



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

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)



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

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

  return "AdminReview" if project_status == Project::PENDING_STATUS

  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



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

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



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

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

#submissionProvenanceEvent

Returns The first project submission event.

Returns:



118
119
120
# File 'app/presenters/project_xml_presenter.rb', line 118

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

#submissionsArray<ProvenanceEvent>

Returns The project submission events.

Returns:



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

def submissions
  [submission]
end