libreccm-legacy/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl

78 lines
2.7 KiB
Plaintext
Executable File

//
// Copyright (C) 2004 Red Hat Inc. All Rights Reserved.
//
// The contents of this file are subject to the Open Software License v2.1
// (the "License"); you may not use this file except in compliance with the
// License. You may obtain a copy of the License at
// http://rhea.redhat.com/licenses/osl2.1.html.
//
// Software distributed under the License is distributed on an "AS
// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
// implied. See the License for the specific language governing
// rights and limitations under the License.
//
// $Id: RelatedLink.pdl 908 2005-09-22 10:45:33Z sskracic $
// $DateTime: 2004/03/30 18:21:14 $
model com.arsdigita.cms.contentassets;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.contenttypes.Link;
import com.arsdigita.cms.MimeType;
object type RelatedLink extends Link {
String[0..1] linkListName = cms_related_links.link_list_name VARCHAR(100);
String[0..1] resourceSize = cms_related_links.resource_size VARCHAR(50);
MimeType[0..1] resourceType = join cms_related_links.resource_type
to cms_mime_types.mime_type;
reference key(cms_related_links.related_link_id);
aggressive load (linkOwner.id);
}
association {
composite ContentItem[0..1] linkOwner = join cms_related_links.owner_id to cms_items.item_id;
component RelatedLink[0..n] links = join cms_items.item_id to cms_related_links.owner_id;
}
data operation swapRelatedLinkWithNextInGroup {
do {
update cms_links
set link_order = CASE WHEN (link_order = :linkOrder) THEN
(:nextLinkOrder)
ELSE
(:linkOrder)
END
where (link_order = :linkOrder or link_order = :nextLinkOrder)
and (select owner_id from cms_related_links where related_link_id=link_id) = :ownerID
and 2 = (select count(*) from cms_links l, cms_related_links r
where l.link_id=r.related_link_id
and (link_order = :linkOrder or link_order = :nextLinkOrder)
and owner_id = :ownerID
and r.link_list_name = :linkListName)
}
}
query allRelatedLinkOrderForItem {
Integer linkOrder;
do {
select l.link_order from cms_links l, cms_related_links r
where r.owner_id = :ownerID and l.link_id = r.related_link_id and r.link_list_name = :linkListName
} map {
linkOrder = l.link_order;
}
}
query getReferringRelatedLinks {
BigDecimal id;
do {
select l.link_id
from cms_links l, cms_related_links r
where l.target_item_id = :itemID and l.link_id=r.related_link_id and r.link_list_name = :linkListName
} map {
id = l.link_id;
}
}