From b3d0580439b9a00c7eb918085de1694151066004 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 16:02:49 +0000
Subject: [PATCH] rename packages
---
fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java | 242 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 242 insertions(+), 0 deletions(-)
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java
new file mode 100644
index 0000000..ec72875
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/ExportToJson.java
@@ -0,0 +1,242 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconvert.util;
+
+import com.megatim.typefichier.validator.utilities.ParserUtils;
+import static com.megatim.typefichier.validator.utilities.Utilities.getCharset;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import com.megatim.fdxconvert.pojo.ColumnDefinition;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ExportToJson {
+
+ public static void parseFileByColumnLength(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs) throws Exception {
+ final int nbElts = Count.countEltsOfTextFile(fileDesc, false);
+ int index = 1;
+ Collections.sort(colDefs, (c1, c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition()));
+
+ if (fileDesc != null) {
+
+ Charset charset = getCharset(fileDesc.getFile());
+
+ //Lecture des lignes du fichier et chargement dans une liste
+ try ( FileInputStream fis = new FileInputStream(fileDesc.getFile()); InputStreamReader isr = new InputStreamReader(fis, charset); BufferedReader reader = new BufferedReader(isr)) {
+ if (outputFile.exists()) {
+ outputFile.delete();
+ }
+ //Initialisation du writer pour ecrire chaque objet json
+ try ( BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);) {
+ bufferWriter.write("[");
+ String line;
+
+ while ((line = reader.readLine()) != null) {
+ String json = createJson(colDefs, line);
+ bufferWriter.write(json);
+
+ if (index < nbElts) {
+ bufferWriter.write(",");
+ index++;
+ }
+ }
+ bufferWriter.write("]");
+ }
+ }
+ }
+ }
+
+ public static void parseCsvFile(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws Exception {
+ final int nbElts = Count.countEltsOfCsvFile(fileDesc, headerPresent);
+ int index = 0;
+
+ if (fileDesc != null) {
+ Charset charset = getCharset(fileDesc.getFile());
+ AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+ if (outputFile.exists()) {
+ outputFile.delete();
+ }
+
+ try ( FileInputStream fis = new FileInputStream(fileDesc.getFile()); InputStreamReader isr = new InputStreamReader(fis, charset); BufferedReader reader = new BufferedReader(isr)) {
+ //Initialisation du writer pour ecrire chaque objet json
+ try ( BufferedWriter bufferWriter = Files.newBufferedWriter(outputFile.toPath(), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC)) {
+ CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT.builder()
+ .setSkipHeaderRecord(headerPresent)
+ .setIgnoreSurroundingSpaces(true)
+ .setTrim(true)
+ .setDelimiter(fileDesc.getColumnDelimiter())
+ .setRecordSeparator(fileDesc.getRowDelimiter())
+ .build());
+
+ bufferWriter.write("[");
+
+ for (CSVRecord record : parser) {
+ String[] columnsTableLine = new String[colDefs.size()];
+ AtomicInteger i = new AtomicInteger(0);
+
+ if (!withHeader.get()) {
+ record.forEach(column -> {
+ columnsTableLine[i.getAndIncrement()] = column != null ? column.replaceAll(" {2,}", " ").replaceAll("\r", "").replaceAll("\n", "").replaceAll("\t", "") : "";
+ });
+ String json = createJson(colDefs, columnsTableLine);
+ bufferWriter.write(json);
+
+ if (index < nbElts) {
+ bufferWriter.write(",");
+ index++;
+ }
+ } else {
+ withHeader.set(false);
+ }
+ }
+ bufferWriter.write("]");
+ }
+ } catch (Exception e) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+ }
+ }
+ }
+
+ public static void parseXlsFile(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws Exception {
+ try ( InputStream is = new FileInputStream(fileDesc.getFile()); Workbook wb = new HSSFWorkbook(is)) {
+ parseExcelFile(fileDesc, wb, outputFile, colDefs, headerPresent);
+ }
+ }
+
+ public static void parseXlsxFile(FileToValidateDescription fileDesc, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws Exception {
+ try ( InputStream is = new FileInputStream(fileDesc.getFile()); Workbook wb = new XSSFWorkbook(is)) {
+ parseExcelFile(fileDesc, wb, outputFile, colDefs, headerPresent);
+ }
+ }
+
+ private static Path filePath(File file, int sheetNumber) {
+ int extensionIndex = file.getName().lastIndexOf(".");
+ return Paths.get(file.getParent(),
+ file.getName().substring(0, extensionIndex) + sheetNumber + file.getName().substring(extensionIndex + 1));
+ }
+
+ private static void parseExcelFile(FileToValidateDescription fileDesc, Workbook wb, File outputFile, List<ColumnDefinition> colDefs, boolean headerPresent) throws IOException, Exception {
+ Charset charset = getCharset(fileDesc.getFile());
+ AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+ for (int i = 0; i < wb.getNumberOfSheets(); i++) {
+ Sheet sheet = wb.getSheetAt(i);
+ final int nbElts = Count.countEltsOfXlsFile(fileDesc.getFile(), i, headerPresent);
+ AtomicInteger position = new AtomicInteger(1);
+
+ if (outputFile.exists()) {
+ outputFile.delete();
+ }
+
+ //Initialisation du writer pour ecrire chaque objet json
+ try ( BufferedWriter bufferWriter = Files.newBufferedWriter(filePath(outputFile, i), charset, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC);) {
+ bufferWriter.write("[");
+ for (org.apache.poi.ss.usermodel.Row r : sheet) {
+ if (!withHeader.get()) {
+ //Représente les colonnes extraites de chaque ligne du fichier
+ String[] columnsTableLine = new String[colDefs.size()];
+ AtomicInteger index = new AtomicInteger(0);
+
+ r.forEach(c -> {
+ columnsTableLine[index.get()] = ParserUtils.getXlxsCellValue(c,
+ wb,
+ colDefs.get(index.get()).getTypeDonnee(),
+ colDefs.get(index.get()).getFormatDate(),
+ colDefs.get(index.get()).getSeparateurDate(),
+ colDefs.get(index.get()).getName()
+ );
+ index.incrementAndGet();
+ });
+ String json = createJson(colDefs, columnsTableLine);
+ bufferWriter.write(json);
+
+ if (position.get() < nbElts) {
+ bufferWriter.write(",");
+ position.incrementAndGet();
+ }
+ } else {
+ withHeader.set(false);
+ }
+ }
+ bufferWriter.write("]");
+ }
+
+ }
+ }
+
+ private static String createJson(List<ColumnDefinition> colDefs, String[] columnsTableLine) throws Exception {
+ StringBuilder json = new StringBuilder();
+ System.out.println("----------------- colDefs.size() = " + colDefs.size());
+ System.out.println("---------------- columnsTableLine.length = " + columnsTableLine.length);
+ if (colDefs.size() != columnsTableLine.length) {
+ throw new Exception("Existence des lignes mal formattées");
+ }
+
+ json.append("\t{\n");
+ int i = 0;
+
+ for (ColumnDefinition c : colDefs) {
+ String str = "\"" + c.getName() + "\" : " + "\"" + columnsTableLine[i].trim() + "\"";
+
+ if (i < colDefs.size() - 1) {
+ str += ",";
+ } else {
+ str += "\n";
+ }
+ json.append(str);
+ i++;
+ }
+ json.append("\t}\n");
+ return json.toString();
+ }
+
+ private static String createJson(List<ColumnDefinition> colDefs, String line) {
+ StringBuilder json = new StringBuilder();
+ json.append("\t{");
+ int i = 0;
+ int count = 0;
+
+ for (ColumnDefinition c : colDefs) {
+ String str = "\"" + c.getName() + "\" : " + "\"" + line.substring(i, i + c.getTaille()).trim() + "\"";
+
+ if (count < colDefs.size() - 1) {
+ str += ",";
+ }
+ json.append(str);
+ i += c.getTaille();
+ count++;
+ }
+ json.append("\t}\n");
+ return json.toString();
+ }
+
+}
--
Gitblit v1.10.0