view src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/operations/NetworkTreeOperationLog.java @ 317:d6b81870216b

Persisitent Differential Tree implement
author tatsuki
date Wed, 01 Feb 2017 04:04:17 +0900
parents cac88cf813f1
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations;


import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.TreeOperationLog;
import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.NodeOperation;
import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.TreeOperation;
import jp.ac.u_ryukyu.ie.cr.jungle.tree.TreeType;
import org.msgpack.annotation.Message;

import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;

@Message
public class NetworkTreeOperationLog implements TreeOperationLog {
    public LinkedList<NetworkTreeOperation> list;
    public int size;
    String uuid;
    String treeName;
    long timestamp;
    int type;

    public NetworkTreeOperationLog() {
        list = new LinkedList<NetworkTreeOperation>();
        size = 0;
        treeName = "";
        type = TreeType.DEFAULT;
        timestamp = new Date().getTime();
    }

    public NetworkTreeOperationLog(String _uuid, String _treeName, int type, Iterable<TreeOperation> _list) {
        this(_uuid, _treeName, type, _list, new Date().getTime());
    }

    public NetworkTreeOperationLog(String _uuid, String _treeName, int type, Iterable<TreeOperation> _list, long _timestamp) {
        this.uuid = _uuid;
        this.treeName = _treeName;
        this.type = type;
        this.list = new LinkedList<NetworkTreeOperation>();
        this.timestamp = _timestamp;
        for (TreeOperation op : _list) {
            NetworkTreeOperation nOp = new NetworkTreeOperation(op);
            list.add(nOp);
        }
        this.size = list.size();
    }

    public NetworkTreeOperationLog(Iterable<TreeOperation> _list) {
        this("", "",TreeType.UNKNOWN , _list);
    }


    @Override
    public Iterator<TreeOperation> iterator() {
        LinkedList<TreeOperation> opList = new LinkedList<TreeOperation>();
        for (NetworkTreeOperation op : list) {
            opList.add(op);
        }
        return opList.iterator();
    }

    @Override
    public NetworkTreeOperationLog add(NodePath _p, NodeOperation _op) {
        NetworkTreeOperation op = new NetworkTreeOperation(_p, _op);
        list.add(op);
        size = list.size();
        return this;
    }

    @Override
    public NetworkTreeOperationLog append(TreeOperationLog _log) {
        for (TreeOperation o : _log) {
            NetworkTreeOperation op = new NetworkTreeOperation(o);
            list.add(op);
        }
        size = list.size();
        return this;
    }

    @Override
    public int length() {
        return list.size();
    }

    public String getUUID() {
        return uuid;
    }

    public String getTreeName() {
        return treeName;
    }

    public int getTreeType() {
        return type;
    }

    public long getTimeStamp() {
        return timestamp;
    }

    public void setTimeStamp(long _timestamp) {
        timestamp = _timestamp;
    }

}