Example usage for org.joda.time Seconds secondsBetween

List of usage examples for org.joda.time Seconds secondsBetween

Introduction

In this page you can find the example usage for org.joda.time Seconds secondsBetween.

Prototype

public static Seconds secondsBetween(ReadablePartial start, ReadablePartial end) 

Source Link

Document

Creates a Seconds representing the number of whole seconds between the two specified partial datetimes.

Usage

From source file:org.traccar.protocol.SmokeyProtocolDecoder.java

License:Apache License

private static void sendResponse(Channel channel, SocketAddress remoteAddress, ChannelBuffer id, int index,
        int report) {

    if (channel != null) {
        ChannelBuffer response = ChannelBuffers.dynamicBuffer();
        response.writeBytes("SM".getBytes(StandardCharsets.US_ASCII));
        response.writeByte(3); // protocol version
        response.writeByte(MSG_DATE_RECORD_ACK);
        response.writeBytes(id);//w  w  w .j a va 2 s .  co m
        response.writeInt(Seconds.secondsBetween(new DateTime(2000, 1, 1, 0, 0, DateTimeZone.UTC),
                new DateTime(DateTimeZone.UTC)).getSeconds());
        response.writeByte(index);
        response.writeByte(report - 0x200);

        short checksum = (short) 0xF5A0;
        for (int i = 0; i < response.readableBytes(); i += 2) {
            checksum ^= ChannelBuffers.swapShort(response.getShort(i));
        }
        response.writeShort(checksum);

        channel.write(response, remoteAddress);
    }
}

From source file:playground.johannes.gsv.synPop.invermo.Date2TimeTask.java

License:Open Source License

@Override
public void apply(ProxyPlan plan) {
    LocalDateTime reference = null;

    for (ProxyObject leg : plan.getLegs()) {
        String start = leg.getAttribute(CommonKeys.LEG_START_TIME);
        if (start != null) {
            if (reference == null) {
                reference = getReference(start);
            }/*from   w  ww .  j a va2  s.c o  m*/

            LocalDateTime startDate = SplitPlanTask.formatter.parseLocalDateTime(start);
            Seconds secs = Seconds.secondsBetween(reference, startDate);

            leg.setAttribute(CommonKeys.LEG_START_TIME, String.valueOf(secs.getSeconds()));
            if (!leg.getAttributes().containsKey(MIDKeys.PERSON_MONTH)) {
                setPlanDate(startDate, plan);
            }
        }

        String end = leg.getAttribute(CommonKeys.LEG_END_TIME);
        if (end != null) {
            if (reference == null) {
                reference = getReference(end);
            }

            LocalDateTime endDate = SplitPlanTask.formatter.parseLocalDateTime(end);
            Seconds secs = Seconds.secondsBetween(reference, endDate);

            leg.setAttribute(CommonKeys.LEG_END_TIME, String.valueOf(secs.getSeconds()));

            if (!leg.getAttributes().containsKey(MIDKeys.PERSON_MONTH)) {
                setPlanDate(endDate, plan);
            }
        }
    }

}

From source file:projectresurrection.Eve.java

