#966 closed enhancement (duplicate)
Registered and possibly last updated – add to all/most items
Reported by: | Johan Vallon-Christersson | Owned by: | Johan Vallon-Christersson |
---|---|---|---|
Priority: | critical | Milestone: | |
Component: | core | Version: | |
Keywords: | Cc: |
Description
Some items, such as Samples, have a Registered property, i.e., the date at which the item was entered in BASE2.
It would be useful to add this property to all (or most) items in BASE, e.g., biosource, scan, raw bioassay.
Other items, such as reporters, also have a last updated property and this should also be considered to be a general property for items in BASE.
Typical user scenarios include wanting to rapidly find the latest items, i.e., the ones that were most recently added to BASE (or edited).
Change History (10)
comment:1 by , 17 years ago
Type: | defect → enhancement |
---|
follow-up: 3 comment:2 by , 17 years ago
comment:3 by , 17 years ago
As the 'registered' property and 'last updated' property can be considered two different things, perhaps these two enhancements should be separated into two different tickets. Especially as adding last updated information seems to be more complicated to implement.
For the typical user, having information about when items were registered would by itself constitute a great enhancement.
comment:4 by , 17 years ago
The 'registered' property would be easier. This could be hooked into the DbControl.saveItem() method, or BasicItem.onBeforeCommit(). Another option is to see if we can use the built-in Hibernate 'timestamp' type, but I am not clear if we can use it since we already have a 'version' property. From the Hibernate documentation it looks like the timestamp and version can't be used at the same time. A third option may be to implement it is a custom datatype. See http://www.hibernate.org/hib_docs/v3/reference/en/html/mapping.html#mapping-types-custom.
comment:5 by , 16 years ago
Milestone: | → BASE 2.8 |
---|---|
Owner: | changed from | to
This ticket should be split to a registered ticket and last updated ticket. Affected items hould be listed instead of specified as all/most items.
follow-up: 8 comment:6 by , 16 years ago
Priority: | major → critical |
---|
comment:7 by , 16 years ago
Milestone: | BASE 2.8 → BASE 2.x+ |
---|
Not enough time to fix this before the 2.8 release.
comment:8 by , 16 years ago
List of items that would benefit from having registered as a property available in ticket:1166
comment:9 by , 16 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
comment:10 by , 15 years ago
Milestone: | BASE 2.x+ |
---|
This ticket is a bit related to #108. In fact, both can be solved at the same time. The only difference is the level of logging. Just logging the last updated time may seem easier but it is not. First, consider the following code snippet:
The logical thing to happen is that the 's2', but not the 's1' sample should have it's last-modified time updated. The problem is that there is no place in the BASE core were we can detect if an item has been changed or not. So, either both samples get their last-modified time updated or none of them do. The solution to this is to go deeper down and hook into Hibernate. Hibernate does know that only 's2' has been updated it is possible to hook our own code onto Hibernate and change the last-modified time there.
Second, what should be counted as updating an item? Obviously, changing the name qualifies. What about the following scenarios?
In the first case, there is an actual modification in the sample's table. Our Hibernate hook would detect this and update the last-modified time of the sample. In the second case, nothing happens to samples table at all. Annotations are stored in different tables and to get to them you have to follow four levels of links (for example, Sample -> AnnotationSet -> Annotation -> StringValues). Our Hibernate hook will only detect a change in the StringValues part, and maybe in the Annotation part if it was a new annotation. At the level of the hook there is no way to go backwards to update the last-modified time of the sample. If that is desired, there must be code placed elsewhere that detects this and takes some action. Right now I have no idea what that place should be, or if it exists or not.
Also note that the above is only an example, there are other similar parent-child relationships between other items in BASE. For example for Experiments -> BioAssaySets.