1 package org.apache.maven.plugin.eclipse.writers.myeclipse;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.io.FileFilter;
24 import java.io.FileWriter;
25 import java.io.IOException;
26 import java.util.ArrayList;
27 import java.util.Collection;
28 import java.util.Collections;
29 import java.util.Map;
30
31 import org.apache.maven.plugin.MojoExecutionException;
32 import org.apache.maven.plugin.eclipse.Messages;
33 import org.apache.maven.plugin.eclipse.writers.AbstractEclipseWriter;
34 import org.apache.maven.plugin.ide.IdeUtils;
35 import org.codehaus.plexus.util.FileUtils;
36 import org.codehaus.plexus.util.IOUtil;
37 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
38 import org.codehaus.plexus.util.xml.XMLWriter;
39
40
41
42
43
44
45 public class MyEclipseSpringBeansWriter
46 extends AbstractEclipseWriter
47 {
48 private static final String MYECLIPSE_SPRING_CONFIGURATION_FILENAME = ".springBeans";
49
50 private static final String MYECLIPSE_SPRING_BEANS_PROJECT_DESCRIPTION = "beansProjectDescription";
51
52 private static final String MYECLIPSE_SPRING_CONFIG_EXTENSIONS = "configExtensions";
53
54 private static final String MYECLIPSE_SPRING_CONFIG_EXTENSION = "configExtension";
55
56 private static final String MYECLIPSE_SPRING_CONFIGS = "configs";
57
58 private static final String MYECLIPSE_SPRING_CONFIG = "config";
59
60 private static final String MYECLIPSE_SPRING_CONFIGSETS = "configSets";
61
62 private static final String MYECLIPSE_SPRING_VERSION = "springVersion";
63
64
65
66
67 private Map springConfig;
68
69
70
71
72
73
74 public MyEclipseSpringBeansWriter( Map springConfig )
75 {
76 this.springConfig = springConfig;
77 }
78
79
80
81
82
83
84 public void write()
85 throws MojoExecutionException
86 {
87 FileWriter springFileWriter;
88 try
89 {
90 springFileWriter = new FileWriter( new File( config.getEclipseProjectDirectory(),
91 MYECLIPSE_SPRING_CONFIGURATION_FILENAME ) );
92 }
93 catch ( IOException ex )
94 {
95 throw new MojoExecutionException( Messages.getString( "EclipsePlugin.erroropeningfile" ), ex );
96 }
97
98 XMLWriter writer = new PrettyPrintXMLWriter( springFileWriter, "UTF-8", null );
99
100 writer.startElement( MYECLIPSE_SPRING_BEANS_PROJECT_DESCRIPTION );
101
102 writer.startElement( MYECLIPSE_SPRING_CONFIG_EXTENSIONS );
103 writer.startElement( MYECLIPSE_SPRING_CONFIG_EXTENSION );
104 writer.writeText( "xml" );
105 writer.endElement();
106 writer.endElement();
107
108
109 writer.startElement( MYECLIPSE_SPRING_CONFIGS );
110
111
112
113 File basedir = config.getEclipseProjectDirectory();
114
115 for ( Object o : getConfigurationFilesList( new File( basedir, (String) springConfig.get( "basedir" ) ),
116 (String) springConfig.get( "file-pattern" ) ) )
117 {
118 String onConfigFileName = (String) o;
119 File onConfigFile = new File( onConfigFileName );
120 String relativeFileName = IdeUtils.toRelativeAndFixSeparator( basedir, onConfigFile, false );
121
122 writer.startElement( MYECLIPSE_SPRING_CONFIG );
123 writer.writeText( relativeFileName );
124 writer.endElement();
125 }
126 writer.endElement();
127
128
129 writer.startElement( MYECLIPSE_SPRING_CONFIGSETS );
130 writer.endElement();
131
132
133 writer.startElement( MYECLIPSE_SPRING_VERSION );
134 writer.writeText( (String) springConfig.get( "version" ) );
135 writer.endElement();
136
137 writer.endElement();
138
139 IOUtil.close( springFileWriter );
140 }
141
142
143
144
145
146
147
148
149
150 private Collection getConfigurationFilesList( File basedir, String pattern )
151 {
152 ArrayList configFiles = new ArrayList();
153
154 try
155 {
156 if ( basedir.exists() )
157 {
158 log.debug( "Scanning " + basedir + " for spring definition files" );
159 File[] subdirs = basedir.listFiles( new FileFilter()
160 {
161 public boolean accept( File pathname )
162 {
163 return pathname.isDirectory();
164 }
165 } );
166
167 if ( subdirs != null )
168 {
169 for ( File subdir : subdirs )
170 {
171 configFiles.addAll( getConfigurationFilesList( subdir, pattern ) );
172 }
173 }
174
175 configFiles.addAll( FileUtils.getFileNames( basedir, pattern, null, true ) );
176 }
177 else
178 {
179
180
181 log.warn( Messages.getString( "MyEclipseSpringBeansWriter.baseDirDoesNotExist",
182 new Object[] { basedir } ) );
183 }
184 }
185 catch ( IOException ioe )
186 {
187 log.error( "Error while retrieving Spring configuration files. Returning list in current state" );
188 }
189
190 Collections.sort( configFiles );
191 return configFiles;
192 }
193 }