Log user and date upon row addition
/** Log user and date upon row addition** The script checks who and when adds rows to the IJC table.* Whenever a new row is added, username and time are stored in IJC fields.* Attention: fields for username and date must be defined in the IJC table* before running this script.** Usage:* 1. Add User and Date fields into the table* 2. Edit the name of User and Date fields* 3. Run button script** @author Ondrej Svoboda <[email protected]>*/afterEdit= {event -> //Names of fields where username and date is stored def userFieldName="username" def dateFieldName="textDate" println "after edit operation" def widget=event.widget // find user and date fields def userField=widget.boundFields.find{it.name==userFieldName} def dateField=widget.boundFields.find{it.name==dateFieldName} // get the username and date def vs=widget.vertexState // get entity from the widget vertex state def ety=vs.getVertex().getEntity() // get id of the row you are adding selectedRowId=vs.getSelectedRowsIds() // go to the schema def rs=vs.resultSet def dataTree=rs.dataTree def schema=dataTree.schema // get user def user=DIFUtilities.findCapability(schema,IJCUserLoginService.class).getMe() // get date def today = new Date() // get entity data provider def edp = ety.schema.dataProvider.getEntityDataProvider(ety) // get access to the environment through lock def lock = edp.lockable.withLock('Updating'){ envRW -> // control whether date and user fields are filled. If so, do not update them def data=vs.getData(selectedRowId,DFEnvironmentRO.DEV_NULL) println data[selectedRowId[0]][userField.id] if((data[selectedRowId[0]][userField.id]==null) && (data[selectedRowId[0]][dateField.id]==null)) { // Defines empty map def vals = [:] vals[userField.id] = user.getUsername() // date field is defined as a string, the format can be arbitrary vals[dateField.id] = today.format("yyyy-MM-dd \'at\' HH:mm:ss") // Create the DFUpdateDescription and update the DFEntityDataProvider def ud = DFUpdateDescription.create(ety, selectedRowId, vals) def submitList = Collections.singletonList(ud) edp.update(submitList, DFUndoConfig.OFF, envRW) println "Updating field $userFieldName to value ${user.getUsername()} and field $dateFieldName to value $today" } }// by returning false, the action proceeds as expectedreturn false}