Example usage for org.apache.commons.lang.time DurationFormatUtils formatDurationWords

List of usage examples for org.apache.commons.lang.time DurationFormatUtils formatDurationWords

Introduction

In this page you can find the example usage for org.apache.commons.lang.time DurationFormatUtils formatDurationWords.

Prototype

public static String formatDurationWords(long durationMillis, boolean suppressLeadingZeroElements,
        boolean suppressTrailingZeroElements) 

Source Link

Document

Formats an elapsed time into a plurialization correct string.

This method formats durations using the days and lower fields of the format pattern.

Usage

From source file:au.id.hazelwood.xmltvguidebuilder.utils.DateTimeUtils.java

public static String formatDurationWords(long duration) {
    return DurationFormatUtils.formatDurationWords(duration, true, true);
}

From source file:de.unileipzig.ub.scroller.Main.java

public static void main(String[] args) throws IOException {

    Options options = new Options();
    // add t option
    options.addOption("h", "help", false, "display this help");

    // elasticsearch options
    options.addOption("t", "host", true, "elasticsearch hostname (default: 0.0.0.0)");
    options.addOption("p", "port", true, "transport port (that's NOT the http port, default: 9300)");
    options.addOption("c", "cluster", true, "cluster name (default: elasticsearch_mdma)");

    options.addOption("i", "index", true, "index to use");

    options.addOption("f", "filter", true, "filter(s) - e.g. meta.kind=title");
    options.addOption("j", "junctor", true, "values: and, or (default: and)");
    options.addOption("n", "notice-every", true, "show speed after every N items");

    options.addOption("v", "verbose", false, "be verbose");
    // options.addOption("z", "end-of-message", true, "sentinel to print to stdout, once the regular input finished (default: EOM)");

    CommandLineParser parser = new PosixParser();
    CommandLine cmd = null;/*w  ww .jav  a  2  s .c o m*/

    try {
        cmd = parser.parse(options, args);
    } catch (ParseException ex) {
        logger.error(ex);
        System.exit(1);
    }

    // process options
    if (cmd.hasOption("h")) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp("scroller", options, true);
        System.exit(0);
    }

    String endOfMessage = "EOM";

    boolean verbose = false;
    if (cmd.hasOption("verbose")) {
        verbose = true;
    }

    if (!cmd.hasOption("i")) {
        System.err.println("error: no index specified");
        System.exit(1);
    }

    long noticeEvery = 10000;
    if (cmd.hasOption("n")) {
        noticeEvery = Long.parseLong(cmd.getOptionValue("n"));
    }

    // ES options
    String[] hosts = new String[] { "0.0.0.0" };
    int port = 9300;
    String clusterName = "elasticsearch_mdma";
    int bulkSize = 3000;

    if (cmd.hasOption("host")) {
        hosts = cmd.getOptionValues("host");
    }
    if (cmd.hasOption("port")) {
        port = Integer.parseInt(cmd.getOptionValue("port"));
    }
    if (cmd.hasOption("cluster")) {
        clusterName = cmd.getOptionValue("cluster");
    }

    // Index
    String indexName = cmd.getOptionValue("index");

    Map<String, String> filterMap = new HashMap<String, String>();
    if (cmd.hasOption("filter")) {
        try {
            filterMap = getMapForKeys(cmd.getOptionValues("filter"));
        } catch (ParseException pe) {
            System.err.println(pe);
            System.exit(1);
        }
    }

    Collection<HashMap> filterList = new ArrayList<HashMap>();
    if (cmd.hasOption("filter")) {
        try {
            filterList = getFilterList(cmd.getOptionValues("filter"));
        } catch (ParseException pe) {
            System.err.println(pe);
            System.exit(1);
        }
    }

    // ES Client
    final Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch_mdma")
            .put("client.transport.ping_timeout", "60s").build();
    final TransportClient client = new TransportClient(settings);
    for (String host : hosts) {
        client.addTransportAddress(new InetSocketTransportAddress(host, port));
    }

    // build the query
    String junctor = "and";
    if (cmd.hasOption("j")) {
        junctor = cmd.getOptionValue("j");
    }

    //        ArrayList<TermFilterBuilder> filters = new ArrayList<TermFilterBuilder>();
    //        if (filterMap.size() > 0) {
    //            for (Map.Entry<String, String> entry : filterMap.entrySet()) {
    //                filters.add(new TermFilterBuilder(entry.getKey(), entry.getValue()));
    //            }
    //        }

    ArrayList<TermFilterBuilder> filters = new ArrayList<TermFilterBuilder>();
    if (filterList.size() > 0) {
        for (HashMap map : filterList) {
            for (Object obj : map.entrySet()) {
                Map.Entry entry = (Map.Entry) obj;
                filters.add(new TermFilterBuilder(entry.getKey().toString(), entry.getValue().toString()));
            }
        }
    }

    FilterBuilder fb = null;
    if (junctor.equals("and")) {
        AndFilterBuilder afb = new AndFilterBuilder();
        for (TermFilterBuilder tfb : filters) {
            afb.add(tfb);
        }
        fb = afb;
    }

    if (junctor.equals("or")) {
        OrFilterBuilder ofb = new OrFilterBuilder();
        for (TermFilterBuilder tfb : filters) {
            ofb.add(tfb);
        }
        fb = ofb;
    }

    //        TermFilterBuilder tfb0 = new TermFilterBuilder("meta.kind", "title");
    //        TermFilterBuilder tfb1 = new TermFilterBuilder("meta.timestamp", "201112081240");
    //
    //        AndFilterBuilder afb0 = new AndFilterBuilder(tfb0, tfb1);

    QueryBuilder qb0 = null;
    if (filterMap.isEmpty()) {
        qb0 = matchAllQuery();
    } else {
        qb0 = filteredQuery(matchAllQuery(), fb);
    }

    // sorting
    // FieldSortBuilder sortBuilder = new FieldSortBuilder("meta.timestamp");
    // sortBuilder.order(SortOrder.DESC);

    // FilteredQueryBuilder fqb0 = filteredQuery(matchAllQuery(), tfb0);

    final CountResponse countResponse = client.prepareCount(indexName).setQuery(qb0).execute().actionGet();
    final long total = countResponse.getCount();

    SearchResponse scrollResp = client.prepareSearch(indexName).setSearchType(SearchType.SCAN)
            .setScroll(new TimeValue(60000)).setQuery(qb0)
            // .addSort(sortBuilder) // sort has no effect on scroll type (see: https://github.com/CPAN-API/cpan-api/issues/172)
            .setSize(1000) //1000 hits per shard will be returned for each scroll
            .execute().actionGet();

    //Scroll until no hits are returned

    System.err.println("[Scroller] query: " + qb0.toString());
    System.err.println("[Scroller] took: " + scrollResp.getTookInMillis() + "ms");
    System.err.println("[Scroller] docs found: " + total);

    long counter = 0;
    long start = System.currentTimeMillis();

    while (true) {
        scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(600000))
                .execute().actionGet();

        if (scrollResp.getHits().hits().length == 0) {
            break;
        }

        for (SearchHit hit : scrollResp.getHits()) {

            System.out.println(hit.sourceAsString());
            counter += 1;
            if (counter % noticeEvery == 0) {
                final double elapsed = (System.currentTimeMillis() - start) / 1000;
                final double speed = counter / elapsed;
                final long eta = (long) ((elapsed / counter) * (total - counter) * 1000);
                System.err.println(
                        counter + "/" + total + " records recvd @ speed " + String.format("%1$,.1f", speed)
                                + " r/s eta: " + DurationFormatUtils.formatDurationWords(eta, false, false));
            }
        }
    }
    System.out.close();
    // System.out.println(endOfMessage);
}

