package com.kdcloud.ext.rehab.db;
import java.util.Date;
import java.util.List;
import javax.persistence.Id;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.annotation.Serialized;
public class CompleteExercise {
@Id
Long id;
String name;
int number;
Key<RehabUser> rehabuser;
int elbowknee;
Date insertdate;
int length;
@Serialized
List<Integer[]> raw;
@Serialized
List<Integer[]> angles;
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Key<RehabUser> getRehabUser() {
return rehabuser;
}
public void setRehabUser(Key<RehabUser> rehabUser) {
this.rehabuser = rehabUser;
}
public int getElbowknee() {
return elbowknee;
}
public void setElbowknee(int elbowknee) {
this.elbowknee = elbowknee;
}
public Date getInsertDate() {
return insertdate;
}
public void setInsertDate(Date insertDate) {
this.insertdate = insertDate;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public List<Integer[]> getRaw() {
return raw;
}
public void setRaw(List<Integer[]> raw) {
this.raw = raw;
}
public List<Integer[]> getAngles() {
return angles;
}
public void setAngles(List<Integer[]> angles) {
this.angles = angles;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((angles == null) ? 0 : angles.hashCode());
result = prime * result + ((insertdate == null) ? 0 : insertdate.hashCode());
result = prime * result + elbowknee;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + length;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + number;
result = prime * result
+ ((rehabuser == null) ? 0 : rehabuser.hashCode());
result = prime * result + ((raw == null) ? 0 : raw.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CompleteExercise other = (CompleteExercise) obj;
if (angles == null) {
if (other.angles != null)
return false;
} else if (!angles.equals(other.angles))
return false;
if (insertdate == null) {
if (other.insertdate != null)
return false;
} else if (!insertdate.equals(other.insertdate))
return false;
if (elbowknee != other.elbowknee)
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (length != other.length)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (number != other.number)
return false;
if (rehabuser == null) {
if (other.rehabuser != null)
return false;
} else if (!rehabuser.equals(other.rehabuser))
return false;
if (raw == null) {
if (other.raw != null)
return false;
} else if (!raw.equals(other.raw))
return false;
return true;
}
@Override
public String toString() {
return "CompleteExercise [id=" + id + ", name=" + name + ", number="
+ number + ", rehabuser=" + rehabuser + ", elbowknee="
+ elbowknee + ", insertdate=" + insertdate + ", length="
+ length + ", raw=" + raw + ", angles=" + angles + "]";
}
public Document toXMLDocument(Document d) {
Element root = d.createElement("downloadcompleteexerciseOutput");
d.appendChild(root);
root.setAttribute("name", "" + name);
root.setAttribute("number", "" + number);
root.setAttribute("elbowknee", "" + elbowknee);
root.setAttribute("date", "" + insertdate.toGMTString());
root.setAttribute("length", "" + raw.size());
int i = 0;
for (Integer[] raw_sample : raw) {
Element rawdata = d.createElement("raw_data");
rawdata.setAttribute("timestamp", "" + i++);
rawdata.setAttribute("bx", "" + raw_sample[0]);
rawdata.setAttribute("by", "" + raw_sample[1]);
rawdata.setAttribute("bz", "" + raw_sample[2]);
rawdata.setAttribute("fx", "" + raw_sample[3]);
rawdata.setAttribute("fy", "" + raw_sample[4]);
rawdata.setAttribute("fz", "" + raw_sample[5]);
root.appendChild(rawdata);
}
i = 0;
for (Integer[] angle_sample : angles) {
Element angle = d.createElement("angles_data");
angle.setAttribute("timestamp", "" + i++);
angle.setAttribute("elbowknee", "" + angle_sample[0]);
angle.setAttribute("backline", "" + angle_sample[1]);
angle.setAttribute("foreline", "" + angle_sample[2]);
angle.setAttribute("sideangle", "" + angle_sample[3]);
root.appendChild(angle);
}
d.normalizeDocument();
return d;
}
}