This commit is contained in:
Bilou 2023-01-16 01:16:08 +01:00
parent b7d56f4480
commit b76c93fbfb
3 changed files with 192 additions and 88 deletions

View File

@ -17,7 +17,7 @@ EXCEPTION = ${SRC}/Exception/*.java
STORAGE = ${SRC}/Storage/*.java STORAGE = ${SRC}/Storage/*.java
GRAPHICS = ${SRC}/Graphics/*.java GRAPHICS = ${SRC}/Graphics/*.java
SETTINGS = ${SRC}/Settings/*.java SETTINGS = ${SRC}/Settings/*.java
MAIN = ${SRC}/Main.java MAIN = ${SRC}/*.java
.PHONY: clean docs run .PHONY: clean docs run
@ -25,7 +25,7 @@ run:
make clean make clean
mkdir build/ && mkdir docs/ mkdir build/ && mkdir docs/
${JAVAC} ${JAVAC_OPTIONS} ${SETTINGS} ${GRAPHICS} ${STORAGE} ${EXCEPTION} ${MAIN} ${JAVAC} ${JAVAC_OPTIONS} ${SETTINGS} ${GRAPHICS} ${STORAGE} ${EXCEPTION} ${MAIN}
cd build && java fr.sae.JSonInspector.Main dfd && cd .. cd build && java fr.sae.JSonInspector.Main /home/bilal-linux/toFormat.json && cd ..
clean: clean:
rm -rf build && rm -rf docs rm -rf build && rm -rf docs

View File

@ -0,0 +1,112 @@
package fr.sae.JSonInspector;
import java.net.URL;
import java.io.InputStream;
import java.io.IOException;
public class DisplayConsole {
private URL jsonFile;
public DisplayConsole(URL jsonFile) {
this.jsonFile = jsonFile;
if (this.Display() == null) {
System.out.println("[!] Probleme lors du formatage de : " + this.jsonFile.getFile());
} else {
System.out.println(this.Display());
}
}
public String Display() {
try {
InputStream jsonReader = this.jsonFile.openStream();
StringBuilder containerJsonFormatted = new StringBuilder();
int indentLevel = 0;
boolean currentlyInRecord = false;
int cursor = jsonReader.read();
while (cursor != -1) {
char c = (char) cursor;
switch (c) {
case '{': {
containerJsonFormatted.append(c);
if (!currentlyInRecord) {
containerJsonFormatted.append("\n");
indentLevel++;
this.addIndentation(containerJsonFormatted, indentLevel);
}
break;
}
case '[': {
containerJsonFormatted.append(c);
if (!currentlyInRecord) {
containerJsonFormatted.append("\n");
indentLevel++;
this.addIndentation(containerJsonFormatted, indentLevel);
}
break;
}
case '"': {
currentlyInRecord = !currentlyInRecord;
containerJsonFormatted.append(c);
break;
}
case ':': {
containerJsonFormatted.append(c).append(" ");
break;
}
case ',': {
containerJsonFormatted.append(c);
if (!currentlyInRecord) {
containerJsonFormatted.append("\n");
this.addIndentation(containerJsonFormatted, indentLevel);
}
break;
}
case ']': {
if (!currentlyInRecord) {
containerJsonFormatted.append("\n");
indentLevel--;
this.addIndentation(containerJsonFormatted, indentLevel);
}
containerJsonFormatted.append(c);
break;
}
case '}': {
if (!currentlyInRecord) {
containerJsonFormatted.append("\n");
indentLevel--;
this.addIndentation(containerJsonFormatted, indentLevel);
}
containerJsonFormatted.append(c);
break;
}
default: {
containerJsonFormatted.append(c);
break;
}
}
cursor = jsonReader.read();
}
jsonReader.close();
return containerJsonFormatted.toString();
} catch (IOException e) {
System.out.println("[!] Fichier " + this.jsonFile.getFile() + " n'existe pas");
return null;
}
}
public void addIndentation(StringBuilder sb, int indentLevel) {
for (int i = 0; i < indentLevel; i++) {
sb.append("\t");
}
}
}

View File

@ -1,86 +1,78 @@
package fr.sae.JSonInspector; package fr.sae.JSonInspector;
import fr.sae.JSonInspector.Exception.JsonSyntaxException; import fr.sae.JSonInspector.Graphics.Frame;
import fr.sae.JSonInspector.Graphics.Frame; import java.io.*;
import fr.sae.JSonInspector.Storage.Tree; import java.net.MalformedURLException;
import java.io.*; import java.net.URL;
import java.net.MalformedURLException;
import java.net.URL; public class Main {
public static void main(String[] args) {
public class Main { if (args.length == 0) {
public static void main(String[] args) { new Frame();
if (args.length == 0) { } else {
new Frame(); try {
} else { URL url = new File(args[0]).toURI().toURL();
try { new DisplayConsole(url);
URL url = new URL(args[0]); } catch (MalformedURLException e) {
String file = getJsonInOneLine(url); System.err.println("[!] Chemin du fichier invalide");
System.out.println(new Tree(file)); System.exit(1);
}
} catch (MalformedURLException e) { }
System.err.println("[!] Chemin du fichier invalide"); }
System.exit(1);
public static String getJsonInOneLine(URL f) {
} catch (JsonSyntaxException j) { StringBuilder sb = new StringBuilder();
System.err.println("[!] Syntaxe du fichier invalide");
System.exit(1); try {
} BufferedReader buff = new BufferedReader(new InputStreamReader(f.openStream()));
} String line;
} while ((line = buff.readLine()) != null) {
sb.append(line);
public static String getJsonInOneLine(URL f) { }
StringBuilder sb = new StringBuilder();
buff.close();
try { } catch (IOException e) {
BufferedReader buff = new BufferedReader(new InputStreamReader(f.openStream())); System.err.println("[!] Probleme lors de l'ouverture du fichier");
String line; }
while ((line = buff.readLine()) != null) {
sb.append(line); return sb.toString();
} }
buff.close(); public static String cleanFile(String file) {
} catch (IOException e) { char[] chars = file.toCharArray();
System.err.println("[!] Probleme lors de l'ouverture du fichier"); boolean inString = false, inValue = false;
} String cleanedFile = "";
return sb.toString(); for (char currentChar : chars) {
} if (!inString && !inValue) {
if (currentChar == '"') {
public static String cleanFile(String file) { inString = true;
char[] chars = file.toCharArray(); cleanedFile += currentChar;
boolean inString = false, inValue = false; } else if (isJsonSyntax(currentChar)) {
String cleanedFile = ""; cleanedFile += currentChar;
}
for (char currentChar : chars) { } else if (currentChar == '"') {
if (!inString && !inValue) { inString = false;
if (currentChar == '"') { cleanedFile += currentChar;
inString = true; } else if (currentChar == ':') {
cleanedFile += currentChar; inValue = true;
} else if (isJsonSyntax(currentChar)) { cleanedFile += currentChar;
cleanedFile += currentChar; } else {
} cleanedFile += currentChar;
} else if (currentChar == '"') { }
inString = false; }
cleanedFile += currentChar;
} else if (currentChar == ':') { return cleanedFile;
inValue = true; }
cleanedFile += currentChar;
} else { private static boolean isJsonSyntax(char character) {
cleanedFile += currentChar; boolean openingArray = character == '[', closingArray = character == ']';
} boolean openingObject = character == '{', closingObject = character == '}';
} boolean virgule = character == ',', deuxPoints = character == ':';
return cleanedFile; if (openingArray || closingArray || openingObject || closingObject || virgule || deuxPoints) {
} return true;
}
private static boolean isJsonSyntax(char character) { return false;
boolean openingArray = character == '[', closingArray = character == ']'; }
boolean openingObject = character == '{', closingObject = character == '}'; }
boolean virgule = character == ',', deuxPoints = character == ':';
if (openingArray || closingArray || openingObject || closingObject || virgule || deuxPoints) {
return true;
}
return false;
}
}