public static void main(String args[]) {
    init();/*from ww w  .  ja va  2 s .  c om*/
    listener = new Listener();
    voice = new VoiceSynthesis();
    clock = new Clock(Clock.BRAIN, Clock.UPDATE, (String) preferences.get("time zone"));
    gui = new GUI(GUI.DEFAULT);
    gui.start(GUI.DEFAULT);
    while (true) {
        if (!commands.isEmpty()) {
            String command = commands.poll();
            prevCommands.add(command);
            switch (command) {
            case "what is the current weather":
                Clock.addCommand("kill");
                List currentWeather = Weather.getCurrent();
                sb = "The Current Tempurature is " + currentWeather.get(1) + " degrees fahrenheit and "
                        + ((currentWeather.get(2).equals("Thunderstorm In Vicinity")) ? "there is a " : "is ")
                        + currentWeather.get(2);
                if (!currentWeather.get(3).equals("0")) {
                    sb += ", with wind traveling at " + currentWeather.get(3) + " miles per hour ";
                    switch ((String) currentWeather.get(5)) {
                    case "N":
                        sb += "North";
                        break;
                    case "NNE":
                        sb += "North North East";
                        break;
                    case "NE":
                        sb += "North East";
                        break;
                    case "ENE":
                        sb += "East North East";
                        break;
                    case "E":
                        sb += "East";
                        break;
                    case "ESE":
                        sb += "East South East";
                        break;
                    case "SE":
                        sb += "South East";
                        break;
                    case "SSE":
                        sb += "South South East";
                        break;
                    case "S":
                        sb += "South";
                        break;
                    case "SSW":
                        sb += "South South West";
                        break;
                    case "SW":
                        sb += "South West";
                        break;
                    case "WSW":
                        sb += "West South West";
                        break;
                    case "W":
                        sb += "West";
                        break;
                    case "WNW":
                        sb += "West North West";
                        break;
                    case "NW":
                        sb += "North West";
                        break;
                    case "NNW":
                        sb += "North North West";
                        break;
                    }
                }
                voice.say(sb);
                break;
            case "what time is it":
                date = new DateTime(clock.getCurrent());
                voice.say(
                        "It is " + date.getHourOfDay() % 12 + ":" + ((date.getMinuteOfHour() < 10) ? "oh " : "")
                                + date.getMinuteOfHour() + ((date.getHourOfDay() > 12) ? " P.M." : " A.M."));
                break;
            case "what is the date":
                date = new DateTime(clock.getCurrent());
                sb = "It is the ";
                switch (date.getDayOfMonth()) {
                case 1:
                    sb += "first";
                    break;
                case 2:
                    sb += "second";
                    break;
                case 3:
                    sb += "third";
                    break;
                case 4:
                    sb += "fourth";
                    break;
                case 5:
                    sb += "fifth";
                    break;
                case 6:
                    sb += "sixth";
                    break;
                case 7:
                    sb += "seventh";
                    break;
                case 8:
                    sb += "eighth";
                    break;
                case 9:
                    sb += "ninth";
                    break;
                case 10:
                    sb += "tenth";
                    break;
                case 11:
                    sb += "eleventh";
                    break;
                case 12:
                    sb += "twelth";
                    break;
                case 13:
                    sb += "thirteenth";
                    break;
                case 14:
                    sb += "fourteenth";
                    break;
                case 15:
                    sb += "fifteenth";
                    break;
                case 16:
                    sb += "sixteenth";
                    break;
                case 17:
                    sb += "seventeenth";
                    break;
                case 18:
                    sb += "eighteenth";
                    break;
                case 19:
                    sb += "nineteenth";
                    break;
                case 20:
                    sb += "twentieth";
                    break;
                case 21:
                    sb += "twenty-first";
                    break;
                case 22:
                    sb += "twenty-second";
                    break;
                case 23:
                    sb += "twenty-third";
                    break;
                case 24:
                    sb += "twenty-fourth";
                    break;
                case 25:
                    sb += "twenty-fifth";
                    break;
                case 26:
                    sb += "twenty-sixth";
                    break;
                case 27:
                    sb += "twenty-seventh";
                    break;
                case 28:
                    sb += "twenty-eighth";
                    break;
                case 29:
                    sb += "twenty-ninth";
                    break;
                case 30:
                    sb += "thirtieth";
                    break;
                case 31:
                    sb += "thirty-first";
                    break;
                }
                sb += " of ";
                switch (date.getMonthOfYear()) {
                case 1:
                    sb += "January";
                    break;
                case 2:
                    sb += "Feburary";
                    break;
                case 3:
                    sb += "March";
                    break;
                case 4:
                    sb += "April";
                    break;
                case 5:
                    sb += "May";
                    break;
                case 6:
                    sb += "June";
                    break;
                case 7:
                    sb += "July";
                    break;
                case 8:
                    sb += "August";
                    break;
                case 9:
                    sb += "September";
                    break;
                case 10:
                    sb += "October";
                    break;
                case 11:
                    sb += "November";
                    break;
                case 12:
                    sb += "December";
                    break;
                }
                sb += ", " + date.getYear();
                voice.say(sb);
                break;
            case "what day is it":
                date = new DateTime(clock.getCurrent());
                sb = "Today is ";
                switch (date.getDayOfWeek()) {
                case (1):
                    sb += "Mondaay";
                    break;
                case (2):
                    sb += "Tuesdaay";
                    break;
                case (3):
                    sb += "Wednesdaay";
                    break;
                case (4):
                    sb += "Thursdaay";
                    break;
                case (5):
                    sb += "Fridaay";
                    break;
                case (6):
                    sb += "Saturdaay";
                    break;
                case (7):
                    sb += "Sundaay";
                    break;
                }
                voice.say(sb);
                break;
            case "create a reminder":

                break;
            case "how old are you":
                sb = "I am ";
                DateTime current = clock.getCurrent();
                Period diff = new Period(birth, current);
                int days = Days.daysBetween(birth, current).getDays();
                int hours = Hours.hoursBetween(birth, current).getHours() % 24;
                int minutes = Minutes.minutesBetween(birth, current).getMinutes() % 60;
                int seconds = Seconds.secondsBetween(birth, current).getSeconds() % 60;
                switch (days) {
                case 0:
                    sb += "";
                    break;
                case 1:
                    if (hours == 0 && minutes == 0 && seconds == 0) {
                        sb += days + " day old.";
                    } else {
                        sb += days + " day, ";
                    }
                    break;
                default:
                    if (hours == 0 && minutes == 0 && seconds == 0) {
                        sb += days + " days old.";
                    } else {
                        sb += days + " days, ";
                    }
                    break;
                }
                switch (hours) {
                case 0:
                    sb += "";
                    break;
                case 1:
                    if (minutes == 0 && seconds == 0) {
                        sb += "and " + hours + " hour old.";
                    } else {
                        sb += hours + " hour, ";
                        break;
                    }
                    break;
                default:
                    if (minutes == 0 && seconds == 0) {
                        sb += "and " + hours + " hours old.";
                    } else {
                        sb += hours + " hours, ";
                    }
                    break;
                }
                switch (minutes) {
                case 0:
                    sb += "";
                    break;
                case 1:
                    if (seconds == 0) {
                        sb += "and " + minutes + " minute old.";
                    } else {
                        sb += minutes + " minute, ";
                    }
                    break;
                default:
                    if (seconds == 0) {
                        sb += "and " + minutes + " minutes old.";
                    } else {
                        sb += minutes + " minutes, ";
                    }
                    break;
                }
                switch (seconds) {
                case 0:
                    sb += "";
                    break;
                case 1:
                    sb += "and " + seconds + " second old.";
                default:
                    sb += "and " + seconds + " seconds old.";
                    break;
                }
                voice.say(sb);
                break;
            case "change preferences":
                updatePref();
                break;
            case "":
                voice.say("Lee dul lee dul lee dul leeee");
                break;
            case "repeat":
                voice.repeatSlow();
                break;
            default:
                voice.say(command);
                break;
            }
        } else {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }
    }
}

