mardi 13 mars 2018

How to refactor below codes using design patterns

I'm new to design patterns and i would like to ask how can i refactor below codes using some design patterns.

What's the best approach, to eliminate redundant if-else statements.

//It looks like your post is mostly code; please add some more details.

Here's my code:

public void onEvent(Event event) {

        RealmModel realm = session.realms().getRealm(event.getRealmId());
        UserModel user = session.userCache().getUserById(event.getUserId(), realm);

        MQMessage queueMessage = new MQMessage();
        queueMessage.setIpAddress(event.getIpAddress());
        queueMessage.setModuleCode("MYACC");
        queueMessage.setUsername(user.getUsername());

        // To be refactored
        if (EventType.LOGIN.equals(event.getType())) {
            LOGGER.info("USER HAS LOGGED IN");
            queueMessage.setSubModuleCode("LOGIN");
            queueMessage.setTransactionDetail("Log-in");

            try {
                queueSender.send(queueMessage);
            } catch (JMSException e) {
                LOGGER.error(e.getMessage());
            }
        } else if (EventType.LOGOUT.equals(event.getType())) {
            LOGGER.info("USER HAS LOGGED OUT");
            queueMessage.setSubModuleCode("LOGOUT");
            queueMessage.setTransactionDetail("Log-out");

            try {
                queueSender.send(queueMessage);
            } catch (JMSException e) {
                LOGGER.error(e.getMessage());
            }
        } else if (EventType.UPDATE_EMAIL.equals(event.getType())) {
            LOGGER.info("USER HAS UPDATED EMAIL");
            queueMessage.setSubModuleCode("");
            queueMessage.setTransactionDetail("User has updated his/her email.");

            try {
                queueSender.send(queueMessage);
            } catch (JMSException e) {
                LOGGER.error(e.getMessage());
            }
        } else if (EventType.UPDATE_PASSWORD.equals(event.getType())) {
            LOGGER.info("USER HAS UPDATED PASSWORD");
            queueMessage.setSubModuleCode("");
            queueMessage.setTransactionDetail("User has updated his/her password.");

            try {
                queueSender.send(queueMessage);
            } catch (JMSException e) {
                LOGGER.error(e.getMessage());
            }
        }

        events.add(event);

    }

Your help is very much appreciated. Thanks

Aucun commentaire:

Enregistrer un commentaire