package com.jotuntech.sketcher.server.command; import java.nio.ByteBuffer; import java.util.Deque; import com.jotuntech.sketcher.common.UndoEntry; import com.jotuntech.sketcher.common.User; import com.jotuntech.sketcher.server.Command; import com.jotuntech.sketcher.server.Connection; import com.jotuntech.sketcher.server.Server; public class MergeCommand implements Command { public int perform(Server server, Connection connection) { User user = connection.getUser(); if(user == null || user.getLayer() == null) { return Connection.SEND_NONE; } if(user.isViewer()) { return Connection.SEND_NONE; } if(user.getPhantomLayer().isEmpty()) { return Connection.SEND_NONE; } UndoEntry undoEntry = new UndoEntry(); undoEntry.setLayer(user.getLayer()); undoEntry.setUndoData(user.getLayer().merge(user.getPhantomLayer())); Deque undoDeque = user.getUndoDeque(); undoDeque.addFirst(undoEntry); while(undoDeque.size() > 10) { undoDeque.removeLast(); } server.setMergeDirty(null); return Connection.SEND_OTHERS; } public void decode(ByteBuffer in) { } public void encode(ByteBuffer out) { } }