*/
package fr.gouv.finances.cp.xemelios.ui.tools;
+import java.io.File;
+import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
import fr.gouv.finances.cp.utils.PropertiesExpansion;
import fr.gouv.finances.cp.xemelios.ui.MainWindow;
import fr.gouv.finances.cp.xemelios.ui.importArchive.ArchiveWizardDisplayer;
import fr.gouv.finances.dgfip.xemelios.tools.ServiceException;
import fr.gouv.finances.dgfip.xemelios.tools.ToolServiceProviderFactory;
import fr.gouv.finances.dgfip.xemelios.tools.XemeliosToolServiceProvider;
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.log4j.Logger;
/**
- *
+ *
* @author cmarchand
*/
public class SwingToolServiceProviderFactory extends ToolServiceProviderFactory {
- private static final Logger logger = Logger.getLogger(SwingToolServiceProviderFactory.class);
-
- private SwingToolServiceProvider service;
-
- public SwingToolServiceProviderFactory() {
- super();
- service = new SwingToolServiceProvider();
- }
-
- @Override
- public XemeliosToolServiceProvider getServiceProvider() {
- return service;
- }
-
- private class SwingToolServiceProvider implements XemeliosToolServiceProvider {
-
- @Override
- public List<String> getAvailableDocumentsConfigurations() {
- ArrayList<String> ids = new ArrayList<String>();
- try {
- for (DocumentModel dm : MainWindow.getInstance().getDocModels().getDocuments()) {
- ids.add(dm.getId());
- }
- } catch (Exception ex) {
- // on peut ignorer
- }
- logger.debug(ids);
- return ids;
- }
-
- @Override
- public List<String> getSearchableDocumentsConfigurations() {
- return getAvailableDocumentsConfigurations();
- }
-
- @Override
- public List<String> getImportableDocumentsConfigurations() {
- ArrayList<String> ids = new ArrayList<String>();
- try {
- for (DocumentModel dm : MainWindow.getInstance().getDocModels().getDocuments()) {
- if (dm.isImportable()) {
- ids.add(dm.getId());
- }
- }
- } catch (Exception ex) {
- // on peut ignorer
- }
- return ids;
- }
-
- @Override
- public List<String> getBrowsableDocumentsConfigurations() {
- ArrayList<String> ids = new ArrayList<String>();
- try {
- for (DocumentModel dm : MainWindow.getInstance().getDocModels().getDocuments()) {
- if (dm.isBrowsable()) {
- ids.add(dm.getId());
- }
- }
- } catch (Exception ex) {
- // on peut ignorer
- }
- return ids;
- }
-
- @Override
- public String getDocumentConfigurationTitle(String documentId) {
- try {
- return MainWindow.getInstance().getDocModels().getDocumentById(documentId).getTitre();
- } catch (Exception ex) {
- return null;
- }
- }
-
- @Override
- public void importFile(File fileToImport, String documentId) throws Exception {
- if (Constants.XEMELIOS_ARCHIVE_SIGN.equals(documentId)) {
- importXemeliosArchive(fileToImport);
- } else {
- try {
- DocumentModel dm = MainWindow.getInstance().getDocModels().getDocumentById(documentId);
- if (!DataLayerManager.getImplementation().canImportDocument(documentId, MainWindow.getInstance().getConnectedUser())) {
- String message =
- "L'import de ce type de document est pour le moment impossible.\n"
- + "La base de donnée doit être mise à jour avant.\n"
- + "Prenez contact avec votre administrateur pour faire la mise à jour depuis le serveur.";
- throw new ServiceException(message);
- }
- Class clazz = Class.forName(dm.getImportClass());
- Constructor cc = clazz.getConstructor(XemeliosUser.class, PropertiesExpansion.class);
- Object obj = cc.newInstance(MainWindow.getInstance().getConnectedUser(), MainWindow.getInstance().getEnvProperties());
- if (!(obj instanceof EtatImporteur)) {
- throw new ServiceException("Cette classe n'est pas un importeur.\nLe fichier de configuration qui vous a été livré est certainement invalide.\nVeuillez contacter votre fournisseur.");
- }
- EtatImporteur ei = (EtatImporteur) obj;
- MainWindow.ImportContent fToImport = new MainWindow.ImportContent();
- ArrayList<File> files = new ArrayList<File>();
- files.add(fileToImport);
- fToImport.setFilesToImport(files);
- if (fToImport.getImportCount() > 0) {
- MainWindow.getInstance().doImport(ei, fToImport, dm, false);
- }
- } catch (Exception ex) {
- throw ex;
- } finally {
- //waiter.stopProgress();
- }
- }
- }
-
- private void importXemeliosArchive(File archive) throws Exception {
-// ImportServiceSwingProvider isp = new ImportServiceSwingProvider(MainWindow.getInstance(), null, 0);
-// isp.setDisplayFeedback(false);
-// XemeliosArchiveImporter xai = new XemeliosArchiveImporter(MainWindow.getInstance().getDocModels(), archive, isp, MainWindow.getInstance().getEnvProperties());
-// xai.setUser(MainWindow.getInstance().getConnectedUser());
-// MainWindow.XemeliosArchiveImporterWorker worker = new MainWindow.XemeliosArchiveImporterWorker(xai);
-// worker.execute();
- ArchiveWizardDisplayer awd = new ArchiveWizardDisplayer(MainWindow.getInstance(), archive);
- }
-
- @Override
- public void importFiles(List<ImportContent> filesToImport) throws Exception {
- for(ImportContent ic:filesToImport) {
- importFile(ic.getFile(), ic.getDocumentId());
- }
- }
-
- @Override
- public XemeliosProperties getApplicationProperties() {
- return new XemeliosPropertiesImpl(MainWindow.getInstance().getEnvProperties());
- }
-
- public URL getDocumentSchema(String documentId) {
- DocumentModel dm = MainWindow.getInstance().getDocModels().getDocumentById(documentId);
- if(dm!=null) {
- if(dm.getSchema()!=null) {
- File dir = new File(dm.getBaseDirectory());
- File schema = new File(dir,dm.getSchema());
- try {
- return schema.toURI().toURL();
- } catch(MalformedURLException mEx) {
- logger.error("getDocumentSchema("+documentId+")",mEx);
- return null;
- }
- }
- }
- return null;
- }
- }
+ private static final Logger logger = Logger.getLogger(SwingToolServiceProviderFactory.class);
+
+ private final SwingToolServiceProvider service;
+
+ public SwingToolServiceProviderFactory() {
+ super();
+ this.service = new SwingToolServiceProvider();
+ }
+
+ @Override
+ public XemeliosToolServiceProvider getServiceProvider() {
+ return this.service;
+ }
+
+ private class SwingToolServiceProvider implements XemeliosToolServiceProvider {
+
+ @Override
+ public List<String> getAvailableDocumentsConfigurations() {
+ final ArrayList<String> ids = new ArrayList<String>();
+ try {
+ for (final DocumentModel dm : MainWindow.getInstance().getDocModels().getDocuments()) {
+ ids.add(dm.getId());
+ }
+ } catch (final Exception ex) {
+ // on peut ignorer
+ }
+ logger.debug(ids);
+ return ids;
+ }
+
+ @Override
+ public List<String> getSearchableDocumentsConfigurations() {
+ return this.getAvailableDocumentsConfigurations();
+ }
+
+ @Override
+ public List<String> getImportableDocumentsConfigurations() {
+ final ArrayList<String> ids = new ArrayList<String>();
+ try {
+ for (final DocumentModel dm : MainWindow.getInstance().getDocModels().getDocuments()) {
+ if (dm.isImportable()) {
+ ids.add(dm.getId());
+ }
+ }
+ } catch (final Exception ex) {
+ // on peut ignorer
+ }
+ return ids;
+ }
+
+ @Override
+ public List<String> getBrowsableDocumentsConfigurations() {
+ final ArrayList<String> ids = new ArrayList<String>();
+ try {
+ for (final DocumentModel dm : MainWindow.getInstance().getDocModels().getDocuments()) {
+ if (dm.isBrowsable()) {
+ ids.add(dm.getId());
+ }
+ }
+ } catch (final Exception ex) {
+ // on peut ignorer
+ }
+ return ids;
+ }
+
+ @Override
+ public String getDocumentConfigurationTitle(final String documentId) {
+ try {
+ return MainWindow.getInstance().getDocModels().getDocumentById(documentId).getTitre();
+ } catch (final Exception ex) {
+ return null;
+ }
+ }
+
+ @Override
+ public void importFile(final File fileToImport, final String documentId) throws Exception {
+ if (Constants.XEMELIOS_ARCHIVE_SIGN.equals(documentId)) {
+ this.importXemeliosArchive(fileToImport);
+ } else {
+ try {
+ final DocumentModel dm = MainWindow.getInstance().getDocModels().getDocumentById(documentId);
+ if (!DataLayerManager.getImplementation().canImportDocument(documentId, MainWindow.getInstance().getConnectedUser())) {
+ final String message = "L'import de ce type de document est pour le moment impossible.\n" + "La base de donnée doit être mise à jour avant.\n" + "Prenez contact avec votre administrateur pour faire la mise à jour depuis le serveur.";
+ throw new ServiceException(message);
+ }
+ final Class clazz = Class.forName(dm.getImportClass());
+ final Constructor cc = clazz.getConstructor(XemeliosUser.class, PropertiesExpansion.class);
+ final Object obj = cc.newInstance(MainWindow.getInstance().getConnectedUser(), MainWindow.getInstance().getEnvProperties());
+ if (!(obj instanceof EtatImporteur)) {
+ throw new ServiceException("Cette classe n'est pas un importeur.\nLe fichier de configuration qui vous a été livré est certainement invalide.\nVeuillez contacter votre fournisseur.");
+ }
+ final EtatImporteur ei = (EtatImporteur) obj;
+ final MainWindow.ImportContent fToImport = new MainWindow.ImportContent();
+ final ArrayList<File> files = new ArrayList<File>();
+ files.add(fileToImport);
+ fToImport.setFilesToImport(files);
+ if (fToImport.getImportCount() > 0) {
+ MainWindow.getInstance().doImport(ei, fToImport, dm, false);
+ }
+ } catch (final Exception ex) {
+ throw ex;
+ } finally {
+ // waiter.stopProgress();
+ }
+ }
+ }
+
+ private void importXemeliosArchive(final File archive) throws Exception {
+ // ImportServiceSwingProvider isp = new ImportServiceSwingProvider(MainWindow.getInstance(), null, 0);
+ // isp.setDisplayFeedback(false);
+ // XemeliosArchiveImporter xai = new XemeliosArchiveImporter(MainWindow.getInstance().getDocModels(), archive, isp,
+ // MainWindow.getInstance().getEnvProperties());
+ // xai.setUser(MainWindow.getInstance().getConnectedUser());
+ // MainWindow.XemeliosArchiveImporterWorker worker = new MainWindow.XemeliosArchiveImporterWorker(xai);
+ // worker.execute();
+ final ArchiveWizardDisplayer awd = new ArchiveWizardDisplayer(MainWindow.getInstance(), archive);
+ }
+
+ @Override
+ public void importFiles(final List<ImportContent> filesToImport) throws Exception {
+ for (final ImportContent ic : filesToImport) {
+ this.importFile(ic.getFile(), ic.getDocumentId());
+ }
+ }
+
+ @Override
+ public XemeliosProperties getApplicationProperties() {
+ return new XemeliosPropertiesImpl(MainWindow.getInstance().getEnvProperties());
+ }
+
+ @Override
+ public URL getDocumentSchema(final String documentId) {
+ final DocumentModel dm = MainWindow.getInstance().getDocModels().getDocumentById(documentId);
+ if (dm != null) {
+ if (dm.getSchema() != null) {
+ final File dir = new File(dm.getBaseDirectory());
+ final File schema = new File(dir, dm.getSchema());
+ try {
+ return schema.toURI().toURL();
+ } catch (final MalformedURLException mEx) {
+ logger.error("getDocumentSchema(" + documentId + ")", mEx);
+ return null;
+ }
+ }
+ }
+ return null;
+ }
+ }
}