View Javadoc

1   /*
2    * Copyright 2001-2005 The Apache Software Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package net.sf.mavenizer.cli.commands;
18  
19  import java.io.File;
20  import java.io.FileInputStream;
21  import java.io.FileNotFoundException;
22  import java.io.IOException;
23  import java.io.InputStream;
24  
25  import net.sf.mavenizer.MavenizerException;
26  import net.sf.mavenizer.cli.exceptions.ProjectLoadingException;
27  import net.sf.mavenizer.generators.Generator;
28  import net.sf.mavenizer.generators.maven.repository.MavenRepositoryGenerator;
29  import net.sf.mavenizer.io.reader.DefaultMavenizerProjectReader;
30  import net.sf.mavenizer.io.reader.MavenizerProjectReader;
31  import net.sf.mavenizer.model.Project;
32  
33  import org.apache.commons.logging.Log;
34  import org.apache.commons.logging.LogFactory;
35  
36  
37  /***
38   * @author <a href="mailto:cedric-vidal@users.sourceforge.net">C&eacute;dric
39   *         Vidal</a>
40   * 
41   */
42  public class Generate {
43  
44  	private static final Log log = LogFactory.getLog(Generate.class);
45  
46  	private File rootDir;
47  
48  	private File workDir;
49  
50  	private File repoDir;
51  
52  	private File projectFile;
53  
54  	private MavenizerProjectReader mavenizerProjectReader;
55  
56  	private File tempDir;
57  
58  	private Generator generator;
59  
60  	public void execute() throws MavenizerException {
61  		log.info("Generating " + getProjectFile() + " to " + getRepoDir());
62  		Project mavenizer = loadProject();
63  		getGenerator().generate(mavenizer);
64  		log.info("Finished");
65  	}
66  
67  	protected Project loadProject() throws MavenizerException {
68  		Project mavenizer = null;
69  		InputStream inputStream = null;
70  		try {
71  			inputStream = new FileInputStream(getProjectFile());
72  			mavenizer = getMavenizerProjectReader().read(inputStream);
73  		} catch (FileNotFoundException e) {
74  			throw new ProjectLoadingException(e);
75  		} finally {
76  			if (inputStream != null) {
77  				try {
78  					inputStream.close();
79  				} catch (IOException e) {
80  					throw new ProjectLoadingException(e);
81  				}
82  			}
83  		}
84  		return mavenizer;
85  	}
86  
87  	private MavenizerProjectReader getMavenizerProjectReader() {
88  		if (mavenizerProjectReader == null) {
89  			mavenizerProjectReader = new DefaultMavenizerProjectReader();
90  		}
91  		return mavenizerProjectReader;
92  	}
93  
94  	/***
95  	 * @return Returns the rootDir.
96  	 */
97  	public File getRootDir() {
98  		return rootDir;
99  	}
100 
101 	/***
102 	 * @param rootDir
103 	 *            The rootDir to set.
104 	 */
105 	public void setRootDir(File rootDir) {
106 		this.rootDir = rootDir;
107 	}
108 
109 	/***
110 	 * @return Returns the workDir.
111 	 */
112 	public File getWorkDir() {
113 		if (workDir == null) {
114 			workDir = new File(getRootDir(), "work");
115 		}
116 		return workDir;
117 	}
118 
119 	/***
120 	 * @param workDir
121 	 *            The workDir to set.
122 	 */
123 	public void setWorkDir(File workDir) {
124 		this.workDir = workDir;
125 	}
126 
127 	/***
128 	 * @return Returns the tempDir.
129 	 */
130 	public File getTempDir() {
131 		if (tempDir == null) {
132 			tempDir = new File(getRootDir(), "temp");
133 		}
134 		return tempDir;
135 	}
136 
137 	/***
138 	 * @param tempDir
139 	 *            The tempDir to set.
140 	 */
141 	public void setTempDir(File tempDir) {
142 		this.tempDir = tempDir;
143 	}
144 
145 	/***
146 	 * @return Returns the projectFile.
147 	 */
148 	public File getProjectFile() {
149 		if (projectFile == null) {
150 			projectFile = new File(getWorkDir(), "mavenizer.xml");
151 		}
152 		return projectFile;
153 	}
154 
155 	/***
156 	 * @param projectFile
157 	 *            The projectFile to set.
158 	 */
159 	public void setProjectFile(File projectFile) {
160 		this.projectFile = projectFile;
161 	}
162 
163 	public Generator getGenerator() {
164 		if (generator == null) {
165 			generator = new MavenRepositoryGenerator();
166 			generator.setOutputDir(getRepoDir());
167 		}
168 		return generator;
169 	}
170 
171 	public void setMavenRepositoryGenerator(Generator generator) {
172 		this.generator = generator;
173 	}
174 
175 	public File getRepoDir() {
176 		if (repoDir == null) {
177 			repoDir = new File(getRootDir(), "repository");
178 		}
179 		return repoDir;
180 	}
181 
182 	public void setRepoDir(File repoDir) {
183 		this.repoDir = repoDir;
184 	}
185 
186 }