1 package org.apache.maven.plugin.eclipse.writers.myeclipse;
2
3 import java.io.File;
4 import java.io.FileFilter;
5 import java.io.FileWriter;
6 import java.io.IOException;
7 import java.util.ArrayList;
8 import java.util.Collection;
9 import java.util.Iterator;
10 import java.util.Map;
11
12 import org.apache.maven.plugin.MojoExecutionException;
13 import org.apache.maven.plugin.eclipse.Messages;
14 import org.apache.maven.plugin.eclipse.writers.AbstractEclipseWriter;
15 import org.codehaus.plexus.util.FileUtils;
16 import org.codehaus.plexus.util.IOUtil;
17 import org.codehaus.plexus.util.StringUtils;
18 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
19 import org.codehaus.plexus.util.xml.XMLWriter;
20
21
22
23
24
25
26 public class MyEclipseSpringBeansWriter
27 extends AbstractEclipseWriter
28 {
29 private static final String MYECLIPSE_SPRING_CONFIGURATION_FILENAME = ".springBeans";
30
31 private static final String MYECLIPSE_SPRING_BEANS_PROJECT_DESCRIPTION = "beansProjectDescription";
32
33 private static final String MYECLIPSE_SPRING_CONFIG_EXTENSIONS = "configExtensions";
34
35 private static final String MYECLIPSE_SPRING_CONFIG_EXTENSION = "configExtension";
36
37 private static final String MYECLIPSE_SPRING_CONFIGS = "configs";
38
39 private static final String MYECLIPSE_SPRING_CONFIG = "config";
40
41 private static final String MYECLIPSE_SPRING_CONFIGSETS = "configSets";
42
43 private static final String MYECLIPSE_SPRING_VERSION = "springVersion";
44
45
46
47
48 private Map springConfig;
49
50
51
52
53
54
55 public MyEclipseSpringBeansWriter( Map springConfig )
56 {
57 this.springConfig = springConfig;
58 }
59
60
61
62
63
64
65 public void write()
66 throws MojoExecutionException
67 {
68 FileWriter w;
69 try
70 {
71 w =
72 new FileWriter( new File( config.getEclipseProjectDirectory(), MYECLIPSE_SPRING_CONFIGURATION_FILENAME ) );
73 }
74 catch ( IOException ex )
75 {
76 throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex );
77 }
78
79 XMLWriter writer = new PrettyPrintXMLWriter( w, "UTF-8", null );
80
81 writer.startElement( MYECLIPSE_SPRING_BEANS_PROJECT_DESCRIPTION );
82
83 writer.startElement( MYECLIPSE_SPRING_CONFIG_EXTENSIONS );
84 writer.startElement( MYECLIPSE_SPRING_CONFIG_EXTENSION );
85 writer.writeText( "xml" );
86 writer.endElement();
87 writer.endElement();
88
89
90 writer.startElement( MYECLIPSE_SPRING_CONFIGS );
91
92 Iterator onConfigFiles =
93 getConfigurationFilesList( (String) springConfig.get( "basedir" ),
94 (String) springConfig.get( "file-pattern" ) ).iterator();
95 while ( onConfigFiles.hasNext() )
96 {
97 writer.startElement( MYECLIPSE_SPRING_CONFIG );
98 writer.writeText( StringUtils.replace( (String) onConfigFiles.next(), "\\", "/" ) );
99 writer.endElement();
100 }
101 writer.endElement();
102
103
104 writer.startElement( MYECLIPSE_SPRING_CONFIGSETS );
105 writer.endElement();
106
107
108 writer.startElement( MYECLIPSE_SPRING_VERSION );
109 writer.writeText( (String) springConfig.get( "version" ) );
110 writer.endElement();
111
112 writer.endElement();
113
114 IOUtil.close( w );
115 }
116
117
118
119
120
121
122
123
124
125 private Collection getConfigurationFilesList( String basedir, String pattern )
126 {
127 Collection configFiles = new ArrayList();
128
129 try
130 {
131 File directory = new File( basedir );
132
133 File[] subdirs = directory.listFiles( new FileFilter()
134 {
135 public boolean accept( File pathname )
136 {
137 return pathname.isDirectory();
138 }
139 } );
140
141 for ( int i = 0; i < subdirs.length; i++ )
142 {
143 configFiles.addAll( getConfigurationFilesList( subdirs[i].getPath(), pattern ) );
144 }
145
146 configFiles.addAll( FileUtils.getFileNames( directory, pattern, null, true ) );
147 }
148 catch ( IOException ioe )
149 {
150 log.error( "Error while retrieving Spring configuration files. Returning list in current state" );
151 }
152
153 return configFiles;
154 }
155 }