package com.collabnet.ce.webservices; import com.collabnet.ce.soap50.types.SoapFieldValues; import com.collabnet.ce.soap50.webservices.tracker.ArtifactSoapDO; import com.collabnet.ce.soap50.webservices.tracker.ArtifactSoapRow; import java.rmi.RemoteException; import java.util.Date; /** * @author Kohsuke Kawaguchi */ public class CTFArtifact extends CTFObject { private ArtifactSoapDO data; /** * If true, we need to fetch the full {@link ArtfifactSoapDO} before we update. */ private boolean needsRefill; CTFArtifact(CTFObject parent, ArtifactSoapRow src) { super(parent, src.getId()); needsRefill = true; this.data = new ArtifactSoapDO(); data.setActualHours(src.getActualHours()); data.setAssignedTo(src.getAssignedToUsername()); data.setCategory(src.getCategory()); data.setCloseDate(src.getCloseDate()); data.setCreatedBy(src.getSubmittedByUsername()); data.setCreatedDate(src.getSubmittedDate()); data.setCustomer(src.getCustomer()); data.setDescription(src.getDescription()); data.setEstimatedHours(src.getEstimatedHours()); data.setFolderId(src.getFolderId()); data.setGroup(src.getArtifactGroup()); data.setId(src.getId()); data.setLastModifiedDate(src.getLastModifiedDate()); data.setPriority(src.getPriority()); data.setStatus(src.getStatus()); data.setStatusClass(src.getStatusClass()); } CTFArtifact(CTFObject parent, ArtifactSoapDO data) { super(parent, data.getId()); this.data = data; } /** * Obtains all the fields, not just those ones that are made available to us during the search. */ public void refill() throws RemoteException { data = app.getTrackerSoap().getArtifactData(app.getSessionId(),getId()); needsRefill = false; } public String getURL() { return app.getServerUrl() + "/sf/go/" + getId(); } public void update(String comment) throws RemoteException { update(comment,null,null,null); } public void update(String comment, String fileName, String fileMimeType, CTFFile file) throws RemoteException { if (needsRefill) throw new IllegalStateException("CTFArtifact needs to be filled before it can be updated"); app.getTrackerSoap().setArtifactData(app.getSessionId(), data, comment, fileName, fileMimeType, file!=null?file.getId():null); } public String getDescription() { return data.getDescription(); } public void setDescription(String description) { data.setDescription(description); } public String getCategory() { return data.getCategory(); } public void setCategory(String category) { data.setCategory(category); } public String getGroup() { return data.getGroup(); } public void setGroup(String group) { data.setGroup(group); } public String getStatus() { return data.getStatus(); } public void setStatus(String status) { data.setStatus(status); } public String getStatusClass() { return data.getStatusClass(); } public void setStatusClass(String statusClass) { data.setStatusClass(statusClass); } public String getCustomer() { return data.getCustomer(); } public void setCustomer(String customer) { data.setCustomer(customer); } public int getPriority() { return data.getPriority(); } public void setPriority(int priority) { data.setPriority(priority); } public int getEstimatedHours() { return data.getEstimatedHours(); } public void setEstimatedHours(int estimatedHours) { data.setEstimatedHours(estimatedHours); } public int getActualHours() { return data.getActualHours(); } public void setActualHours(int actualHours) { data.setActualHours(actualHours); } public Date getCloseDate() { return data.getCloseDate(); } public void setCloseDate(Date closeDate) { data.setCloseDate(closeDate); } public String getAssignedTo() { return data.getAssignedTo(); } public void setAssignedTo(String assignedTo) { data.setAssignedTo(assignedTo); } public String getReportedReleaseId() { return data.getReportedReleaseId(); } public void setReportedReleaseId(String reportedReleaseId) { data.setReportedReleaseId(reportedReleaseId); } public String getResolvedReleaseId() { return data.getResolvedReleaseId(); } public void setResolvedReleaseId(String resolvedReleaseId) { data.setResolvedReleaseId(resolvedReleaseId); } public SoapFieldValues getFlexFields() { return data.getFlexFields(); } public void setFlexFields(SoapFieldValues flexFields) { data.setFlexFields(flexFields); } public String getPath() { return data.getPath(); } public String getTitle() { return data.getTitle(); } public void setTitle(String title) { data.setTitle(title); } public String getFolderId() { return data.getFolderId(); } public void setFolderId(String folderId) { data.setFolderId(folderId); } public int getVersion() { return data.getVersion(); } public String getCreatedBy() { return data.getCreatedBy(); } public String getLastModifiedBy() { return data.getLastModifiedBy(); } public Date getCreatedDate() { return data.getCreatedDate(); } public Date getLastModifiedDate() { return data.getLastModifiedDate(); } }