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
GRAPHICS = ${SRC}/Graphics/*.java
SETTINGS = ${SRC}/Settings/*.java
MAIN = ${SRC}/Main.java
MAIN = ${SRC}/*.java
.PHONY: clean docs run
@ -25,7 +25,7 @@ run:
make clean
mkdir build/ && mkdir docs/
${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:
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,8 +1,6 @@
package fr.sae.JSonInspector;
import fr.sae.JSonInspector.Exception.JsonSyntaxException;
import fr.sae.JSonInspector.Graphics.Frame;
import fr.sae.JSonInspector.Storage.Tree;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
@ -13,17 +11,11 @@ public class Main {
new Frame();
} else {
try {
URL url = new URL(args[0]);
String file = getJsonInOneLine(url);
System.out.println(new Tree(file));
URL url = new File(args[0]).toURI().toURL();
new DisplayConsole(url);
} catch (MalformedURLException e) {
System.err.println("[!] Chemin du fichier invalide");
System.exit(1);
} catch (JsonSyntaxException j) {
System.err.println("[!] Syntaxe du fichier invalide");
System.exit(1);
}
}
}