/* 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.activiti.workflow.simple.definition;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion;
public class TimeDurationDefinition {
private Integer years;
private Integer months;
private Integer days;
private Integer hours;
private Integer minutes;
private Integer seconds;
public void setYears(Integer years) {
this.years = years;
}
@JsonSerialize(include=Inclusion.NON_NULL)
public Integer getYears() {
return years;
}
public void setMonths(Integer months) {
this.months = months;
}
@JsonSerialize(include=Inclusion.NON_NULL)
public Integer getMonths() {
return months;
}
public void setDays(Integer days) {
this.days = days;
}
@JsonSerialize(include=Inclusion.NON_NULL)
public Integer getDays() {
return days;
}
public void setHours(Integer hours) {
this.hours = hours;
}
@JsonSerialize(include=Inclusion.NON_NULL)
public Integer getHours() {
return hours;
}
@JsonSerialize(include=Inclusion.NON_NULL)
public Integer getMinutes() {
return minutes;
}
public void setMinutes(Integer minutes) {
this.minutes = minutes;
}
@JsonSerialize(include=Inclusion.NON_NULL)
public Integer getSeconds() {
return seconds;
}
public void setSeconds(Integer seconds) {
this.seconds = seconds;
}
public String toISO8601DurationString() {
StringBuilder builder = new StringBuilder();
boolean isDateDefined = years != null || months != null || days != null;
boolean isTimeDefined = hours != null || minutes != null || seconds != null;
if(isDateDefined || isTimeDefined) {
builder.append("P");
if(years != null && years > 0) {
builder.append(years + "Y");
}
if(months != null && months > 0) {
builder.append(months + "M");
}
if(days != null && days > 0) {
builder.append(days + "D");
}
if(isTimeDefined) {
builder.append("T");
if(hours != null && hours > 0) {
builder.append(hours + "H");
}
if(minutes != null && minutes > 0) {
builder.append(minutes + "M");
}
if(seconds != null && seconds > 0) {
builder.append(seconds + "S");
}
}
}
return builder.toString();
}
}