All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.tid.topologyModuleBase.management.TMManagementSession Maven / Gradle / Ivy

The newest version!
package es.tid.topologyModuleBase.management;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.logging.Logger;

//import es.tid.pce.server.DomainPCESession;
import es.tid.topologyModuleBase.TopologyModuleParamsArray;
import es.tid.topologyModuleBase.database.TopologiesDataBase;
import es.tid.topologyModuleBase.plugins.TMPlugin;

/**
 * 
 * @author La comunidad
 *
 */


public class TMManagementSession extends Thread {
	
	private boolean started = false;
	
	/**
	 * The socket of the management session
	 */
	private Socket socket;
	
	/**
	 * Logger
	 */
	private Logger log;
	
	/**
	 * Output Stream of the managament session, to write the answers.
	 */
	private PrintStream out;
	
	/**
	 * The TEDB 
	 */
	private TopologiesDataBase tedb;
	
	/*
	 * 
	 */
	TopologyModuleParamsArray params;
	
	ArrayList pluginsList;
	
	//public static ArrayList oneSession = new ArrayList();
	
	public TMManagementSession(Socket s,TopologiesDataBase tedb, TopologyModuleParamsArray params, ArrayList pluginsList ){
		this.socket=s;
		this.tedb=tedb;
		this.params = params;
		this.pluginsList=pluginsList;
		log=Logger.getLogger("TMController");
	}
	
	public void run(){
		log.info("Starting Management session for TM");
		boolean running=true;
		
		try {
			out=new PrintStream(socket.getOutputStream());
		} catch (IOException e) {
			log.warning("Management session cancelled: "+e.getMessage());
			return;
		}
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while (running) {
				if (!started)
				{
					out.print("\n");
					out.print("   T               ,\r\n");
					out.print("   O               |'.             ,\r\n");
					out.print("   P              |  '-._        / )\r\n");
					out.print("   O             .'  .._  ',     /_'-,\r\n");
					out.print("                '   /  _'.'_\\   /._)')\r\n");
					out.print("   M           :   /  '_' '_'  /  _.'\r\n");
					out.print("   O           |E |   |Q| |Q| /   /\r\n");
					out.print("   D          .'  _\\  '-' '-'    /\r\n");
					out.print("   U        .'--.(S     ,__` )  /\r\n");
					out.print("   L              '-.     _.'  /\r\n");
					out.print("   E            __.--'----(   /\r\n");
					out.print("            _.-'     :   __\\ /\r\n");
					out.print("           (      __.' :'  :Y\r\n");
					out.print("            '.   '._,  :   :|\r\n");
					out.print("              '.     ) :.__:|\r\n");
					out.print("                \\    \\______/\r\n");
					out.print("                 '._L/_H____]\r\n");
					out.print("                  /_        /\r\n");
					out.print("                 /  '-.__.-')\r\n");
					out.print("                :      /   /\r\n");
					out.print("                :     /   /\r\n");
					out.print("              ,/_____/----;\r\n");
					out.print("              '._____)----'\r\n");
					out.print("              /     /   /\r\n");
					out.print("             /     /   /\r\n");
					out.print("           .'     /    \\\r\n");
					out.print("          (______(-.____)\r\n");
					out.print("***********************************************\n");					
					started = true;
				}
				out.print("Available commands:\r\n\n");
				out.print("\t1) showTED\r\n");
				out.print("\t2) showPlugins\r\n");
				out.print("\t3) help\r\n");
				out.print("\tENTER) quit\r\n");	
				
				out.print("TM:>");
				String command = null;
				try {
					command = br.readLine();
				} catch (IOException ioe) {
					log.warning("IO error trying to read your command");
					return;
				}
				if(command == null)
				{
					continue;
				}
				if (command.equals("quit") || command.equals("")) {
					log.info("Ending Management Session");
					out.println("bye!");
					try {
						out.close();						
					} catch (Exception e){
						e.printStackTrace();
					}
					try {
						br.close();						
					} catch (Exception e){
						e.printStackTrace();
					}					
					return;
				}				
				if (command.equals("showTED") || command.equals("1")) {
					out.print(tedb.printTopology()+"\n");
				} 
				else if (command.equals("showPlguins") || command.equals("2")) {
					int i=1;
					for(TMPlugin p : this.pluginsList){
						out.print(i+") "+p.getPluginName());
						if(p.isRunning()) out.print(" [Running]\n");
						else out.print(" [Stop]\n");
						i++;
					}
					out.print("ENTER) back\n\nTM:>");
					String command2;
					try {
						command2 = br.readLine();
					} catch (IOException ioe) {
						log.warning("IO error trying to read your command");
						return;
					}
					if(command2 == null)
					{
						continue;
					}
					try{
						int option = Integer.parseInt(command2);
						out.print(this.pluginsList.get(option-1).displayInfo()+"\n\n");
					}catch(java.lang.NumberFormatException e){
						continue;
					}
				}
				else if (command.equals("help") || command.equals("3")) {
					out.print("Available commands:\r\n\n");
					out.print("\t1) showTED\r\n");
					out.print("\t2) help\r\n");
					out.print("\tENTER) quit\r\n");	
				} 
				else{
					out.print("invalid command\n");	
					out.print("\n");
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
			return;
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy