View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  package org.opencastproject.themes;
23  
24  import org.opencastproject.themes.persistence.ThemesServiceDatabaseException;
25  import org.opencastproject.util.NotFoundException;
26  
27  /**
28   * API that defines persistent storage of themes.
29   */
30  public interface ThemesServiceDatabase {
31  
32    /**
33     * Return the theme by the unique given id.
34     *
35     * @param id
36     *          The unique id of the theme.
37     * @return A {@link Theme} that matches the id.
38     * @throws NotFoundException
39     *           if the theme could not be found
40     * @throws ThemesServiceDatabaseException
41     *           if there is a problem communicating with the underlying data store
42     */
43    Theme getTheme(long id) throws ThemesServiceDatabaseException, NotFoundException;
44  
45    /**
46     * Crate or update a theme.
47     *
48     * @param theme
49     *          The theme to create or update.
50     * @return The updated {@link Theme}.
51     * @throws ThemesServiceDatabaseException
52     *           if there is a problem communicating with the underlying data store
53     */
54    Theme updateTheme(Theme theme) throws ThemesServiceDatabaseException;
55  
56    /**
57     * Delete a theme by using a unique id to find it.
58     *
59     * @param id
60     *          The unique id of the theme.
61     * @throws ThemesServiceDatabaseException
62     *           if there is a problem communicating with the underlying data store
63     */
64    void deleteTheme(long id) throws ThemesServiceDatabaseException, NotFoundException;
65  
66    /**
67     * @return Count the total number of themes.
68     *
69     * @throws ThemesServiceDatabaseException
70     *           if there is a problem communicating with the underlying data store
71     */
72    int countThemes() throws ThemesServiceDatabaseException;
73  
74  }