src/main/java/de/uapcore/lightpit/dao/GenericDao.java

Sun, 17 May 2020 16:38:04 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 17 May 2020 16:38:04 +0200
changeset 61
3e287f361c7a
parent 47
57cfb94ab99f
child 62
833e0385572a
permissions
-rw-r--r--

moves project index to separate sub path

unfortunately the current menu highlighting strategy sucks and this is the easiest way so that everything looks correct

34
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2018 Mike Becker. All rights reserved.
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 *
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28 */
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 package de.uapcore.lightpit.dao;
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 import java.sql.SQLException;
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 import java.util.List;
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34 public interface GenericDao<T> {
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
35 /**
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36 * Returns a list of all entities.
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 *
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38 * @return a list of all objects
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39 * @throws SQLException on any kind of SQL errors
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
40 */
38
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
41 List<T> list() throws SQLException;
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
42
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
43 /**
47
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
44 * Finds an entity by its integer ID.
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
45 *
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
46 * @param id the id
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
47 * @return the enity or null if there is no such entity
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
48 * @throws SQLException on any kind of SQL errors
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
49 */
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
50 T find(int id) throws SQLException;
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
51
57cfb94ab99f projects can now be added and updated
Mike Becker <universe@uap-core.de>
parents: 38
diff changeset
52 /**
38
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
53 * Inserts an instance into database.
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
54 *
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
55 * @param instance the instance to insert
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
56 * @throws SQLException on any kind of SQL errors
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
57 */
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
58 void save(T instance) throws SQLException;
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
59
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
60 /**
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
61 * Updates an instance in the database.
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
62 *
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
63 * @param instance the instance to insert
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
64 * @return true if an instance has been updated, false if no instance with the specified ID was found
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
65 * @throws SQLException on any kind of SQL errors
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
66 */
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
67 boolean update(T instance) throws SQLException;
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
68
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
69 /**
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
70 * Inserts or updates an instance in the database.
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
71 * Tries an update first and if that fails, performs a save.
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
72 *
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
73 * @param instance the instance to insert or update
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
74 * @throws SQLException on any kind of SQL errors
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
75 * @see #update(Object)
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
76 * @see #save(Object)
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
77 */
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
78 default void saveOrUpdate(T instance) throws SQLException {
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
79 if (!update(instance)) save(instance);
cf85ef18f231 adds DAO for Project entity and save/update methods
Mike Becker <universe@uap-core.de>
parents: 34
diff changeset
80 }
34
824d4042c857 cleanup and simplification of database access layer
Mike Becker <universe@uap-core.de>
parents:
diff changeset
81 }

mercurial