IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Conversion de types [Framework]


Sujet :

Spring Java

  1. #1
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut Conversion de types
    Bonjour,

    J'utilise actuellement un bean qui charge une liste de fichier et les parse ensuite.

    Cette liste doit être saisie en dur (Bean OutputManager). L'architecte n'a pas prévu qu'il y allait avoir plus de 30000 fichiers

    J'ai ajouté un autre bean qui parcours récursivement un répertoire et liste tous les fichiers.

    Mon probleme est que le bean original attend en entrée une liste de type Resource (toutes les classes créées pour le parsing de ces fichiers utilisent des méthodes de Resource, il serait donc assez long de tous modifier) et que je génère une liste de type File. Je ne vois pas comment convertir un type File en type Resource

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <bean id="filesListingFactoryBean" class="com.datas.FilesListingFactoryBean">
    		<property name="parentDirectory" value="src/main/resources/com/xx/yy/yyy/ccc/output/"/> 
    	</bean>
     
    	<bean id="outputManager" class="com.codec.OutputManager" init-method="readOutputFiles">
    		<property name="treeXmlParser" ref="treeXmlParser"></property>
    		<property name="outputFileList" ref="filesListingFactoryBean"/>
    	</bean>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    public class FilesListingFactoryBean implements FactoryBean, InitializingBean {
     
        private String parentDirectory;
        private List<File> file;
     
     
        public Object getObject() throws Exception {
            return file;
        }
     
     
        public Class<List> getObjectType() {
            return List.class;
        }
     
     
        public boolean isSingleton() {
            return false;
        }
     
        public void setParentDirectory(String parentDirectory) {
            this.parentDirectory = parentDirectory;
        }
     
     
        public void afterPropertiesSet() throws Exception {
            if (parentDirectory != null) {
                getFilesRec(file,parentDirectory);
            }
        }
     
        private void getFilesRec(List<File> allFiles, String root) {
            File f = new File(root);
            File[] listFiles = f.listFiles();
            for (int i = 0; i < listFiles.length; i++) {
              if (listFiles[i].isDirectory()) {
                  getFilesRec(allFiles, listFiles[i].toString());
              }else if(listFiles[i].toString().endsWith("xml")){
                  allFiles.add(listFiles[i]);
              }
            }
          }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    public class OutputManager {
     
    	private List<Resource> outputFileList;
     
     
    	private Map<String, TreeNode> outputMap;
     
     
    	private TreeXmlParser treeXmlParser;
     
    	public OutputManager() {
    		outputFileList = new ArrayList<Resource>();
    		outputMap = new HashMap<String, TreeNode>();
    	}
     
     
    	public void readOutputFiles() throws TechException {
    		// parcours de la liste des fichiers
    		for (Resource outputFile : outputFileList) {
    			// extraction de l'id de la description = nom du fichier sans chemin
    			// ni extension
    			String outputId = null;
    			String fileName = outputFile.getFilename();
    			int dotIndex = fileName.lastIndexOf('.');
    			if (dotIndex != -1) {
    				outputId = fileName.substring(0, dotIndex);
    			}
     
    			// lecture de la description contenue dans le fichier
    			TreeNode treeNode = treeXmlParser.parseResource(outputFile);
     
    			// ajout dans la map
    			outputMap.put(outputId, treeNode);
    		}
    	}
     
     
    	public TreeNode getOutput(String OutputId) {
    		return getOutput(outputId, true);
    	}
     
     
    	public TreeNode getOutput(String outputId, boolean clone) {
    		TreeNode treeNode = outputMap.get(outputId);
    		if(clone && treeNode != null) {
    			treeNode = treeNode.clone();
    		}
    		return treeNode;
    	}
     
    	public List<Resource> getOutputFileList() {
    		return outputFileList;
    	}
     
    	public void setOutputFileList(List<Resource> outputFileList) {
    		this.outputFileList = outputFileList;
    	}
     
     
    	public TreeXmlParser getTreeXmlParser() {
    		return treeXmlParser;
    	}
     
     
    	public void setTreeXmlParser(TreeXmlParser treeXmlParser) {
    		this.treeXmlParser = treeXmlParser;
    	}
    }

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ce serait plus simple de t'aider si on connaissait la classe Resource qui est utilisée

  3. #3
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Ah oui désolé . C'est une classe du fwk Spring => import org.springframework.core.io.Resource;

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Resource étant une interface, tu pourrais faire un wrapper de File vers ressource. C'est à dire une classe FileResource par exemple qui a une référence vers un objet de type File et tu implémente les méthodes de l'interface en utilisant les méthode de la classe File.

    Les méthodes à implémenter ne me semble pas trop compliquée à développer.

    Ou alors beaucoup plus simple en fait, tu utilises la clases FileSystemResource qui est distribuée avec Spring

  5. #5
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Merci

  6. #6
    Membre expérimenté Avatar de aymen83
    Inscrit en
    Décembre 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 271
    Par défaut
    bonjour,
    la classe FileSystemResource présente un inconvénient pour la portabiblité de l'application. Je pense que l'utilisation de la classe ClasspathRessouce serai plus approprié.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DATE][CONVERSION] du type numerique au type date
    Par hamed dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/04/2005, 16h16
  2. Conversion de type
    Par sovitec dans le forum Langage
    Réponses: 5
    Dernier message: 15/12/2004, 14h29
  3. Conversion de type
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 10h30
  4. [MYSQL] conversion de type sur import de script
    Par sebos63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/08/2003, 10h00
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo