Skip to content
Snippets Groups Projects
Domain.java 2.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • Alfredo Chissotti's avatar
    Alfredo Chissotti committed
    package code;
    
    import java.io.IOException;
    
    A C's avatar
    A C committed
    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 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
    import com.sun.net.httpserver.HttpServer;
    
    import db.DBC;
    
    
    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 {
    
    A C's avatar
    A C committed
    		
    		ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor)Executors.newCachedThreadPool();
    		HttpServer server=HttpServer.create(new InetSocketAddress(port),0);
    
    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();
    
    A C's avatar
    A C committed
    	
    
    A C's avatar
    A C committed
    		// leggo risposta
    		int status = con.getResponseCode();
    
    A C's avatar
    A C committed
    		//controllare ToDo
    
    		String content = Helper.getResponseFromConnection(con);
    
    A C's avatar
    A C committed
    		con.disconnect();
    
    A C's avatar
    A C committed
    		//manipolazione per ottenere i campi dei moduli
    
    A C's avatar
    A C committed
    		riempiModuli(content);
    
    A C's avatar
    A C committed
    		server.setExecutor(threadPoolExecutor);
    
    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());
    		server.createContext("/secured/domains/", new TokenHandler());
    		server.createContext("/secured/services", new ServicesHandler());
    		server.createContext("/secured/priviledges", new PriviledgesHandler());
    
    A C's avatar
    A C committed
    		server.start();
    		System.out.println("Domain in ascolto su "+Helper.getSelfURL());
    	}
    	
    	private static void riempiModuli(String content) throws JSONException {
    		
    		JSONObject obj=new JSONObject(content);
    		JSONArray jr = obj.getJSONArray("response");
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    		String []s1=new String[jr.length()];
    
    A C's avatar
    A C committed
    
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    		for(int i=0;i<jr.length();i++) {
    			s1[i]=jr.getString(i);
    		}
    
    A C's avatar
    A C committed
    		for(int i=0;i<s1.length;i++) {
    			String remZip=s1[i].substring(0, s1[i].length()-4);
    			String[] curr=remZip.split("-");
    			for(int j=0;j<curr.length;j++) {
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    				if(curr.length>1) {
    
    A C's avatar
    A C committed
    					String a=curr[0];
    
    A C's avatar
    A C committed
    					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) {
    						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) {
    						e.printStackTrace();
    					}
    
    A C's avatar
    A C committed
    				}
    
    A C's avatar
    A C committed
    			}
    		}