Example usage for org.joda.time.format DateTimeFormat forPattern

List of usage examples for org.joda.time.format DateTimeFormat forPattern

Introduction

In this page you can find the example usage for org.joda.time.format DateTimeFormat forPattern.

Prototype

public static DateTimeFormatter forPattern(String pattern) 

Source Link

Document

Factory to create a formatter from a pattern string.

Usage

From source file:com.addthis.hydra.data.util.DateUtil.java

License:Apache License

public static DateTimeFormatter getFormatter(String format) {
    return DateTimeFormat.forPattern(format);
}

From source file:com.addthis.hydra.data.util.TimeField.java

License:Apache License

@Override
public void postDecode() {
    if (format.equals("native")) {
        format = "unixmillis:10";
    }/*w  ww .  j  av a2 s  . c  o  m*/
    if (format.startsWith("unixmillis")) {
        if (format.indexOf(":") > 0) {
            radix = Integer.parseInt(format.substring(format.indexOf(":") + 1));
        } else {
            radix = 10;
        }
    } else {
        formatter = DateTimeFormat.forPattern(format);
        if (timeZone != null) {
            formatter = formatter.withZone(DateTimeZone.forID(timeZone));
        }
    }
}

From source file:com.addthis.hydra.task.map.DataPurgeServiceImpl.java

License:Apache License

@Override
public boolean purgeData(DataPurgeConfig dataPurgeConfig, DateTime currentTime) {
    if (!validatePurgeParameters(dataPurgeConfig, currentTime)) {
        return false;
    }//from  www .  j a va 2  s .  co m
    DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(dataPurgeConfig.getDatePathFormat());
    DateTime oldestDataAllowed;
    if (dataPurgeConfig.getMaxAgeInDays() > 0) {
        oldestDataAllowed = currentTime.plusDays(-dataPurgeConfig.getMaxAgeInDays());
    } else {
        oldestDataAllowed = currentTime.plusHours(-dataPurgeConfig.getMaxAgeInHours());
    }
    logger.debug("Oldest data allowed {} , current time is {}",
            new Object[] { oldestDataAllowed, currentTime });
    for (String directoryPrefix : dataPurgeConfig.getDirectoryPrefix()) {
        for (File prefixDirectory : expandPrefix(directoryPrefix)) {
            List<File> subdirectories = getSubdirectoryList(prefixDirectory, null);
            for (File subdirectory : subdirectories) {
                logger.trace("Considering directory {} for purge", subdirectory);
                safeDelete(prefixDirectory.getPath(), dateTimeFormatter, oldestDataAllowed, subdirectory,
                        dataPurgeConfig.isFileBasedPurge(), dataPurgeConfig.getDateStartIndex(),
                        dataPurgeConfig.getDateStringLength());
            }
            if (dataPurgeConfig.getCleanEmptyParents()) {
                for (File directory : subdirectories) {
                    if (directory.list() != null && directory.list().length == 0) {
                        try {
                            FileUtils.deleteDirectory(directory);
                        } catch (IOException e) {
                            logger.warn("Failed to delete empty directory {}", directory);
                        }
                    }
                }
            }
        }
    }

    return true;

}

From source file:com.addthis.hydra.task.output.tree.PathPrune.java

License:Apache License

