public void readOrderedLog (){

		cleanupStructures();
		HashMap<int[], String> unorderedLogMap= readLogFromTextfile();

		Set<int[]> clock = unorderedLogMap.keySet();

		int clocks[][] = new int[clock.size()][clock.iterator().next().length];
		int index = 0;
		for(int[] c : clock) {
			clocks[index] = c;
			index++;
		}

		String[] strings = Arrays.asList(unorderedLogMap.values().toArray()).toArray(new String[unorderedLogMap.values().toArray().length]);

		boolean tradeMade, atLeastOne;
		if(clocks.length == 0)
			return;
		int clockLenght = clocks[0].length;

		//VectorialClock tmpClock = null;
		int[] tmpClock = null;
		String aux = null;

		do {
			tradeMade = false;
			for (int i = 0; i < clocks.length - 1; i++) {
				atLeastOne = false;
				for (int j = 0; j < clockLenght; j++) {
					if (clocks[i][j] >= clocks[i + 1][j]) {
						if(clocks[i][j] > clocks[i + 1][j])
							atLeastOne = true;
						if (j == clockLenght-1 && atLeastOne) {
							tmpClock = clocks[i];
							aux = strings[i];
							clocks[i] = clocks[i + 1];
							strings[i]= strings[i+1];
							clocks[i + 1] = tmpClock;
							strings[i+1] = aux;
							tradeMade = true;
						}
					} else {
						j=clockLenght;
					}
				}
			}
		} while (tradeMade);

		orderedClocks = clocks;
		orderedLogs = strings;

	}