Пример #1
0
  public void test(int nrTasks, int... nrConcurrent) {
    try {
      configureLogging();

      HibernateUtil.configureHibernate(ApplicationProperties.getProperties());

      startServer();

      List<Operation> operations = operations();

      Collections.shuffle(operations);

      for (int c : nrConcurrent) {
        run(
            nrTasks <= 0 || operations.size() <= nrTasks
                ? operations
                : operations.subList(0, nrTasks),
            c);
      }

      logCounters();

      writeReports();

      stopServer();
    } catch (Exception e) {
      sLog.fatal("Test failed: " + e.getMessage(), e);
    } finally {
      close();
    }
  }
Пример #2
0
  public static void main(String[] args) {
    try {
      HibernateUtil.configureHibernate(ApplicationProperties.getProperties());

      Long sessionId =
          Long.valueOf(ApplicationProperties.getProperty("tmtbl.pdf.worksheet.session", "165924"));
      Session session = new SessionDAO().get(sessionId);
      if (session == null) {
        System.err.println(
            "Academic session "
                + sessionId
                + " not found, use property tmtbl.pdf.worksheet.session to set academic session.");
        System.exit(0);
      } else {
        System.out.println("Session: " + session);
      }
      TreeSet subjectAreas = null;
      if (args.length > 0) {
        subjectAreas = new TreeSet();
        for (int i = 0; i < args.length; i++) {
          SubjectArea sa = SubjectArea.findByAbbv(sessionId, args[i]);
          if (sa == null) System.err.println("Subject area " + args[i] + " not found.");
          else subjectAreas.add(sa);
        }
      } else {
        subjectAreas = new TreeSet(SubjectArea.getSubjectAreaList(sessionId));
      }

      for (Iterator i = subjectAreas.iterator(); i.hasNext(); ) {
        SubjectArea sa = (SubjectArea) i.next();
        System.out.println("Printing subject area " + sa.getSubjectAreaAbbreviation() + " ...");
        FileOutputStream out = new FileOutputStream(sa.getSubjectAreaAbbreviation() + ".pdf");
        List<SubjectArea> sas = new ArrayList<SubjectArea>();
        sas.add(sa);
        PdfWorksheet.print(out, sas);
        out.flush();
        out.close();
      }

      HibernateUtil.closeHibernate();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
Пример #3
0
  public JavaMailWrapper() {
    Properties p = ApplicationProperties.getProperties();
    if (p.getProperty("mail.smtp.host") == null && p.getProperty("tmtbl.smtp.host") != null)
      p.setProperty("mail.smtp.host", p.getProperty("tmtbl.smtp.host"));

    final String user = ApplicationProperty.EmailSmtpUser.value();
    final String password = ApplicationProperty.EmailSmtpPassword.value();

    Authenticator a = null;
    if (user != null && password != null) {
      p.setProperty("mail.smtp.user", user);
      p.setProperty("mail.smtp.auth", "true");
      a =
          new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
              return new PasswordAuthentication(user, password);
            }
          };
    }

    iMailSession = javax.mail.Session.getDefaultInstance(p, a);
    iMail = new MimeMessage(iMailSession);
    iBody = new MimeMultipart();
  }
Пример #4
0
 public Properties getProperties() {
   if (iProperties == null) iProperties = ApplicationProperties.getProperties();
   return iProperties;
 }
