src/main/java/de/uapcore/lightpit/entities/ModuleDao.java

changeset 30
fb30f7b78f9b
parent 29
27a0fdd7bca7
child 31
58f78f0142e8
--- a/src/main/java/de/uapcore/lightpit/entities/ModuleDao.java	Sat May 09 14:26:31 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2018 Mike Becker. All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *   1. Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *
- *   2. Redistributions in binary form must reproduce the above copyright
- *      notice, this list of conditions and the following disclaimer in the
- *      documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- * 
- */
-package de.uapcore.lightpit.entities;
-
-import de.uapcore.lightpit.LightPITModule;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-public abstract class ModuleDao {
-    
-    /**
-     * Maps database columns to POJO fields.
-     * @param result the database result set
-     * @param mod the POJO
-     * @throws SQLException 
-     */
-    protected void mapColumns(ResultSet result, Module mod) throws SQLException {
-        mod.setModID(result.getInt("modid"));
-        mod.setClassname(result.getString("classname"));
-        mod.setVisible(result.getBoolean("visible"));
-    }
-            
-    
-    /**
-     * Must return a prepared statement for a single object query with the specified properties.
-     * 
-     * <ul>
-     * <li>Parameter 1: classname</li>
-     * <li>Result field 1: visible</li>
-     * </ul>
-     * 
-     * @param conn the connection to use
-     * @return the prepared statement
-     * @throws SQLException 
-     */
-    protected PreparedStatement moduleCheckStatement(Connection conn) throws SQLException {
-        return conn.prepareStatement("SELECT visible FROM lpitcore_module WHERE classname = ?");
-    }
-    
-    /**
-     * Must return a prepared statement for insertion with the specified properties.
-     * 
-     * <ul>
-     * <li>Parameter 1: classname</li>
-     * <li>Parameter 2: visible</li>
-     * </ul>
-     * 
-     * @param conn the connection to use
-     * @return the prepared statement
-     * @throws SQLException 
-     */
-    protected PreparedStatement moduleInsertStatement(Connection conn) throws SQLException {
-        return conn.prepareStatement("INSERT INTO lpitcore_module (classname, visible) VALUES (?, ?)");
-    }
-    
-    /**
-     * Synchronizes a set of registered module classes with the database.
-     * 
-     * Inserts module classes which are not known to the database and sets them to be visible by default.
-     * Module classes known to the database, which are not in the given set, are ignored.
-     * 
-     * @param conn the connection to use
-     * @param moduleSet the module set to synchronize
-     * @throws SQLException
-     */
-    public final void syncRegisteredModuleClasses(Connection conn, Set<Map.Entry<String, LightPITModule>> moduleSet) throws SQLException {
-                
-        PreparedStatement
-                check = moduleCheckStatement(conn),
-                insert = moduleInsertStatement(conn);
-        insert.setBoolean(2, true);
-        // update/delete not required, we do this in the module management UI
-
-        for (Map.Entry<String, LightPITModule> modEntry : moduleSet) {
-            if (modEntry.getValue().systemModule()) continue;
-
-            check.setString(1, modEntry.getKey());
-            try (ResultSet r = check.executeQuery()) {
-                if (!r.next()) {
-                    insert.setString(1, modEntry.getKey());
-                    insert.executeUpdate();
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns a list of all modules known by the database.
-     * 
-     * Keep in mind, that system modules are never known to the database.
-     * 
-     * @param conn the connection to use
-     * @return a list of all modules known by the database
-     * @throws SQLException 
-     */
-    public List<Module> listAll(Connection conn) throws SQLException {
-        List<Module> list = new ArrayList<>();
-        try (Statement stmt = conn.createStatement();
-                ResultSet result = stmt.executeQuery("SELECT * FROM lpitcore_module")) {
-            while (result.next()) {
-                final Module mod = new Module();
-                mapColumns(result, mod);
-                list.add(mod);
-            }
-        }
-        return list;
-    }
-}

mercurial