From source file:ro.nextreports.server.api.ReportWebService.java

License:Apache License

/**
 * Run a report with parameters.//www  .ja va2  s .c om
 * Path is relative to nextserver root ('/nextServer'). Ex: '/reports/test' <=> '/nextServer/reports/test'
 *
 * @param runReportMetaData runReportMetaData
 * @return documentUrl
 */
@POST
@Path("runReport")
public String runReport(RunReportMetaData runReportMetaData) {

    if (LOG.isDebugEnabled()) {
        LOG.debug("Run report web service");
        LOG.debug("reportId = " + runReportMetaData.getReportId());
        LOG.debug("reportFormat = " + runReportMetaData.getFormat());
        LOG.debug(
                "parametersValues = " + ReportUtil.getDebugParameters(runReportMetaData.getParametersValues()));
    }

    Report report = null;
    Date startDate = new Date();
    boolean error = false;
    String message = "Ok";
    String url = "";
    try {

        report = (Report) storageService.getEntityById(runReportMetaData.getReportId());

        ReportRuntime runtime = new ReportRuntime();
        runtime.setOutputType(runReportMetaData.getFormat());
        if (runReportMetaData.getParametersValues() == null) {
            runReportMetaData.setParametersValues(new HashMap<String, Object>());
        }
        runtime.setParametersValues(runReportMetaData.getParametersValues(), null);

        String[] result = reportService.reportToURL(report, runtime, "webservice",
                UUID.randomUUID().toString());
        if (result == null) {
            return "";
        }

        if (LOG.isDebugEnabled()) {
            LOG.debug("url = " + result[1]);
        }
        url = result[1];
        return url;

    } catch (NotFoundException e) {
        error = true;
        message = e.getMessage();
        LOG.error(message, e);
        throw new WebApplicationException(new Exception(e.getMessage()), ErrorCodes.NOT_FOUND);
    } catch (NoDataFoundException e) {
        error = false;
        message = "No Data";
        throw new WebApplicationException(new Exception(e.getMessage()), ErrorCodes.NO_DATA_FOUND);
    } catch (Exception e) {
        error = true;
        message = e.getMessage();
        LOG.error(message, e);
        throw new WebApplicationException(new Exception(e.getMessage()), ErrorCodes.RUN_ERROR);
    } finally {

        // save history
        if (report != null) {

            User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
            String runnerId = user.getId();

            RunReportHistory runHistory = new RunReportHistory();
            String name = UUID.randomUUID().toString();
            runHistory.setName(name);

            String path = report.getPath() + StorageConstants.PATH_SEPARATOR + "runHistory"
                    + StorageConstants.PATH_SEPARATOR + name;
            runHistory.setPath(path);

            if (LOG.isDebugEnabled()) {
                LOG.debug("Create run history '" + runHistory.getPath() + "'");
            }

            runHistory.setRunnerId(runnerId);
            runHistory.setRunnerType(RunReportHistory.WEB_SERVICE);
            runHistory.setStartDate(startDate);
            runHistory.setEndDate(new Date());
            runHistory.setDuration(Seconds.secondsBetween(new DateTime(runHistory.getStartDate()),
                    new DateTime(runHistory.getEndDate())).getSeconds());
            runHistory.setError(error);
            runHistory.setMessage(message);
            runHistory.setUrl(url);
            runHistory.setParametersValues(runReportMetaData.getParametersValues(), null);

            try {
                storageService.addEntity(runHistory);
            } catch (Exception e) {
                e.printStackTrace();
                LOG.error(e.getMessage(), e);
            }
        }

    }
}

From source file:ro.nextreports.server.schedule.RunReportJob.java

License:Apache License

private void executeOneReport(JobExecutionContext context, ResourceBundle bundle, IdName batchValue) {

    JobDataMap dataMap = context.getMergedJobDataMap();
    SchedulerJob schedulerJob = (SchedulerJob) dataMap.get(SCHEDULER_JOB);
    Report report = schedulerJob.getReport();

    ReportService reportService = (ReportService) dataMap.get(REPORT_SERVICE);
    DataSourceService dataSourceService = (DataSourceService) dataMap.get(DATASOURCE_SERVICE);
    StorageService storageService = (StorageService) dataMap.get(STORAGE_SERVICE);
    final SecurityService securityService = (SecurityService) dataMap.get(SECURITY_SERVICE);

    List<Destination> destinations = schedulerJob.getDestinations();
    final JavaMailSenderImpl mailSender = (JavaMailSenderImpl) dataMap.get(MAIL_SENDER);
    final String mailFrom = storageService.getSettings().getMailServer().getFrom();
    String reportsPath = new File(storageService.getSettings().getReportsHome()).getAbsolutePath();

    Auditor auditor = (Auditor) dataMap.get(AUDITOR);
    AuditEvent auditEvent = (AuditEvent) dataMap.get(AUDIT_EVENT);
    String runnerType = dataMap.getString(RUNNER_TYPE);
    String runnerId = dataMap.getString(RUNNER_ID);
    String creator = "";
    AclEntry[] granted = securityService.getGrantedById(report.getId());
    if (RunReportHistory.SCHEDULER.equals(runnerType)) {
        creator = schedulerJob.getCreatedBy();
    } else if (RunReportHistory.USER.equals(runnerType)) {
        try {//from  www . jav  a 2  s.c  o m
            creator = storageService.getEntityById(runnerId).getName();
        } catch (Exception e) {
            e.printStackTrace();
            LOG.error(e.getMessage(), e);
        }
    }
    String key = dataMap.getString(RUNNER_KEY);

    boolean error = false;
    String message = "Ok";
    String url = "";
    String fileName = null;
    Connection connection = null;
    try {
        /*
           try {
           Thread.sleep(2 * 60 * 1000);
           } catch (InterruptedException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
           }
           */

        // for Scheduled reports
        // take care for INTERVAL template values
        // and set start_date and end_date accordingly           
        if (!schedulerJob.isRunNow()) {
            ReportRuntimeTemplate template = schedulerJob.getTemplate();
            if (template != null) {
                ShortcutType type = template.getShortcutType();
                if ((type != null) && !ShortcutType.NONE.equals(type)) {
                    Date[] dates = type.getTimeShortcutType().getDates();
                    Map<String, Object> map = schedulerJob.getReportRuntime().getParametersValues();
                    if (map.containsKey(QueryParameter.INTERVAL_START_DATE_NAME)) {
                        Object start = map.get(QueryParameter.INTERVAL_START_DATE_NAME);
                        Object value = null;
                        if (start instanceof Date) {
                            value = dates[0];
                        } else if (start instanceof Timestamp) {
                            value = new Timestamp(dates[0].getTime());
                        } else if (start instanceof Time) {
                            value = new Time(dates[0].getTime());
                        }
                        if (value != null) {
                            schedulerJob.getReportRuntime().updateParameterValue(
                                    QueryParameter.INTERVAL_START_DATE_NAME, (Serializable) value);
                        }
                    }
                    if (map.containsKey(QueryParameter.INTERVAL_END_DATE_NAME)) {
                        Object start = map.get(QueryParameter.INTERVAL_END_DATE_NAME);
                        Object value = null;
                        if (start instanceof Date) {
                            value = dates[1];
                        } else if (start instanceof Timestamp) {
                            value = new Timestamp(dates[1].getTime());
                        } else if (start instanceof Time) {
                            value = new Time(dates[1].getTime());
                        }
                        if (value != null) {
                            schedulerJob.getReportRuntime().updateParameterValue(
                                    QueryParameter.INTERVAL_END_DATE_NAME, (Serializable) value);
                        }
                    }
                }
            }
        }

        if (LOG.isDebugEnabled()) {
            LOG.debug("Run report '" + report.getPath() + "'");
            // debug runtime parameters
            Map<String, Object> parametersValues = schedulerJob.getReportRuntime().getParametersValues();
            StringBuilder sb = new StringBuilder("\r\nRuntime parameters for '");
            sb.append(report.getPath());
            sb.append("'\r\n");
            sb.append(ReportUtil.getDebugParameters(parametersValues));
            LOG.debug(sb.toString());
        }

        String[] result = new String[2];
        if (report.isAlarmType() || report.isIndicatorType() || report.isDisplayType()) {
            // for alarm alert there is no url
            ro.nextreports.engine.Report nextReport = NextUtil.getNextReport(storageService.getSettings(),
                    (NextContent) report.getContent());
            final ReportRunner reportRunner = new ReportRunner();
            reportRunner.setParameterValues(schedulerJob.getReportRuntime().getParametersValues());
            reportRunner.setReport(nextReport);
            if (report.isAlarmType()) {
                reportRunner.setFormat(ReportRunner.ALARM_FORMAT);
            } else if (report.isDisplayType()) {
                reportRunner.setFormat(ReportRunner.DISPLAY_FORMAT);
            } else {
                reportRunner.setFormat(ReportRunner.INDICATOR_FORMAT);
            }
            try {
                connection = ConnectionUtil.createConnection(storageService, report.getDataSource());
            } catch (RepositoryException e) {
                throw new ReportRunnerException("Cannot connect to database", e);
            }
            reportRunner.setConnection(connection);

            List<SmtpAlertDestination> alertDestinations = getAlertDestinations(destinations);
            if (alertDestinations.size() == 0) {
                LOG.error("Alarm '" + report.getPath() + "' has no alert destination.");
                ConnectionUtil.closeConnection(connection);
                return;
            }

            List<Alert> alerts = new ArrayList<Alert>();
            for (final SmtpAlertDestination alertDestination : alertDestinations) {

                alerts.add(new Alert() {
                    protected boolean isActive(Object value) {
                        ConditionalExpression ce = new ConditionalExpression(alertDestination.getOperator());
                        ce.setRightOperand(ce.getOperand(alertDestination.getRightOperand()));
                        ce.setRightOperand2(ce.getOperand(alertDestination.getRightOperand2()));
                        ce.setLeftOperand((Serializable) value);
                        try {
                            boolean result = ce.evaluate();
                            return result;
                        } catch (ConditionalException e) {
                            e.printStackTrace();
                        }
                        return false;
                    }

                    protected void run(Object value, String message) {
                        Distributor alertDistributor = DistributorFactory
                                .getDistributor(DestinationType.ALERT.toString());
                        try {
                            DistributionContext distributionContext = new DistributionContext();
                            distributionContext.setSecurityService(securityService);
                            distributionContext.setMailFrom(mailFrom);
                            distributionContext.setMailSender(mailSender);
                            String sValue = (value == null) ? "" : value.toString();
                            String mailMessage = alertDestination.getMailBody().replaceAll("\\$\\{val\\}",
                                    sValue);
                            distributionContext.setMessage(mailMessage);
                            alertDestination.setMailBody(mailMessage);
                            distributionContext.setAlertMessage(message);
                            alertDistributor.distribute(null, alertDestination, distributionContext);
                        } catch (DistributionException e) {
                            String failedMessage = "Distribution " + alertDestination.getName();
                            message += "\r\n" + failedMessage + " : " + e.getMessage();
                            LOG.error(message, e);
                            e.printStackTrace();
                        }
                    }
                });
            }
            reportRunner.setAlerts(alerts);
            reportRunner.run();
        } else {
            // not null when run
            String author = schedulerJob.getCreator();
            if (author == null) {
                // when schedule
                author = schedulerJob.getCreatedBy();
            }
            result = reportService.reportToURL(report, schedulerJob.getReportRuntime(), author, key);
            if (result == null) {
                fileName = "";
                url = ReportConstants.ETL_FORMAT;
            } else {
                fileName = result[0];
                url = result[1];
            }
        }
    } catch (ReportEngineException e) {
        error = true;
        message = e.getMessage();
        LOG.error(message, e);
        e.printStackTrace();
    } catch (FormatNotSupportedException e) {
        error = true;
        message = e.getMessage();
        LOG.error(message, e);
        e.printStackTrace();
    } catch (NoDataFoundException e) {
        error = false;
        message = bundle.getString("ActionContributor.Run.nodata");
    } catch (InterruptedException e) {
        error = true;
        message = bundle.getString("ActionContributor.Run.interrupted");
    } catch (Throwable t) {
        error = true;
        if (t instanceof OutOfMemoryError) {
            message = bundle.getString("ActionContributor.Run.toomany");
        } else {
            message = t.getMessage();
        }
        LOG.error(message, t);
        t.printStackTrace();
    } finally {
        ConnectionUtil.closeConnection(connection);
        if (RunReportHistory.USER.equals(runnerType)) {
            String eventMessage = error ? bundle.getString("ActionContributor.Run.error") : message;
            String dynamicUrl = "";
            if (!error) {
                String fName = url.substring(url.lastIndexOf("/") + 1);
                dynamicUrl = reportService.getReportURL(fName);
            }
            ReportResultEvent event = new ReportResultEvent(creator, report.getName(), dynamicUrl,
                    eventMessage);
            reportService.notifyReportListener(event);
            integrationPost(storageService.getSettings(), event);
        }
    }

    List<Distributor> distributors = new ArrayList<Distributor>();
    DistributionContext distributionContext = new DistributionContext();
    distributionContext.setSecurityService(securityService);
    distributionContext.setStorageService(storageService);
    distributionContext.setDataSource(report.getDataSource());
    distributionContext.setError(error);
    distributionContext.setMailFrom(mailFrom);
    distributionContext.setMailSender(mailSender);
    distributionContext.setMessage(message);
    distributionContext.setReportsPath(reportsPath);
    distributionContext.setUrl(url);
    distributionContext.setReportName(report.getName());
    distributionContext.setParameterValues(schedulerJob.getReportRuntime().getHistoryParametersValues()); // contains also the dynamic values
    if (batchMailMap != null) {
        distributionContext.setBatchMailMap(batchMailMap);
    }
    if (batchValue != null) {
        distributionContext.setBatchValue(batchValue.getId());
    }

    if (fileName != null) {
        int errors = 0;
        File exportedFile = new File(reportsPath, fileName);
        for (Destination destination : destinations) {
            Distributor distributor = DistributorFactory.getDistributor(destination.getType());
            distributors.add(distributor);
            try {
                distributor.distribute(exportedFile, destination, distributionContext);
            } catch (DistributionException e) {
                LOG.error(e.getMessage(), e);
                String s = bundle.getString("ActionContributor.Run.distributionFailed");
                String failedMessage = MessageFormat.format(s, destination.getName());
                error = true;
                if (errors == 0) {
                    message = failedMessage + " : " + e.getMessage();
                } else {
                    message += "\r\n" + failedMessage + "  : " + e.getMessage();
                }
                errors++;
            }
        }
    } else {
        if (!report.isAlarmType() && !report.isIndicatorType() && !report.isDisplayType()) {
            // if 'No data' the email is not sent
            // send error through mail
            if (error) {
                for (Destination destination : destinations) {
                    if (DestinationType.SMTP.toString().equals(destination.getType())) {
                        Distributor distributor = DistributorFactory.getDistributor(destination.getType());
                        distributors.add(distributor);
                        try {
                            distributor.distribute(null, destination, distributionContext);
                        } catch (DistributionException e) {
                            String s = bundle.getString("ActionContributor.Run.distributionFailed");
                            String failedMessage = MessageFormat.format(s, destination.getName());
                            error = true;
                            message += "\r\n" + failedMessage + " : " + e.getMessage();
                        }
                    }
                }
            }
        }
    }

    // save history       
    RunReportHistory runHistory = new RunReportHistory();
    String name = UUID.randomUUID().toString();
    runHistory.setName(name);

    String path = null;
    try {
        if (!StorageUtil.isVersion(report)) {
            path = storageService.getEntityById(report.getId()).getPath();
        } else {
            String versionId = StorageUtil.getVersionableId(report);
            path = storageService.getEntityById(versionId).getPath();
        }
    } catch (Exception e) {
        e.printStackTrace();
        LOG.error(e.getMessage(), e);
    }
    path += StorageConstants.PATH_SEPARATOR + "runHistory" + StorageConstants.PATH_SEPARATOR + name;
    runHistory.setPath(path);

    if (LOG.isDebugEnabled()) {
        LOG.debug("Create run history '" + runHistory.getPath() + "'");
    }

    runHistory.setRunnerId(runnerId);
    runHistory.setRunnerType(runnerType);
    runHistory.setStartDate(context.getScheduledFireTime());
    runHistory.setEndDate(new Date());
    runHistory.setDuration(Seconds
            .secondsBetween(new DateTime(runHistory.getStartDate()), new DateTime(runHistory.getEndDate()))
            .getSeconds());
    runHistory.setError(error);
    runHistory.setMessage(message);
    runHistory.setUrl(url);
    runHistory.setParametersValues(schedulerJob.getReportRuntime().getHistoryParametersValues(),
            schedulerJob.getReportRuntime().getHistoryParametersDisplayNames());

    // audit report runs
    auditEvent.setDate(runHistory.getStartDate());
    auditEvent.getContext().put("DURATION", runHistory.getDuration());
    if (error) {
        auditEvent.setErrorMessage(message);
    }
    auditor.logEvent(auditEvent);

    if (!report.isAlarmType() && !report.isIndicatorType() && !report.isIndicatorType()) {
        try {
            storageService.addEntity(runHistory);
        } catch (Exception e) {
            e.printStackTrace();
            LOG.error(e.getMessage(), e);
        }

        // after distribute
        // for send mail distributor : update acl for run report history
        for (Distributor distributor : distributors) {
            distributor.afterDistribute(runHistory, distributionContext);
        }

        // create full permissions for the creator
        if (creator != null) {
            try {
                securityService.grantUser(path, creator, PermissionUtil.getFullPermissions(), false);
            } catch (Exception e) {
                e.printStackTrace();
                LOG.error(e.getMessage(), e);
            }
        }
    }

    // security breach? (reports with data filtered by user)
    // create permissions for those who have permission on report
    //        if (granted != null) {           
    //           for (AclEntry aclEntry :  granted) {               
    //              try {
    //                 if (aclEntry.getType() == AclEntry.USER_TYPE) {
    //                    securityService.grantUser(path, aclEntry.getName(), aclEntry.getPermissions(), false);
    //                 } else if (aclEntry.getType() == AclEntry.GROUP_TYPE) {
    //                    securityService.grantGroup(path, aclEntry.getName(), aclEntry.getPermissions(), false);
    //                 } 
    //                } catch (Exception e) {
    //                    e.printStackTrace();
    //                    LOG.error(e.getMessage(), e);
    //                }
    //           }
    //        }
}

From source file:ro.nextreports.server.service.DefaultSchedulerService.java

License:Apache License

@Transactional(readOnly = true)
@Secured("AFTER_ACL_COLLECTION_READ")
public SchedulerJob[] getActiveSchedulerJobs() {
    List<SchedulerJob> activeJobs = new ArrayList<SchedulerJob>();
    SchedulerJob[] schedulerJobs = getSchedulerJobs();
    for (SchedulerJob job : schedulerJobs) {
        boolean active = false;
        Date now = new Date();
        if (ScheduleConstants.ONCE_TYPE.equals(job.getTime().getType())) {
            active = (job.getTime().getRunDate().compareTo(now) >= 0) || job.isRunning();
        } else {//from   w  w  w  .  j  a  v a  2s. co m
            active = ((job.getTime().getStartActivationDate().compareTo(now) <= 0)
                    && (job.getTime().getEndActivationDate().compareTo(now) >= 0)) || job.isRunning();
        }
        if (active) {
            activeJobs.add(job);

            Map<String, JobExecutionContext> runningJobs;
            try {
                runningJobs = QuartzUtil.getRunningJobs(scheduler);
            } catch (SchedulerException e) {
                throw new RuntimeException(e);
            }
            JobExecutionContext executionContext = runningJobs.get(job.getPath());
            if (executionContext != null) {
                Date fireTime = executionContext.getFireTime();
                job.setRunTime(Seconds.secondsBetween(new DateTime(fireTime), new DateTime()).getSeconds());
            }
        }
    }

    schedulerJobs = activeJobs.toArray(new SchedulerJob[activeJobs.size()]);

    return schedulerJobs;
}

From source file:ro.nextreports.server.service.DefaultSchedulerService.java

License:Apache License

public ReportJobInfo[] getReportJobInfos() {
    User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

    List<JobDetail> jobs;/*from  w ww  .  ja  v a  2  s.  c om*/
    List<Trigger> triggers;
    Map<String, JobExecutionContext> runningJobs;
    try {
        jobs = QuartzUtil.getAllJobDetails(scheduler);
        triggers = QuartzUtil.getAllTriggers(scheduler);
        runningJobs = QuartzUtil.getRunningJobs(scheduler);
    } catch (SchedulerException e) {
        throw new RuntimeException(e);
    }

    List<ReportJobInfo> jobInfos = new ArrayList<ReportJobInfo>(triggers.size());
    for (JobDetail job : jobs) {
        if (!isJobOfUser(job, user)) {
            continue;
        }
        ReportJobInfo jobInfo = new ReportJobInfo();
        String jobName = job.getKey().getName();
        jobInfo.setJobName(jobName);
        jobInfo.setRunner(getUser(job).getUsername());
        jobInfo.setRunnerKey((String) job.getJobDataMap().get(RunReportJob.RUNNER_KEY));
        jobInfo.setReportType((String) job.getJobDataMap().get(RunReportJob.REPORT_TYPE));
        if (runningJobs.containsKey(jobName)) {
            jobInfo.setRunning(true);
            JobExecutionContext executionContext = runningJobs.get(jobName);
            Date fireTime = executionContext.getFireTime();
            jobInfo.setRunTime(Seconds.secondsBetween(new DateTime(fireTime), new DateTime()).getSeconds());
            jobInfo.setNextRun(executionContext.getNextFireTime());
            jobInfo.setStartDate(fireTime);
        } else {
            Trigger trigger;
            try {
                TriggerKey triggerKey = new TriggerKey(job.getKey().getName(), job.getKey().getGroup());
                trigger = scheduler.getTrigger(triggerKey);
            } catch (SchedulerException e) {
                throw new RuntimeException(e);
            }
            // a report runned with Run action can have the trigger null if we enter the dashboard
            if (trigger != null) {
                jobInfo.setNextRun(trigger.getNextFireTime());
            }
        }
        jobInfos.add(jobInfo);
    }

    return jobInfos.toArray(new ReportJobInfo[jobInfos.size()]);
}

