/* * 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.queryadhoc.model; import com.megatim.queryadhoc.enums.TypeDonnee; import com.megatim.queryadhoc.exceptions.IllegalFormatDateException; /** * * @author ASUS */ public class DbColumnDescription { private final String name; private final TypeDonnee typeDonnee; private final int taille; private final int taillePartieDecimale; private final String formatDate; private final int position; public DbColumnDescription(String name, TypeDonnee typeDonnee, int taille, int position, String formatDate, String separateurDate, int taillePartieDecimale) throws IllegalFormatDateException { this.name = name; this.typeDonnee = typeDonnee; this.taille = taille; this.position = position; this.taillePartieDecimale = taillePartieDecimale; this.formatDate = finalFormatDate(typeDonnee, formatDate, separateurDate); } public String getName() { return name; } public TypeDonnee getTypeDonnee() { return typeDonnee; } public int getTaille() { return taille; } public int getTaillePartieDecimale() { return taillePartieDecimale; } public String getFormatDate() { return formatDate; } public int getPosition() { return position; } @Override public String toString() { return "DbColumnDescription{" + "name=" + name + ", position=" + position + '}'; } private String finalFormatDate(TypeDonnee typeDonnee, String formatDate, String separateurDate) throws IllegalFormatDateException { if (typeDonnee != TypeDonnee.DATE || formatDate == null || formatDate.isEmpty()) { return null; } final String yearPattern = "yyyy"; final String monthPattern = "MM"; final String dayPattern = "dd"; if (formatDate.length() == 4 && formatDate.equals(yearPattern)) { return formatDate; } else if (formatDate.length() == 6 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern)) { if (formatDate.startsWith(yearPattern)) { return yearPattern + separateurDate + monthPattern; } else { return monthPattern + separateurDate + yearPattern; } } else if (formatDate.length() == 7 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern)) { return formatDate; } else if (formatDate.length() == 8 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern) && formatDate.contains(dayPattern)) { if (formatDate.startsWith(yearPattern)) { if (formatDate.endsWith(dayPattern)) { return yearPattern + separateurDate + monthPattern + separateurDate + dayPattern; } else { return yearPattern + separateurDate + dayPattern + separateurDate + monthPattern; } } else if (formatDate.startsWith(monthPattern)) { if (formatDate.endsWith(dayPattern)) { return monthPattern + separateurDate + yearPattern + separateurDate + dayPattern; } else { return monthPattern + separateurDate + dayPattern + separateurDate + yearPattern; } } else if (formatDate.startsWith(dayPattern)) { if (formatDate.endsWith(yearPattern)) { return dayPattern + separateurDate + monthPattern + separateurDate + yearPattern; } else { return dayPattern + separateurDate + yearPattern + separateurDate + monthPattern; } } else { throw new IllegalFormatDateException(formatDate); } } else if (formatDate.length() == 10 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern) && formatDate.contains(dayPattern)) { return formatDate; } else { throw new IllegalFormatDateException(formatDate); } } }