From source file:com.liferay.tool.datamanipulator.thread.HandlerThread.java

@Override
public void run() {
    HttpSession httpSession = _requestContext.getSession();
    httpSession.setMaxInactiveInterval(-1);

    //PermissionThreadLocal.setIndexEnabled(false);
    PermissionThreadLocal.setPermissionChecker(_requestContext.getPermissionChecker());

    PrincipalThreadLocal.setName(_requestContext.getUserId());

    PortalSessionThreadLocal.setHttpSession(httpSession);

    String threadName = this.getName();

    long startTime = System.currentTimeMillis();

    StringBuilder startSB = new StringBuilder(5);
    startSB.append(threadName);/*from   www .j  a  v a  2  s. c o m*/
    startSB.append(": Started generating '");
    startSB.append(HandlerUtil.getHandlerDisplayName(_handler.getClass()));
    startSB.append("' entries at ");
    startSB.append(new java.util.Date(startTime));

    _log.info(startSB.toString());

    try {
        _handler.proceed(_requestContext);
    } catch (Exception e) {
        _log.error(e, e);
    }

    long endTime = System.currentTimeMillis();

    StringBuilder finishSB = new StringBuilder(5);
    finishSB.append(threadName);
    finishSB.append(": Finished generating '");
    finishSB.append(HandlerUtil.getHandlerDisplayName(_handler.getClass()));
    finishSB.append("' entries at ");
    finishSB.append(new java.util.Date(endTime));

    _log.info(finishSB.toString());

    StringBuilder tookSB = new StringBuilder(4);
    tookSB.append(threadName);
    tookSB.append(": The generation process took ");
    tookSB.append(DurationFormatUtils.formatDurationWords(endTime - startTime, true, true));

    _log.info(tookSB.toString());
}

