/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.workflow.view.timeline;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.apache.commons.lang3.time.DurationFormatUtils;
/**
* Represents an object of a elemental activity area.
* @author Hendrik Abbenhaus
*/
public class TimelineActivityPart {
private String componentName = null;
private TimelineActivityType type = null;
private Date date = null;
private String comment = "";
private Date endtime = null;
private String run;
public TimelineActivityPart(String componentName, TimelineActivityType type, Date date, String comment) {
this.componentName = componentName;
this.date = date;
this.type = type;
this.comment = comment;
}
public TimelineActivityPart(String componentName, TimelineActivityType type, Date date, String run, String comment) {
this.componentName = componentName;
this.date = date;
this.type = type;
this.run = run;
this.comment = comment;
}
/**
* Returns the start time as a {@link Date} of this current activity area.
* @return the time
*/
public Date getDate() {
return this.date;
}
public Date getEndDate(){
return this.endtime;
}
/**
* Returns the type as a {@link TimelineActivityType} of this current activity area.
* @return the type
*/
public TimelineActivityType getType() {
return this.type;
}
/**
* Returns the comment of an activity area.
* @return the comment
*/
public String getComment(){
return this.comment;
}
/**
* Returns a complete tooltip text of this activity area instance.
* @param newWFEndTime the end time of workflow
* @return a text for a tooltip
*/
public String getTooltipText(Date newWFEndTime){
String text = componentName + ": ";
if (this.type != null){
text += this.type.getDisplayName() + "\n";
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
text += "Start: " + dateFormat.format(this.date) + "\n";
Date currentCalcTime = this.endtime;
if (currentCalcTime == null){
currentCalcTime = newWFEndTime;
}
if (currentCalcTime != null){
text += "End: " + dateFormat.format(currentCalcTime) + "\n";
text += "Duration: " + getDurationText(currentCalcTime) + "\n";
}
if (run != null) {
text += "Run: " + run + "\n";
}
if (this.comment != null && !this.comment.equals("")){
text += "Comment: " + this.comment;
}
return text;
}
/**
* Formatter beautifies input dates to readable Strings.
* @param time The input date
* @return a readable date string
*/
public String getDurationText(Date time) {
if (time == null){
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
cal.setTime(this.date);
long t1 = cal.getTimeInMillis();
cal.setTime(time);
return DurationFormatUtils.formatDurationHMS(Math.abs(cal.getTimeInMillis() - t1));
}
/**
* Sets a new Endtime of this activity area instance.
* @param newEndTime the current activity
*/
public void setEndtime(Date newEndTime){
this.endtime = newEndTime;
}
}