View Javadoc

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   * @since 0.4
12   */
13  class SkeletonImpl implements SkeletonInternal {
14  	
15  	private final Map<Joint, Coordinate> coordinateByJoint = new HashMap<Joint, Coordinate>();
16  
17  	/** {@inheritDoc} from {@link Skeleton} */
18  	@Override public final Coordinate get(final Joint joint) {
19  		return this.coordinateByJoint.get(joint);
20  	}
21  
22  	/** {@inheritDoc} from {@link Skeleton} */
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  	/** {@inheritDoc} from {@link Skeleton} */
32  	@Override public final boolean isCoordinateAvailable(final Joint joint) {
33  		return this.coordinateByJoint.containsKey(joint);
34  	}
35  
36  	/** {@inheritDoc} from {@link SkeletonInternal} */
37  	@Override public final void update(final Joint joint, final Coordinate coordinate) {
38  		this.coordinateByJoint.put(joint, coordinate);
39  	}
40  	
41  }