diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db/mappers/DbPendingSatellite.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/db/mappers/DbPendingSatellite.java | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/mappers/DbPendingSatellite.java b/src/main/java/org/openslx/imagemaster/db/mappers/DbPendingSatellite.java index 15cdbb9..906d49e 100644 --- a/src/main/java/org/openslx/imagemaster/db/mappers/DbPendingSatellite.java +++ b/src/main/java/org/openslx/imagemaster/db/mappers/DbPendingSatellite.java @@ -1,17 +1,54 @@ package org.openslx.imagemaster.db.mappers; +import java.sql.SQLException; +import java.util.List; + import org.apache.log4j.Logger; -import org.openslx.imagemaster.db.MySQL; +import org.openslx.bwlp.thrift.iface.UserInfo; +import org.openslx.imagemaster.db.Database; +import org.openslx.imagemaster.db.MysqlConnection; +import org.openslx.imagemaster.db.MysqlStatement; +import org.openslx.util.Json; public class DbPendingSatellite { - private static final Logger LOG = Logger.getLogger( DbPendingSatellite.class ); + private static final Logger LOGGER = Logger.getLogger( DbPendingSatellite.class ); + + public static int add( UserInfo user, String displayName, List<String> address, String modulus, String exponent ) + throws SQLException + { + try ( MysqlConnection connection = Database.getConnection() ) { + MysqlStatement stmt = connection.prepareStatement( "INSERT INTO pending_satellite" + + " (dateline, userid, organizationid, satellitename, addresses, publickey)" + + " VALUES (UNIX_TIMESTAMP(), :userid, :organizationid, :satellitename, :addresses, :pubkey)", true ); + stmt.setString( "userid", user.userId ); + stmt.setString( "organizationid", user.organizationId ); + stmt.setString( "satellitename", displayName ); + stmt.setString( "addresses", Json.serialize( address ) ); + stmt.setString( "pubkey", Json.serialize( new KeyWrapper( modulus, exponent ) ) ); + stmt.executeUpdate(); + int key = stmt.getGeneratedKeys(); + connection.commit(); + return key; + } catch ( SQLException e ) { + LOGGER.error( "Query failed in DbPendingSatellite.add()", e ); + throw e; + } + } - public static boolean add( String organizationId, String address, String modulus, String exponent ) + private static class KeyWrapper { - String publickey = "mod:" + modulus + " exp:" + exponent; - return MySQL.update( "INSERT INTO pending_satellite (dateline, organizationid, address, publickey)" - + " VALUES (UNIX_TIMESTAMP(), ?, ?, ?)", organizationId, address, publickey ) != 0; + public String type; + public String modulus; + public String exponent; + + public KeyWrapper( String modulus, String exponent ) + { + this.type = "RSA"; + this.modulus = modulus; + this.exponent = exponent; + } } + } |