The following code example provides a way to generate cron expressions in java.
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
import java.io.Serializable;
public class CronExpressionCreator implements Serializable
{
private static final long serialVersionUID = -1676663054009319677L;
public static void main(String[] args)
{
CronExpressionCreator pCron = new CronExpressionCreator();
pCron.setTime("12:00 PM");
pCron.setMON(true);
pCron.setStartDate("12-05-2011");
System.out.println(pCron.getCronExpression());
}
public String getCronExpression()
{
String time = getTime();
String[] time1 = time.split("\\:");
String[] time2 = time1[1].split("\\ ");
String hour = "";
if (time2[1].equalsIgnoreCase("PM"))
{
Integer hourInt = Integer.parseInt(time1[0]) + 12;
if (hourInt == 24)
{
hourInt = 0;
}
hour = hourInt.toString();
}
else
{
hour = time1[0];
}
String minutes = time2[0];
String cronExp = "";
if (isRecurring())
{
String daysString = "";
StringBuilder sb = new StringBuilder(800);
boolean moreConditions = false;
if (isSUN())
{
sb.append("SUN");
moreConditions = true;
}
if (isMON())
{
if (moreConditions)
{
sb.append(",");
}
sb.append("MON");
moreConditions = true;
}
if (isTUE())
{
if (moreConditions)
{
sb.append(",");
}
sb.append("TUE");
moreConditions = true;
}
if (isWED())
{
if (moreConditions)
{
sb.append(",");
}
sb.append("WED");
moreConditions = true;
}
if (isTHU())
{
if (moreConditions)
{
sb.append(",");
}
sb.append("THU");
moreConditions = true;
}
if (isFRI())
{
if (moreConditions)
{
sb.append(",");
}
sb.append("FRI");
moreConditions = true;
}
if (isSAT())
{
if (moreConditions)
{
sb.append(",");
}
sb.append("SAT");
moreConditions = true;
}
daysString = sb.toString();
cronExp = "0 " + minutes + " " + hour + " ? * " + daysString;
}
else
{
String startDate = getStartDate();
String[] dateArray = startDate.split("\\-");
String day = dateArray[0];
if (day.charAt(0) == '0')
{
day = day.substring(1);
}
String month = dateArray[1];
if (month.charAt(0) == '0')
{
month = month.substring(1);
}
String year = dateArray[2];
cronExp = "0 " + minutes + " " + hour + " " + day + " " + month + " ? " + year;
}
return cronExp;
}
String startDate;
String time;
boolean recurring;
boolean SUN;
boolean MON;
boolean TUE;
boolean WED;
boolean THU;
boolean FRI;
boolean SAT;
/**
* @return the startDate
*/
public String getStartDate()
{
return startDate;
}
/**
* The date set should be of the format (MM-DD-YYYY for example 25-04-2011)
*
* @param startDate
* the startDate to set
*/
public void setStartDate(String startDate)
{
this.startDate = startDate;
}
/**
* @return the time
*/
public String getTime()
{
return time;
}
/**
* The time set should be of the format (HH:MM AM/PM for example 12:15 PM)
*
* @param time
* the time to set
*/
public void setTime(String time)
{
this.time = time;
}
public boolean isRecurring()
{
return recurring;
}
public void setRecurring(boolean recurring)
{
this.recurring = recurring;
}
public boolean isSUN()
{
return SUN;
}
public void setSUN(boolean sUN)
{
SUN = sUN;
}
public boolean isMON()
{
return MON;
}
/**
* @param mON
* the mON to set
*/
public void setMON(boolean mON)
{
MON = mON;
}
public boolean isTUE()
{
return TUE;
}
public void setTUE(boolean tUE)
{
TUE = tUE;
}
public boolean isWED()
{
return WED;
}
public void setWED(boolean wED)
{
WED = wED;
}
public boolean isTHU()
{
return THU;
}
public void setTHU(boolean tHU)
{
THU = tHU;
}
public boolean isFRI()
{
return FRI;
}
public void setFRI(boolean fRI)
{
FRI = fRI;
}
public boolean isSAT()
{
return SAT;
}
public void setSAT(boolean sAT)
{
SAT = sAT;
}
public int hashCode()
{
return this.getCronExpression().hashCode();
}
public boolean equals(Object obj)
{
if (obj == null)
{
return false;
}
if (obj instanceof CronExpressionCreator)
{
if (((CronExpressionCreator) obj).getCronExpression().equalsIgnoreCase(this.getCronExpression()))
{
return true;
}
}
else
{
return false;
}
return false;
}
}