Skip to content
Snippets Groups Projects
Helper.java 3.67 KiB
Newer Older
  • Learn to ignore specific revisions
  • Elisa Giglio's avatar
    Elisa Giglio committed
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    public class Helper {
    
    	public static synchronized void scriviFile(JSONObject json, String path) throws IOException {
    		BufferedWriter b = new BufferedWriter(new FileWriter(path));
    		b.write(json.toString());
    		b.close();
    	}
    	
    	public static synchronized String leggiFile(String path) throws IOException {
    		String line;
    		String answer = "";
    		FileReader fileReader = new FileReader(path);
    		BufferedReader bufferedReader = new BufferedReader(fileReader);
    		while((line = bufferedReader.readLine()) != null) {
    			answer += line;
    		}
    		bufferedReader.close();
    		return answer;
    	}
    	
    	// se add = true, aggiungo il valore n alla codaVal; 
    	// se add = false, rimuovo il valore n dalla codaVal
    	public static synchronized void modificaFileStato(MyQueue<Integer> coda, boolean add, int n, int valore, String path) {
    		try {
    			JSONObject statoJson = new JSONObject(Helper.leggiFile(path));
    			statoJson.put("valore",valore);
    			JSONArray arrayCodaVal = statoJson.getJSONArray("codaVal");
    			if(add)
    				arrayCodaVal.put(n);
    			else {
    				int index = -1;
    				for(int i=0; i<arrayCodaVal.length(); i++) {
    					if(arrayCodaVal.getInt(i)==n)
    						index = i;
    				}
    				arrayCodaVal.remove(index);
    			}
    			Helper.scriviFile(statoJson.put("codaVal",arrayCodaVal), path);
    		} catch (JSONException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static synchronized void modificaFileStato(boolean add, int n, String path) {
    		try {
    			JSONObject statoJson = new JSONObject(Helper.leggiFile(path));
    			JSONArray arrayCodaVal = statoJson.getJSONArray("codaVal");
    			if(add)
    				arrayCodaVal.put(n);
    			else {
    				int index = -1;
    				for(int i=0; i<arrayCodaVal.length(); i++) {
    					if(arrayCodaVal.getInt(i)==n)
    						index = i;
    				}
    				arrayCodaVal.remove(index);
    			}
    			Helper.scriviFile(statoJson.put("codaVal",arrayCodaVal), path);
    		} catch (JSONException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static synchronized void modificaFileStato(boolean add, Pair p, String path) {
    		try {
    			JSONObject statoJson = new JSONObject(Helper.leggiFile(path)); 
    			JSONArray arrayCodaMsg = statoJson.getJSONArray("codaMsg"); 
    			if(add) 
    				arrayCodaMsg.put(p.toJsonObject());
    			else {
    				int index = -1;
    				for(int i=0; i<arrayCodaMsg.length(); i++) {
    					JSONObject msgJson = arrayCodaMsg.getJSONObject(i); 
    					if(msgJson.getString("topic").equals(p.getTopic()) && msgJson.getJSONObject("msg").toString().equals(p.getMsg()) )
    						index = i;
    				}
    				arrayCodaMsg.remove(index);
    			}
    			Helper.scriviFile(statoJson.put("codaMsg",arrayCodaMsg), path);
    		} catch (JSONException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static synchronized <T> void getFromFileStato(MyQueue<T> coda, String key, String path) throws JSONException, IOException {
    		JSONObject statoJson = new JSONObject(Helper.leggiFile(path));
    		JSONArray arrayCoda = statoJson.getJSONArray(key);
    		if(coda.getClass().equals(Pair.class)) {
    			MyQueue<Pair> codaMsg = (MyQueue<Pair>) coda;
    			for(int i = 0; i<arrayCoda.length(); i++) {
    				JSONObject pairJson = arrayCoda.getJSONObject(i);
    				Pair p = new Pair(pairJson.getString("topic"), pairJson.getString("msg"));
    				codaMsg.send(p);
    				
    			}
    		}
    		if(coda.getClass().equals(Integer.class)) {
    			MyQueue<Integer> codaVal = (MyQueue<Integer>) coda;
    			for(int i = 0; i<arrayCoda.length(); i++) {
    				codaVal.send(arrayCoda.getInt(i));
    			}
    		}
    			
    	}
    	
    }