// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation; either version 2.1 of
// the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

model com.arsdigita.london.notes;

import com.arsdigita.cms.ContentItem;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.auditing.BasicAuditTrail;

object type Note extends ACSObject {
    String[0..1]  content = ca_notes.content CLOB;
    Long[1..1] rank    = ca_notes.rank;

    reference key ( ca_notes.note_id );
    
    // Basic auditing info 
    unversioned BasicAuditTrail[0..1] auditing =
        qualias { filter(all(com.arsdigita.auditing.BasicAuditTrail),
                         id == this.id) };
    aggressive load(auditing.id,
                    auditing.creationDate,
                    auditing.creationIP,
                    auditing.lastModifiedDate,
                    auditing.lastModifiedIP);
}

association {
    composite ContentItem[1..1] owner = join ca_notes.owner_id to
                                                 cms_items.item_id;

    component Note[0..n] ca_notes = join cms_items.item_id to ca_notes.owner_id;
}
