// // Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved. // // 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 // // $Id: docrepo/Repository.pdl pboy $ model com.arsdigita.docrepo; import com.arsdigita.kernel.*; import com.arsdigita.web.Application; object type Repository extends Application { BigDecimal rootID = dr_repositories.root_id INTEGER; BigDecimal ownerID = dr_repositories.owner_id INTEGER; reference key (dr_repositories.repository_id); } data operation addUserRepositoriesMapping { do { insert into docs_mounted (party_id, repository_id) select :userID, repository_id from dr_repositories where repository_id in :repositoryIDs and not exists (select 1 from docs_mounted where docs_mounted.repository_id = docs_repositories.repository_id and docs_mounted.party_id = :userID) } } data operation removeUserRepositoriesMapping { do { delete from docs_mounted where party_id = :userID and repository_id in :repositoryIDs } } query getRepositoryRoots { BigDecimal id; do { select d.resource_id, from docs_resources d where resource_id in (select docs_repositories.root_id from docs_repositories, docs_mounted where docs_mounted.repository_id = docs_repositories.repository_id and docs_mounted.party_id = :userID) } map { id = d.resource_id; } }