view src/main/java/alice/test/topology/aquarium/fx/CheckAllFishInfoExist.java @ 397:ca92da166f1a multicast

check All fish object in own scene om CheckAllFishInfoExist code segment
author sugi
date Sun, 22 Jun 2014 21:06:40 +0900
parents src/main/java/alice/test/topology/aquarium/fx/ReceiveRegisterList.java@f64e53200228
children 4b38d3e6520e
line wrap: on
line source

package alice.test.topology.aquarium.fx;

import java.io.IOException;

import javafx.scene.Group;
import javafx.scene.Node;

import org.msgpack.MessagePack;
import org.msgpack.type.ArrayValue;
import org.msgpack.type.Value;

import alice.codesegment.CodeSegment;
import alice.codesegment.SingletonMessage;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;

public class CheckAllFishInfoExist extends CodeSegment {
	// this CS check all fish object exist in scene

	private Receiver info = ids.create(CommandType.TAKE);  // fishInfoList
	private Receiver info1 = ids.create(CommandType.PEEK); 

	public CheckAllFishInfoExist(){
		info.setKey("receiveRegisteredList");
		info1.setKey("root");
	}

	@Override
	public void run() {
		try {
			new SendDataOthers(info, info.key);
			ods.put("registeredList", info.getVal());
			ArrayValue fishInfoList = info.asClass(Value.class).asArrayValue();
			MessagePack msg = SingletonMessage.getInstance();
			Group root = info1.asClass(Group.class);
			for (Value v : fishInfoList){
				boolean exist = false;
				FishInfo info = msg.convert(v, FishInfo.class);
				if (info.name == null) {
					for (Node n : root.getChildren()) {
						if (info.name.equals(n.getId())) {
							exist = true;
							break;
						}  
					}
					
					if (!exist) {
						ods.put("fishData", info);
					}
				}
			}

		} catch (IOException e) {
			e.printStackTrace();
		}
		this.recycle();
	}

}