Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package net.datenstrudel.bulbs.shared.domain.model.scheduling;
  
  
  import java.time.Instant;
 import java.util.Date;

Author(s):
Thomas Wendzinski
 
 @ApiModel(value="Triggers at specific point in tume, once.", parent = Trigger.class)
 public final class PointInTimeTrigger extends Trigger {
 
     //~ Member(s) //////////////////////////////////////////////////////////////
     @NotNull
     private Date startAt;
     private String timezoneId = "UTC";
     private transient CronExpression cronExpression = null;
     
     //~ Construction ///////////////////////////////////////////////////////////
     private PointInTimeTrigger() {}
     public PointInTimeTrigger(Date startAtString timezoneId) {
         setStartAt(startAt);
         setTimezoneId(timezoneId);
     }
     public PointInTimeTrigger(CronExpression exp){
         setTimezoneId(exp.getTimeZone().getID());
         StringTokenizer tk = new StringTokenizer(exp.getCronExpression(), " \t");
         String[] cronFields = new String[7];
         int i = 0;
         while(tk.hasMoreTokens()){
             cronFields[i++] = tk.nextToken();
         }
         LocalDateTime now = LocalDateTime.now(ZoneId.of());
         try{
             LocalDateTime datetime = LocalDateTime.of(
                     cronFields[6] == null ? now.getYear() : Integer.parseInt(cronFields[6]), 
                     Integer.parseInt(cronFields[4]),
                     Integer.parseInt(cronFields[3]),
                     Integer.parseInt(cronFields[2]),
                     Integer.parseInt(cronFields[1]),
                     Integer.parseInt(cronFields[0]),
                     0 );
             setStartAt(Date.from(datetime.toInstant(.)));
         }catch(NumberFormatException nfex){
             throw new IllegalArgumentException("Couldn't reconstruct "
                     + "PointInTimeTrigger from cronExpression: " + exp.getCronExpression());
         }
     }
 
     //~ Method(s) //////////////////////////////////////////////////////////////
     @Override
     public CronExpression toCronExpression() {
         if(this. != nullreturn ;
         Instant date_utc = .toInstant();
         LocalDateTime date = LocalDateTime.ofInstant(
                 date_utc, ZoneId.of() );
         
         StringBuilder res_cron = new StringBuilder(32);
         res_cron.appenddate.getSecond() ).append(" ")
                 .appenddate.getMinute() ).append(" ")
                 .appenddate.getHour() ).append(" ")
                 .appenddate.getDayOfMonth() ).append(" ")
                 .appenddate.getMonthValue() ).append(" ")
                 .append"? ")
                 .appenddate.getYear() )
                 ;
         CronExpression res;
         try {
             res = new CronExpression(res_cron.toString());
             res.setTimeZone(TimeZone.getTimeZone());
             this. = res;
             return res;
         } catch (ParseException ex) {// should never reach here!
             throw new RuntimeException("An error in trigger algorithm has "
                     + "been detected. Blame the programmer!");
         }
     }
     @Override
     public boolean isExpired() {
         return new Date().getTime() > .getTime();
     }
 
     public Date getStartAt() {
         return ;
     }
     public String getTimezoneId() {
         return ;
     }
    //~ ////////////////////////////////////////////////////////////////////////
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 59 * hash + Objects.hashCode(this.);
        hash = 59 * hash + Objects.hashCode(this.);
        return hash;
    }
    @Override
    public boolean equals(Object obj) {
        if(this == obj)return true;
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final PointInTimeTrigger other = (PointInTimeTriggerobj;
        if (!Objects.equals(this.other.startAt)) {
            return false;
        }
        if (!Objects.equals(this.other.timezoneId)) {
            return false;
        }
        return true;
    }
    @Override
    public boolean sameValueAs(Trigger other) {
        return this.equals(other);
    }
    @Override
    public String toString() {
        return "PointInTimeTrigger{" + "startAt=" +  + ", timezoneId=" +  + '}';
    }
    
    //~ Private Artifact(s) ////////////////////////////////////////////////////
    private void setStartAt(Date startAt) {
        if(startAt == nullthrow new IllegalArgumentException("Member 'startAt' must not be null!");
        this. = new Date( (startAt.getTime() / 1000l) * 1000); // clean millis 
    }
    private void setTimezoneId(String timezoneId) {
        if(timezoneId == nullthrow new IllegalArgumentException("Member 'timezoneId' must not be null!");
        this. = timezoneId;
    }
New to GrepCode? Check out our FAQ X