diff options
author | Simon Rettberg | 2015-06-23 19:10:48 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-06-23 19:10:48 +0200 |
commit | 8ad025dd99468f71d2fa5c49e0bcf359b055ec97 (patch) | |
tree | 6208ff7d598116e36b21882e5a018a99d2506103 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java | |
parent | fix bwLehrpool logo not beeing read from the resources (diff) | |
download | tutor-module-8ad025dd99468f71d2fa5c49e0bcf359b055ec97.tar.gz tutor-module-8ad025dd99468f71d2fa5c49e0bcf359b055ec97.tar.xz tutor-module-8ad025dd99468f71d2fa5c49e0bcf359b055ec97.zip |
[server] More methods implemented
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java index cc401af9..8c0cf79a 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java @@ -1,18 +1,29 @@ package org.openslx.bwlp.sat.database.mappers; +import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.openslx.bwlp.sat.database.Database; import org.openslx.bwlp.sat.database.MysqlConnection; import org.openslx.bwlp.sat.database.MysqlStatement; +import org.openslx.bwlp.sat.database.models.LocalOrganization; import org.openslx.bwlp.thrift.iface.Organization; public class DbOrganization { private static final Logger LOGGER = Logger.getLogger(DbOrganization.class); + /** + * Store the given list of organizations (coming from the master server) to + * the database, or update the meta data of the organizations, if already + * existent. + * + * @param organizations + * @return + */ public static boolean storeOrganizations(List<Organization> organizations) { try (MysqlConnection connection = Database.getConnection()) { MysqlStatement stmt = connection.prepareStatement("INSERT INTO organization" @@ -31,4 +42,72 @@ public class DbOrganization { } } + /** + * Get local-only data for the given organization. Local-only data is not + * supplied by the master server and might differ between satellites. + * + * @param organizationId + * @return + * @throws SQLException + */ + public static LocalOrganization getLocalData(String organizationId) throws SQLException { + try (MysqlConnection connection = Database.getConnection()) { + MysqlStatement stmt = connection.prepareStatement("SELECT canlogin FROM organization" + + " WHERE organizationid = :organizationid"); + stmt.setString("organizationid", organizationId); + ResultSet rs = stmt.executeQuery(); + if (!rs.next()) + return null; + return new LocalOrganization(rs.getBoolean("canlogin")); + } catch (SQLException e) { + LOGGER.error("Query failed in DbOrganization.getLocalData()", e); + throw e; + } + } + + /** + * Get list of organizations where users are allowed to login to the local + * satellite. + * + * @return + * @throws SQLException + */ + public static List<Organization> getLoginAllowedOrganizations() throws SQLException { + try (MysqlConnection connection = Database.getConnection()) { + MysqlStatement stmt = connection.prepareStatement("SELECT organizationid, displayname" + + " FROM organization WHERE canlogin = 1"); + ResultSet rs = stmt.executeQuery(); + List<Organization> list = new ArrayList<>(); + while (rs.next()) { + list.add(new Organization(rs.getString("organizationid"), rs.getString("displayname"), null, + null)); + } + return list; + } catch (SQLException e) { + LOGGER.error("Query failed in DbOrganization.getLoginAllowedOrganizations()", e); + throw e; + } + } + + /** + * Change the "canlogin" flag of the given organization. + * + * @param organizationId + * @param canlogin + * @throws SQLException + */ + public static void setCanLogin(String organizationId, boolean canlogin) throws SQLException { + try (MysqlConnection connection = Database.getConnection()) { + MysqlStatement stmt = connection.prepareStatement("UPDATE organization" + + " SET canlogin = :canlogin WHERE organizationid = :organizationid"); + stmt.setString("organizationid", organizationId); + stmt.setBoolean("canlogin", canlogin); + stmt.executeUpdate(); + connection.commit(); + } catch (SQLException e) { + LOGGER.error("Query failed in DbOrganization.setCanLogin()", e); + throw e; + } + } + } |