001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.dynamicdatamapping.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portlet.dynamicdatamapping.NoSuchStructureLinkException;
019    import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
020    import com.liferay.portlet.dynamicdatamapping.model.DDMStructureLink;
021    import com.liferay.portlet.dynamicdatamapping.service.base.DDMStructureLinkLocalServiceBaseImpl;
022    
023    import java.util.ArrayList;
024    import java.util.List;
025    
026    /**
027     * @author Brian Wing Shun Chan
028     * @author Bruno Basto
029     * @author Marcellus Tavares
030     */
031    public class DDMStructureLinkLocalServiceImpl
032            extends DDMStructureLinkLocalServiceBaseImpl {
033    
034            @Override
035            public DDMStructureLink addStructureLink(
036                    long classNameId, long classPK, long structureId) {
037    
038                    long structureLinkId = counterLocalService.increment();
039    
040                    DDMStructureLink structureLink = ddmStructureLinkPersistence.create(
041                            structureLinkId);
042    
043                    structureLink.setClassNameId(classNameId);
044                    structureLink.setClassPK(classPK);
045                    structureLink.setStructureId(structureId);
046    
047                    ddmStructureLinkPersistence.update(structureLink);
048    
049                    return structureLink;
050            }
051    
052            @Override
053            public void deleteStructureLink(DDMStructureLink structureLink) {
054                    ddmStructureLinkPersistence.remove(structureLink);
055            }
056    
057            @Override
058            public void deleteStructureLink(long structureLinkId)
059                    throws PortalException {
060    
061                    DDMStructureLink structureLink =
062                            ddmStructureLinkPersistence.findByPrimaryKey(structureLinkId);
063    
064                    deleteStructureLink(structureLink);
065            }
066    
067            @Override
068            public void deleteStructureLink(
069                            long classNameId, long classPK, long structureId)
070                    throws PortalException {
071    
072                    DDMStructureLink structureLink =
073                            ddmStructureLinkPersistence.findByC_C_S(
074                                    classNameId, classPK, structureId);
075    
076                    deleteDDMStructureLink(structureLink);
077            }
078    
079            @Override
080            public void deleteStructureLinks(long classNameId, long classPK) {
081                    List<DDMStructureLink> structureLinks =
082                            ddmStructureLinkPersistence.findByC_C(classNameId, classPK);
083    
084                    for (DDMStructureLink ddmStructureLink : structureLinks) {
085                            deleteStructureLink(ddmStructureLink);
086                    }
087            }
088    
089            @Override
090            public void deleteStructureStructureLinks(long structureId) {
091                    List<DDMStructureLink> structureLinks =
092                            ddmStructureLinkPersistence.findByStructureId(structureId);
093    
094                    for (DDMStructureLink structureLink : structureLinks) {
095                            deleteStructureLink(structureLink);
096                    }
097            }
098    
099            @Override
100            public DDMStructureLink getStructureLink(long structureLinkId)
101                    throws PortalException {
102    
103                    return ddmStructureLinkPersistence.findByPrimaryKey(structureLinkId);
104            }
105    
106            @Override
107            public List<DDMStructureLink> getStructureLinks(long structureId) {
108                    return ddmStructureLinkPersistence.findByStructureId(structureId);
109            }
110    
111            @Override
112            public List<DDMStructureLink> getStructureLinks(
113                    long structureId, int start, int end) {
114    
115                    return ddmStructureLinkPersistence.findByStructureId(
116                            structureId, start, end);
117            }
118    
119            @Override
120            public List<DDMStructureLink> getStructureLinks(
121                    long classNameId, long classPK) {
122    
123                    return ddmStructureLinkPersistence.findByC_C(classNameId, classPK);
124            }
125    
126            @Override
127            public List<DDMStructure> getStructureLinkStructures(
128                            long classNameId, long classPK)
129                    throws PortalException {
130    
131                    List<DDMStructure> structures = new ArrayList<>();
132    
133                    List<DDMStructureLink> structureLinks = getStructureLinks(
134                            classNameId, classPK);
135    
136                    for (DDMStructureLink structureLink : structureLinks) {
137                            structures.add(structureLink.getStructure());
138                    }
139    
140                    return structures;
141            }
142    
143            @Override
144            public DDMStructureLink getUniqueStructureLink(
145                            long classNameId, long classPK)
146                    throws PortalException {
147    
148                    List<DDMStructureLink> structureLinks =
149                            ddmStructureLinkPersistence.findByC_C(classNameId, classPK);
150    
151                    if (structureLinks.isEmpty()) {
152                            throw new NoSuchStructureLinkException();
153                    }
154    
155                    return structureLinks.get(0);
156            }
157    
158            @Override
159            public DDMStructureLink updateStructureLink(
160                            long structureLinkId, long classNameId, long classPK,
161                            long structureId)
162                    throws PortalException {
163    
164                    DDMStructureLink structureLink =
165                            ddmStructureLinkPersistence.findByPrimaryKey(structureLinkId);
166    
167                    structureLink.setClassNameId(classNameId);
168                    structureLink.setClassPK(classPK);
169                    structureLink.setStructureId(structureId);
170    
171                    ddmStructureLinkPersistence.update(structureLink);
172    
173                    return structureLink;
174            }
175    
176    }