package com.github.xbn.experimental.xcontext;
import com.github.xbn.text.CrashIfString;
/**
<p>Implementation of {@code ExceptionContextObject}.</p>
**/
public class XCObject implements ExceptionContextObject {
//state
private String sONm = null;
//Constructors...START
/**
<p>Create a new {@code XCObject}.</p>
<p>This calls<ol>
<li>{@link #setName(String) setName(obj_name)}</li>
</ol></p>
* @see #XCObject(ExceptionContextObject) this(xco)
*/
public XCObject(String obj_name) {
setName(obj_name);
}
/**
<p>Create a new {@code XCObject} as a duplicate of an {@code ExceptionContextObject}.</p>
<p>This<ol>
<li><code>{@link #setName(String) setName}(to_copy.{@link #getName() getName}())</code></li>
</ol></p>
* @see #getObjectCopy()
* @see #XCObject(ExceptionContext, String) this(xc,s)
*/
public XCObject(ExceptionContextObject to_copy) {
setName(to_copy.getName());
}
//Constructors...END
//Setters...START
/**
<p>Set the just-called function in which the error happened (may happen).</p>
* @param obj_name May not be {@code null} or empty. Get with {@link #getName() getName}{@code ()}.
*/
public void setName(String obj_name) {
CrashIfString.nullEmpty(obj_name, "obj_name", null);
sONm = obj_name;
}
//Setters...END
//Getters...START
/**
* @return {@code obj_name}, as provided to {@link #setName(String) setName(s)}, the {@link #XCObject(ExceptionContext, String) constructor}, or the {@link #XCObject(ExceptionContextObject) copy-constructor}.
*/
public String getName() {
return sONm;
}
//Getters...END
//Other...START
/**
<p>Duplicate this {@code XCObject}</p>
* @return <code>(new {@link #XCObject(ExceptionContextObject) XCObject}(this)</code>
*/
public XCObject getObjectCopy() {
return (new XCObject(this));
}
public String toString() {
return "object=\"" + getName() + "\"";
}
/**
* @return {@code true} If {@code to_compareTo} is non-{@code null}, aYYY {@code XCObject}, and {@link #areFieldsEqual(XCObject) areFieldsEqual}{@code ((XCObject)to_compareTo)} is {@code true}.
*/
@Override public boolean equals(Object to_compareTo) {
if(to_compareTo == null) {
throw new NullPointerException("to_compareTo");
}
if(this == to_compareTo) {
return true;
}
if(!(to_compareTo instanceof XCObject)) {
return false;
}
XCObject xco = (XCObject)to_compareTo;
return areFieldsEqual(xco);
}
/**
<p>Are all internal values in the provided {@code XCObject} the same as in <i>{@code this}</i>?.</p>
* @param xc_o May not be {@code null}.
* @return {@link #getName() getName}{@code ().equals(xc_o.getName())}
*/
public boolean areFieldsEqual(XCObject xc_o) {
return getName().equals(xc_o.getName());
}
//Other...END
}