From fd9943344751cbab704c2c0aa20814bbd2148038 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 30 Sep 2015 16:19:29 +0200 Subject: [server] Fix: Update usage stats for lectures that link to a VM without VMX template --- .../bwlp/sat/database/mappers/DbLecture.java | 31 +++++++++++++--------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'dozentenmodulserver/src/main/java') diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java index af350a9b..1436aa36 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java @@ -439,6 +439,9 @@ public class DbLecture { } public static VmMetaData getClientLaunchData(String lectureId) throws SQLException, TNotFoundException { + byte[] config; + String lectureName; + String osKeyword; try (MysqlConnection connection = Database.getConnection()) { // Get required data about lecture and used image MysqlStatement stmt = connection.prepareStatement("SELECT" @@ -455,18 +458,9 @@ public class DbLecture { || rs.getLong("endtime") < now) { throw new TNotFoundException(); } - byte[] config = rs.getBytes("virtualizerconfig"); - if (config == null) { - return null; - } - VmwareMetaData meta = new VmwareMetaData(OperatingSystemList.get(), config, config.length); - meta.addDisplayName(rs.getString("lecturename")); - if (meta.getOs() == null) { - meta.setOs(rs.getString("virtoskeyword")); - } - meta.addHddTemplate("%VM_DISK_PATH%", "%VM_DISK_MODE%", "%VM_DISK_REDOLOGDIR%"); - meta.addEthernet(EthernetType.NAT); // TODO: Use config - meta.disableSuspend(); + config = rs.getBytes("virtualizerconfig"); + lectureName = rs.getString("lecturename"); + osKeyword = rs.getString("virtoskeyword"); // Everything worked so far, update statistics counters MysqlStatement upStmt = connection.prepareStatement("UPDATE" + " lecture SET lastused = UNIX_TIMESTAMP(), usecount = usecount + 1" @@ -474,11 +468,22 @@ public class DbLecture { upStmt.setString("lectureid", lectureId); upStmt.executeUpdate(); connection.commit(); - return meta; } catch (SQLException e) { LOGGER.error("Query failed in DbLecture.getClientLaunchData()", e); throw e; } + if (config == null) { + return null; + } + VmwareMetaData meta = new VmwareMetaData(OperatingSystemList.get(), config, config.length); + meta.addDisplayName(lectureName); + if (osKeyword != null) { + meta.setOs(osKeyword); + } + meta.addHddTemplate("%VM_DISK_PATH%", "%VM_DISK_MODE%", "%VM_DISK_REDOLOGDIR%"); + meta.addEthernet(EthernetType.NAT); // TODO: Use config + meta.disableSuspend(); + return meta; } public static void deleteOld(int minAgeDays) throws SQLException { -- cgit v1.2.3-55-g7522