package io.ebeaninternal.server.transaction; import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.api.TransactionEventTable.TableIUD; import io.ebeaninternal.server.cluster.BinaryMessageList; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class RemoteTransactionEvent implements Runnable { private final List<BeanPersistIds> beanPersistList = new ArrayList<>(); private List<TableIUD> tableList; private DeleteByIdMap deleteByIdMap; private String serverName; private transient SpiEbeanServer server; public RemoteTransactionEvent(String serverName) { this.serverName = serverName; } public RemoteTransactionEvent(SpiEbeanServer server) { this.server = server; } @Override public void run() { server.remoteTransactionEvent(this); } @Override public String toString() { StringBuilder sb = new StringBuilder(100); if (!beanPersistList.isEmpty()) { sb.append(beanPersistList); } if (tableList != null) { sb.append(tableList); } if (deleteByIdMap != null) { sb.append(deleteByIdMap.values()); } return sb.toString(); } public void writeBinaryMessage(BinaryMessageList msgList) throws IOException { if (tableList != null) { for (TableIUD aTableList : tableList) { aTableList.writeBinaryMessage(msgList); } } if (deleteByIdMap != null) { for (BeanPersistIds deleteIds : deleteByIdMap.values()) { deleteIds.writeBinaryMessage(msgList); } } for (BeanPersistIds aBeanPersistList : beanPersistList) { aBeanPersistList.writeBinaryMessage(msgList); } } public boolean isEmpty() { return beanPersistList.isEmpty() && (tableList == null || tableList.isEmpty()) && (deleteByIdMap == null || deleteByIdMap.isEmpty()); } public void addBeanPersistIds(BeanPersistIds beanPersist) { beanPersistList.add(beanPersist); } public void addTableIUD(TableIUD tableIud) { if (tableList == null) { tableList = new ArrayList<>(4); } tableList.add(tableIud); } public String getServerName() { return serverName; } public SpiEbeanServer getServer() { return server; } public void setServer(SpiEbeanServer server) { this.server = server; } void setDeleteByIdMap(DeleteByIdMap deleteByIdMap) { this.deleteByIdMap = deleteByIdMap; } public List<TableIUD> getTableIUDList() { return tableList; } public List<BeanPersistIds> getBeanPersistList() { return beanPersistList; } }