Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > quartz cron expression
Yazar
commandante


avatar

Kayıt: 20.02.2009
29.02.2012-19:17 #77267
Kullanıcıdan job'ın çalışma şeklini (saatlik, günlük, haftalık, aylık) aldıktan sonra kaç saatte bir çalışacak, kaç günde bir saat kaçta çalışacak gibi verileri alıp cron expressionumu oluşturuyorum ve db'ye kaydediyorum.
kullanıcı düzenleme yapmayı istediği zaman db'den cron expressionu çekip kullanıcıdan ilk aldığım hale getirmem gerekiyor (0 0 5 12 1/2 ? * --> her 2 ayda bir, ayın 12'sinde saat 5'te gibi ).
Oluşacak her durum için substring yardımıyla verileri alabliyorum ama 120 satırlık metod ve karmaşık bir kod çıktı ortaya.
Bunun için cron expression'ın bir metodu var mı yada daha makul bir çözümü?





Yazar
acebisli


avatar
iskenderun
Kayıt: 29.09.2009
29.02.2012-19:25 #77268
Zannedersem expressionlar için bir tane parser veya anlamlı bişiye çeviren bişi yok.Ben de s-expression veri tipi ile çalışmıştım.Bunu kendim parse etmiştim.Yardımı olursa parser metodunu gönderebilriim





Gereksiz yazarlari uçurunuz.Hatta ellerini kesiniz ki bir daha yazamasinlar o ahmak dü?üncelerini..
Yazar
whispered


avatar
Samsun
Kayıt: 24.10.2011
29.02.2012-21:11 #77269
Haydar CronExpression içinde bunları parça parça veren fonksiyonlar var ama protected. Sen bu sınıftan türeyen bir sınıf oluşturup methodları ezebilir veya o fonksiyonlara aşşağıda goreceğin şekilde de erişebilirsin. Sana lazım olacak olan tek şey getExpressionSetSummary fonksiyonu. Aşağıda bir örneği var parça parça ne istersen çekiyorsun.
/* Author Ahmet DAL */
import java.text.ParseException;
import org.quartz.CronExpression;

@SuppressWarnings("serial")
public class getPartOfQuartz extends CronExpression {
	private static final int SECOND = 0;
	private static final int MINUTE = 1;
	private static final int HOUR = 2;
	private static final int DAY_OF_MONTH = 3;
	private static final int MONTH = 4;
	private static final int DAY_OF_WEEK = 5;
	private static final int YEAR = 6;

	public getPartOfQuartz(String cronExpression) throws ParseException {
		super(cronExpression);
	}

	public static void main(String[] args) {
		try {

			getPartOfQuartz cronExpression = new getPartOfQuartz("0 30 10-13 ? * WED,FRI");
			System.out.println(cronExpression.getPart(SECOND));
			System.out.println(cronExpression.getPart(MINUTE));
			System.out.println(cronExpression.getPart(HOUR));
			System.out.println(cronExpression.getPart(DAY_OF_MONTH));
			System.out.println(cronExpression.getPart(MONTH));
			System.out.println(cronExpression.getPart(DAY_OF_WEEK));
			System.out.println(cronExpression.getPart(YEAR));
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	public String getPart(int type) {
		return getExpressionSetSummary(getSet(type));
	}
}







Istanbul Universitesi
Bilgisayar Mühendisligi





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
29.02.2012-23:11 #77271
quartz in içinde helper class lar var onlarla trigger build edebilirsin.
http://www.quartz-scheduler.org/api/2.0.0/org/quartz/TriggerBuilder.html





N/A
Yazar
commandante


avatar

Kayıt: 20.02.2009
01.03.2012-00:19 #77272
yardımlarınız için teşekkürler, ahmet'in (DAL) yaptığı tam olarak aradığım şeydi.
iyi çalışmalar..





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb