1 21 package com.jaspersoft.jasperserver.api.engine.scheduling.hibernate; 22 23 import java.util.Iterator ; 24 import java.util.Set ; 25 import java.util.SortedSet ; 26 import java.util.TreeSet ; 27 28 import com.jaspersoft.jasperserver.api.JSExceptionWrapper; 29 import com.jaspersoft.jasperserver.api.engine.scheduling.domain.ReportJobCalendarTrigger; 30 import com.jaspersoft.jasperserver.api.engine.scheduling.domain.ReportJobTrigger; 31 32 36 public class PersistentReportJobCalendarTrigger extends PersistentReportJobTrigger { 37 38 private static final String ENUM_SEPARATOR = ","; 39 private static final String ENUM_SEPARATOR_REGEX = ","; 40 41 private String minutes; 42 private String hours; 43 private byte daysType; 44 private String weekDays; 45 private String monthDays; 46 private String months; 47 48 public PersistentReportJobCalendarTrigger() { 49 } 50 51 public String getHours() { 52 return hours; 53 } 54 55 public void setHours(String hours) { 56 this.hours = hours; 57 } 58 59 public String getMinutes() { 60 return minutes; 61 } 62 63 public void setMinutes(String minutes) { 64 this.minutes = minutes; 65 } 66 67 public void copyFrom(ReportJobTrigger trigger) { 68 super.copyFrom(trigger); 69 70 ReportJobCalendarTrigger calendarTrigger = (ReportJobCalendarTrigger) trigger; 71 setMinutes(calendarTrigger.getMinutes()); 72 setHours(calendarTrigger.getHours()); 73 setDaysType(calendarTrigger.getDaysType()); 74 setWeekDays(toEnumerationString(calendarTrigger.getWeekDays())); 75 setMonthDays(calendarTrigger.getMonthDays()); 76 setMonths(toEnumerationString(calendarTrigger.getMonths())); 77 } 78 79 public ReportJobTrigger toClient() { 80 ReportJobCalendarTrigger trigger = new ReportJobCalendarTrigger(); 81 super.copyTo(trigger); 82 trigger.setMinutes(getMinutes()); 83 trigger.setHours(getHours()); 84 trigger.setDaysType(getDaysType()); 85 trigger.setWeekDays(parseEnumerationString(getWeekDays())); 86 trigger.setMonthDays(getMonthDays()); 87 trigger.setMonths(parseEnumerationString(getMonths())); 88 return trigger; 89 } 90 91 public boolean supports(Class triggerClass) { 92 return ReportJobCalendarTrigger.class.isAssignableFrom(triggerClass); 93 } 94 95 public byte getDaysType() { 96 return daysType; 97 } 98 99 public void setDaysType(byte daysType) { 100 this.daysType = daysType; 101 } 102 103 public String getMonthDays() { 104 return monthDays; 105 } 106 107 public void setMonthDays(String monthDays) { 108 this.monthDays = monthDays; 109 } 110 111 public String getMonths() { 112 return months; 113 } 114 115 public void setMonths(String months) { 116 this.months = months; 117 } 118 119 public String getWeekDays() { 120 return weekDays; 121 } 122 123 public void setWeekDays(String weekDays) { 124 this.weekDays = weekDays; 125 } 126 127 protected String toEnumerationString(Set vals) { 128 if (vals == null || vals.isEmpty()) { 129 return null; 130 } 131 StringBuffer str = new StringBuffer (); 132 SortedSet sorted = new TreeSet (vals); 133 for (Iterator it = sorted.iterator(); it.hasNext();) { 134 Byte val = (Byte ) it.next(); 135 str.append(val.byteValue()); 136 str.append(ENUM_SEPARATOR); 137 } 138 return str.substring(0, str.length() - 1); 139 } 140 141 protected SortedSet parseEnumerationString(String str) { 142 if (str == null || str.length() == 0) { 143 return null; 144 } 145 SortedSet valsSet = new TreeSet (); 146 String [] vals = str.split(ENUM_SEPARATOR_REGEX); 147 for (int i = 0; i < vals.length; i++) { 148 String strVal = vals[i]; 149 try { 150 Byte val = Byte.valueOf(strVal); 151 valsSet.add(val); 152 } catch (NumberFormatException e) { 153 throw new JSExceptionWrapper(e); 154 } 155 } 156 return valsSet; 157 } 158 159 } 160 | Popular Tags |