Search in sources :

Example 1 with Command

use of org.activityinfo.shared.command.Command in project activityinfo by bedatadriven.

the class ImporterWizard method submitSites.

private void submitSites(List<LocationDTO> results, final AsyncCallback<Void> callback) {
    int numColums = model.getData().getNumColumns();
    ColumnBinding[] bindings = bindingsArray();
    KeyGenerator keyGenerator = new KeyGenerator();
    // do a first pass to match the location
    List<Command> siteBatch = Lists.newArrayList();
    int rowIndex = 0;
    for (ImportRowModel row : model.getData().getRowStore().getModels()) {
        LocationDTO location = results.get(rowIndex);
        if (location.isNew()) {
            siteBatch.add(new CreateLocation(location));
        }
        SiteDTO site = new SiteDTO();
        site.setId(keyGenerator.generateInt());
        site.setReportingPeriodId(keyGenerator.generateInt());
        site.setActivityId(model.getActivity().getId());
        site.setLocationId(location.getId());
        site.setPartner(model.getActivity().getDatabase().getPartners().get(0));
        for (int i = 0; i != numColums; ++i) {
            bindings[i].bindSite(row.get(i), site);
        }
        siteBatch.add(new CreateSite(site));
        rowIndex++;
    }
    dispatcher.execute(new BatchCommand(siteBatch), new AsyncCallback<BatchResult>() {

        @Override
        public void onFailure(Throwable caught) {
            MessageBox.alert("Import failed", "Exception: " + caught.getMessage(), null);
            callback.onFailure(null);
        }

        @Override
        public void onSuccess(BatchResult result) {
            MessageBox.alert("Import succeeded!", "Refresh the data grid to see your new sites", null);
            callback.onSuccess(null);
        }
    });
}
Also used : CreateLocation(org.activityinfo.shared.command.CreateLocation) ColumnBinding(org.activityinfo.client.importer.column.ColumnBinding) BatchResult(org.activityinfo.shared.command.result.BatchResult) CreateSite(org.activityinfo.shared.command.CreateSite) Command(org.activityinfo.shared.command.Command) BatchCommand(org.activityinfo.shared.command.BatchCommand) BatchCommand(org.activityinfo.shared.command.BatchCommand) SiteDTO(org.activityinfo.shared.dto.SiteDTO) KeyGenerator(org.activityinfo.client.local.command.handler.KeyGenerator) LocationDTO(org.activityinfo.shared.dto.LocationDTO)

Example 2 with Command

use of org.activityinfo.shared.command.Command in project activityinfo by bedatadriven.

the class BatchCommandHandler method execute.

@Override
public void execute(BatchCommand batch, ExecutionContext context, final AsyncCallback<BatchResult> callback) {
    if (batch.getCommands().isEmpty()) {
        LOGGER.warning("Received empty batch command");
        callback.onSuccess(new BatchResult(Lists.<CommandResult>newArrayList()));
    } else {
        final ArrayList<CommandResult> results = new ArrayList<CommandResult>();
        for (Command command : batch.getCommands()) {
            results.add(null);
        }
        final boolean[] finished = new boolean[batch.getCommands().size()];
        final List<Throwable> exceptions = Lists.newArrayList();
        for (int i = 0; i != batch.getCommands().size(); ++i) {
            final int commandIndex = i;
            context.execute(batch.getCommands().get(i), new AsyncCallback<CommandResult>() {

                @Override
                public void onFailure(Throwable caught) {
                    if (exceptions.isEmpty()) {
                        exceptions.add(caught);
                        callback.onFailure(caught);
                    }
                }

                @Override
                public void onSuccess(CommandResult result) {
                    results.set(commandIndex, result);
                    finished[commandIndex] = true;
                    if (all(finished)) {
                        callback.onSuccess(new BatchResult(results));
                    }
                }
            });
        }
    }
}
Also used : BatchCommand(org.activityinfo.shared.command.BatchCommand) Command(org.activityinfo.shared.command.Command) ArrayList(java.util.ArrayList) BatchResult(org.activityinfo.shared.command.result.BatchResult) CommandResult(org.activityinfo.shared.command.result.CommandResult)

