
package scripts;

// Importation des classes nécessaires
import java.io.*;
import java.util.*;

import org.nuiton.topia.*;
import org.nuiton.topia.persistence.*;
import org.nuiton.math.matrix.*;

import fr.ifremer.isisfish.entities.*;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.IsisFishDAOHelper;
import fr.ifremer.isisfish.entities.RegionImportJson.RegionMergeDatabase;

// Définition de la classe principale
public class ImportJsonAndMerge {
// Méthode principale du script
   public static void main(String[] args) throws Exception {
    // Création d'une instance de la classe
        ImportJsonAndMerge myScript = new ImportJsonAndMerge();
    // Appel de la méthode run() de l'instance créée
        myScript.run();
    }

   // Méthode qui contient le code principal du script
    public void run() throws Exception {
       
        // Obtention du contexte de la région 
        TopiaContext context = RegionStorage.getRegion("MACCO_2015Inf_TF0q2015cor0_11dec2023").getStorage();
        // Début de la transaction sur le contexte
        TopiaContext myTX = context.beginTransaction();

        
        // Obtention de l'objet FisheryRegion à partir du contexte de transaction myTX
        FisheryRegion result = RegionStorage.getFisheryRegion(myTX);


    
        // Chemin complet du fichier d'entrée
        String outputFilePath = "/home/chatellier/projets/ifremer-isisfish/userdata/louis/TestWriter.json";

        // Tentative d'exécution du bloc de code qui peut générer des exceptions liées à l'entrée/sortie (IOException)
        try {
   
            Reader myReader = new FileReader(outputFilePath);
             
            RegionImportJson.RegionMerge myMerge = new RegionMergeDatabase(myTX);
            
            RegionImportJson regionImport = new RegionImportJson(myReader,myMerge) {
                // force l'import de cellules (normalement on ne peut pas 
                // à cause de resolution spatiale différente qui donnerait n'importe quoi)
                @Override
                protected boolean canImportCell() {
                    return true;
                }
            };
             
            Collection<TopiaEntity> entities = regionImport.getEntities();
            for (TopiaEntity e : entities) {
                myTX.add(e);
            }

            // Validation de la transaction
            myTX.commitTransaction();
       
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        context.closeContext();
    }
}
         
