package fenetres; import java.awt.Component; import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.Image; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.nio.file.Paths; import java.util.ArrayList; import javax.swing.ImageIcon; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.filechooser.FileNameExtensionFilter; import MEPTL.commandes; import baseEvaluations.creerNouvelleEvaluation; import baseEvaluations.recupeNodeBaseEvaluations; import cXML.node; /** * * @author pabr6 * */ public class ChargePathBaseEvaluation extends JFileChooser { /** * */ private static final long serialVersionUID = 1L; boolean avecFusion = false; /** * */ public ChargePathBaseEvaluation(Boolean fusionWithDefaut) { avecFusion = fusionWithDefaut; setDialogTitle("Sélectionner la base de données des évaluations."); FileNameExtensionFilter filter = new FileNameExtensionFilter("Base de données des évaluations", "xml"); setFileFilter(filter); setPreferredSize(new Dimension(550, 420)); int response = showOpenDialog(null); if(response == JFileChooser.APPROVE_OPTION) { File file = new File(getSelectedFile().getAbsolutePath()); String ext = file.getName().substring(file.getName().lastIndexOf(".")); if(ext.equals(".xml")){ if(!avecFusion) { openFileXML(file); }else { fusionBaseWithDefaut(file); } } } } @Override protected JDialog createDialog( Component parent ) throws HeadlessException { JDialog dialog = super.createDialog( parent ); Image img = new ImageIcon(getClass().getResource("/evalwriter.png") ).getImage(); dialog.setIconImage(img); return dialog; } /** * * @param file */ private void openFileXML(File file) { if(commandes.os.contains("Win")) { commandes.path = file.getPath().substring(0,file.getPath().lastIndexOf("\\")); // Sur Windows }else { commandes.path = file.getPath().substring(0,file.getPath().lastIndexOf("/")); // Sur mac & Linux } String directoryName = getCurrentDirectory().getPath(); String nameNewBase = file.getName().toString(); new recupeNodeBaseEvaluations(directoryName,nameNewBase); } private void fusionBaseWithDefaut(File file) { node copieDefault = new node(); try { commandes.PathBaseEvaluations = Paths.get("").toAbsolutePath().toString(); commandes.NameBaseEvaluations = "base_evaluations_analyseWriter.xml"; commandes.PathBaseEvaluationDefaut = true; copieDefault = commandes.evaluationsBase.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } if(!copieDefault.isVide() && !commandes.evaluationsBase.isVide()) { BufferedReader br; node evaluations = new node(); try { br = new BufferedReader( new InputStreamReader( new FileInputStream(file.getAbsoluteFile()), "UTF-8")); String line; StringBuilder targetString = new StringBuilder(); while ((line = br.readLine()) != null) { targetString.append(line); } String CodeTexte = targetString.toString().replace("\t","").replace("\r", "").replace("\n", ""); evaluations = new node(CodeTexte); }catch (Exception e) { JFrame frame = new JFrame("Erreur"); JLabel texte = new JLabel("

Erreur

L'évaluation n'a pas été trouvé dans la base de données.

"); JOptionPane.showMessageDialog(frame, texte); } for(int i = 0 ; i < evaluations.getNodes().size();i++) { String date = evaluations.getNodes().get(i).getAttributs().get("date"); ArrayList A = copieDefault.retourneEnfantsByNameAndValueAttribut("evaluation", "date", date, new ArrayList()); // l'évaluation n'existe pas dans la base par défaut if(A.size()==0) { String name = evaluations.getNodes().get(i).getAttributs().get("name"); new creerNouvelleEvaluation(new node(), name, false,true); }else { // L'évaluation existe dans la base par défaut for(int j = 0; j < A.size();j++) { String dateModification = evaluations.getNodes().get(i).getAttributs().get("dateModification"); if(A.get(j).getAttributs().get("dateModification")!=null) { if(!A.get(j).getAttributs().get("dateModification").equals(dateModification)) { String name = evaluations.getNodes().get(i).getAttributs().get("name"); new creerNouvelleEvaluation(new node(), name, false,true); } } } } } new recupeNodeBaseEvaluations(); } } }