1 /*
2 * Copyright (C) 2017-2019 Centre National d'Etudes Spatiales (CNES).
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 3.0 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 * MA 02110-1301 USA
18 */
19 package fr.cnes.doi.db;
20
21 import fr.cnes.doi.db.model.DOIProject;
22 import fr.cnes.doi.db.model.DOIUser;
23 import fr.cnes.doi.exception.DOIDbException;
24 import fr.cnes.doi.utils.spec.Requirement;
25 import java.util.List;
26
27 /**
28 * Interface for handling the project suffix database.
29 *
30 * @author Jean-Christophe Malapert (jean-christophe.malapert@cnes.fr)
31 */
32 @Requirement(reqId = Requirement.DOI_INTER_030, reqName = Requirement.DOI_INTER_030_NAME)
33 public abstract class AbstractProjectSuffixDBHelper {
34
35 /**
36 * Adds a suffix project in the database.
37 *
38 * @param projectID suffix project
39 * @param projectName project name
40 * @return True when the suffix project is added otherwise False
41 */
42 public abstract boolean addProjectSuffix(int projectID, String projectName);
43
44 /**
45 * Rename a project in the database.
46 *
47 * @param projectID suffix project to be renamed
48 * @param newProjectName the new project name
49 * @return True when the project has been renamed otherwise False
50 */
51 public abstract boolean renameProject(int projectID, String newProjectName);
52
53 /**
54 * Deletes a suffix project from the database.
55 *
56 * @param projectID the suffix project
57 * @return True when the suffix project has been deleted otherwise False
58 */
59 public abstract boolean deleteProject(int projectID);
60
61 /**
62 * Tests is a suffix project exists in the database.
63 *
64 * @param projectID suffix project
65 * @return True when the suffix project exists otherwise False
66 */
67 public abstract boolean isExistID(int projectID);
68
69 /**
70 * Tests is the project name exists in the database.
71 *
72 * @param projectName the project name
73 * @return True when the project name exists otherwise False.
74 */
75 public abstract boolean isExistProjectName(String projectName);
76
77 /**
78 * Returns the project name based on the suffix project.
79 *
80 * @param projectID the suffix project
81 * @return the project name
82 * @throws fr.cnes.doi.exception.DOIDbException when an error occurs
83 */
84 public abstract String getProjectFrom(int projectID) throws DOIDbException;
85
86 /**
87 * Returns the project suffix based on the project name.
88 *
89 * @param projectName the project name
90 * @return the suffix project
91 * @throws fr.cnes.doi.exception.DOIDbException When an error occurs
92 */
93 public abstract int getIDFrom(String projectName) throws DOIDbException;
94
95 /**
96 * Returns the database records.
97 *
98 * @return the database records
99 * @throws fr.cnes.doi.exception.DOIDbException When an error occurs
100 */
101 public abstract List<DOIProject> getProjects() throws DOIDbException;
102
103 /**
104 * Returns the projects related to a specific user.
105 *
106 * @param userName username
107 * @return the projected to an user
108 * @throws fr.cnes.doi.exception.DOIDbException When an error occurs
109 */
110 public abstract List<DOIProject> getProjectsFromUser(final String userName) throws
111 DOIDbException;
112
113 /**
114 * Returns the users related to a project.
115 *
116 * @param doiSuffix project
117 * @return the users
118 * @throws fr.cnes.doi.exception.DOIDbException When an error occurs.
119 */
120 public abstract List<DOIUser> getAllDOIUsersForProject(final int doiSuffix) throws
121 DOIDbException;
122
123 }