Example usage for org.apache.commons.lang.mutable MutableInt subtract

List of usage examples for org.apache.commons.lang.mutable MutableInt subtract

Introduction

In this page you can find the example usage for org.apache.commons.lang.mutable MutableInt subtract.

Prototype

public void subtract(Number operand) 

Source Link

Document

Subtracts a value.

Usage

From source file:net.atos.entng.calendar.services.impl.EventServiceMongoImpl.java

@Override
public void importIcal(final String calendarId, String ics, final UserInfos user,
        final Handler<Either<String, JsonObject>> handler) {
    final JsonObject message = new JsonObject();
    message.putString("action", ICalHandler.ACTION_PUT);
    message.putString("calendarId", calendarId);
    message.putString("ics", ics);
    final EventServiceMongoImpl eventService = this;
    final MutableInt i = new MutableInt();

    eb.send(ICalHandler.ICAL_HANDLER_ADDRESS, message, new Handler<Message<JsonObject>>() {
        @Override//  w w w .  j  av  a  2 s. com
        public void handle(Message<JsonObject> reply) {
            final JsonObject result = new JsonObject();
            if ("ko".equals(reply.body().getString("status"))) {
                handler.handle(new Either.Left<String, JsonObject>(new String("Error")));
            } else {
                JsonObject body = reply.body();
                JsonArray calendarEvents = body.getArray("events");
                final JsonArray invalidCalendarEvents = body.getArray("invalidEvents");
                result.putArray("invalidEvents", invalidCalendarEvents);
                result.putNumber("createdEvents", calendarEvents.size());
                if (calendarEvents.size() == 0) {
                    handler.handle(new Either.Right<String, JsonObject>(result));
                }
                i.add(calendarEvents.size());

                for (Object e : calendarEvents) {
                    final JsonObject calendarEvent = (JsonObject) e;
                    eventService.retrieveByIcsUid(calendarId, calendarEvent.getString("icsUid"), user,
                            new Handler<Either<String, JsonObject>>() {
                                @Override
                                public void handle(Either<String, JsonObject> event) {
                                    // No existing event found
                                    if (event.isRight() && event.right().getValue().size() == 0) {
                                        eventService.create(calendarId, calendarEvent, user,
                                                new Handler<Either<String, JsonObject>>() {
                                                    @Override
                                                    public void handle(Either<String, JsonObject> event) {
                                                        i.subtract(1);
                                                        // There is no more events to create
                                                        if (i.toInteger() == 0) {
                                                            handler.handle(new Either.Right<String, JsonObject>(
                                                                    result));
                                                        }
                                                    }
                                                });
                                    } // Existing event found
                                    else if (event.isRight() && event.right().getValue().size() > 0) {
                                        eventService.update(calendarId,
                                                event.right().getValue().getString("_id"), calendarEvent, user,
                                                new Handler<Either<String, JsonObject>>() {
                                                    @Override
                                                    public void handle(Either<String, JsonObject> event) {
                                                        i.subtract(1);
                                                        // There is no more events to create
                                                        if (i.toInteger() == 0) {
                                                            handler.handle(new Either.Right<String, JsonObject>(
                                                                    result));
                                                        }
                                                    }
                                                });
                                    } // An error occured while retrieving the event
                                    else {
                                        i.subtract(1);
                                        if (i.toInteger() == 0) {
                                            handler.handle(new Either.Right<String, JsonObject>(result));
                                        }
                                    }

                                }
                            });
                }
            }
        }
    });
}