@Override
    public void action() {
        ACLMessage msg = myAgent.receive(msgFilter);
        if (msg != null) {
            if(msg.getConversationId() == null) {
                String log = "ConversationId == null : sender: " + msg.getSender().getLocalName()
                        + "; content: " + msg.getContent();
                logger.log(Level.WARNING, log);
                return;
            }
            switch (msg.getConversationId()) {
                case TeacherRejectGroupBehaviour.REJECT_GROUP_PROPOSE:
                    try {
                        rejectGroupPropose((ProposedPlace) msg.getContentObject());
                    } catch (UnreadableException ex) {
                        logger.log(Level.WARNING, "ScheduleReorganizationBehaviour.action()", ex);
                    }
                    break;
                case DataBaseMySQLBehaviour.REJECT_GROUP_CHECK_COLLISION:
                    try {
                        checkCollisionRet((Object[]) msg.getContentObject());
                    } catch (UnreadableException ex) {
                        logger.log(Level.WARNING, "ScheduleReorganizationBehaviour.action()", ex);
                    }
                    break;
                case TeacherSearchNewPlaceBehaviour.SEARCH_NEW_PLACE_TEACHER_ACCEPT_PROPOSAL:
                    acceptProposal();
                    break;
                case TeacherSearchNewPlaceBehaviour.SEARCH_NEW_PLACE_TEACHER_REJECT_PROPOSAL:
                    sendToTeacherRejectProposal();
                    break;
                default:
                    notUnderstandMessage(msg.getSender().getLocalName(), msg.getConversationId());
                    break;
            }
        } else {
            block();
        }
    }