@JsonCreator
public PathPrune(@Time(TimeUnit.MILLISECONDS) @JsonProperty("ttl") long ttl,
        @Nullable @JsonProperty("nameFormat") String nameFormat,
        @Nullable @JsonProperty("timezone") String timezone,
        @Nullable @JsonProperty("treePath") String treePath, @JsonProperty("timePropKey") String timePropKey,
        @JsonProperty("ignoreMissingTimeProp") boolean ignoreMissingTimeProp,
        @JsonProperty("allLeaves") boolean allLeaves, @JsonProperty("relativeDown") int relativeDown,
        @JsonProperty("preempt") boolean preempt, @JsonProperty("excludes") ImmutableSet<String> excludes) {
    this.ttl = ttl;
    this.timePropKey = timePropKey;
    this.ignoreMissingTimeProp = ignoreMissingTimeProp;
    this.allLeaves = allLeaves;
    this.relativeDown = relativeDown;
    this.preempt = preempt;
    this.excludes = excludes;
    if (nameFormat != null && timezone != null) {
        this.nameFormat = DateTimeFormat.forPattern(nameFormat).withZone(DateTimeZone.forID(timezone));
    } else if (nameFormat != null) {
        this.nameFormat = DateTimeFormat.forPattern(nameFormat);
    } else {/*from  w w w .j  av  a  2 s .  c o  m*/
        this.nameFormat = null;
    }
    if ((treePath != null) && (relativeDown != 0)) {
        throw new IllegalStateException("cannot use both treePath and relativeDown parameters");
    }
    if (treePath != null) {
        this.treePath = ImmutableList.copyOf(SLASH_SPLITTER.splitToList(treePath));
    } else {
        this.treePath = null;
    }
}

From source file:com.addthis.hydra.task.source.AbstractPersistentStreamSource.java

License:Apache License

/**
 * called by data source wrapper and performs common initialization
 * steps.//from ww  w  .ja  v  a 2 s.  c o m
 */
public boolean init(File stateDir, Integer[] shards) throws Exception {
    if (log.isDebugEnabled()) {
        log.debug("SSM: " + CodecJSON.encodeString(this));
    }
    setStateDir(stateDir);
    if (log.isTraceEnabled()) {
        log.trace("shards :: " + Strings.join(shards, " :: "));
    }
    /* expand files list */
    HashSet<String> matches = new HashSet<>();
    if (log.isTraceEnabled()) {
        log.trace("files.1 :: " + Strings.join(files, " -- "));
    }
    /* expand mods */
    for (String file : files) {
        for (Integer shard : shards) {
            matches.add(file.replace("{{mod}}", Strings.padleft(shard.toString(), 3, Strings.pad0)));
        }
    }
    files = matches.toArray(new String[matches.size()]);
    /* expand {US,DE,FR} bash-style string list */
    for (String file : files) {
        int io1 = file.indexOf("{");
        int io2 = file.indexOf("}");
        if (io1 >= 0 && io2 > io1) {
            String left = file.substring(0, io1);
            String right = file.substring(io2 + 1);
            for (String tok : Strings.splitArray(file.substring(io1 + 1, io2), ",")) {
                // ignore reserved strings for time based expansion
                if (!TIME_CONSTANTS.contains(tok)) {
                    String expand = left.concat(tok).concat(right);
                    matches.add(expand);
                    if (log.isTraceEnabled()) {
                        log.trace("expand " + file + " to " + expand);
                    }
                }
            }
        }
    }
    files = matches.toArray(new String[matches.size()]);
    if (log.isTraceEnabled()) {
        log.trace("files.2 :: " + matches);
    }
    if (log.isTraceEnabled()) {
        log.trace("files.3 :: " + Strings.join(files, " -- "));
    }
    /* calculate start/end dates if required */
    formatter = DateTimeFormat.forPattern(dateFormat);
    if (autoResume && autoResumeFile.exists() && autoResumeFile.canRead() && autoResumeFile.length() > 0) {
        try {
            JSONObject jo = new JSONObject(
                    Bytes.toString(Bytes.readFully(new FileInputStream(autoResumeFile))));
            String resumeDate = jo.optString("lastDate");
            if (resumeDate != null) {
                log.warn("auto resume from " + jo);
                startDate = resumeDate;
            }
        } catch (Exception ex) {
            log.warn("corrupted autoResume file: " + autoResumeFile + " ... " + ex);
        }
    }

    if (startDate == null) {
        log.warn("No startDate provided.");
        return false;
    }

    DateTime start = parseDateTime(startDate);
    if (endDate == null) {
        endDate = NOW_PREFIX + NOW_POSTFIX;
        log.warn("End Date not provided, using current time: " + endDate + " as end date for job");
    }
    DateTime end = parseDateTime(endDate);
    /* populate date list from start/end */
    fillDateList(start, end);
    log.info("[init] " + start + " to " + end + " = " + dates.size() + " time units");
    return doInit();
}

