package scripts; import java.util.*; import java.io.*; import org.nuiton.topia.TopiaContext; import org.nuiton.math.matrix.MatrixIterator; import org.nuiton.math.matrix.MatrixND; import org.nuiton.math.matrix.*; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.IsisFishDAOHelper; /** * remplir target factor (il existe une option pour mettre 1 partout) * * Auteur: PHAN Tuan Anh, 2022 */ public class FillTargetFactor { File myTFfile = new File("C:/Users/aricouar/Documents/MesProjets_local/Parametrisation_ISIS/ImportsMetiers/TargetFactors/myTFfile.txt"); /** les objets pour manipuler objets isis */ TopiaContext myTX = RegionStorage.getRegion("MACCO_BoB_MixFish_TargetFactors_21avr2023").getStorage().beginTransaction(); List myListMetiers = IsisFishDAOHelper.getMetierDAO(myTX).findAll(); List myListSpecies = IsisFishDAOHelper.getSpeciesDAO(myTX).findAll(); TargetSpeciesDAO myTsDAO = IsisFishDAOHelper.getTargetSpeciesDAO(myTX); // public FillTargetFactor() {} // exception cause by reading csv file /** lancer le script dans isis */ public static void main(String[] args) throws Exception { System.out.println("~~~ Start: " + new Date() + " ~~~" + System.lineSeparator()); FillTargetFactor script = new FillTargetFactor(); script.run(); System.out.println("~~~ Done: " + new Date() + " ~~~"); } /** vrai lancement du script car main() accepte pas ces fx */ public void run() throws Exception { setTargetFactor(); // save the changes myTX.commitTransaction(); myTX.closeContext(); } /** cœur de ce script */ protected void setTargetFactor() throws Exception { System.out.println("remplir target factor pour tous engins + espèces"); MatrixND matrixTargetFactors = MatrixFactory.getInstance().create(myTFfile); // System.out.println(matrixTargetFactors); for (Metier metier : myListMetiers) { System.out.println(" > metier: " + metier.getName()); List msis = metier.getMetierSeasonInfo(); for (MetierSeasonInfo msi : msis) { for (Species sp : myListSpecies) { System.out.println(" > species: " + sp.getName()); remplirTF(msi, metier, sp, matrixTargetFactors); // remplirTF(msi, metier, sp); } } } System.out.println(System.lineSeparator()); } private void remplirTF(MetierSeasonInfo msi, Metier metier, Species sp, MatrixND matrixTargetFactors) throws Exception { // private void remplirTF(MetierSeasonInfo msi, Metier metier, Species sp) throws Exception { // System.out.println(matrixTargetFactors); // System.out.println(" > species: " + sp.getName()); // System.out.println(" > metier: " + metier.getName()); //MatrixND matrixTargetFactors = MatrixFactory.getInstance().create(myTFfile); double tf = matrixTargetFactors.getValue(metier, sp); // double tf = 0; System.out.println(" + tf: " + tf); String eq = "return "+ tf + ";"; // check if there is any already equation TargetSpecies ts = msi.getSpeciesTargetSpecies(sp); if (ts != null) { System.out.println(" + modif"); ts.getTargetFactorEquation().setContent(eq); ts.update(); } else { // if not registered yet then make it System.out.println(" + new"); TargetSpecies new_ts = myTsDAO.create(); new_ts.getTargetFactorEquation().setContent(eq); new_ts.setSpecies(sp) ; new_ts.update(); msi.addSpeciesTargetSpecies(new_ts); msi.update(); } } }