Example 3 with Command

use of org.activityinfo.shared.command.Command in project activityinfo by bedatadriven.

the class JsonRpcServlet method doPost.

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    Command command;
    try {
        String json = new String(ByteStreams.toByteArray(req.getInputStream()));
        command = objectMapper.readValue(json, Command.class);
    } catch (Exception e) {
        LOGGER.log(Level.SEVERE, "Failed to deserialize command", e);
        resp.sendError(HttpServletResponse.SC_BAD_REQUEST);
        return;
    }
    CommandResult result = dispatcher.execute(command);
    resp.setStatus(HttpServletResponse.SC_OK);
    resp.setContentType("application/json");
    objectMapper.writeValue(resp.getOutputStream(), result);
}
Also used : Command(org.activityinfo.shared.command.Command) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) CommandResult(org.activityinfo.shared.command.result.CommandResult)

Example 4 with Command

use of org.activityinfo.shared.command.Command in project activityinfo by bedatadriven.

the class DispatcherStub method execute.

@Override
public <T extends CommandResult> void execute(Command<T> command, AsyncCallback<T> callback) {
    if (command instanceof BatchCommand) {
        BatchCommand batch = (BatchCommand) command;
        List<CommandResult> results = new ArrayList<CommandResult>();
        for (Command batchCmd : batch.getCommands()) {
            results.add(findResult(batchCmd));
        }
        callback.onSuccess((T) new BatchResult(results));
    } else {
        callback.onSuccess((T) findResult(command));
    }
}
Also used : BatchCommand(org.activityinfo.shared.command.BatchCommand) Command(org.activityinfo.shared.command.Command) ArrayList(java.util.ArrayList) BatchCommand(org.activityinfo.shared.command.BatchCommand) BatchResult(org.activityinfo.shared.command.result.BatchResult) CommandResult(org.activityinfo.shared.command.result.CommandResult)

Example 5 with Command

use of org.activityinfo.shared.command.Command in project activityinfo by bedatadriven.

the class MockRemoteCommandService method execute.

@Override
public void execute(String authToken, List<Command> cmds, AsyncCallback<List<CommandResult>> callback) {
    List<CommandResult> results = new ArrayList<CommandResult>();
    for (Command cmd : cmds) {
        Integer count = commandCounts.get(cmd.getClass());
        commandCounts.put(cmd.getClass(), count == null ? 1 : count + 1);
        if (schema != null && cmd instanceof GetSchema) {
            results.add(schema);
        } else {
            results.add(mockExecute(cmd));
        }
    }
    callback.onSuccess(results);
}
Also used : Command(org.activityinfo.shared.command.Command) ArrayList(java.util.ArrayList) GetSchema(org.activityinfo.shared.command.GetSchema) CommandResult(org.activityinfo.shared.command.result.CommandResult)

Aggregations

Command (org.activityinfo.shared.command.Command)8 CommandResult (org.activityinfo.shared.command.result.CommandResult)5 ArrayList (java.util.ArrayList)4 BatchCommand (org.activityinfo.shared.command.BatchCommand)4 BatchResult (org.activityinfo.shared.command.result.BatchResult)4 ColumnBinding (org.activityinfo.client.importer.column.ColumnBinding)2 KeyGenerator (org.activityinfo.client.local.command.handler.KeyGenerator)2 IOException (java.io.IOException)1 List (java.util.List)1 ServletException (javax.servlet.ServletException)1 LogException (org.activityinfo.server.util.logging.LogException)1 CreateLocation (org.activityinfo.shared.command.CreateLocation)1 CreateSite (org.activityinfo.shared.command.CreateSite)1 GetSchema (org.activityinfo.shared.command.GetSchema)1 MatchLocation (org.activityinfo.shared.command.MatchLocation)1 LocationDTO (org.activityinfo.shared.dto.LocationDTO)1 SiteDTO (org.activityinfo.shared.dto.SiteDTO)1 CommandException (org.activityinfo.shared.exception.CommandException)1 ObjectMapper (org.codehaus.jackson.map.ObjectMapper)1 ObjectNode (org.codehaus.jackson.node.ObjectNode)1