From source file:com.spotify.reaper.resources.view.RepairRunStatus.java

public RepairRunStatus(long runId, String clusterName, String keyspaceName, Collection<String> columnFamilies,
        int segmentsRepaired, int totalSegments, RepairRun.RunState state, DateTime startTime, DateTime endTime,
        String cause, String owner, String lastEvent, DateTime creationTime, DateTime pauseTime,
        double intensity, RepairParallelism repairParallelism) {
    this.id = runId;
    this.cause = cause;
    this.owner = owner;
    this.clusterName = clusterName;
    this.columnFamilies = columnFamilies;
    this.keyspaceName = keyspaceName;
    this.state = state;
    this.creationTime = creationTime;
    this.startTime = startTime;
    this.endTime = endTime;
    this.pauseTime = pauseTime;
    this.intensity = CommonTools.roundDoubleNicely(intensity);
    this.totalSegments = totalSegments;
    this.repairParallelism = repairParallelism;
    this.segmentsRepaired = segmentsRepaired;
    this.lastEvent = lastEvent;

    if (startTime == null || endTime == null) {
        duration = null;//from w  w  w . j  a v a2s  . c  om
    } else {
        duration = DurationFormatUtils.formatDurationWords(
                new Duration(startTime.toInstant(), endTime.toInstant()).getMillis(), true, false);
    }

    if (startTime == null || endTime != null) {
        estimatedTimeOfArrival = null;
    } else {
        if (state == RepairRun.RunState.ERROR || state == RepairRun.RunState.DELETED
                || state == RepairRun.RunState.ABORTED) {
            estimatedTimeOfArrival = null;
        } else if (segmentsRepaired == 0) {
            estimatedTimeOfArrival = null;
        } else {
            long now = DateTime.now().getMillis();
            long currentDuration = now - startTime.getMillis();
            long millisecondsPerSegment = currentDuration / segmentsRepaired;
            int segmentsLeft = totalSegments - segmentsRepaired;
            estimatedTimeOfArrival = new DateTime(now + millisecondsPerSegment * segmentsLeft);
        }
    }
}

From source file:com.evolveum.midpoint.web.page.admin.certification.dto.CertCampaignListItemDto.java