Пример #5
0
 private Object answer(Object command) throws Exception {
   if ("quit".equals(command)) {
     stopConnection();
     stopService();
     return "ack";
   }
   if ("ping".equals(command)) {
     iLastPing = System.currentTimeMillis();
     if (iProxy != null && !iServers.contains(iProxy)) {
       sLog.warn("Server " + iProxy + " is alive, but it is not registered.");
       iServers.add(iProxy);
     }
     return "ack";
   }
   if ("url".equals(command)) {
     return HibernateUtil.getConnectionUrl();
   }
   if ("properties".equals(command)) {
     return ApplicationProperties.getProperties();
   }
   if ("disconnect".equals(command)) {
     unregister();
     stopConnection();
     return "ack";
   }
   if (command instanceof Object[]) {
     Object cmd[] = (Object[]) command;
     if ("connect".equals(cmd[0])) {
       int port = ((Integer) cmd[1]).intValue();
       iProxy = new RemoteSolverServerProxy(iSocket.getInetAddress(), port, this);
       sLog.debug("Sever " + iProxy + " connected.");
       synchronized (iServers) {
         if (iServers.contains(iProxy)) {
           sLog.warn("Previous run of the server " + iProxy + " was not properly disconnected.");
           for (Iterator i = iServers.iterator(); i.hasNext(); ) {
             RemoteSolverServerProxy oldProxy = (RemoteSolverServerProxy) i.next();
             if (oldProxy.equals(iProxy)) {
               try {
                 execute(new DisconnectProxyCallback(oldProxy), 10000);
               } catch (Exception e) {
               }
             }
           }
           iServers.remove(iProxy);
         }
         iServers.add(iProxy);
       }
       return "ack";
     }
     if ("saveToFile".equals(cmd[0])) {
       TimetableInfoUtil.getInstance().saveToFile((String) cmd[1], (TimetableInfo) cmd[2]);
       return "ack";
     }
     if ("loadFromFile".equals(cmd[0])) {
       return TimetableInfoUtil.getInstance().loadFromFile((String) cmd[1]);
     }
     if ("deleteFile".equals(cmd[0])) {
       TimetableInfoUtil.getInstance().deleteFile((String) cmd[1]);
       return "ack";
     }
     if ("resource".equals(cmd[0])) {
       URL resource = SolverRegisterService.class.getClassLoader().getResource((String) cmd[1]);
       if (resource == null) return null;
       ByteArrayOutputStream out = new ByteArrayOutputStream();
       InputStream in = resource.openStream();
       byte[] buffer = new byte[1024];
       int read = 0;
       while ((read = in.read(buffer)) >= 0) out.write(buffer, 0, read);
       out.flush();
       out.close();
       in.close();
       return out.toByteArray();
     }
     if ("refreshSolution".equals(cmd[0])) {
       try {
         Solution.refreshSolution((Long) cmd[1]);
       } finally {
         _BaseRootDAO.closeCurrentThreadSessions();
       }
       return null;
     }
     if ("hasRoomAvailability".equals(cmd[0])) {
       return new Boolean(RoomAvailability.getInstance() != null);
     }
     if ("activateRoomAvailability".equals(cmd[0])) {
       if (RoomAvailability.getInstance() != null) {
         RoomAvailability.getInstance()
             .activate(
                 new SessionDAO().get((Long) cmd[1]),
                 (Date) cmd[2],
                 (Date) cmd[3],
                 (String) cmd[4],
                 "true"
                     .equals(
                         ApplicationProperties.getProperty(
                             "tmtbl.room.availability.solver.waitForSync", "true")));
         return "ack";
       }
       return null;
     }
     if ("getRoomAvailability".equals(cmd[0])) {
       if (RoomAvailability.getInstance() != null) {
         return RoomAvailability.getInstance()
             .getRoomAvailability(
                 new LocationDAO().get((Long) cmd[1]),
                 (Date) cmd[2],
                 (Date) cmd[3],
                 (String) cmd[4]);
       }
       return null;
     }
     if ("getRoomAvailabilityTimeStamp".equals(cmd[0])) {
       if (RoomAvailability.getInstance() != null) {
         return RoomAvailability.getInstance()
             .getTimeStamp((Date) cmd[1], (Date) cmd[2], (String) cmd[3]);
       }
       return null;
     }
   }
   sLog.warn("Unknown command " + command);
   return null;
 }
Пример #6
0
 public void run() {
   iStartTime = new Date();
   try {
     ConnectionFactory.init(
         ApplicationProperties.getProperties(), ApplicationProperties.getDataFolder());
     try {
       while (true) {
         try {
           iServerSocket =
               ConnectionFactory.getServerSocketFactory()
                   .createServerSocket(
                       Integer.parseInt(
                           ApplicationProperties.getProperty(
                               "tmtbl.solver.register.port", "9998")));
           sLog.info(
               "Service is running at "
                   + iServerSocket.getInetAddress().getHostName()
                   + ":"
                   + iServerSocket.getLocalPort());
           break;
         } catch (BindException e) {
           try {
             sLog.warn("Prior instance of service still running");
             Socket socket =
                 ConnectionFactory.getSocketFactory()
                     .createSocket(
                         "localhost",
                         Integer.parseInt(
                             ApplicationProperties.getProperty(
                                 "tmtbl.solver.register.port", "9998")));
             RemoteIo.writeObject(socket, "quit");
             Object answer = RemoteIo.readObject(socket);
             sLog.warn("quit command sent, answer: " + answer);
             socket.close();
           } catch (Exception f) {
             sLog.warn("Unable to connect to prior instance", f);
           }
           sleep(1000);
         }
       }
     } catch (IOException io) {
       sLog.error("Unable to start service, reason: " + io.getMessage(), io);
       return;
     }
     while (!iServerSocket.isClosed()) {
       try {
         Socket socket = iServerSocket.accept();
         socket.setKeepAlive(true);
         sLog.debug("Client " + socket.getInetAddress() + " connected.");
         (new Thread(new SolverConnection(socket))).start();
       } catch (Exception e) {
         if (!iServerSocket.isClosed())
           sLog.warn("Unable to accept new connection, reason:" + e.getMessage(), e);
       }
     }
   } catch (Exception e) {
     sLog.error("Unexpected exception occured, reason: " + e.getMessage(), e);
   } finally {
     try {
       if (iServerSocket != null && !iServerSocket.isClosed()) iServerSocket.close();
     } catch (Exception e) {
       sLog.warn("Unable to close socket, reason: " + e.getMessage(), e);
     }
   }
 }