From source file:tv.icntv.recommend.algorithm.cf.ViewTimeReducer.java

License:CDDL license

public long check(String from, String end, long time) {
    int se = Seconds.secondsBetween(DateUtils.getDateTime(from.split("\\|")[0]),
            DateUtils.getDateTime(end.split("\\|")[0])).getSeconds();
    return se < time ? se : time;
}

From source file:viability.LogFile.java

/**
 * Get all signal in the last two seconds on list from statistics request DateTime
 * @param daterequest statistics request DateTime
 * @return /*from  w w w  .j a  v  a 2 s .  c om*/
 */
public void averageSignalWeekForDistrict(DateTime daterequest, DateTime dateTimeCreationDB) {
    //WE ASSUME A WEEK = 15 MINUTES FOR DEMO
    LinkedList<String> listdistricts = getListDistrict();
    Iterator iteratorDistricts = listdistricts.iterator();
    //for each District on List
    while (iteratorDistricts.hasNext()) {
        double average = 0;
        int countDistrict = 0;
        String tempdistrict = (String) iteratorDistricts.next();
        Iterator iterator = listSignal.iterator();
        while (iterator.hasNext()) {
            Signal temp = (Signal) iterator.next();
            if (temp.getDistrict().equalsIgnoreCase(tempdistrict)) {
                countDistrict++;
            }
        }
        //get weeks between DB creation date and statistics request date
        int seconds = Seconds.secondsBetween(dateTimeCreationDB, daterequest).getSeconds();
        double countWeeks = seconds / 15;
        //calculate average for this District
        average = countDistrict / countWeeks;
        System.out.println("Average Signal Week for District " + tempdistrict + " is " + average);
    }
}

