package ch.x42.terye;
import javax.jcr.AccessDeniedException;
import javax.jcr.InvalidItemStateException;
import javax.jcr.Item;
import javax.jcr.ItemExistsException;
import javax.jcr.ItemNotFoundException;
import javax.jcr.ItemVisitor;
import javax.jcr.Node;
import javax.jcr.ReferentialIntegrityException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.version.VersionException;
import ch.x42.terye.persistence.ItemState;
import ch.x42.terye.persistence.ItemType;
public abstract class ItemImpl implements Item {
private SessionImpl session;
private ItemState state;
protected Path path;
protected ItemImpl(SessionImpl session, ItemState state) {
this.session = session;
this.state = state;
this.path = new Path(state.getPath());
}
protected ItemManager getItemManager() {
return session.getItemManager();
}
public ItemState getState() {
return state;
}
@Override
public void accept(ItemVisitor visitor) throws RepositoryException {
// TODO Auto-generated method stub
}
@Override
public Item getAncestor(int depth) throws ItemNotFoundException,
AccessDeniedException, RepositoryException {
// TODO Auto-generated method stub
return null;
}
@Override
public int getDepth() throws RepositoryException {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getName() throws RepositoryException {
return path.getLastSegment();
}
@Override
public Node getParent() throws ItemNotFoundException,
AccessDeniedException, RepositoryException {
if (path.getParent() == null) {
throw new ItemNotFoundException("The root node has no parent.");
}
return getItemManager().getNode(path.getParent());
}
@Override
public String getPath() throws RepositoryException {
return getState().getPath();
}
@Override
public Session getSession() throws RepositoryException {
return session;
}
@Override
public boolean isModified() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isNew() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isNode() {
return getState().getType().equals(ItemType.NODE);
}
@Override
public boolean isSame(Item otherItem) throws RepositoryException {
// TODO Auto-generated method stub
return false;
}
@Override
public void refresh(boolean keepChanges) throws InvalidItemStateException,
RepositoryException {
// TODO Auto-generated method stub
}
@Override
public void remove() throws VersionException, LockException,
ConstraintViolationException, AccessDeniedException,
RepositoryException {
getItemManager().removeItem(path);
}
@Override
public void save() throws AccessDeniedException, ItemExistsException,
ConstraintViolationException, InvalidItemStateException,
ReferentialIntegrityException, VersionException, LockException,
NoSuchNodeTypeException, RepositoryException {
// TODO Auto-generated method stub
}
}