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/Count.java | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 158 insertions(+), 0 deletions(-)
diff --git a/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Count.java b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Count.java
new file mode 100644
index 0000000..726d4df
--- /dev/null
+++ b/fdx_convert/src/main/java/com/megatim/fdxconvert/util/Count.java
@@ -0,0 +1,158 @@
+/*
+ * 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 static com.megatim.typefichier.validator.utilities.Utilities.getCharset;
+import com.megatim.fdxconvert.pojo.FileToValidateDescription;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.util.concurrent.atomic.AtomicBoolean;
+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.Row;
+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 Count {
+
+ public static int countEltsOfTextFile(FileToValidateDescription fileDesc, boolean headerPresent) throws Exception {
+ int nbElts = 0;
+
+ 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)) {
+
+ boolean withHeader = headerPresent;
+ int c = 0;
+ boolean carriageReaded = false; //Indique si on a lu un retour chariot
+ char lastCharacter = '\u0000';
+
+ while ((c = reader.read()) != -1) {
+
+ char characterRead = (char) c;
+
+ if (characterRead == '\r') {
+
+ if (carriageReaded) { //On a lu le retour chariot deux fois consécutives donc on a pas de séparateur de ligne au sens windows
+
+ carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+ } else { // Première lecture du retour chariot
+
+ carriageReaded = true; // On marque que nous avons lu un retour chariot
+
+ }
+
+ } else {
+
+ if (carriageReaded) { // Le caractère précédemment lu c'est le retour chariot
+
+ if (characterRead == '\n') { // Si le nouveau caractère lu est un saut de ligne c'est que nous venons de lire une nouvelle ligne
+
+ if (!withHeader) {
+
+ if (fileDesc.getColumnDelimiter().equals("\\t")) {
+ nbElts++;
+
+ } else if (fileDesc.getColumnDelimiter().isEmpty()) {
+ nbElts++;
+ } else {
+ nbElts++;
+ }
+ } else {
+ withHeader = false;
+ }
+ carriageReaded = false; //On marque que la lecture d'une nouvelle ligne redémarre
+
+ } else {
+ }
+ } else {
+ if (characterRead == '\n') {
+ if (lastCharacter != '\n') {
+ }
+ } else {
+
+ }
+ }
+ }
+ lastCharacter = characterRead;
+ }
+ }
+ }
+ return nbElts;
+ }
+
+ public static int countEltsOfCsvFile(FileToValidateDescription fileDesc, boolean headerPresent) throws Exception {
+ int nbElts = 0;
+
+ Charset charset = getCharset(fileDesc.getFile());
+ AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+ try ( FileInputStream fis = new FileInputStream(fileDesc.getFile()); InputStreamReader isr = new InputStreamReader(fis, charset); BufferedReader reader = new BufferedReader(isr)) {
+ CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT.builder()
+ .setSkipHeaderRecord(headerPresent)
+ .setIgnoreSurroundingSpaces(true)
+ .setTrim(true)
+ .setDelimiter(fileDesc.getColumnDelimiter())
+ .setRecordSeparator(fileDesc.getRowDelimiter())
+ .build());
+
+ for (CSVRecord record : parser) {
+
+ if (!withHeader.get()) {
+ nbElts++;
+ } else {
+ withHeader.set(false);
+ }
+ }
+ } catch (Exception e) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, e.getMessage(), e);
+ }
+ return nbElts;
+ }
+
+ public static int countEltsOfparseXlsxFile(File file, int sheetNumber, boolean headerPresent) throws Exception {
+ try ( InputStream is = new FileInputStream(file); Workbook wb = new XSSFWorkbook(is)) {
+ return countEltsOfExcelFile(wb, sheetNumber, headerPresent);
+ }
+ }
+
+ public static int countEltsOfXlsFile(File file, int sheetNumber, boolean headerPresent) throws Exception {
+ try ( InputStream is = new FileInputStream(file); Workbook wb = new HSSFWorkbook(is)) {
+ return countEltsOfExcelFile(wb, sheetNumber, headerPresent);
+ }
+
+ }
+
+ private static int countEltsOfExcelFile(Workbook wb, int sheetNumber, boolean headerPresent) {
+ int nbElts = 0;
+ Sheet sheet = wb.getSheetAt(sheetNumber);
+ AtomicBoolean withHeader = new AtomicBoolean(headerPresent);
+
+ for (Row r : sheet) {
+ if (!withHeader.get()) {
+ nbElts++;
+ } else {
+ withHeader.set(false);
+ }
+ }
+ return nbElts;
+ }
+}
--
Gitblit v1.10.0