From source file:viability.LogFile.java

/**
 * Get all signal in the last 30 seconds on list from statistics request DateTime
 * @param daterequest statistics request DateTime
 * @return //w  w  w  .  j  av  a2 s .c  om
 */
public void averageSignalMonthForDistrict(DateTime daterequest, DateTime dateTimeCreationDB) {
    //WE ASSUME A MONTH = 120 SECONDS FOR DEMO
    LinkedList<String> listdistricts = getListDistrict();
    Iterator iteratorDistricts = listdistricts.iterator();
    //for each District on List
    while (iteratorDistricts.hasNext()) {
        double average = 0;
        int countDistrict = 0;
        String tempdistrict = (String) iteratorDistricts.next();
        Iterator iterator = listSignal.iterator();
        while (iterator.hasNext()) {
            Signal temp = (Signal) iterator.next();
            if (temp.getDistrict().equalsIgnoreCase(tempdistrict)) {
                countDistrict++;
            }
        }
        //get weeks between DB creation date and statistics request date
        int seconds = Seconds.secondsBetween(dateTimeCreationDB, daterequest).getSeconds();
        double countWeeks = seconds / 120;
        //calculate average for this District
        average = countDistrict / countWeeks;
        System.out.println("Average Signal Month for District " + tempdistrict + " is " + average);
    }
}