/** * ************************************************************************ Start Workflow. * * @param AD_Workflow_ID workflow * @return true if started */ private boolean startWorkflow(int AD_Workflow_ID) { log.fine(AD_Workflow_ID + " - " + m_pi); boolean started = false; if (DB.isRemoteProcess()) { log.info("trying to running on the server"); Server server = CConnection.get().getServer(); try { if (server != null) { // See ServerBean log.info("running on the server"); m_pi = server.workflow(m_wscctx, m_pi, AD_Workflow_ID); log.finest("server => " + m_pi); started = true; } } catch (Exception ex) { log.log(Level.SEVERE, "AppsServer error", ex); started = false; } } // Run locally if (!started && !m_IsServerProcess) { log.info("running locally"); MWorkflow wf = MWorkflow.get(m_wscctx, AD_Workflow_ID); MWFProcess wfProcess = null; if (m_pi.isBatch()) wfProcess = wf.start(m_pi); // may return null else wfProcess = wf.startWait(m_pi); // may return null started = wfProcess != null; } return started; } // startWorkflow
/** * ************************************************************************ Start Java Process * Class. instanciate the class implementing the interface ProcessCall. The class can be a * Server/Client class (when in Package org compiere.process or org.compiere.model) or a client * only class (e.g. in org.compiere.report) * * @return true if success */ private boolean startProcess() { log.fine(m_pi.toString()); boolean started = false; if (DB.isRemoteProcess()) { Server server = CConnection.get().getServer(); try { if (server != null) { // See ServerBean m_pi = server.process(m_wscctx, m_pi); log.finest("server => " + m_pi); started = true; } } catch (UndeclaredThrowableException ex) { Throwable cause = ex.getCause(); if (cause != null) { if (cause instanceof InvalidClassException) log.log( Level.SEVERE, "Version Server <> Client: " + cause.toString() + " - " + m_pi, ex); else log.log(Level.SEVERE, "AppsServer error(1b): " + cause.toString() + " - " + m_pi, ex); } else log.log(Level.SEVERE, " AppsServer error(1) - " + m_pi, ex); started = false; } catch (Exception ex) { Throwable cause = ex.getCause(); if (cause == null) cause = ex; log.log(Level.SEVERE, "AppsServer error - " + m_pi, cause); started = false; } } // Run locally if (!started && !m_IsServerProcess) { ProcessCall myObject = null; try { Class myClass = Class.forName(m_pi.getClassName()); myObject = (ProcessCall) myClass.newInstance(); if (myObject == null) m_pi.setSummary("No Instance for " + m_pi.getClassName(), true); else myObject.startProcess(m_wscctx, m_pi, m_trx); if (m_trx != null) { m_trx.commit(); m_trx.close(); } } catch (Exception e) { if (m_trx != null) { m_trx.rollback(); m_trx.close(); } m_pi.setSummary("Error starting Class " + m_pi.getClassName(), true); log.log(Level.SEVERE, m_pi.getClassName(), e); } } return !m_pi.isError(); } // startProcess
/** Method declaration */ public void run() { Channel c = init(); if (c != null) { try { while (true) { String sql = mInput.readUTF(); mServer.trace(mThread + ":" + sql); if (sql == null) { break; } write(mDatabase.execute(sql, c).getBytes()); } } catch (Exception e) { } } try { mSocket.close(); } catch (IOException e) { } if (mDatabase.isShutdown()) { System.out.println("The database is shutdown"); System.exit(0); } }
private String getFriendsMessage(Packet packet) { ArrayList<String> friends = new ArrayList<String>(); friends = server.getfriendlist(packet.getSender()); String friendsMessage = ""; // Prepare delimited list to send to sender for (int i = 0; i < friends.size(); i++) { friendsMessage = friendsMessage + friends.get(i) + ":"; } return friendsMessage; }
/** * Method declaration * * @return */ private Channel init() { try { mSocket.setTcpNoDelay(true); mInput = new DataInputStream(new BufferedInputStream(mSocket.getInputStream())); mOutput = new DataOutputStream(new BufferedOutputStream(mSocket.getOutputStream())); String user = mInput.readUTF(); String password = mInput.readUTF(); Channel c; try { mServer.trace(mThread + ":trying to connect user " + user); return mDatabase.connect(user, password); } catch (SQLException e) { write(new Result(e.getMessage()).getBytes()); } } catch (Exception e) { } return null; }
public void run() { ObjectInputStream din = null; try { din = new ObjectInputStream(socket.getInputStream()); Packet packet = (Packet) din.readObject(); username = packet.getSender(); server.usernameSocketMapping.put(username, socket); server.isAlive.add(username); // Sh: Login validation message if (packet.getType() == 0) { try { String password = packet.getMessage(); Statement st = Server.conn.createStatement(); ResultSet rs = st.executeQuery( "SELECT * FROM user_info where username='******' and password='******'"); if (!rs.next()) { // User does not exist server.forwardToReceiver(new Packet(0, "Server", username, "Invalid")); synchronized (server.usernameSocketMapping) { server.usernameSocketMapping.remove(username); } synchronized (server.isAlive) { server.isAlive.remove(username); } return; } else { // Authentic user server.forwardToReceiver(new Packet(0, "Server", username, "Authentic")); } } catch (SQLException e1) { e1.printStackTrace(); } } // Sh: Signup message if (packet.getType() == 2) { try { String[] message = packet.getMessage().split(":"); String name = message[0]; String password = message[1]; // String sex=message[2]; String username = message[2]; Statement st = Server.conn.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM user_info where username='******'"); if (rs.next()) { // Username already present server.forwardToReceiver(new Packet(2, "Server", username, "Username present")); synchronized (server.usernameSocketMapping) { server.usernameSocketMapping.remove(username); } synchronized (server.isAlive) { server.isAlive.remove(username); } return; } else { // Register user String query = "INSERT INTO user_info VALUES('" + name + "','" + password + "'," + "NULL,'" + username + "')"; System.out.println(query); st.executeUpdate(query); server.forwardToReceiver(new Packet(2, "Server", username, "User Registererd")); } } catch (SQLException e1) { e1.printStackTrace(); } } System.out.println("State of isAlive map is: " + server.isAlive); try { Statement st = Server.conn.createStatement(); ResultSet rs = st.executeQuery( "SELECT sender,message,status FROM msg_buffer where receiver='" + username + "' order by sender,sno"); String sendflag = null; String sender = null; while (rs.next()) { sender = rs.getString("sender"); int status = rs.getInt("status"); String message = rs.getString("message"); System.out.println("sender: " + sender); System.out.println("receiver: " + username); System.out.println("message: " + message); server.forwardToReceiver(new Packet(status, sender, username, message)); System.out.println("Sending " + packet); if (!sender.equals(sendflag)) { server.forwardToReceiver(new Packet(6, username, sender, "Message Received")); sendflag = sender; } } st.executeUpdate("DELETE FROM msg_buffer where receiver='" + username + "'"); } catch (SQLException e1) { e1.printStackTrace(); } while (true) { packet = (Packet) din.readObject(); if (packet.getType() == 3) // is an OK message { try { packet.setSender(username); System.out.println("Is OK message"); Statement st = Server.conn.createStatement(); ResultSet rs = st.executeQuery( "SELECT * FROM user_info where username='******'"); if (rs.next()) { if (server.addFriend(packet.getSender(), packet.getReceiver(), true) == 1) { // packet.setMessage("Already in friend list"); server.forwardToReceiver( new Packet(1, "Server", packet.getSender(), "Already in friend list")); System.out.println("ALready in list"); } else { System.out.println("Sending " + packet); server.forwardToReceiver( new Packet(1, "Server", packet.getReceiver(), packet.getMessage())); server.forwardToReceiver( new Packet(1, "Server", packet.getSender(), packet.getMessage())); } } else { server.forwardToReceiver( new Packet(1, "Server", packet.getSender(), "User does not exist")); } } catch (SQLException e1) { e1.printStackTrace(); } } else if ((packet.getType() == 8)) // is a getFriends message { packet.setSender(username); System.out.println("Type 8"); /* * try { //Thread.sleep(3000); } catch (InterruptedException * e) { // TODO Auto-generated catch block * e.printStackTrace(); } */ String FriendsMessage = getFriendsMessage(packet); server.forwardToReceiver( new Packet(8, "Server", packet.getSender(), "Friends|" + FriendsMessage)); } else if (packet.getType() == 16) // Random conversation. { packet.setSender(username); String receiver = server.getRandomPerson(packet.getSender()); if (!receiver.equals("No One Online")) { server.forwardToReceiver( new Packet(1, "Server", packet.getSender(), receiver + "| will talk to you now.")); server.forwardToReceiver( new Packet(1, "Server", receiver, packet.getSender() + "| will talk to you now.")); } else { System.out.println("No one online"); server.forwardToReceiver(new Packet(16, "Server", packet.getSender(), "No One Online")); server.forwardToReceiver(new Packet(1, "Server", packet.getSender(), "No One Online")); } } else if (packet.getType() == 13) { // Webcam of live is started synchronized (server.webcamAliveMapping) { server.webcamAliveMapping.put(packet.getSender(), packet.getMessage()); } System.out.println("State of webcamAliveMapping is: " + server.webcamAliveMapping); } else if (packet.getType() == 14) { // Webcam of client is // closed if (server.webcamAliveMapping.containsKey(packet.getSender())) { synchronized (server.webcamAliveMapping) { server.webcamAliveMapping.remove(packet.getSender()); } } } else if (packet.getType() == 15) { // Client requested for // another client's webcam if (server.webcamAliveMapping.containsKey( packet.getReceiver())) { // User Webcam is available server.forwardToReceiver( new Packet( 15, "Server", packet.getSender(), server.webcamAliveMapping.get(packet.getReceiver()))); } else { // User Webcam not available server.forwardToReceiver( new Packet(15, "Server", packet.getSender(), "Webcam Not Found")); server.forwardToReceiver( new Packet( 1, "Server", packet.getSender(), "Webcam for " + packet.getReceiver() + " is not available")); } } else if (packet.getType() == 17) { ArrayList<String> friends = new ArrayList<String>(); friends = server.getfriendlist(packet.getSender()); if (friends.isEmpty()) { server.forwardToReceiver( new Packet(1, "Server", packet.getSender(), "Your friendlist is empty.")); } else { for (int i = 0; i < friends.size(); i++) { server.forwardToReceiver( new Packet(1, packet.getSender(), friends.get(i), packet.getMessage())); } } } else { packet.setSender(username); System.out.println("Sending " + packet); server.forwardToReceiver(packet); } } } catch (EOFException ie) { } catch (IOException ie) { ie.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { din.close(); } catch (IOException e) { e.printStackTrace(); } synchronized (server.isAlive) { server.isAlive.remove(username); } synchronized (server.usernameSocketMapping) { server.usernameSocketMapping.remove(username); } System.out.println("State of isAlive map is: " + server.isAlive); server.removeConnection(socket); } }