All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dashbuilder.dataset.date.TimeAmount Maven / Gradle / Ivy

/*
 * Copyright 2014 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.dashbuilder.dataset.date;

import java.util.Date;

import org.dashbuilder.dataset.group.DateIntervalType;

/**
 * Class for the definition of time quantitys, both positive and negative. For example:
 * 
    *
  • 10second
  • *
  • -1year
  • *
  • +2quarter
  • *
*

*/ public class TimeAmount { private long quantity = 0; private DateIntervalType type = DateIntervalType.DAY; public TimeAmount() { this(0, DateIntervalType.YEAR); } public TimeAmount(long quantity, DateIntervalType sizeType) { this.quantity = quantity; this.type = sizeType; } public long getQuantity() { return quantity; } public void setQuantity(long quantity) { this.quantity = quantity; } public DateIntervalType getType() { return type; } public void setType(DateIntervalType type) { this.type = type; } public long toMillis() { return quantity * DateIntervalType.getDurationInMillis(type); } public String toString() { return quantity + " " + type.name().toLowerCase(); } public TimeAmount cloneInstance() { TimeAmount clone = new TimeAmount(); clone.quantity = quantity; clone.type = type; return clone; } public void adjustDate(Date d) { if (DateIntervalType.MILLENIUM.equals(type)) { d.setYear(d.getYear() + (int) quantity*1000); } if (DateIntervalType.CENTURY.equals(type)) { d.setYear(d.getYear() + (int) quantity*100); } if (DateIntervalType.DECADE.equals(type)) { d.setYear(d.getYear() + (int) quantity*10); } if (DateIntervalType.YEAR.equals(type)) { d.setYear(d.getYear() + (int) quantity); } if (DateIntervalType.QUARTER.equals(type)) { d.setMonth(d.getMonth() + (int) quantity*3); } if (DateIntervalType.MONTH.equals(type)) { d.setMonth(d.getMonth() + (int) quantity); } if (DateIntervalType.WEEK.equals(type)) { d.setDate(d.getDate() + (int) quantity*7); } if (DateIntervalType.DAY.equals(type)) { d.setDate(d.getDate() + (int) quantity); } if (DateIntervalType.HOUR.equals(type)) { d.setHours(d.getHours() + (int) quantity); } if (DateIntervalType.MINUTE.equals(type)) { d.setMinutes(d.getMinutes() + (int) quantity); } if (DateIntervalType.SECOND.equals(type)) { d.setSeconds(d.getSeconds() + (int) quantity); } } /** * Parses a time amount expression. For example: "10second", "-1year", ... * @return A TimeAmount instance. * @throws IllegalArgumentException If the expression is not valid */ public static TimeAmount parse(String timeAmount) { if (timeAmount == null || timeAmount.length() == 0) { throw new IllegalArgumentException("Empty time amount expression"); } String number = ""; String expr = timeAmount.trim(); boolean isNegative = expr.startsWith("-"); boolean isPositive = expr.startsWith("+"); int i = isNegative || isPositive ? 1 : 0; for (; i




© 2015 - 2025 Weber Informatics LLC | Privacy Policy