From source file:com.aegeus.utils.TimeUtils.java

License:Apache License

/**
 * Returns formatted date string by date and format string
 *
 * @param date   date object//from w  w  w .j a v a  2 s .co  m
 * @param format date format
 * @return formatted date
 */
public static String getFormat(Date date, String format) {
    return DateTimeFormat.forPattern(format).print(date.getTime());
}

From source file:com.alliander.osgp.adapter.protocol.oslp.application.mapping.OslpMapper.java

License:Open Source License

@Override
protected void configure(final MapperFactory factory) {
    factory.getConverterFactory().registerConverter(new IntegerToByteStringConverter());
    factory.getConverterFactory().registerConverter(new ConfigurationToOslpSetConfigurationRequestConverter());
    factory.getConverterFactory().registerConverter(new OslpGetConfigurationResponseToConfigurationConverter());
    factory.getConverterFactory().registerConverter(new DaliConfigurationToOslpDaliConfigurationConverter());
    factory.getConverterFactory().registerConverter(new RelayConfigurationToOslpRelayConfigurationConverter());
    factory.getConverterFactory().registerConverter(new LightTypeConverter());
    factory.getConverterFactory().registerConverter(new LinkTypeConverter());
    factory.getConverterFactory().registerConverter(new MeterTypeConverter());
    factory.getConverterFactory().registerConverter(new RelayTypeConverter());
    factory.getConverterFactory().registerConverter(new RelayDataConverter());
    factory.getConverterFactory().registerConverter(new PowerUsageDataConverter());
    factory.getConverterFactory().registerConverter(new HistoryTermTypeConverter());

    // Converter from String to DateTime using the Oslp time format.
    factory.getConverterFactory().registerConverter(new CustomConverter<String, DateTime>() {

        @Override//from w  w  w .ja  va2s.c  o  m
        public DateTime convert(final String source, final Type<? extends DateTime> destinationType) {
            return DateTimeFormat.forPattern(TIME_FORMAT).withZoneUTC().parseDateTime(source);
        }
    });

    // Converter from DateTime to String using the Oslp time format.
    factory.getConverterFactory().registerConverter(new CustomConverter<DateTime, String>() {

        @Override
        public String convert(final DateTime source, final Type<? extends String> destinationType) {
            return source.toString(DateTimeFormat.forPattern(TIME_FORMAT).withZoneUTC());
        }
    });
}

From source file:com.alliander.osgp.adapter.protocol.oslp.elster.application.mapping.OslpMapper.java

License:Open Source License

@Override
protected void configure(final MapperFactory factory) {
    factory.getConverterFactory().registerConverter(new IntegerToByteStringConverter());
    factory.getConverterFactory().registerConverter(new ConfigurationToOslpSetConfigurationRequestConverter());
    factory.getConverterFactory().registerConverter(new OslpGetConfigurationResponseToConfigurationConverter());
    factory.getConverterFactory().registerConverter(new RelayMatrixConverter());
    factory.getConverterFactory().registerConverter(new DaliConfigurationToOslpDaliConfigurationConverter());
    factory.getConverterFactory().registerConverter(new RelayConfigurationToOslpRelayConfigurationConverter());
    factory.getConverterFactory().registerConverter(new LightTypeConverter());
    factory.getConverterFactory().registerConverter(new LinkTypeConverter());
    factory.getConverterFactory().registerConverter(new MeterTypeConverter());
    factory.getConverterFactory().registerConverter(new RelayTypeConverter());
    factory.getConverterFactory().registerConverter(new RelayDataConverter());
    factory.getConverterFactory().registerConverter(new PowerUsageDataConverter());
    factory.getConverterFactory().registerConverter(new HistoryTermTypeConverter());

    // Converter from String to DateTime using the Oslp time format.
    factory.getConverterFactory().registerConverter(new CustomConverter<String, DateTime>() {

        @Override//  w  ww.  j  av  a2  s. c o m
        public DateTime convert(final String source, final Type<? extends DateTime> destinationType) {
            return DateTimeFormat.forPattern(TIME_FORMAT).withZoneUTC().parseDateTime(source);
        }
    });

    // Converter from DateTime to String using the Oslp time format.
    factory.getConverterFactory().registerConverter(new CustomConverter<DateTime, String>() {

        @Override
        public String convert(final DateTime source, final Type<? extends String> destinationType) {
            return source.toString(DateTimeFormat.forPattern(TIME_FORMAT).withZoneUTC());
        }
    });
}

