Skip to content
Snippets Groups Projects
Domain.java 4.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    package code;
    
    
    A C's avatar
    A C committed
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    import java.io.IOException;
    
    A C's avatar
    A C committed
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    import java.net.InetSocketAddress;
    
    A C's avatar
    A C committed
    import java.net.URL;
    import java.sql.SQLException;
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    
    import com.sun.net.httpserver.HttpServer;
    
    A C's avatar
    A C committed
    
    import db.Connect;
    
    A C's avatar
    A C committed
    import db.DBC;
    
    A C's avatar
    A C committed
    
    
    A C's avatar
    A C committed
    import java.util.ArrayList;
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadPoolExecutor;
    
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    import org.json.JSONArray;
    
    A C's avatar
    A C committed
    import org.json.JSONException;
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    import org.json.JSONObject;
    
    A C's avatar
    A C committed
    
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    public class Domain {
    	
    
    A C's avatar
    A C committed
    	static public int port=3001;
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    	public static void main(String[] args) throws IOException, JSONException {
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    		if(args.length>1 && args[0].equals("-port")) try {
    			port = Integer.parseInt(args[1]);
    		}
    		
    		catch (Exception e) {
    			e.printStackTrace();
    		}
    
    A C's avatar
    A C committed
    		ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor)Executors.newCachedThreadPool();////newFixedThreadPool(5)
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    		HttpServer server=HttpServer.create(new InetSocketAddress(port),0);
    		
    
    A C's avatar
    A C committed
    		//Connect.connect();
    
    A C's avatar
    A C committed
    		//chiamata per popolare moduli
    
    A C's avatar
    A C committed
    		
    		
    		URL url = new URL("https://gitlab.di.unipmn.it/alfredo/iotlabgw.edu-al.unipmn.it/-/raw/main/index.json");
    		HttpURLConnection con = (HttpURLConnection) url.openConnection();
    		// 3000/install da inserire
    		con.setRequestMethod("GET");
    		con.setRequestProperty("Content-Type", "application/json");
    		con.setRequestProperty("Accept", "application/json");
    		con.setDoOutput(true);
    		con.setConnectTimeout(5000);
    		con.setReadTimeout(5000);
    		
    //		DataOutputStream out = new DataOutputStream(con.getOutputStream());// inserimento param in call
    //		out.writeBytes(j.toString());// ParameterStringBuilder.getParamsString(parameters));
    //		out.flush();
    //		out.close();
    
    		// con.setRequestProperty("Content-Type", "application/json");
    		// String contentType = con.getHeaderField("Content-Type");
    
    		// leggo risposta
    		int status = con.getResponseCode();
    
    		BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    		String inputLine;
    		StringBuffer content = new StringBuffer();
    		while ((inputLine = in.readLine()) != null) {
    			content.append(inputLine);
    		}
    		in.close();
    		con.disconnect();
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    		
    //		System.out.println(content);
    
    A C's avatar
    A C committed
    		//manipolazione per ottenere i campi dei moduli
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    		JSONObject obj=new JSONObject(content.toString());
    //		System.out.println(obj.toString());
    		//String s=content.toString();
    
    A C's avatar
    A C committed
    		//ArrayList<String>arr=s.
    		
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    		//String []s1=s.split(",");
    		JSONArray jr = obj.getJSONArray("response"); 
    		
    		//String []s1=(String[]) obj.get("response");
    		
    		String []s1=new String[jr.length()];
    		for(int i=0;i<jr.length();i++) {
    			s1[i]=jr.getString(i);
    		}
    		
    //		for(int i=0; i<s1.length; i++)
    //			System.out.println(s1[i]);
    //		
    
    A C's avatar
    A C committed
    		//ArrayList<String> arr= new ArrayList<String>();
    		for(int i=0;i<s1.length;i++) {
    			String remZip=s1[i].substring(0, s1[i].length()-4);
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    //			System.out.println("remmZip = "+remZip);
    
    A C's avatar
    A C committed
    			//arr.add(s1[i]);
    			//String[] curr=s1[i].split("-");
    			String[] curr=remZip.split("-");
    			for(int j=0;j<curr.length;j++) {
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    //				System.out.println("curr["+j+"] = "+curr[j]);
    				if(curr.length>1) {
    
    A C's avatar
    A C committed
    					String a=curr[0];
    					String b=curr[1];	
    					try {
    
    A C's avatar
    A C committed
    						//inserimento modulo non arduino
    
    A C's avatar
    A C committed
    						DBC.fillModules(a, b, s1[i]);
    					} catch (SQLException | JSONException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    				}
    				else {
    					String a=curr[0];
    					try {
    
    A C's avatar
    A C committed
    						//inserimento modulo arduino
    
    A C's avatar
    A C committed
    						DBC.fillModules(a,"Arduino1", s1[i]);
    					} catch (SQLException | JSONException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    					
    					}
    			}
    		}
    		
    
    A C's avatar
    A C committed
    				
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    		server.setExecutor(threadPoolExecutor);
    
    A C's avatar
    A C committed
    		System.out.println("Domain in ascolto\n");
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    		
    		//server.createContext("/", new RootHandler(port));
    		//server.createContext("/index", new IndexHandler());
    		//install-start-stop-delete
    
    A C's avatar
    A C committed
    		server.createContext("/install/", new InstallHandler());
    		server.createContext("/start/", new StartHandler());
    		server.createContext("/stop/", new StopHandler());
    		server.createContext("/delete/", new DeleteHandler());
    
    A C's avatar
    A C committed
    		server.createContext("/secured/domains/", new TokenHandler());
    		server.createContext("/secured/services/", new ServicesHandler());
    
    Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    		
    		server.start();
    	}
    
    }