private String computeDeadlineAsString(PageBase page) {
    AccessCertificationStageType currentStage = CertCampaignTypeUtil.getCurrentStage(campaign);
    XMLGregorianCalendar end;//from w w  w. j  a  v  a  2  s.  com
    Boolean stageLevelInfo;
    if (campaign.getStageNumber() == 0) {
        end = campaign.getEnd();
        stageLevelInfo = false;
    } else if (currentStage != null) {
        end = currentStage.getEnd();
        stageLevelInfo = true;
    } else {
        end = null;
        stageLevelInfo = null;
    }

    if (end == null) {
        return "";
    } else {
        long delta = XmlTypeConverter.toMillis(end) - System.currentTimeMillis();

        // round to hours; we always round down
        long precision = 3600000L; // 1 hour
        if (Math.abs(delta) > precision) {
            delta = (delta / precision) * precision;
        }

        //todo i18n for durations
        if (delta > 0) {
            String key = stageLevelInfo ? "PageCertCampaigns.inForStage" : "PageCertCampaigns.inForCampaign";
            return new StringResourceModel(key, page, null, null,
                    DurationFormatUtils.formatDurationWords(delta, true, true)).getString();
        } else if (delta < 0) {
            String key = stageLevelInfo ? "PageCertCampaigns.agoForStage" : "PageCertCampaigns.agoForCampaign";
            return new StringResourceModel(key, page, null, null,
                    DurationFormatUtils.formatDurationWords(-delta, true, true)).getString();
        } else {
            String key = stageLevelInfo ? "PageCertCampaigns.nowForStage" : "PageCertCampaigns.nowForCampaign";
            return page.getString(key);
        }
    }
}

From source file:com.feedzai.commons.sql.abstraction.batch.AbstractBatch.java

/**
 * Destroys this batch./*from w  w  w  .  jav  a2 s  .  com*/
 */
public synchronized void destroy() {
    logger.trace("{} - Destroy called on Batch", name);
    scheduler.shutdownNow();

    try {
        if (!scheduler.awaitTermination(maxAwaitTimeShutdown, TimeUnit.MILLISECONDS)) {
            logger.warn("Could not terminate batch within {}",
                    DurationFormatUtils.formatDurationWords(maxAwaitTimeShutdown, true, true));
        }
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        logger.debug("Interrupted while waiting.", e);
    }

    flush();
}

From source file:com.evolveum.midpoint.notifications.impl.notifiers.SimpleCampaignStageNotifier.java

@Override
protected String getBody(Event event, GeneralNotifierType generalNotifierType, String transport, Task task,
        OperationResult result) {//from  w  w w .j av a  2  s .  c om
    StringBuilder body = new StringBuilder();
    CertCampaignStageEvent csEvent = (CertCampaignStageEvent) event;
    AccessCertificationCampaignType campaign = csEvent.getCampaign();

    body.append("A certification campaign stage ");
    if (csEvent.isAdd()) {
        body.append("has been started");
    } else if (csEvent.isDelete()) {
        body.append("has been closed");
    } else if (csEvent.isModify()) {
        body.append("is about to be closed");
    }
    body.append(".");
    body.append("\n\nCampaign: ");
    body.append(certHelper.getCampaignNameAndOid(csEvent));
    body.append("\nState: ");
    body.append(certHelper.formatState(csEvent));

    body.append("\n\nTime: ").append(new Date()); // the event is generated in the real time
    AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign);
    if (stage != null) {
        body.append("\n\nStage start time: ").append(XmlTypeConverter.toDate(stage.getStart()));
        body.append("\nStage end time: ").append(XmlTypeConverter.toDate(stage.getEnd()));
        if (csEvent.isModify() && stage.getEnd() != null) {
            long delta = XmlTypeConverter.toMillis(stage.getEnd()) - System.currentTimeMillis();
            if (delta > 0) {
                body.append("\n\nStage ends in ");
                body.append(DurationFormatUtils.formatDurationWords(delta, true, true));
            } else if (delta < 0) {
                body.append("\n\nStage ended ");
                body.append(DurationFormatUtils.formatDurationWords(-delta, true, true));
                body.append(" ago");
            }
        }
    }
    body.append("\n");
    if (csEvent.isAdd() || csEvent.isDelete()) {
        body.append("\nRequester: ").append(formatRequester(event, result));
        body.append("\nOperation status: ").append(certHelper.formatStatus(csEvent));
    }

    body.append("\n");
    certHelper.appendStatistics(body, campaign, task, result);

    body.append("\n\n");
    notificationsUtil.addRequesterAndChannelInformation(body, event, result);

    return body.toString();
}

From source file:com.evolveum.midpoint.notifications.impl.notifiers.SimpleReviewerNotifier.java

@Override
protected String getBody(Event event, GeneralNotifierType generalNotifierType, String transport, Task task,
        OperationResult result) {/*from  www  .  j av  a2 s .c o m*/
    StringBuilder body = new StringBuilder();
    CertReviewEvent reviewEvent = (CertReviewEvent) event;
    AccessCertificationCampaignType campaign = reviewEvent.getCampaign();

    body.append("You have been requested to provide a review in a certification campaign.");
    body.append("\n\nCampaign: ").append(certHelper.getCampaignNameAndOid(reviewEvent));
    body.append("\nState: ").append(certHelper.formatState(reviewEvent));
    body.append("\n\n");
    AccessCertificationStageType stage = CertCampaignTypeUtil.getCurrentStage(campaign);
    if (stage != null) {
        body.append("Stage start time: ").append(XmlTypeConverter.toDate(stage.getStart()));
        body.append("\nStage end time: ").append(XmlTypeConverter.toDate(stage.getEnd()));
        if (stage.getEnd() != null) {
            long delta = XmlTypeConverter.toMillis(stage.getEnd()) - System.currentTimeMillis();
            if (delta > 0) {
                if (reviewEvent.isModify()) {
                    body.append("\n\nThis is to notify you that the stage ends in ");
                } else {
                    body.append("\n\nThe stage ends in ");
                }
                body.append(DurationFormatUtils.formatDurationWords(delta, true, true));
            } else if (delta < 0) {
                body.append("\n\nThe stage ended ");
                body.append(DurationFormatUtils.formatDurationWords(-delta, true, true));
                body.append(" ago");
            }
        }
        body.append("\n\n");
        body.append("There are ").append(reviewEvent.getCases().size()).append(" cases assigned to you. ");
        body.append("Out of them, ").append(reviewEvent.getCasesWithoutResponse().size())
                .append(" have no response from you yet.");
    }

    return body.toString();
}

From source file:info.raack.appliancedetection.evaluation.model.SimulationGroup.java

public String toString() {
    return startTime + "; " + getNumSimulations() + " simulations; "
            + DurationFormatUtils.formatDurationWords((long) durationInSeconds * (long) 1000, true, true) + "; "
            + numAppliances + " appliances; " + labelsPerOnOff + " labels per appliance; " + onConcurrency
            + " max appliances on at once";
}

From source file:com.evolveum.midpoint.web.page.admin.workflow.PageProcessInstances.java

private List<IColumn<ProcessInstanceDto, String>> initColumns() {
    List<IColumn<ProcessInstanceDto, String>> columns = new ArrayList<IColumn<ProcessInstanceDto, String>>();

    IColumn column = new CheckBoxHeaderColumn<ProcessInstanceDto>();
    columns.add(column);/*from   w ww. ja  v a2 s.c  om*/

    column = new LinkColumn<ProcessInstanceDto>(createStringResource("pageProcessInstances.item.name"),
            "name") {

        @Override
        public void onClick(AjaxRequestTarget target, IModel<ProcessInstanceDto> rowModel) {
            ProcessInstanceDto piDto = rowModel.getObject();
            itemDetailsPerformed(target, false, piDto.getProcessInstance().getProcessInstanceId());
        }
    };
    columns.add(column);

    columns.add(new AbstractColumn<ProcessInstanceDto, String>(
            createStringResource("pageProcessInstances.item.started")) {

        @Override
        public void populateItem(Item<ICellPopulator<ProcessInstanceDto>> item, String componentId,
                final IModel<ProcessInstanceDto> rowModel) {
            item.add(new Label(componentId, new AbstractReadOnlyModel<Object>() {

                @Override
                public Object getObject() {
                    ProcessInstanceDto pi = rowModel.getObject();
                    Date started = XmlTypeConverter.toDate(pi.getProcessInstance().getStartTimestamp());
                    if (started == null) {
                        return "?";
                    } else {
                        // todo i18n
                        return DurationFormatUtils.formatDurationWords(
                                System.currentTimeMillis() - started.getTime(), true, true) + " ago";
                    }
                }
            }));
        }
    });

    return columns;
}