From source file:com.alliander.osgp.webdevicesimulator.service.OslpChannelHandler.java

License:Open Source License

private static Message createGetPowerUsageHistoryWithDatesResponse(
        final GetPowerUsageHistoryRequest powerUsageHistoryRequest) throws ParseException {

    final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHHmmss").withZoneUTC();

    // 20140405 220000
    final DateTime now = new DateTime();
    final DateTime dateTimeFrom = formatter
            .parseDateTime(powerUsageHistoryRequest.getTimePeriod().getStartTime());
    DateTime dateTimeUntil = formatter.parseDateTime(powerUsageHistoryRequest.getTimePeriod().getEndTime());

    final int itemsPerPage = 2;
    final int intervalMinutes = powerUsageHistoryRequest.getTermType() == HistoryTermType.Short ? 60 : 1440;
    final int usagePerItem = powerUsageHistoryRequest.getTermType() == HistoryTermType.Short ? 2400 : 57600;

    // If from in the future, return emtpy list
    final List<PowerUsageData> powerUsageDataList = new ArrayList<PowerUsageData>();
    if (dateTimeFrom.isAfter(now)) {
        return createUsageMessage(1, itemsPerPage, 1, powerUsageDataList);
    }/*from   w w  w .  jav a2 s.c o  m*/

    // Ensure until date is not in future
    dateTimeUntil = correctUsageUntilDate(dateTimeUntil, powerUsageHistoryRequest.getTermType());

    final int queryInterval = Minutes.minutesBetween(dateTimeFrom, dateTimeUntil).getMinutes();
    final int totalNumberOfItems = queryInterval / intervalMinutes;
    final int numberOfPages = (int) Math.ceil((double) totalNumberOfItems / (double) itemsPerPage);

    // Determine page number
    int currentPageNumber;
    if (powerUsageHistoryRequest.getPage() == 0) {
        currentPageNumber = 1;
    } else {
        currentPageNumber = powerUsageHistoryRequest.getPage();
    }

    int page = 1;
    int itemsToSkip = 0;
    while (currentPageNumber != page) {
        itemsToSkip += itemsPerPage;
        page++;
    }

    // Advance time to correct page starting point, last to first (like real
    // device)
    DateTime pageStartTime = dateTimeUntil.minusMinutes(intervalMinutes * itemsToSkip)
            .minusMinutes(intervalMinutes);
    final int itemsOnPage = Math.min(Math.abs(totalNumberOfItems - itemsToSkip), itemsPerPage);

    // Advance usage to start of page
    int totalUsage = (totalNumberOfItems * usagePerItem) - (usagePerItem * itemsToSkip);

    // Fill page with items
    for (int i = 0; i < itemsOnPage; i++) {
        final int range = (100) + 1;
        final int randomCumulativeMinutes = (int) (Math.random() * range) + 100;

        // Increase the meter
        final double random = usagePerItem - (usagePerItem / 50d * Math.random());
        totalUsage -= random;
        // Add power usage item to response
        final PowerUsageData powerUsageData = PowerUsageData.newBuilder()
                .setRecordTime(pageStartTime.toString(formatter)).setMeterType(MeterType.P1)
                .setTotalConsumedEnergy(totalUsage).setActualConsumedPower((int) random)
                .setPsldData(PsldData.newBuilder().setTotalLightingHours((int) random * 3))
                .setSsldData(SsldData.newBuilder().setActualCurrent1(10).setActualCurrent2(20)
                        .setActualCurrent3(30).setActualPower1(10).setActualPower2(20).setActualPower3(30)
                        .setAveragePowerFactor1(10).setAveragePowerFactor2(20).setAveragePowerFactor3(30)
                        .addRelayData(Oslp.RelayData.newBuilder()
                                .setIndex(ByteString.copyFrom(new byte[] { 1 }))
                                .setTotalLightingMinutes(INITIAL_BURNING_MINUTES - randomCumulativeMinutes))
                        .addRelayData(Oslp.RelayData.newBuilder()
                                .setIndex(ByteString.copyFrom(new byte[] { 2 }))
                                .setTotalLightingMinutes(INITIAL_BURNING_MINUTES - randomCumulativeMinutes))
                        .addRelayData(Oslp.RelayData.newBuilder()
                                .setIndex(ByteString.copyFrom(new byte[] { 3 }))
                                .setTotalLightingMinutes(INITIAL_BURNING_MINUTES - randomCumulativeMinutes))
                        .addRelayData(Oslp.RelayData.newBuilder()
                                .setIndex(ByteString.copyFrom(new byte[] { 4 }))
                                .setTotalLightingMinutes(INITIAL_BURNING_MINUTES - randomCumulativeMinutes)))
                .build();

        powerUsageDataList.add(powerUsageData);
        pageStartTime = pageStartTime.minusMinutes(intervalMinutes);

        INITIAL_BURNING_MINUTES -= CUMALATIVE_BURNING_MINUTES;
    }

    return createUsageMessage(currentPageNumber, itemsPerPage, numberOfPages, powerUsageDataList);
}

