• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IQSS / dataverse / #23250

25 Sep 2024 03:43PM UTC coverage: 20.873%. First build
#23250

Pull #10781

github

web-flow
Merge 682c89fc0 into ea0247887
Pull Request #10781: Improved handling of Globus uploads (experimental async framework)

4 of 417 new or added lines in 15 files covered. (0.96%)

17967 of 86079 relevant lines covered (20.87%)

0.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/edu/harvard/iq/dataverse/globus/GlobusTaskInProgress.java
1
package edu.harvard.iq.dataverse.globus;
2

3
import edu.harvard.iq.dataverse.Dataset;
4
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
5
import jakarta.persistence.Column;
6
import jakarta.persistence.EnumType;
7
import jakarta.persistence.Enumerated;
8
import jakarta.persistence.ManyToOne;
9
import jakarta.persistence.Table;
10
import jakarta.persistence.UniqueConstraint;
11
import java.io.Serializable;
12
import java.sql.Timestamp;
13
import java.util.Arrays;
14
import jakarta.persistence.Entity;
15
import jakarta.persistence.GeneratedValue;
16
import jakarta.persistence.GenerationType;
17
import jakarta.persistence.Id;
18
import jakarta.persistence.JoinColumn;
19

20
/**
21
 *
22
 * @author landreev
23
 */
24
@Entity
25
@Table(uniqueConstraints = {@UniqueConstraint(columnNames = "taskid")})
26
public class GlobusTaskInProgress implements Serializable {
27

28
    private static final long serialVersionUID = 1L;
29
    @Id
30
    @GeneratedValue(strategy = GenerationType.IDENTITY)
31
    private Long id;
32
    
33
    /**
34
     * Globus-side identifier of the task in progress, upload or download
35
     */
36
    @Column(nullable=false, unique = true)
37
    private String taskId;
38

39
    /**
40
     * I was considering giving this enum type a more specific name "TransferType"
41
     * - but maybe there will be another use case where we need to keep track of
42
     * Globus tasks that are not data transfers (?)
43
     */
NEW
44
    public enum TaskType {
×
45

NEW
46
        UPLOAD("UPLOAD"),
×
NEW
47
        DOWNLOAD("DOWNLOAD");
×
48

49
        private final String text;
50

NEW
51
        private TaskType(final String text) {
×
NEW
52
            this.text = text;
×
NEW
53
        }
×
54

55
        public static TaskType fromString(String text) {
NEW
56
            if (text != null) {
×
NEW
57
                for (TaskType taskType : TaskType.values()) {
×
NEW
58
                    if (text.equals(taskType.text)) {
×
NEW
59
                        return taskType;
×
60
                    }
61
                }
62
            }
NEW
63
            throw new IllegalArgumentException("TaskType must be one of these values: " + Arrays.asList(TaskType.values()) + ".");
×
64
        }
65

66
        @Override
67
        public String toString() {
NEW
68
            return text;
×
69
        }
70
    }
71
    
72
    @Column(nullable=false)
73
    @Enumerated(EnumType.STRING)
74
    private TaskType taskType;
75

76
    /**
77
     * Globus API token that should be used to monitor the status of the task
78
     */
79
    @Column(nullable=false)
80
    private String globusToken;
81
    
82
    /**
83
     * This is the the user who initiated the Globus task
84
     */    
85
    @ManyToOne
86
    @JoinColumn
87
    private AuthenticatedUser user;
88
    
89
    @Column(nullable=false)
90
    private String ruleId;
91
    
92
    @JoinColumn(nullable = false)
93
    @ManyToOne
94
    private Dataset dataset;
95
    
96
    @Column
97
    private Timestamp startTime;
98
    
NEW
99
    public GlobusTaskInProgress() {
×
NEW
100
    }
×
101

NEW
102
    GlobusTaskInProgress(String taskId, TaskType taskType, Dataset dataset, String globusToken, AuthenticatedUser authUser, String ruleId, Timestamp startTime) {
×
NEW
103
        this.taskId = taskId; 
×
NEW
104
        this.taskType = taskType; 
×
NEW
105
        this.dataset = dataset;
×
NEW
106
        this.globusToken = globusToken; 
×
NEW
107
        this.user = authUser; 
×
NEW
108
        this.ruleId = ruleId;
×
NEW
109
        this.startTime = startTime; 
×
NEW
110
    }
×
111
    
112

113
        
114
    public Long getId() {
NEW
115
        return id;
×
116
    }
117

118
    public void setId(Long id) {
NEW
119
        this.id = id;
×
NEW
120
    }
×
121
    
122
    public String getTaskId() {
NEW
123
        return taskId;
×
124
    }
125
    
126
    public void setTaskId(String taskId) {
NEW
127
        this.taskId = taskId;
×
NEW
128
    }
×
129
    
130
    public TaskType getTaskType() {
NEW
131
        return taskType;
×
132
    }
133

134
    public void setTaskType(TaskType taskType) {
NEW
135
        this.taskType = taskType;
×
NEW
136
    }
×
137

138
    public String getGlobusToken() {
NEW
139
        return globusToken;
×
140
    }
141

142
    public void setGlobusToken(String clientToken) {
NEW
143
        this.globusToken = clientToken;
×
NEW
144
    }
×
145
    
146
    public AuthenticatedUser getLocalUser() {
NEW
147
        return user;
×
148
    }
149

150
    public void setLocalUser(AuthenticatedUser authUser) {
NEW
151
        this.user = authUser;
×
NEW
152
    }
×
153

154
    public String getRuleId() {
NEW
155
        return ruleId;
×
156
    }
157

158
    public void setRuleId(String ruleId) {
NEW
159
        this.ruleId = ruleId;
×
NEW
160
    }
×
161
    public Dataset getDataset() {
NEW
162
        return dataset;
×
163
    }
164

165
    public void setDataset(Dataset dataset) {
NEW
166
        this.dataset = dataset;
×
NEW
167
    }
×
168

169
    public Timestamp getStartTime() {
NEW
170
        return startTime;
×
171
    }
172

173
    public void setStartTime(Timestamp startTime) {
NEW
174
        this.startTime = startTime;
×
NEW
175
    }
×
176
    
177
    @Override
178
    public int hashCode() {
NEW
179
        int hash = 0;
×
NEW
180
        hash += (id != null ? id.hashCode() : 0);
×
NEW
181
        return hash;
×
182
    }
183

184
    @Override
185
    public boolean equals(Object object) {
186
        // TODO: Warning - this method won't work in the case the id fields are not set
NEW
187
        if (!(object instanceof GlobusTaskInProgress)) {
×
NEW
188
            return false;
×
189
        }
NEW
190
        GlobusTaskInProgress other = (GlobusTaskInProgress) object;
×
NEW
191
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
×
NEW
192
            return false;
×
193
        }
NEW
194
        return true;
×
195
    }
196

197
    @Override
198
    public String toString() {
NEW
199
        return "edu.harvard.iq.dataverse.globus.GlobusTaskInProgress[ id=" + id + " ]";
×
200
    }
201
    
202
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc