import fr.gouv.finances.cp.utils.PropertiesExpansion;
import fr.gouv.finances.dgfip.xemelios.auth.impl.std.db.DataHelper;
import fr.gouv.finances.dgfip.utils.Pair;
-import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
-import fr.gouv.finances.dgfip.xemelios.common.Constants;
-import fr.gouv.finances.dgfip.xemelios.common.NetAccess;
-import fr.gouv.finances.dgfip.xemelios.data.DataLayerManager;
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
+import fr.gouv.finances.dgfip.xemelios.auth.XemeliosUser;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import java.util.Vector;
-import java.util.zip.GZIPInputStream;
-import javax.swing.JOptionPane;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathFactory;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
/**
*
private Vector<Pair> natIds;
private DlgSelectCollectivite parent;
private PropertiesExpansion applicationProperties;
+ private XemeliosUser user;
/** Creates new form PnlCreateCollectivite */
- public PnlCreateCollectivite(DlgSelectCollectivite parent, PropertiesExpansion applicationProperties) {
+ public PnlCreateCollectivite(DlgSelectCollectivite parent, XemeliosUser user, PropertiesExpansion applicationProperties) {
super();
this.parent=parent;
+ this.user = user;
this.applicationProperties = applicationProperties;
natIds = new Vector<Pair>();
for(String key:DlgCollectivitesUtilisateur.naturesIdentifiants.keySet()) {
natIds.add(new Pair(key,DlgCollectivitesUtilisateur.naturesIdentifiants.get(key)));
}
initComponents();
+ try {
+ Class.forName("fr.gouv.finances.dgfip.xemelios.refCollecSpl.importer.RefCollecSplImporter");
+ } catch(Exception ex) {
+ // a priori, ce n'est pas disponible, donc on masque le panneau permettant
+ // de naviguer dans le référentiel
+ pnlBrowse.setVisible(false);
+ }
}
public List<DataHelper.CollectiviteLib> getSelectedData() {
dfIdentifiant = new javax.swing.JTextField();
lblLibelle = new javax.swing.JLabel();
dfLibelle = new javax.swing.JTextField();
- jPanel2 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- pbLoadRef = new javax.swing.JButton();
+ pnlBrowse = new javax.swing.JPanel();
+ pbBrowseRef = new javax.swing.JButton();
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Créer une nouvelle collectivité"));
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
.add(dfIdentifiant)
.add(dfLibelle, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 357, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
- .addContainerGap(106, Short.MAX_VALUE))
+ .addContainerGap(45, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.addContainerGap(14, Short.MAX_VALUE))
);
- jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Importer le référentiel de Collectivités / Budgets"));
-
- jLabel1.setText("<html>\n<p>Permet de charger le référentiel de collectivités / budgets maintenu par la DGFiP pour Helios.</p>\n<p>Ce référentiel est disponible sous la forme d'un unique fichier déposé sur www.xemelios.org.</p>\n\n<p>Ce référentiel est maintenu à jour et republié régulièrement.</p>\n<p>L'installation du référentiel peut être longue et bloquer Xemelios pendant longtemps.</p>\n</html>");
+ pnlBrowse.setBorder(javax.swing.BorderFactory.createTitledBorder("Chercher un budget dans le référentiel SPL"));
- pbLoadRef.setText("Installer le référentiel");
- pbLoadRef.addActionListener(new java.awt.event.ActionListener() {
+ pbBrowseRef.setText("Parcourir le référentiel");
+ pbBrowseRef.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- pbLoadRefActionPerformed(evt);
+ pbBrowseRefActionPerformed(evt);
}
});
- org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
- jPanel2.setLayout(jPanel2Layout);
- jPanel2Layout.setHorizontalGroup(
- jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(jPanel2Layout.createSequentialGroup()
- .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(org.jdesktop.layout.GroupLayout.TRAILING, jLabel1)
- .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup()
- .add(pbLoadRef)
- .addContainerGap())))
+ org.jdesktop.layout.GroupLayout pnlBrowseLayout = new org.jdesktop.layout.GroupLayout(pnlBrowse);
+ pnlBrowse.setLayout(pnlBrowseLayout);
+ pnlBrowseLayout.setHorizontalGroup(
+ pnlBrowseLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+ .add(pnlBrowseLayout.createSequentialGroup()
+ .addContainerGap()
+ .add(pbBrowseRef)
+ .addContainerGap(374, Short.MAX_VALUE))
);
- jPanel2Layout.setVerticalGroup(
- jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(jPanel2Layout.createSequentialGroup()
+ pnlBrowseLayout.setVerticalGroup(
+ pnlBrowseLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+ .add(pnlBrowseLayout.createSequentialGroup()
.addContainerGap()
- .add(jLabel1)
- .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(pbLoadRef)
- .addContainerGap(13, Short.MAX_VALUE))
+ .add(pbBrowseRef)
+ .addContainerGap(65, Short.MAX_VALUE))
);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
- .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
- .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .add(org.jdesktop.layout.GroupLayout.LEADING, pnlBrowse, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.addContainerGap()
.add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .add(pnlBrowse, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(31, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
- private void pbLoadRefActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pbLoadRefActionPerformed
- DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- parent.getGlassPane().setVisible(true);
- try {
- String actualDate = DataLayerManager.getImplementation().getParameterValue("referentiel.collectivite.last.update");
- Date actualRefDate = actualDate!=null ? sdf.parse(actualDate) : new Date(0);
- HttpClient client = NetAccess.getHttpClient(applicationProperties);
- URL refUrl = new URL(applicationProperties.getProperty(Constants.SYS_PROP_AUTH_REF_URL,"http://www.xemelios.org/collectivites/referentiel.xml"));
- GetMethod meth = new GetMethod(refUrl.toURI().toString());
- int httpRet = client.executeMethod(meth);
- if(httpRet>300) throw new Exception(meth.getStatusText());
- InputStream is = meth.getResponseBodyAsStream();
- DocumentBuilderFactory domFactory = FactoryProvider.getDocumentBuilderFactory();
- DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
- Document refColls = domBuilder.parse(is);
- XPathFactory xpf = FactoryProvider.getXPathFactory();
- XPath xp = xpf.newXPath();
- String fileToLoad = null;
- Date updateDate = actualRefDate;
- NodeList nl = (NodeList)xp.evaluate("/ref-collectivites/referentiel", refColls, XPathConstants.NODESET);
- for(int i=0;i<nl.getLength();i++) {
- Element el = (Element)nl.item(i);
- String fileName = (String)xp.evaluate("./file/text()",el);
- Date date = sdf.parse((String)xp.evaluate("./date/text()",el));
- if(date.after(updateDate)) {
- fileToLoad = fileName;
- updateDate = date;
- }
- }
- if(fileToLoad==null) {
- JOptionPane.showMessageDialog(this, "Votre référentiel est à jour.");
- } else {
- URL url = new URL(refUrl,fileToLoad);
- meth = new GetMethod(url.toURI().toString());
- httpRet = client.executeMethod(meth);
- if(httpRet>300) throw new Exception(meth.getStatusText());
- is = meth.getResponseBodyAsStream();
- GZIPInputStream gzis = new GZIPInputStream(is);
- BufferedReader br = new BufferedReader(new InputStreamReader(gzis));
- String l = null;
- while((l=br.readLine()) != null) {
- saveLine(l);
- }
- br.close();
- DataLayerManager.getImplementation().setParameterValue("referentiel.collectivite.last.update", sdf.format(updateDate));
- }
- } catch(Exception ex) {
- logger.error("loadRef",ex);
- } finally {
- parent.getGlassPane().setVisible(false);
+ private void pbBrowseRefActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pbBrowseRefActionPerformed
+ DlgBrowseReferentiel dlg = new DlgBrowseReferentiel(parent, user, applicationProperties);
+ Pair ret = dlg.run();
+ if(ret!=null) {
+ dfIdentifiant.setText(ret.key);
+ dfLibelle.setText(ret.libelle);
+ cbxNatId.setSelectedItem(new Pair("SIRET", DlgCollectivitesUtilisateur.getTypIdLib("SIRET")));
}
- }//GEN-LAST:event_pbLoadRefActionPerformed
-
- private void saveLine(String line) {
- String[] vals = line.split(";");
- String siret = vals[5];
- String idColl = vals[1]+vals[3]+vals[4];
- String libelle = vals[7];
- String codic = vals[1];
- String libCodic = vals[2];
- DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("SIRET",siret,libelle));
- DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("IDCOLL",idColl,libelle));
- DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("CODIC",codic,libCodic));
- DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("VARIABLE",siret,libelle));
- DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("VARIABLE",idColl,libelle));
- DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("VARIABLE",codic,libCodic));
-
- }
+ }//GEN-LAST:event_pbBrowseRefActionPerformed
+
+// private void saveLine(String line) {
+// String[] vals = line.split(";");
+// String siret = vals[5];
+// String idColl = vals[1]+vals[3]+vals[4];
+// String libelle = vals[7];
+// String codic = vals[1];
+// String libCodic = vals[2];
+// DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("SIRET",siret,libelle));
+// DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("IDCOLL",idColl,libelle));
+// DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("CODIC",codic,libCodic));
+// DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("VARIABLE",siret,libelle));
+// DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("VARIABLE",idColl,libelle));
+// DataHelper.updateCollectivite(new DataHelper.CollectiviteLib("VARIABLE",codic,libCodic));
+// }
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cbxNatId;
private javax.swing.JTextField dfIdentifiant;
private javax.swing.JTextField dfLibelle;
- private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
- private javax.swing.JPanel jPanel2;
private javax.swing.JLabel lblClef;
private javax.swing.JLabel lblLibelle;
private javax.swing.JLabel lblNatId;
- private javax.swing.JButton pbLoadRef;
+ private javax.swing.JButton pbBrowseRef;
+ private javax.swing.JPanel pnlBrowse;
// End of variables declaration//GEN-END:variables
}