From source file:com.almende.arum.EventPusher.java

License:Apache License

/**
 * Load events.// w w  w  .j  a v a 2  s  . c  o m
 *
 * @param filename
 *            the filename
 * @return the integer
 * @throws IOException
 *             Signals that an I/O exception has occurred.
 */
@Access(AccessType.PUBLIC)
public Integer loadEvents(@Name("filename") String filename) throws IOException {
    final BufferedReader reader = new BufferedReader(new FileReader(filename));
    final DateTimeFormatter formatter = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");

    events.clear();

    String line = reader.readLine();
    while (line != null) {

        if (line.isEmpty()) {
            continue;
        }
        final ObjectNode event = JOM.createObjectNode();
        final String[] elements = line.split(",");
        if (!elements[0].equals("jobId")) {
            event.put("jobId", elements[0].trim());
            event.put("time", DateTime.parse(elements[1], formatter).toString());
            event.put("performedBy", elements[2].trim());
            event.put("type", elements[3].trim());
            event.put("assignment", elements[4].trim());
            event.put("productId", elements[5].trim());
            event.put("operation", elements[6].trim());

            if (elements.length > 7) {
                final String[] requirements = elements[7].split(";");
                final ArrayNode reqs = JOM.createArrayNode();
                for (String req : requirements) {
                    req = req.replaceAll("\"", "");
                    if (req.contains("(")) {
                        final ObjectNode r = JOM.createObjectNode();
                        r.put("type", req.substring(0, req.indexOf("(") - 1).trim());
                        r.put("agentId", req.substring(req.indexOf("(") + 1, req.indexOf(")")).trim());
                        reqs.add(r);
                    } else {
                        final ObjectNode r = JOM.createObjectNode();
                        r.put("type", req.trim());
                        reqs.add(r);
                    }
                }
                event.set("prerequisites", reqs);
            }
            events.add(event);
        }
        line = reader.readLine();

    }
    reader.close();
    return events.size();
}