package org.webcat.grader; import org.webcat.core.User; import com.webobjects.foundation.NSKeyValueCoding; import com.webobjects.foundation.NSKeyValueCodingAdditions; import er.extensions.eof.ERXKey; public class UserSubmissionPair implements NSKeyValueCodingAdditions { //~ Constructors .......................................................... // ---------------------------------------------------------- public UserSubmissionPair(User aUser, Submission aSubmission) { this._user = aUser; this._submission = aSubmission; } //~ Public constants ...................................................... public static final ERXKey<User> user = new ERXKey<User>("user"); public static final ERXKey<Submission> submission = new ERXKey<Submission>("submission"); //~ Methods ............................................................... // ---------------------------------------------------------- public User user() { return _user; } // ---------------------------------------------------------- public Submission submission() { return _submission; } // ---------------------------------------------------------- public boolean userHasSubmission() { return _submission != null; } // ---------------------------------------------------------- public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("<" + user().toString() + ", "); if (submission() != null) { buffer.append(submission().toString()); } else { buffer.append("no submission"); } buffer.append(">"); return buffer.toString(); } // ---------------------------------------------------------- public boolean equals(Object object) { if (object instanceof UserSubmissionPair) { UserSubmissionPair otherPair = (UserSubmissionPair) object; return (otherPair.user() == user() && otherPair.submission() == submission()); } else { return false; } } //~ KVC implementation .................................................... // ---------------------------------------------------------- public void takeValueForKeyPath(Object value, String keyPath) { NSKeyValueCodingAdditions.DefaultImplementation.takeValueForKeyPath( this, value, keyPath); } // ---------------------------------------------------------- public Object valueForKeyPath(String keyPath) { return NSKeyValueCodingAdditions.DefaultImplementation.valueForKeyPath( this, keyPath); } // ---------------------------------------------------------- public void takeValueForKey(Object value, String key) { NSKeyValueCoding.DefaultImplementation.takeValueForKey( this, value, key); } // ---------------------------------------------------------- public Object valueForKey(String key) { return NSKeyValueCoding.DefaultImplementation.valueForKey(this, key); } //~ Static/instance variables ............................................. private User _user; private Submission _submission; }