summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-06-23 19:10:48 +0200
committerSimon Rettberg2015-06-23 19:10:48 +0200
commit8ad025dd99468f71d2fa5c49e0bcf359b055ec97 (patch)
tree6208ff7d598116e36b21882e5a018a99d2506103 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbOrganization.java
parentfix bwLehrpool logo not beeing read from the resources (diff)
downloadtutor-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.java79
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;
+ }
+ }
+
}