1 package net.sf.josceleton.core.impl.entity.joint;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import net.sf.josceleton.core.api.entity.Coordinate;
7 import net.sf.josceleton.core.api.entity.joint.Joint;
8 import net.sf.josceleton.core.api.entity.joint.SkeletonCoordinateUnavailableException;
9
10
11
12
13 class SkeletonImpl implements SkeletonInternal {
14
15 private final Map<Joint, Coordinate> coordinateByJoint = new HashMap<Joint, Coordinate>();
16
17
18 @Override public final Coordinate get(final Joint joint) {
19 return this.coordinateByJoint.get(joint);
20 }
21
22
23 @Override public final Coordinate getNullSafe(final Joint joint) {
24 final Coordinate storedCoordinate = this.get(joint);
25 if(storedCoordinate == null) {
26 throw SkeletonCoordinateUnavailableException.newUnavailable(joint);
27 }
28 return storedCoordinate;
29 }
30
31
32 @Override public final boolean isCoordinateAvailable(final Joint joint) {
33 return this.coordinateByJoint.containsKey(joint);
34 }
35
36
37 @Override public final void update(final Joint joint, final Coordinate coordinate) {
38 this.coordinateByJoint.put(joint, coordinate);
39 }
40
41 }