Changeset 136


Ignore:
Timestamp:
May 15, 2009, 4:09:30 PM (15 years ago)
Author:
gav
Message:

Work on TaskRecurringSchedule?.

Location:
trunk/grails-app
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/BootStrap.groovy

    r134 r136  
    3232    {
    3333        println "BootStrapping demo data..."
     34        3.times{println it}
    3435
    3536/***********************
     
    415416        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(1),
    416417                                                                                                    recurEvery: 1,
    417                                                                                                     period: Period.get(1),
    418                                                                                                     nextDueDate: new Date())
     418                                                                                                    recurPeriod: Period.get(1),
     419                                                                                                    startDate: new Date(),
     420                                                                                                    generateAhead: 1,
     421                                                                                                    generateAheadPeriod: Period.get(1),
     422                                                                                                    taskDuration: 1,
     423                                                                                                    taskDurationPeriod: Period.get(1))
    419424        BootStrapSaveAndTest(taskRecurringScheduleInstance)
    420425
     
    422427        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(2),
    423428                                                                                                    recurEvery: 1,
    424                                                                                                     period: Period.get(1),
    425                                                                                                     nextDueDate: new Date())
     429                                                                                                    recurPeriod: Period.get(1),
     430                                                                                                    startDate: new Date(),
     431                                                                                                    generateAhead: 1,
     432                                                                                                    generateAheadPeriod: Period.get(1),
     433                                                                                                    taskDuration: 1,
     434                                                                                                    taskDurationPeriod: Period.get(1))
    426435        BootStrapSaveAndTest(taskRecurringScheduleInstance)
    427436
  • trunk/grails-app/controllers/PersonController.groovy

    r97 r136  
    3939        /**
    4040         * Person delete action. Before removing an existing person,
    41          * he should be removed from those authorities which he is involved.
     41         * they should be removed from those authorities which they are involved.
    4242         */
    4343        def delete = {
  • trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy

    r135 r136  
    11import org.codehaus.groovy.grails.plugins.springsecurity.Secured
     2import org.codehaus.groovy.runtime.TimeCategory
    23
    34class TaskRecurringScheduleDetailedController extends BaseController {
     
    6667                }
    6768            }
    68             taskRecurringScheduleInstance.properties = params
     69//             taskRecurringScheduleInstance.properties = params
     70            setUpdateProperties()
     71                   
    6972            if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
    7073                flash.message = "TaskRecurringSchedule ${params.id} updated"
     
    104107                else {
    105108                       
    106                         taskRecurringScheduleInstance.nextDueDate = new Date()
    107                                
    108 //                      taskRecurringScheduleInstance.nextDueDate = calculateNextDueDate(new Date())
    109                        
    110109                        if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
    111110                               
     
    127126
    128127    }
    129        
    130 //      private Date calculateNextDueDate(nextDue) {
    131 // //           def now = new Date()
    132 // //           def calculatedDays = new Integer()
    133 // //           def nextDue = new Date()
    134 //                             
    135 // //           switch (period) {
    136 // //                   case "Day(s)":
    137 // //                           calculatedDays = period
    138 // //                           nextDue = now + calculatedDays
    139 // //                   case "Week(s)":
    140 // //                           calculatedDays = period * 7
    141 // //                           nextDue = now + calculatedDays
    142 // // //                        default:
    143 // //           }
    144 //              nextDue = nextDue + 1
    145 //              return nextDue
    146 //      }
    147        
     128               
     129    private setUpdateProperties() {
     130        def originalStartDate = taskRecurringScheduleInstance.startDate
     131       
     132        if(taskRecurringScheduleInstance.startDate == params.startDate) {
     133            taskRecurringScheduleInstance.properties = params
     134        }
     135        else {
     136            taskRecurringScheduleInstance.properties = params
     137            taskRecurringScheduleInstance.nextTargetStartDate = params.startDate
     138        }
     139       
     140    }
     141
     142/*   
     143    private Date calculateNextDueDate(recurEvery, period, startDate) {
     144        def nextDue = new Date()
     145       
     146        switch (period) {
     147            case "Day(s)":
     148                use(TimeCategory) {
     149                    nextDue = startDate + recurEvery.days
     150                }
     151                return nextDue
     152            case "Week(s)":
     153                use(TimeCategory) {
     154                    nextDue = startDate + recurEvery.weeks
     155                }
     156                return nextDue
     157            case "Month(s)":
     158                use(TimeCategory) {
     159                    nextDue = startDate + recurEvery.months
     160                }
     161                return nextDue
     162            case "Year(s)":
     163                use(TimeCategory) {
     164                    nextDue = startDate + recurEvery.years
     165                }
     166                return nextDue
     167            default:
     168                return nextDue
     169        }
     170       
     171    }*/
    148172}
  • trunk/grails-app/domain/Period.groovy

    r131 r136  
    55
    66    static hasMany = [taskRecurringSchedules: TaskRecurringSchedule]
    7 //
     7   
     8    static mappedBy = [taskRecurringSchedules:"recurPeriod"]
     9
    810//     static belongsTo = []
    9 //
     11
    1012//     static constraints = {
    1113//
  • trunk/grails-app/domain/TaskRecurringSchedule.groovy

    r135 r136  
     1import org.codehaus.groovy.runtime.TimeCategory
     2
    13class TaskRecurringSchedule {
    24
    35    Task lastGeneratedSubTask
    4     Period period
     6    Period recurPeriod
     7    Period generateAheadPeriod
     8    Period taskDurationPeriod
    59
    610    Integer recurEvery = 1
     11    Integer taskDuration = 0
     12    Integer generateAhead = 1
    713    Date startDate = new Date()
    814    Date lastGeneratedDate
    9     Date nextDueDate
     15    Date nextTargetStartDate = new Date()
     16    Date nextTargetCompletionDate = new Date()
     17    Date nextGenerationDate = new Date()
    1018    boolean isEnabled = true
    1119
     
    1523
    1624    static constraints = {
     25//              startDate(validator: {return (it > new Date())})
     26        recurEvery(min:0, max:365)
     27        taskDuration(min:0, max:365)
     28        generateAhead(min:0, max:365)
    1729        lastGeneratedDate(blank:true, nullable:true)
    1830        lastGeneratedSubTask(blank:true, nullable:true)
     
    2032
    2133    String toString() {
    22         "Recur every ${recurEvery} ${period}"
     34        "Recur every ${recurEvery} ${recurPeriod}"
    2335    }
     36   
     37    //As of Grails 1.1 this does not fire/pass before validation.
     38    //But setting defaults above and placing this code here in the hope that this will be fixed in future versions.
     39    def beforeInsert = {
     40        def now = new Date()
     41       
     42        nextTargetStartDate = startDate
     43       
     44        //nextGenerationDate
     45        switch (generateAheadPeriod.period) {
     46            case "Day(s)":
     47                use(TimeCategory) {
     48                    nextGenerationDate = nextTargetStartDate - generateAhead.days
     49                }
     50                break
     51            case "Week(s)":
     52                use(TimeCategory) {
     53                    nextGenerationDate = nextTargetStartDate - generateAhead.weeks
     54                }
     55                break
     56            case "Month(s)":
     57                use(TimeCategory) {
     58                    nextGenerationDate = nextTargetStartDate - generateAhead.months
     59                }
     60                break
     61            case "Year(s)":
     62                use(TimeCategory) {
     63                    nextGenerationDate = nextTargetStartDate - generateAhead.years
     64                }
     65                break
     66        default:
     67                break
     68        }
     69       
     70        if( nextGenerationDate < now) {nextGenerationDate = now}
     71       
     72        //nextTargetCompletionDate
     73        switch (taskDurationPeriod.period) {
     74            case "Day(s)":
     75                use(TimeCategory) {
     76                    nextTargetCompletionDate = nextTargetStartDate + taskDuration.days
     77                }
     78                break
     79            case "Week(s)":
     80                use(TimeCategory) {
     81                    nextTargetCompletionDate = nextTargetStartDate + taskDuration.weeks
     82                }
     83                break
     84            case "Month(s)":
     85                use(TimeCategory) {
     86                    nextTargetCompletionDate = nextTargetStartDate + taskDuration.months
     87                }
     88                break
     89            case "Year(s)":
     90                use(TimeCategory) {
     91                    nextTargetCompletionDate = nextTargetStartDate + taskDuration.years
     92                }
     93                break
     94        default:
     95                break
     96        }
     97       
     98    }
     99
    24100}
    25101
Note: See TracChangeset for help on using the changeset viewer.