Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/ClonableDefaultAttributes.java @ 41:ed6737db637a
added tests
author | Shoshi TAMAKI |
---|---|
date | Tue, 29 Jan 2013 23:42:54 +0900 |
parents | 7d78bbf4a9cd |
children |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction; import java.nio.ByteBuffer; import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultAttributes; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.ClonableAttributes; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultChildren; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; public class ClonableDefaultAttributes implements ClonableAttributes<ClonableDefaultNode> { private final DefaultNode wrap; public ClonableDefaultAttributes(DefaultNode _wrap) { wrap = _wrap; } @Override public Either<Error,ClonableDefaultNode> delete(String _key) { if(_key == null){ return DefaultEither.newA(NodeEditorError.NULL_VALUE_NOT_ALLOWED); } DefaultAttributes attrs = wrap.getAttributes(); DefaultChildren children = wrap.getChildren(); TreeMap<String,ByteBuffer> raw = attrs.getAttributesAsRawMap(); if(!raw.contains(_key)){ return DefaultEither.newA(NodeEditorError.DELETE_KEY_NOT_FOUND); } TreeMap<String,ByteBuffer> newMap = raw.delete(_key); DefaultNode newNode = new DefaultNode(children.getChildrenAsRawList(),newMap); return DefaultEither.newB(new ClonableDefaultNode(newNode)); } @Override public Either<Error, ClonableDefaultNode> put(String _key, ByteBuffer _value) { if(_key == null || _value == null){ return DefaultEither.newA(NodeEditorError.NULL_VALUE_NOT_ALLOWED); } DefaultAttributes attrs = wrap.getAttributes(); DefaultChildren children = wrap.getChildren(); TreeMap<String,ByteBuffer> raw = attrs.getAttributesAsRawMap(); TreeMap<String,ByteBuffer> newMap = raw.set(_key,_value); DefaultNode newNode = new DefaultNode(children.getChildrenAsRawList(),newMap); return DefaultEither.newB(new ClonableDefaultNode(newNode)); } @Override public ByteBuffer get(String _key) { return wrap.getAttributes().get(_key); } }