1 37 package net.sourceforge.cruisecontrol.sourcecontrols; 38 39 import java.util.ArrayList ; 40 import java.util.Calendar ; 41 import java.util.Date ; 42 import java.util.Hashtable ; 43 import java.util.List ; 44 import java.util.Map ; 45 46 import net.sourceforge.cruisecontrol.Builder; 47 import net.sourceforge.cruisecontrol.CruiseControlException; 48 import net.sourceforge.cruisecontrol.Modification; 49 import net.sourceforge.cruisecontrol.util.DateUtil; 50 import net.sourceforge.cruisecontrol.util.ValidationHelper; 51 52 import org.apache.log4j.Logger; 53 54 66 public class TimeBuild extends FakeUserSourceControl { 67 private static final Logger LOG = Logger.getLogger(TimeBuild.class); 68 69 private int time = Builder.NOT_SET; 70 71 private Hashtable properties = new Hashtable (); 72 73 79 public void setTime(String timeString) { 80 time = Integer.parseInt(timeString); 81 } 82 83 public Map getProperties() { 84 return properties; 85 } 86 87 public void validate() throws CruiseControlException { 88 ValidationHelper.assertFalse(time == Builder.NOT_SET, "the 'time' attribute is mandatory"); 89 } 90 91 100 public List getModifications(Date lastBuild, Date now) { 101 LOG.debug("LastBuild:" + lastBuild + ", now:" + now); 102 List modifications = new ArrayList (); 103 104 114 int lastBuildTime = DateUtil.getTimeFromDate(lastBuild); 116 int nowTime = DateUtil.getTimeFromDate(now); 117 if (onSameDay(lastBuild, now)) { 118 if (lastBuildTime < time && time < nowTime) { 119 modifications.add(getMod(now)); 120 } 121 } else { 122 if (nowTime > time) { 123 modifications.add(getMod(now)); 124 } 125 } 126 127 return modifications; 128 } 129 130 private boolean onSameDay(Date date1, Date date2) { 131 Calendar calendar = Calendar.getInstance(); 132 calendar.setTime(date1); 133 int day1 = calendar.get(Calendar.DAY_OF_MONTH); 134 calendar.setTime(date2); 135 int day2 = calendar.get(Calendar.DAY_OF_MONTH); 136 return day1 == day2; 137 } 138 139 private Modification getMod(Date now) { 140 Modification mod = new Modification("always"); 141 Modification.ModifiedFile modfile = mod.createModifiedFile("time build", "time build"); 142 modfile.action = "change"; 143 mod.userName = getUserName(); 144 Calendar nowTimeBuild = Calendar.getInstance(); 145 nowTimeBuild.setTime(now); 146 final int modifHour = this.time / 100; 147 final int modifMinute = this.time - modifHour * 100; 148 nowTimeBuild.set(Calendar.HOUR_OF_DAY, modifHour); 149 nowTimeBuild.set(Calendar.MINUTE, modifMinute); 150 nowTimeBuild.set(Calendar.MILLISECOND, 0); 151 mod.modifiedTime = nowTimeBuild.getTime(); 152 mod.comment = ""; 153 return mod; 154 } 155 156 public String toString() { 157 return getUserName() + ", " + time; 158 } 159 160 } 161 | Popular Tags |